1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [MUSIC Duke luajtur] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. Malan: Në rregull, kjo është CS50. 5 00:00:16,240 --> 00:00:18,010 Dhe kjo është një javë. 6 00:00:18,010 --> 00:00:22,050 Pra, kujtojnë se herën e fundit në javë zero, ne u përqendruam në të menduarit kompjuterike. 7 00:00:22,050 --> 00:00:25,440 Dhe ne kaloi nga ajo për Scratch, një programimit grafike 8 00:00:25,440 --> 00:00:27,360 Gjuha nga miqtë tanë në Media Lab MIT. 9 00:00:27,360 --> 00:00:31,730 >> Dhe me Scratch, e kemi shqyrtuar ide si funksionon, dhe kushtet, 10 00:00:31,730 --> 00:00:35,210 dhe unazore, dhe ndryshoret, dhe madje edhe ngjarjet dhe temat, dhe më shumë. 11 00:00:35,210 --> 00:00:37,880 Dhe sot, ne do të vazhdoni të përdorni këto ide, 12 00:00:37,880 --> 00:00:40,630 dhe me të vërtetë duke marrë ata për dhënë, por t'i përkthejnë 13 00:00:40,630 --> 00:00:44,220 në një gjuhë tjetër të njohur si C. tani, C është një gjuhë më tradicionale. 14 00:00:44,220 --> 00:00:46,020 Kjo është një nivel më të ulët gjuha, nëse ju do. 15 00:00:46,020 --> 00:00:47,300 >> Është thjesht tekstuale. 16 00:00:47,300 --> 00:00:49,910 Dhe kështu në shikim të parë, është e të gjithë do të shikojnë në vend i fshehtë 17 00:00:49,910 --> 00:00:51,430 në qoftë se ju nuk keni programuar më parë. 18 00:00:51,430 --> 00:00:53,530 Ne do të kemi gjysmë-colons, dhe kllapa, 19 00:00:53,530 --> 00:00:55,150 dhe formatimin e teksteve kaçurrel, dhe më shumë. 20 00:00:55,150 --> 00:00:57,240 Por e kuptojnë se edhe pse Sintaksa është 21 00:00:57,240 --> 00:01:00,600 gati duket pak panjohura për shumicën prej jush, të parë e kaluara se. 22 00:01:00,600 --> 00:01:03,220 Dhe të përpiqen për të parë idetë që janë, në të vërtetë, të njohur, 23 00:01:03,220 --> 00:01:06,750 sepse këtu në javë një që ne do të fillojmë të bëjmë është për të krahasuar, 24 00:01:06,750 --> 00:01:08,980 fillimisht, Scratch kundrejt C. 25 00:01:08,980 --> 00:01:12,350 >> Kështu, për shembull, kujtojmë se kur ne zbatuar i pari programet tona 26 00:01:12,350 --> 00:01:16,220 Herën e fundit, kemi pasur një bllok që dukej një diçka të vogël si this-- kur është 27 00:01:16,220 --> 00:01:19,990 flamuri gjelbër klikuar, dhe pastaj kemi pasur një copë ose më shumë mister poshtë saj, 28 00:01:19,990 --> 00:01:22,150 në këtë rast, thonë, Hello World. 29 00:01:22,150 --> 00:01:24,870 Pra, në të vërtetë, në Scratch, kur unë klikoni atë flamur të gjelbër 30 00:01:24,870 --> 00:01:27,390 për të drejtuar programin tim, kështu që për të folur, këto janë 31 00:01:27,390 --> 00:01:29,520 blloqet që të ekzekutohen, ose të kandidojë. 32 00:01:29,520 --> 00:01:32,230 Dhe, në veçanti, Scratch tha: hello, bota. 33 00:01:32,230 --> 00:01:35,377 >> Tani, unë mund të ketë specifikuar fjalë të ndryshme këtu. 34 00:01:35,377 --> 00:01:37,960 Por ne do të shohim se, në të vërtetë, shumë nga këto blocks-- dhe në të vërtetë, 35 00:01:37,960 --> 00:01:41,880 në C shumë functions-- mund të jetë parametrized ose përshtatur 36 00:01:41,880 --> 00:01:43,150 për të bërë gjëra të ndryshme. 37 00:01:43,150 --> 00:01:45,520 Në fakt, në qoftë se ne C doni të konvertohet, tani, 38 00:01:45,520 --> 00:01:47,567 ky program Scratch në këtë gjuhë tjetër, 39 00:01:47,567 --> 00:01:49,650 ne jemi duke shkuar për të shkruar një pak diçka si kjo. 40 00:01:49,650 --> 00:01:52,540 >> Dhënë, ka disa të panjohura Sintaksa ka shumë të ngjarë, int, 41 00:01:52,540 --> 00:01:54,380 dhe kllapa, dhe e pavlefshme. 42 00:01:54,380 --> 00:01:57,740 Por printf-- edhe pse ju do të mendoj se kjo do të jetë vetëm të shtypura. 43 00:01:57,740 --> 00:02:00,120 Por print do të thotë të shtypura formatuar, si ne do të shohim së shpejti. 44 00:02:00,120 --> 00:02:02,140 Kjo fjalë për fjalë do të shtypura në ekran çfarëdo 45 00:02:02,140 --> 00:02:05,990 është brenda këtyre kllapa, e cila natyrisht në këtë rast është, Hello World. 46 00:02:05,990 --> 00:02:09,290 >> Por ju do të vëreni disa të tjera Sintaksa, disa citate të dyfishtë, 47 00:02:09,290 --> 00:02:11,890 që kllapa në fund, gjysmë-zorrë e trashë dhe si. 48 00:02:11,890 --> 00:02:15,027 Pra, ka pak e lart, kështu që të flasin, të dy cognitively 49 00:02:15,027 --> 00:02:17,860 dhe sintaksore, që ne jemi duke shkuar që duhet të mbani mend para se të gjatë. 50 00:02:17,860 --> 00:02:20,720 Por e kuptojnë se me praktikën, kjo do të fillojnë të hidhen jashtë në ju. 51 00:02:20,720 --> 00:02:24,920 >> Në fakt, le të përqëndrohet në se një Funksioni specifically-- në këtë rast, 52 00:02:24,920 --> 00:02:26,290 thonë hello botë. 53 00:02:26,290 --> 00:02:27,560 Pra, thonë se është funksioni. 54 00:02:27,560 --> 00:02:31,320 Tungjatjeta botë është parametër i saj, ose argumenti, customization e saj. 55 00:02:31,320 --> 00:02:34,320 >> Dhe ekuivalenca në C është vetëm do të jetë këtë një linjë këtu, 56 00:02:34,320 --> 00:02:38,710 ku printf është ekuivalente me, të themi, string dyfishtë cituar, përshëndetje 57 00:02:38,710 --> 00:02:41,470 bota është e barabartë, sigurisht, për çfarë është në kutinë e bardhë atje. 58 00:02:41,470 --> 00:02:45,680 Dhe backslash n, edhe pse pak çuditshme dhe mungon nga e para, 59 00:02:45,680 --> 00:02:49,380 thjesht do të ketë efekt ne do të shohim në një kompjuter, si Mac tim ose një PC, 60 00:02:49,380 --> 00:02:51,660 i vetëm duke lëvizur kursorin në rreshtin tjetër. 61 00:02:51,660 --> 00:02:53,970 Është si të goditur Enter në tastierën tuaj. 62 00:02:53,970 --> 00:02:55,580 >> Pra, ne do të shohim se një herë para se të gjatë. 63 00:02:55,580 --> 00:02:58,640 Por së pari, le të marrin një vështrim në këtë Shembulli tjetër në rastin e sythe. 64 00:02:58,640 --> 00:03:02,830 Ne kishim këtë përgjithmonë lak për herë të fundit, e cila ishte një seri e copa puzzle 65 00:03:02,830 --> 00:03:05,490 që bëri diçka fjalë për fjalë për gjithnjë në këtë rast, 66 00:03:05,490 --> 00:03:08,360 thonë, Hello World, Hello World, Hello World, Hello World. 67 00:03:08,360 --> 00:03:10,350 Pra, kjo është një loop pafund me dashje. 68 00:03:10,350 --> 00:03:14,580 >> Në C, në qoftë se ne duam të zbatojë këtë njëjtën ide, ne mund thjesht të bëjë këtë. 69 00:03:14,580 --> 00:03:19,570 Ndërsa e vërtetë, printf përshëndetje world-- tani ndërsa, vetëm semantike, lloji i 70 00:03:19,570 --> 00:03:23,090 zgjon idenë e bërë diçka përsëri, dhe përsëri, dhe përsëri, 71 00:03:23,090 --> 00:03:23,980 dhe për sa kohë? 72 00:03:23,980 --> 00:03:27,990 E pra, kujtojnë se true-- e vërtetë është vetëm në ose një. 73 00:03:27,990 --> 00:03:30,660 >> Dhe e vërtetë është, sigurisht, gjithmonë e vërtetë. 74 00:03:30,660 --> 00:03:33,060 Pra, kjo është lloj i një pakuptimtë Deklarata e vetëm për të thënë të vërtetë. 75 00:03:33,060 --> 00:03:36,890 Por në të vërtetë, kjo është e qëllimshme, sepse në qoftë se e vërtetë është vetëm gjithmonë e vërtetë, 76 00:03:36,890 --> 00:03:40,850 se ndërsa e vërtetë vetëm do të thotë, në qoftë se një pak në mënyrë të tërthortë, 77 00:03:40,850 --> 00:03:44,070 se linjat e mëposhtme të kodit në mes të këtyre formatimin e teksteve kaçurrel 78 00:03:44,070 --> 00:03:48,320 duhet vetëm të ekzekutojë përsëri, dhe përsëri, dhe përsëri, dhe në fakt nuk ndalet. 79 00:03:48,320 --> 00:03:50,230 >> Por në qoftë se ju doni tuaj loop për të ndaluar, si ne 80 00:03:50,230 --> 00:03:54,500 e bëri për herë të fundit me diçka si këtë, të përsëritur e mëposhtme 50 herë, 81 00:03:54,500 --> 00:03:57,700 në C ne mund të bëjmë të njëjtën gjë me atë që e quajtur një për loop-- fjalen 82 00:03:57,700 --> 00:03:59,330 mos qenë ndërkohë, por për. 83 00:03:59,330 --> 00:04:03,290 Dhe pastaj ne kemi një sintaksë të re këtu, me int i barabartë me 0, i më pak se 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Dhe ne do të kthehen në atë. 86 00:04:05,430 --> 00:04:09,660 Por kjo është vetëm se si ne do përkthejnë grup të blloqeve Scratch 87 00:04:09,660 --> 00:04:13,079 për një grup të linjave C të kodit. 88 00:04:13,079 --> 00:04:14,450 >> Ndërkohë, e konsiderojnë variablat. 89 00:04:14,450 --> 00:04:16,540 Dhe, në fakt, ne vetëm pa një një moment më parë. 90 00:04:16,540 --> 00:04:21,220 Dhe në rastin e Scratch, nëse ne donte të deklarojë një ndryshore të quajtur I 91 00:04:21,220 --> 00:04:24,590 për të qenë i numër i plotë, vetëm një numër, dhe ne duam të vendosur atë në një vlerë, 92 00:04:24,590 --> 00:04:28,410 ne do të përdorim këtë portokalli bllokojnë here-- vendosur i të 0. 93 00:04:28,410 --> 00:04:30,800 >> Dhe ne do të shohim sot dhe më tej, ashtu si javën e kaluar, 94 00:04:30,800 --> 00:04:33,850 programuesit bëjnë pothuajse gjithmonë të fillojë numërimi nga zero, me të vërtetë 95 00:04:33,850 --> 00:04:34,950 nga Konventa. 96 00:04:34,950 --> 00:04:37,250 Por edhe për shkak kujtojnë nga Diskutimi ynë i binar, 97 00:04:37,250 --> 00:04:39,990 numri më i vogël ju mund të përfaqësuar me ndonjë numër të bit 98 00:04:39,990 --> 00:04:41,640 është vetëm do të jetë 0. vetë. 99 00:04:41,640 --> 00:04:45,190 Dhe kështu që ne do të në përgjithësi të fillojë fillimin edhe variablat tona në 0. 100 00:04:45,190 --> 00:04:47,710 >> Dhe në C për të bërë të njëjtën gjë, ne jemi duke shkuar për të thënë int 101 00:04:47,710 --> 00:04:50,110 për numër të plotë, i vetëm nga konventa. 102 00:04:50,110 --> 00:04:53,390 Unë mund të ketë quajtur këtë variabël çdo gjë që unë dua, ashtu si në Scratch. 103 00:04:53,390 --> 00:04:57,770 Dhe pastaj është e barabartë me 0 vetëm cakton vlera 0 nga e drejta 104 00:04:57,770 --> 00:05:01,319 dhe e vë atë në ndryshore, ose enë magazinimit atje, në të majtë. 105 00:05:01,319 --> 00:05:04,360 Dhe gjysmë-zorrës së trashë si ne do të see-- dhe ne kemi parë disa nga këto already-- 106 00:05:04,360 --> 00:05:06,530 thjesht do të thotë fundin e mendimit. 107 00:05:06,530 --> 00:05:09,430 Të vazhdojë për të bërë diçka tjetër në linjat që pasojnë. 108 00:05:09,430 --> 00:05:11,330 >> Tani, ajo që për shprehje Boolean? 109 00:05:11,330 --> 00:05:14,320 Kujtojnë se në Scratch, këto ishin shprehje 110 00:05:14,320 --> 00:05:16,740 që janë ose të vërteta ose pyetje false--, 111 00:05:16,740 --> 00:05:18,910 me të vërtetë, se janë ose të vërteta apo të rreme. 112 00:05:18,910 --> 00:05:21,960 Pra, në rastin e Scratch, ne fuqi një pyetje të thjeshtë si kjo, 113 00:05:21,960 --> 00:05:24,586 është i më pak se 50? 114 00:05:24,586 --> 00:05:25,710 Kaq i, një herë, eshte nje numer i plote. 115 00:05:25,710 --> 00:05:27,210 Ndoshta ne jemi duke e përdorur atë në një program Scratch 116 00:05:27,210 --> 00:05:29,310 të mbajnë gjurmët e një rezultat ose diçka të tillë. 117 00:05:29,310 --> 00:05:33,810 Pra, kjo Sintaksa këtu në Scratch thjesht do të thotë, është i më pak se 50? 118 00:05:33,810 --> 00:05:37,330 Well, fatmirësisht, diçka është e thjeshtë në C. Dhe për të përkthyer, 119 00:05:37,330 --> 00:05:41,780 kjo ne thjesht do të thonë se unë më pak shumë se 50, duke përdorur butonin njohur 120 00:05:41,780 --> 00:05:42,850 në tastierën tuaj. 121 00:05:42,850 --> 00:05:45,141 >> Ndërkohë, në qoftë se ju të kërkuar për të thoni diçka më të përgjithshme, 122 00:05:45,141 --> 00:05:49,890 si, dhe, është më pak se x y ku çdo e x dhe y janë vetë variablat? 123 00:05:49,890 --> 00:05:52,280 Ne mund të bëjmë të njëjtën gjë në C, për aq kohë sa ne kemi 124 00:05:52,280 --> 00:05:53,942 krijuar këto variabla tashmë. 125 00:05:53,942 --> 00:05:55,650 Dhe ne do të shohim se si për të bërë këtë para se të gjatë. 126 00:05:55,650 --> 00:05:58,590 Ne thjesht do të thotë më pak se x y. 127 00:05:58,590 --> 00:06:00,530 >> Pra, ju jeni duke filluar të shohim disa ngjashmëri. 128 00:06:00,530 --> 00:06:03,490 Dhe ata folks që kanë bërë Scratch ishin të 129 00:06:03,490 --> 00:06:05,250 frymëzuar nga disa nga këto ide themelore. 130 00:06:05,250 --> 00:06:10,350 Dhe ju do të shihni këtë lloj sintakse në shumë languages-- 131 00:06:10,350 --> 00:06:12,160 jo vetëm Scratch, nuk vetëm C, por Python, 132 00:06:12,160 --> 00:06:14,790 dhe JavaScript, dhe gjuhë të tjera ende. 133 00:06:14,790 --> 00:06:18,270 >> Le të konsiderojmë një konstrukt nga C, nocioni i një gjendje, 134 00:06:18,270 --> 00:06:20,370 duke bërë diçka me kusht. 135 00:06:20,370 --> 00:06:22,720 Nëse diçka është e vërtetë, e bëjnë këtë. 136 00:06:22,720 --> 00:06:24,457 Nëse diçka tjetër është e vërtetë, të bëjë atë. 137 00:06:24,457 --> 00:06:27,040 Kjo është lloj i programimit ekuivalent i një pirun në rrugë. 138 00:06:27,040 --> 00:06:29,730 Ndoshta kjo është një dy rrugë pirun, një tre-palësh pirun, ose më shumë. 139 00:06:29,730 --> 00:06:32,800 Dhe në Scratch, ne mund të kemi parë diçka si kjo. 140 00:06:32,800 --> 00:06:34,010 >> Pra, kjo është një e madhe. 141 00:06:34,010 --> 00:06:36,750 Por e konsiderojnë relative Thjeshtësia e logjikës. 142 00:06:36,750 --> 00:06:44,010 Nëse x është më pak se y, atëherë thonë se x është më pak sesa y, përndryshe nëse x është më e madhe se y, 143 00:06:44,010 --> 00:06:46,230 pastaj të thotë x është më e madhe se y. 144 00:06:46,230 --> 00:06:48,300 Dhe pastaj, logjikisht, nëse mendoni përsëri në Scratch 145 00:06:48,300 --> 00:06:52,610 ose vetëm vetë intuita juaj njerëzore, dhe, nëse x nuk është më i madh se y, dhe x 146 00:06:52,610 --> 00:06:57,000 është jo më pak se y, pastaj sigurisht x do të jenë të barabartë me y. 147 00:06:57,000 --> 00:06:59,690 Pra, në këtë rast, duke shturë ato blloqe Scratch, 148 00:06:59,690 --> 00:07:02,580 mund të arrijmë një tre Mënyra pirun në rrugë? 149 00:07:02,580 --> 00:07:04,980 >> Ndërkohë, në qoftë se ne duam të bëni këtë në C, ajo ndoshta 150 00:07:04,980 --> 00:07:08,420 duket një simpler-- të vogël të paktën sapo ju të merrni njohur me sintaksë. 151 00:07:08,420 --> 00:07:12,050 Nëse x është më pak se y, printf x është më pak se y. 152 00:07:12,050 --> 00:07:16,140 Përndryshe nëse x është më e madhe se y, printf x është më e madhe se y. 153 00:07:16,140 --> 00:07:21,210 Else printf x është e barabartë me y-- dhe, përsëri, me ato backslash përfundon vetëm 154 00:07:21,210 --> 00:07:24,160 për ato linja të reja në mënyrë që nëse ju në fakt u zhvillua këtë lloj të programit 155 00:07:24,160 --> 00:07:25,940 ajo vetëm do të lëvizë kursori juaj në fund të fundit 156 00:07:25,940 --> 00:07:28,100 në linjë tjetër të ekranit. 157 00:07:28,100 --> 00:07:31,270 >> Tani, ndërkohë Scratch kishte të tjera karakteristika më të sofistikuara, vetëm 158 00:07:31,270 --> 00:07:34,320 disa prej të cilave ne do të fillimisht të shkojë mbi në botën e C. 159 00:07:34,320 --> 00:07:37,010 Dhe një prej tyre ishte quajtur një listë në Scratch. 160 00:07:37,010 --> 00:07:39,100 Dhe kjo ishte një speciale lloji i variablit që 161 00:07:39,100 --> 00:07:42,840 lejuar ju për të ruajtur gjëra të shumta në atë përsëri, për të mbështetur, për të mbështetur, për të mbështetur. 162 00:07:42,840 --> 00:07:45,540 >> Në C, që nuk ka Listat, per se, por diçka 163 00:07:45,540 --> 00:07:48,090 që janë më të përgjithshme quajtur vargjeve, edhe pse ne do të 164 00:07:48,090 --> 00:07:50,590 kthehen më vonë këtë semestër për të kërkuar në diçka 165 00:07:50,590 --> 00:07:52,780 quajtur një listë, apo me të vërtetë një listë e lidhur. 166 00:07:52,780 --> 00:07:55,510 Por tani për tani, të afërt ekuivalente në C për ne 167 00:07:55,510 --> 00:07:57,345 do të jetë diçka quajtur një grup. 168 00:07:57,345 --> 00:07:59,740 Dhe një koleksion është thjesht një lloj i veçantë i variable 169 00:07:59,740 --> 00:08:03,160 që ju lejon të ruani të dhënat përsëri, për të mbështetur, për të mbështetur, për të pasme. 170 00:08:03,160 --> 00:08:05,840 >> Dhe, me të vërtetë, në Scratch, në qoftë se ne të kërkuar për të hyrë në 171 00:08:05,840 --> 00:08:09,030 elementi i parë i një grup ose një list-- dhe unë jam duke shkuar për të thirrur atë, 172 00:08:09,030 --> 00:08:13,600 nga konventës, argv, argumentit vektoriale, por më shumë në atë para se të gjatë. 173 00:08:13,600 --> 00:08:17,090 Nëse unë dua të të marrë në elementin e parë e argv, në botën e Scratch 174 00:08:17,090 --> 00:08:20,930 në të vërtetë ju bëni zakonisht fillojë numërimi nga 1. 175 00:08:20,930 --> 00:08:22,850 >> Dhe kështu që unë mund të merrni pika 1 të argv. 176 00:08:22,850 --> 00:08:26,310 Kjo është vetëm se si MIT zbatuar nocioni i listave. 177 00:08:26,310 --> 00:08:29,860 Por në C, unë jam duke shkuar për të më thjesht të them vetëm, argv, 178 00:08:29,860 --> 00:08:32,758 e cila përsëri është emri i tim list-- ose të jetë i qartë, një grup. 179 00:08:32,758 --> 00:08:34,549 Dhe në qoftë se unë dua të parë elemente, unë jam duke shkuar 180 00:08:34,549 --> 00:08:37,890 për të përdorur kllapa katrore, e cila ju mund të mos përdoret shpesh nën një tastierë. 181 00:08:37,890 --> 00:08:40,150 >> Por 0 thjesht do të thotë, të marrë më parë. 182 00:08:40,150 --> 00:08:42,160 Pra, në disa raste dhe si kalimin e kohës, ne jemi duke shkuar 183 00:08:42,160 --> 00:08:44,570 për të filluar për të parë këto dikotomi mes Scratch dhe C, 184 00:08:44,570 --> 00:08:46,070 ku Scratch përdor një të tillë. 185 00:08:46,070 --> 00:08:47,670 Ne në C përdorim 0 këtu. 186 00:08:47,670 --> 00:08:49,420 Por ju do të shihni shpejt sapo ju të kuptoni 187 00:08:49,420 --> 00:08:52,920 themelet e secilës gjuhë, që këto gjëra fillojnë të marrin të gjithë më 188 00:08:52,920 --> 00:08:56,860 njohur përmes praktikës dhe praktikës. 189 00:08:56,860 --> 00:08:59,700 >> Pra, le të shohim tani në fakt në një program. 190 00:08:59,700 --> 00:09:04,031 Këtu do të jetë i pari nga C tonë Kodi burim për programet e plotë. 191 00:09:04,031 --> 00:09:06,280 Dhe programi ne jemi duke shkuar të ofrojë për shqyrtim 192 00:09:06,280 --> 00:09:09,340 është ai që është ekuivalente për atë pjesë të mëparshëm Scratch. 193 00:09:09,340 --> 00:09:13,210 >> Kështu që këtu, ne kemi atë që e ndoshta program të thjeshtë C 194 00:09:13,210 --> 00:09:15,410 ju mund të shkruani se në fakt bën diçka. 195 00:09:15,410 --> 00:09:18,250 Tani, ne do të shikojmë të kaluarën, tani për tani, ka të përfshirë, 196 00:09:18,250 --> 00:09:21,190 io.h standarde, dhe këto kënd kllapa, dhe int, dhe e pavlefshme, 197 00:09:21,190 --> 00:09:22,840 dhe formatimin e teksteve kaçurrel, dhe të ngjashme. 198 00:09:22,840 --> 00:09:25,390 >> Dhe le të vetëm të përqëndrohet në ajo që, të paktën intuitive, 199 00:09:25,390 --> 00:09:26,860 mund të hidhen jashtë në ju tashmë. 200 00:09:26,860 --> 00:09:30,300 Në të vërtetë, kryesor, unë nuk domosdoshmërisht e di se çfarë është kjo, 201 00:09:30,300 --> 00:09:34,580 por ashtu si Scratch pasur se kur flamuri gjelbër klikuar pjesë mister, 202 00:09:34,580 --> 00:09:39,070 kështu që nuk C si një gjuhë programimi kanë një pjesë kryesore të kodit që 203 00:09:39,070 --> 00:09:43,380 merr ekzekutuar nga default. Dhe, me të vërtetë, ajo fjalë për fjalë do të quhet kryesore. 204 00:09:43,380 --> 00:09:44,720 >> Pra kryesor është një funksion. 205 00:09:44,720 --> 00:09:48,720 Dhe kjo është një funksion të veçantë që ekziston në C se kur ju drejtuar një program, 206 00:09:48,720 --> 00:09:52,720 është kryesore që merr të drejtuar nga default. Në botën e Scratch, 207 00:09:52,720 --> 00:09:56,970 kjo ishte zakonisht kur flamuri gjelbër klikuar se u drejtuar nga default. 208 00:09:56,970 --> 00:10:01,130 >> Ndërkohë, ne kemi parë këtë më parë, printf ose print formatuar, kjo është 209 00:10:01,130 --> 00:10:05,620 do të jetë një funksion që vjen me C, së bashku me një bandë e tërë e të tjerëve, 210 00:10:05,620 --> 00:10:10,140 se vullneti nga koha dhe koha përsëri, në mënyrë që të bëjë pikërisht 211 00:10:10,140 --> 00:10:12,450 si emrin e saj, shkruar diçka. 212 00:10:12,450 --> 00:10:13,500 Çfarë duam të shtypura? 213 00:10:13,500 --> 00:10:15,770 E pra, ne do të shohim se nga personazhet bashkëngjitur 214 00:10:15,770 --> 00:10:18,680 si these-- botë përshëndetje, backslash n në thonjëza dyshe, 215 00:10:18,680 --> 00:10:23,040 ne mund të them printf saktësisht çfarë duhet të shtypura në ekran. 216 00:10:23,040 --> 00:10:26,430 >> Por në mënyrë që të bëjë se, ne për fat të keq 217 00:10:26,430 --> 00:10:30,010 duhet të marrë diçka që është e tashmë të fshehtë për ne njerëzit, 218 00:10:30,010 --> 00:10:34,510 por të paktën kjo është disi readable-- mprehtë përfshijnë, io.h standarde, int, 219 00:10:34,510 --> 00:10:39,340 kryesore, e pavlefshme, printf, të gjitha të magjike yshtje ne vetëm e pa në ekran. 220 00:10:39,340 --> 00:10:42,470 Por ne fakt duhet të shkojnë më misterioze ende. 221 00:10:42,470 --> 00:10:47,140 Ne së pari duhet të përkthejnë kodin që kemi shkruar në kodin e makinës. 222 00:10:47,140 --> 00:10:51,370 Dhe kujtojnë nga java e fundit që makinat, të paktën ato që njeh këtu, 223 00:10:51,370 --> 00:10:54,450 ne fund te ditës vetëm kuptojnë zero dhe ato. 224 00:10:54,450 --> 00:10:58,100 >> Dhe Perëndia im, në qoftë se kemi pasur për të shkruar këto zero dhe ato që në fakt programi, 225 00:10:58,100 --> 00:11:01,260 kjo do shumë, shumë shpejt të marrë kënaqësi nga çdo gjë. 226 00:11:01,260 --> 00:11:05,150 Por kjo rezulton, në javën e kaluar, se këto modelet e zero dhe ato 227 00:11:05,150 --> 00:11:06,400 vetëm kanë domethënie të veçantë. 228 00:11:06,400 --> 00:11:08,500 Në kontekste të caktuara, ata mund të thotë numrat. 229 00:11:08,500 --> 00:11:11,840 >> Në disa kontekste, ata mund të thotë letra, ose ngjyra, apo ndonjë numër 230 00:11:11,840 --> 00:11:14,710 e abstraksioneve të tjera atje pas. 231 00:11:14,710 --> 00:11:18,450 Por ashtu si kompjuteri juaj ka një CPU, Central Processing Unit, 232 00:11:18,450 --> 00:11:20,390 apo truri brenda e kompjuterit tuaj. 233 00:11:20,390 --> 00:11:22,240 Kjo është zakonisht Intel brenda, sepse kjo është 234 00:11:22,240 --> 00:11:24,900 një nga kompanitë më të mëdha që e bën CPUs për kompjutera. 235 00:11:24,900 --> 00:11:28,910 >> E pra, CPU Intel dhe të tjerët thjesht kanë vendosur paraprakisht 236 00:11:28,910 --> 00:11:33,970 se disa modelet e zero dhe ato do të thotë gjëra të veçanta. 237 00:11:33,970 --> 00:11:37,040 Disa modelet e zero dhe ato do të thotë, të shtypura këtë në ekran, 238 00:11:37,040 --> 00:11:39,710 ose shtoni këto dy numra, ose zbres këto dy numra, 239 00:11:39,710 --> 00:11:43,310 apo veprim këtë pjesë të të dhënave nga memorie kompjuteri tim gjatë këtu, 240 00:11:43,310 --> 00:11:47,870 ose ndonjë numër të nivelit të tjerë shumë të ulët, por në fund të fundit e dobishme, operacionet. 241 00:11:47,870 --> 00:11:53,022 Por, fatmirësisht, ne njerëzit nuk janë duke shkuar që duhet të dini këtë nivel të detajuar. 242 00:11:53,022 --> 00:11:56,230 Në të vërtetë, ashtu si herën e fundit, ku ne përhumbur përsëri, dhe përsëri, dhe përsëri, 243 00:11:56,230 --> 00:11:58,930 Ndërtesa nga niveli shumë të ulët primitives si zero dhe ato 244 00:11:58,930 --> 00:12:01,160 të koncepteve të nivelit të lartë si numra dhe shkronja, 245 00:12:01,160 --> 00:12:04,330 dhe ngjyra, dhe më shumë, kështu që mund ne si programuesit 246 00:12:04,330 --> 00:12:07,080 qëndrojnë mbi supet e të tjerë që kanë ardhur para nesh 247 00:12:07,080 --> 00:12:11,260 dhe të përdorin softuer atë tjetrin njerëzit kanë shkruar para us-- 248 00:12:11,260 --> 00:12:14,340 përkatësisht programet e quajtur hartuesit. 249 00:12:14,340 --> 00:12:17,770 >> C është një gjuhë që është hartuar zakonisht, 250 00:12:17,770 --> 00:12:22,130 që do të thotë konvertuar nga Kodi burim për kodin e makinës. 251 00:12:22,130 --> 00:12:25,230 Në mënyrë të veçantë, çfarë do të thotë kjo është se në qoftë se ju keni marrë burim tuaj 252 00:12:25,230 --> 00:12:29,530 Kodi që ju vetë të shkruar, si ne së shpejti do të në një moment të vetëm në ekran, 253 00:12:29,530 --> 00:12:33,140 dhe ju doni për të kthyer atë në fund të fundit të makinës code-- 254 00:12:33,140 --> 00:12:37,100 ato zero dhe ato që vetëm Mac tuaj ose PC tuaj 255 00:12:37,100 --> 00:12:41,230 understands-- ju keni marrë një të parë ushqyer atë kod burim në si 256 00:12:41,230 --> 00:12:46,340 input për një të veçantë program të quajtur një përpilues, 257 00:12:46,340 --> 00:12:48,974 prodhimi i të cilave ne do të shohim është kodi makinë. 258 00:12:48,974 --> 00:12:51,890 Dhe, me të vërtetë, hera e fundit që kemi biseduar rreth, vërtetë, në fund të ditës, 259 00:12:51,890 --> 00:12:52,610 zgjidhjen e problemeve. 260 00:12:52,610 --> 00:12:53,360 Ju keni marrë inpute. 261 00:12:53,360 --> 00:12:54,318 Dhe ju keni marrë rezultatet. 262 00:12:54,318 --> 00:12:56,560 Dhe ju keni marrë disa lloj e algorithm në mes. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmet me siguri mund të jetë zbatuar në software, 264 00:12:59,830 --> 00:13:02,900 siç e pamë me pseudokod javën e fundit dhe si ne do të shohim me kodin aktual 265 00:13:02,900 --> 00:13:03,490 këtë javë. 266 00:13:03,490 --> 00:13:06,430 Dhe kështu një përpilues të vërtetë vetëm ka një sërë algoritme brenda 267 00:13:06,430 --> 00:13:10,060 për atë që e di se si për të kthyer fjalë kyçe të veçanta, 268 00:13:10,060 --> 00:13:12,180 si kryesor, dhe printf, dhe të tjerët se ne vetëm 269 00:13:12,180 --> 00:13:17,620 pa në modelet e zero dhe ato që Intel brenda dhe të tjera të CPU 270 00:13:17,620 --> 00:13:20,020 në fakt e kupton. 271 00:13:20,020 --> 00:13:22,460 Pra, si mund ta bëjmë këtë? 272 00:13:22,460 --> 00:13:24,470 Ku nuk kemi marrë një përpilues? 273 00:13:24,470 --> 00:13:26,400 >> Shumica prej nesh këtu kanë një Mac apo PC. 274 00:13:26,400 --> 00:13:29,152 Dhe ju jeni duke Mac OS, ose Windows, ose Linux, Solaris, ose, 275 00:13:29,152 --> 00:13:30,860 ose ndonjë numër të tjera sistemeve operative. 276 00:13:30,860 --> 00:13:32,568 Dhe, me të vërtetë, ne mund të dalë mbi web 277 00:13:32,568 --> 00:13:35,710 dhe të shkarkoni një përpilues për Mac apo PC tuaj 278 00:13:35,710 --> 00:13:37,360 për sistemin tuaj operativ të veçantë. 279 00:13:37,360 --> 00:13:39,617 Por ne të gjithë do të jetë në Faqet e ndryshme, kështu që të flasin. 280 00:13:39,617 --> 00:13:41,450 Ne do të kemi pak konfigurime të ndryshme. 281 00:13:41,450 --> 00:13:43,210 Dhe gjërat nuk do të punojë gjithë të njëjtën gjë. 282 00:13:43,210 --> 00:13:45,280 Dhe, në të vërtetë, këto ditë shumë prej nesh nuk e përdorin 283 00:13:45,280 --> 00:13:47,516 software që shkon vetëm në laptopë tonë. 284 00:13:47,516 --> 00:13:49,390 Në vend të kësaj, ne përdorim diçka si një shfletues që 285 00:13:49,390 --> 00:13:52,930 na lejon për të hyrë në web-bazuar aplikacionet në cloud. 286 00:13:52,930 --> 00:13:55,630 Dhe më vonë këtë semestër, ne do të bëjmë pikërisht këtë. 287 00:13:55,630 --> 00:13:59,660 Ne do të shkruajnë aplikacione ose software jo duke përdorur code-- C, 288 00:13:59,660 --> 00:14:02,860 por gjuhë të tjera si Python dhe JavaScript-- që të kandidojë në re. 289 00:14:02,860 --> 00:14:05,860 >> Dhe për ta bërë këtë, ne vetë gjatë semestrit 290 00:14:05,860 --> 00:14:11,890 në fakt do të përdorë një re-bazuar Mjedisi i njohur si CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 Kjo është një programimit web-bazuar mjedisit, ose zhvillimit të integruar 292 00:14:16,030 --> 00:14:20,610 Mjedisi, ide, që është ndërtuar në majë të disa software burim të hapur i quajtur Cloud 9. 293 00:14:20,610 --> 00:14:22,966 Dhe ne kemi bërë disa pedagogjike thjeshtëzime për të 294 00:14:22,966 --> 00:14:25,840 në mënyrë që për të fshehur veçoritë e caktuara në javëve të para që nuk kanë nevojë, 295 00:14:25,840 --> 00:14:27,770 pas së cilës ju mund të zbulojnë ato dhe të bëjë më të 296 00:14:27,770 --> 00:14:29,400 çdo gjë që ju doni me mjedisin. 297 00:14:29,400 --> 00:14:32,470 >> Dhe kjo na lejon, gjithashtu, të para-instaluar software të caktuara. 298 00:14:32,470 --> 00:14:35,330 Gjëra të tilla si një të ashtu-quajtur CS50 biblioteka, të cilat ne së shpejti do të shohim 299 00:14:35,330 --> 00:14:39,210 na jep në C me disa funksionalitetin shtesë. 300 00:14:39,210 --> 00:14:44,392 Pra, nëse ju shkoni në, në fund të fundit, CS50.io, ju do të nxitet për të hyrë brënda në, 301 00:14:44,392 --> 00:14:46,350 dhe një herë ju bëni dhe për të krijuar një llogari falas, 302 00:14:46,350 --> 00:14:52,150 ju do të jetë në gjendje për të hyrë në një mjedis që duket mjaft si kjo. 303 00:14:52,150 --> 00:14:53,760 >> Tani, kjo është në mënyrë të paracaktuar. 304 00:14:53,760 --> 00:14:55,650 Çdo gjë është e bukur dhe ndritshme në ekran. 305 00:14:55,650 --> 00:14:57,941 Shumë prej nesh kanë një zakon të duke punuar në pjesë që është CS50 306 00:14:57,941 --> 00:14:59,150 mjaft në fund të natës. 307 00:14:59,150 --> 00:15:02,400 Dhe kështu disa nga ju mund të preferojnë të kthyer atë në mënyrë të natës, kështu që të flasin. 308 00:15:02,400 --> 00:15:05,550 >> Por, në fund të fundit, ajo që ju jeni do të shohim në CS50 IDE 309 00:15:05,550 --> 00:15:08,340 është tre areas-- dallueshme një zonë në të majtë ka ku 310 00:15:08,340 --> 00:15:12,604 dosjet tuaja do të jetë në cloud, një zonë në krye të drejtë 311 00:15:12,604 --> 00:15:14,270 ku kodi juaj do të jetë editable. 312 00:15:14,270 --> 00:15:16,650 Ju do të jetë në gjendje për të hapur tabs individuale për çdo program 313 00:15:16,650 --> 00:15:19,670 që ju të shkruani këtë semestër brenda e atij këndin e sipërm të djathtë. 314 00:15:19,670 --> 00:15:23,070 Dhe pastaj më arcanely, dhe ende të fuqishëm, 315 00:15:23,070 --> 00:15:26,610 do të jetë kjo gjë më së Fund i njohur si një dritare terminali. 316 00:15:26,610 --> 00:15:29,450 >> Kjo është një shkollë e vjetër Command Line Interface, 317 00:15:29,450 --> 00:15:32,240 ose CLI, që lejon ju për të ekzekutuar komandat 318 00:15:32,240 --> 00:15:35,260 në computer-- në këtë rast, kompjuter në cloud-- 319 00:15:35,260 --> 00:15:39,090 për të bërë gjëra të tilla si të përpilojnë kodin tuaj nga kodi burim në kodin e makinës, 320 00:15:39,090 --> 00:15:43,600 për të drejtuar programet tuaja, ose për të filluar tuaj web server, apo për të hyrë në bazën e të dhënave tuaja, 321 00:15:43,600 --> 00:15:47,454 dhe çdo numër të teknikave të tjera se ne do të fillojnë të përdorin para se të gjatë. 322 00:15:47,454 --> 00:15:49,370 Por për të arritur atje, ne jemi të do të ketë në fakt 323 00:15:49,370 --> 00:15:51,240 të shkoni në internet dhe të fillojnë të luajnë. 324 00:15:51,240 --> 00:15:54,399 Dhe për të bërë këtë, le të parë të fillojë ngatërresë me kryesore, 325 00:15:54,399 --> 00:15:55,940 dhe shkruani pjesën kryesore të programit. 326 00:15:55,940 --> 00:15:59,170 Dhe le të përdorim këtë funksion printf, të cilat ne kemi përdorur më parë, 327 00:15:59,170 --> 00:16:01,050 thjesht për të thënë diçka. 328 00:16:01,050 --> 00:16:04,910 >> Kështu që këtu unë jam tashmë në brendësi të CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Unë e kam regjistruar paraprakisht. 330 00:16:05,930 --> 00:16:07,360 Dhe unë e plotë shfaqet dritaren. 331 00:16:07,360 --> 00:16:09,670 Dhe kështu, në fund të fundit, ju edhe në problemet e ardhshme 332 00:16:09,670 --> 00:16:12,960 do të ndjekë hapat e të ngjashme që do të sigurojë dokumentacion në internet. 333 00:16:12,960 --> 00:16:16,360 Pra, ju nuk duhet të shqetësohen për thithjen çdo hap të vogël teknik 334 00:16:16,360 --> 00:16:17,730 që bëj unë sot këtu. 335 00:16:17,730 --> 00:16:19,222 >> Por ju do të merrni një ekran të tillë. 336 00:16:19,222 --> 00:16:20,430 Unë të ndodhë që të jetë në natën mode. 337 00:16:20,430 --> 00:16:22,944 Dhe ju mund të shndrit çdo gjë nga disabling mënyrën e natës. 338 00:16:22,944 --> 00:16:24,860 Dhe në fund të ditë, ju do të jeni për të parë 339 00:16:24,860 --> 00:16:30,090 këta të tre kryesore areas-- file shfletues në të majtë, skedat kodi deri krye, 340 00:16:30,090 --> 00:16:32,430 dhe dritarja terminal në fund. 341 00:16:32,430 --> 00:16:34,890 >> Më lejoni të shkojnë përpara dhe të shkruani programin tim të parë. 342 00:16:34,890 --> 00:16:42,300 Unë jam duke shkuar për të preemptively shkoni tek File, Ruaj, dhe për të shpëtuar fotografi tim si hello.c. 343 00:16:42,300 --> 00:16:46,850 Në të vërtetë, nga konventa, çdo ne program shkruaj që është shkruar në gjuhën C 344 00:16:46,850 --> 00:16:49,739 duhet të quhet diçka dot c, nga konventa. 345 00:16:49,739 --> 00:16:53,030 Kështu që unë jam duke shkuar për të përmendur atë hello.c, sepse Unë vetëm dua të them hello botë. 346 00:16:53,030 --> 00:16:54,820 Tani unë jam duke shkuar për të zmadhuar jashtë dhe klikoni Ruaj. 347 00:16:54,820 --> 00:16:58,180 Dhe të gjitha unë kam këtu tani është një tab në të cilën unë mund të filloni të shkruani kodin. 348 00:16:58,180 --> 00:16:59,490 >> Kjo nuk do të përpilojë. 349 00:16:59,490 --> 00:17:00,300 Kjo do të thotë asgjë. 350 00:17:00,300 --> 00:17:02,750 Dhe kështu që edhe në qoftë se unë konvertuar kjo me zero dhe ato, 351 00:17:02,750 --> 00:17:05,390 CPU do të ketë asnjë ide se çfarë po ndodh rreth e rrotull. 352 00:17:05,390 --> 00:17:14,170 Por në qoftë se unë shkruaj rreshta që përputhen me qenie conventions-- C-C, 353 00:17:14,170 --> 00:17:20,150 përsëri, kjo language-- me sintaksë si kjo, printf përshëndetje world-- dhe unë kam 354 00:17:20,150 --> 00:17:22,210 marrë të kënaqur me bërë këtë me kalimin e kohës. 355 00:17:22,210 --> 00:17:24,510 Kështu që unë nuk mendoj se kam bërë ndonjë gabim tipografike. 356 00:17:24,510 --> 00:17:27,910 >> Por, pa ndryshim, shumë të parë herë që të bëni këtë, ju do. 357 00:17:27,910 --> 00:17:31,090 Dhe atë që unë jam gati për të bërë fuqinë shumë edhe të mos punojnë për ju herë të parë. 358 00:17:31,090 --> 00:17:33,610 Dhe kjo është krejtësisht në rregull, sepse tani ju 359 00:17:33,610 --> 00:17:37,662 mund vetëm të shohim një të tërë shumë risi, por me kalimin e kohës një herë ju merrni të njohur 360 00:17:37,662 --> 00:17:39,870 me këtë mjedis, dhe kjo gjuhë, dhe të tjerët, 361 00:17:39,870 --> 00:17:42,370 ju do të fillojnë për të parë gjëra që janë ose të sakta apo të pasakta. 362 00:17:42,370 --> 00:17:44,369 >> Dhe kjo është ajo që e miqtë mësimdhënies dhe sigurisht 363 00:17:44,369 --> 00:17:48,780 asistentë të marrë aq i mirë në kalimin e kohës, është diktim gabime apo bugs në kodin tuaj. 364 00:17:48,780 --> 00:17:52,110 Por unë pretendojnë se ka ka mete në këtë kod. 365 00:17:52,110 --> 00:17:53,990 Kështu që unë tani dua të drejtuar këtë program. 366 00:17:53,990 --> 00:17:57,440 >> Tani në Mac tim apo PC, unë jam në zakoni i ikonave të dyfishtë klikuar 367 00:17:57,440 --> 00:17:59,350 kur unë dua të drejtuar ndonjë program. 368 00:17:59,350 --> 00:18:01,080 Por kjo nuk është modeli këtu. 369 00:18:01,080 --> 00:18:04,570 Në këtë mjedis, i cili është CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Ne jemi duke përdorur një operative sistem i quajtur Linux. 371 00:18:07,192 --> 00:18:09,900 Linux është e ngjashme me një tjetër sistem operativ, e njohur përgjithësisht 372 00:18:09,900 --> 00:18:10,850 si Unix. 373 00:18:10,850 --> 00:18:16,340 Dhe Linux është i njohur veçanërisht për të paturit e një Command Line Mjedisit, CLI. 374 00:18:16,340 --> 00:18:20,070 Tani, ne jemi duke përdorur një specifikë shije e Linux të quajtur Ubuntu. 375 00:18:20,070 --> 00:18:22,770 Dhe Ubuntu është thjesht një version i caktuar i Linux. 376 00:18:22,770 --> 00:18:27,900 >> Por këto Linux këto ditë të bëjë në fakt të vijë me ndërfaqe grafike të përdoruesit. 377 00:18:27,900 --> 00:18:30,360 Dhe ai që të ndodhë me të përdorur këtu është web-based. 378 00:18:30,360 --> 00:18:32,735 Pra, kjo mund të duket edhe një pak më ndryshe nga diçka 379 00:18:32,735 --> 00:18:35,310 ju vetë mund të ketë parë ose të kandidojë në të kaluarën. 380 00:18:35,310 --> 00:18:37,910 >> Kështu që unë jam duke shkuar për të shkuar përpara tani dhe të bëjë të mëposhtme. 381 00:18:37,910 --> 00:18:40,950 Unë e kam ruajtur këtë foto si hello.c. 382 00:18:40,950 --> 00:18:47,350 Unë jam duke shkuar për të shkuar përpara dhe të Lloji clanghello.c Pra tingëllimë 383 00:18:47,350 --> 00:18:49,850 për gjuhën C është një përpilues. 384 00:18:49,850 --> 00:18:51,952 Kjo është para-instaluar në CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Dhe ju mund të shkarkoni dhe absolutisht instaloni këtë në vetë Mac apo PC. 386 00:18:54,910 --> 00:18:57,910 >> Por, përsëri, ju nuk do të keni të gjitha para-konfigurimit bërë për ju. 387 00:18:57,910 --> 00:19:00,940 Kështu që tani për tani, unë jam vetëm do të kandidojë clanghello.c. 388 00:19:00,940 --> 00:19:03,240 Dhe tani vini re këtë sintaksë këtu do përfundimisht 389 00:19:03,240 --> 00:19:06,930 kuptojnë thjesht do të thotë se unë jam në një dosje apo directory quajtur Workspace. 390 00:19:06,930 --> 00:19:11,030 Kjo shenjë dollar është vetëm konventë për kuptimin, shkruani komandat tuaja këtu. 391 00:19:11,030 --> 00:19:14,560 >> Kjo është ajo që quhet një të shpejtë, vetëm nga konventa është shenjë dollar. 392 00:19:14,560 --> 00:19:19,130 Dhe kur të shkoj përpara tani dhe klikoni Shkruani, asgjë nuk duket të ketë ndodhur. 393 00:19:19,130 --> 00:19:20,930 Por kjo është në fakt një gjë e mirë. 394 00:19:20,930 --> 00:19:23,650 Sa më pak që ndodh në ekranin tuaj, më shumë të ngjarë 395 00:19:23,650 --> 00:19:26,710 Kodi juaj është që të jetë i saktë, paktën syntactically. 396 00:19:26,710 --> 00:19:29,120 >> Pra, nëse unë dua të drejtuar këtë program, çfarë të bëj? 397 00:19:29,120 --> 00:19:33,770 E pra, ajo rezulton se Emri i parazgjedhur nga konventa 398 00:19:33,770 --> 00:19:38,854 për programet kur ju nuk specifikon një përmendur për programi juaj është vetëm a.out. 399 00:19:38,854 --> 00:19:41,270 Dhe kjo sintaksë shumë, ju do të të marrë të njohur me para se të gjatë. 400 00:19:41,270 --> 00:19:47,500 >> Dot çaj thjesht do të thotë, hej, CS50 IDE, të drejtuar një program të quajtur a.out 401 00:19:47,500 --> 00:19:49,400 kjo është brenda directory time aktuale. 402 00:19:49,400 --> 00:19:51,520 Kjo do të thotë dot dosjen aktuale. 403 00:19:51,520 --> 00:19:55,040 Dhe ne do të shohim se çfarë sekuenca të tjera të tilla i karaktereve do të thotë para se të gjatë. 404 00:19:55,040 --> 00:19:58,430 >> Pra, këtu ne do të shkojmë, Shkruani, Hello World. 405 00:19:58,430 --> 00:20:00,080 Dhe ju do të vini re, se ajo që ndodhi? 406 00:20:00,080 --> 00:20:01,580 Jo vetëm që ajo të shtypura hello botë. 407 00:20:01,580 --> 00:20:05,990 Ajo gjithashtu e shtyu kursorin në rreshtin tjetër. 408 00:20:05,990 --> 00:20:07,160 >> Dhe pse ishte ajo? 409 00:20:07,160 --> 00:20:12,400 Cili ishte kodi që kemi shkruar më parë që siguroi se kursori do të 410 00:20:12,400 --> 00:20:14,882 shkojnë në linjë tjetër? 411 00:20:14,882 --> 00:20:16,840 Funny gjë në lidhje me a kompjuter është ajo është vetëm do 412 00:20:16,840 --> 00:20:18,570 për të bërë fjalë për fjalë atë që ju them se për të bërë. 413 00:20:18,570 --> 00:20:26,050 >> Pra, nëse ju them se për printf hello, presje, hapësira, bota, quote ngushtë, 414 00:20:26,050 --> 00:20:29,090 kjo është fjalë për fjalë vetëm do për të shtypur këto karaktere. 415 00:20:29,090 --> 00:20:31,980 Por kam pasur këtë karakter të veçantë në fund, risjell, backslash n. 416 00:20:31,980 --> 00:20:34,230 Dhe kjo është ajo që sigurohet se karakteri shkoi 417 00:20:34,230 --> 00:20:36,570 në linjë tjetër të ekranit. 418 00:20:36,570 --> 00:20:38,097 >> Në fakt, më lër të shkoj dhe të bëjë këtë. 419 00:20:38,097 --> 00:20:39,430 Më lejoni të shkojnë përpara dhe të fshini këtë. 420 00:20:39,430 --> 00:20:41,180 Tani, vini re se krye të ekranit tim ka 421 00:20:41,180 --> 00:20:42,890 një dritë të vogël të kuqe në tab treguar, 422 00:20:42,890 --> 00:20:45,047 hey, ju nuk keni ruajtur skedarin tuaj. 423 00:20:45,047 --> 00:20:47,880 Kështu që unë jam duke shkuar për të shkuar përpara me kontrollin S ose command S, ruani skedarin. 424 00:20:47,880 --> 00:20:51,130 Tani ajo goes-- shkoi për një të gjelbër moment--. 425 00:20:51,130 --> 00:20:53,760 Dhe tani është kthyer në vetëm duke qenë një ikonë të ngushtë. 426 00:20:53,760 --> 00:21:01,860 >> Nëse unë tani të drejtuar clanghello.c përsëri, Hyjnë, dot slash, a.out, Enter, 427 00:21:01,860 --> 00:21:04,110 ju do të shihni se ai ende ka punuar. 428 00:21:04,110 --> 00:21:06,020 Por kjo është ndoshta një buggy pak. 429 00:21:06,020 --> 00:21:08,714 Tani për tani, Workspace im prompt--, dhe pastaj se shenja e dollarit, 430 00:21:08,714 --> 00:21:10,880 dhe pastaj prompt-- im aktual është e gjitha në të njëjtën linjë. 431 00:21:10,880 --> 00:21:14,540 Pra, kjo sigurisht një bug estetike, edhe në qoftë se kjo nuk është me të vërtetë një bug logjike. 432 00:21:14,540 --> 00:21:16,250 >> Kështu që unë jam duke shkuar për të ndrequr atë që unë vetëm e bëri. 433 00:21:16,250 --> 00:21:18,560 Unë jam duke shkuar për përsëritje a.out. 434 00:21:18,560 --> 00:21:22,710 Njoftim Kam shtuar newline karakter mbrapa. 435 00:21:22,710 --> 00:21:24,280 Unë e kam ruajtur file. 436 00:21:24,280 --> 00:21:31,630 >> Kështu që unë jam duke shkuar për përsëritje a.out, and-- Dammit, një bug, një bug që do të thotë gabim. 437 00:21:31,630 --> 00:21:35,020 Pra, bug është se edhe pse I shtoi backslash n atje, 438 00:21:35,020 --> 00:21:41,180 ri-ruajtur, ri-u e programit, sjellja ishte i njëjtë. 439 00:21:41,180 --> 00:21:42,640 Pse është kjo? 440 00:21:42,640 --> 00:21:43,910 >> Unë jam i humbur një hap, apo jo? 441 00:21:43,910 --> 00:21:47,620 Ky hap i rëndësishëm më parë ishte se ju keni to-- kur ju të ndryshojë kodin tuaj burim, 442 00:21:47,620 --> 00:21:49,610 rezulton të kandidojë ajo përmes përpiluesit 443 00:21:49,610 --> 00:21:51,102 përsëri kështu që ju merrni kodin e ri makinë. 444 00:21:51,102 --> 00:21:52,810 Dhe kodi makine, e zero dhe ato, 445 00:21:52,810 --> 00:21:56,260 do të jenë pothuajse identike, por jo në mënyrë të përkryer kështu, sepse ne kemi nevojë, 446 00:21:56,260 --> 00:21:57,510 sigurisht, që linja e re. 447 00:21:57,510 --> 00:22:02,640 >> Pra, për të rregulluar këtë, unë do të duhet për përsëritje clanghello.c, shkruani, dot 448 00:22:02,640 --> 00:22:03,800 çaj, a.out. 449 00:22:03,800 --> 00:22:08,402 Dhe tani, Hello World është kthyer ku unë pres që ajo të jetë. 450 00:22:08,402 --> 00:22:09,610 Pra, kjo është e gjitha mirë dhe të mirë. 451 00:22:09,610 --> 00:22:13,150 Por a.out është një emër mjaft i trashë për një program, edhe pse kjo ndodh që të jetë, 452 00:22:13,150 --> 00:22:16,530 për arsye historike, default-- të thotë rezultatet e kuvendit. 453 00:22:16,530 --> 00:22:20,780 >> Por më lejoni të shkoj përpara këtu dhe e bëjnë këtë në mënyra të ndryshme. 454 00:22:20,780 --> 00:22:24,760 Dua programin tim Hello World që në fakt do të quhet përshëndetje. 455 00:22:24,760 --> 00:22:28,320 Pra, nëse do të ishte një ikonë të mia desktop, ajo nuk do të a.out. 456 00:22:28,320 --> 00:22:29,730 Ajo do të quhet përshëndetje. 457 00:22:29,730 --> 00:22:33,660 >> Pra, për të bërë këtë, ajo rezulton se tingëllimë, si shumë programe, 458 00:22:33,660 --> 00:22:37,980 mbështet argumente command line, ose flamuj, apo çelsin, 459 00:22:37,980 --> 00:22:39,600 që thjesht ndikojnë sjelljen e saj. 460 00:22:39,600 --> 00:22:45,160 Në mënyrë të veçantë, tingëllimë mbështet një dash o Flamuri, i cili pastaj merr një fjalë të dytë. 461 00:22:45,160 --> 00:22:48,190 Në këtë rast, unë do të në mënyrë arbitrare, por në mënyrë të arsyeshme, e quajti atë përshëndetje. 462 00:22:48,190 --> 00:22:50,710 Por unë mund të telefononi atë gjë Dua, përveç a.out, e cila 463 00:22:50,710 --> 00:22:52,390 do të jetë mjaft përveç pikë. 464 00:22:52,390 --> 00:22:55,640 >> Dhe pastaj vetëm të specifikojë emrin e dosjes unë dua për të hartuar. 465 00:22:55,640 --> 00:22:59,190 Deri tani, edhe pse në fillim e komandës unë ende kanë tingëllimë, 466 00:22:59,190 --> 00:23:01,410 ne fund te komandën Unë ende kanë emrin e skedarit, 467 00:23:01,410 --> 00:23:05,520 Unë tani kanë këto command line argumente, këto flamuj që janë duke thënë, 468 00:23:05,520 --> 00:23:11,180 oh, nga rruga, output-o, një fotografi quajtur hello, jo a.out default. 469 00:23:11,180 --> 00:23:13,810 >> Pra, nëse unë hit Enter tani, asgjë duket se ka ndodhur. 470 00:23:13,810 --> 00:23:17,900 Dhe, megjithatë, tani unë mund të bëj dot plagë përshëndetje. 471 00:23:17,900 --> 00:23:19,089 Kështu që është e njëjtë program. 472 00:23:19,089 --> 00:23:21,380 Të zero dhe ato janë identike në fund të ditë. 473 00:23:21,380 --> 00:23:24,210 >> Por ata janë në dy a.out ndryshme files--, 474 00:23:24,210 --> 00:23:26,490 që është version parë dhe vetëm quajtur pa mend, 475 00:23:26,490 --> 00:23:30,250 dhe tani hello, e cila është shumë më e më Emri bindëse për një program. 476 00:23:30,250 --> 00:23:33,195 Por, sinqerisht, unë nuk jam do të mbani mend këtë përsëri, 477 00:23:33,195 --> 00:23:34,070 dhe përsëri, dhe përsëri. 478 00:23:34,070 --> 00:23:36,411 Dhe, në të vërtetë, siç e kemi shkruar Programet më të komplikuara, 479 00:23:36,411 --> 00:23:38,160 komandat ju jeni do të duhet për të shkruar 480 00:23:38,160 --> 00:23:40,920 do të merrni edhe më e komplikuar akoma. 481 00:23:40,920 --> 00:23:41,940 >> Dhe kështu jo për t'u shqetësuar. 482 00:23:41,940 --> 00:23:46,220 Ajo rezulton se njerëzit para na kanë kuptuar ata too 483 00:23:46,220 --> 00:23:47,530 kishte këtë të njëjtin problem saktë. 484 00:23:47,530 --> 00:23:50,900 Edhe ata nuk gëzojnë të paturit të lloji mjaft të gjatë, komandat misterioze, 485 00:23:50,900 --> 00:23:52,200 e lëre më mbani mend ato. 486 00:23:52,200 --> 00:23:56,070 Dhe kështu njerëzit para nesh kanë bërë programe të tjera që e bëjnë më të lehtë 487 00:23:56,070 --> 00:23:57,670 për hartimin e software tuaj. 488 00:23:57,670 --> 00:24:01,609 >> Dhe, me të vërtetë, një të tillë Programi quhet Bëni. 489 00:24:01,609 --> 00:24:03,150 Kështu që unë jam duke shkuar për të shkuar përpara dhe të bëjë këtë. 490 00:24:03,150 --> 00:24:05,691 Unë jam duke shkuar për të ndrequr çdo gjë që unë vetëm e bëri në mënyrën e mëposhtme. 491 00:24:05,691 --> 00:24:07,690 Më lejoni të tipit LS. 492 00:24:07,690 --> 00:24:10,980 Dhe ju do të vëreni tre things-- a.out, dhe një yll, përshëndetje 493 00:24:10,980 --> 00:24:12,810 dhe një yll, dhe hello.c. 494 00:24:12,810 --> 00:24:14,730 Shpresojmë, ky duhet të të jetë pak intuitive, 495 00:24:14,730 --> 00:24:18,220 aq sa më parë kishte asgjë në këtë hapësirë ​​pune. 496 00:24:18,220 --> 00:24:21,240 Nuk kishte asgjë që kam pasur krijuar deri sa kemi filluar klasë. 497 00:24:21,240 --> 00:24:22,840 >> Dhe kam krijuar hello.c. 498 00:24:22,840 --> 00:24:24,544 Unë pastaj hartuar atë, dhe e quajti atë a.out. 499 00:24:24,544 --> 00:24:27,460 Dhe atëherë unë hartuar atë përsëri pak ndryshe dhe e quajti atë përshëndetje. 500 00:24:27,460 --> 00:24:32,830 Pra, unë kam tre fotografi në këtë directory, në këtë dosje të quajtur Workspace. 501 00:24:32,830 --> 00:24:35,005 Tani, unë mund të shoh se si në qoftë se unë zvogëluar në fakt. 502 00:24:35,005 --> 00:24:37,530 >> Nëse unë zvogëluar këtu dhe shikoni në atë anën e sipërm të djathtë 503 00:24:37,530 --> 00:24:39,940 qoshe, siç është premtuar të majtë Ana dora e ekranit tuaj 504 00:24:39,940 --> 00:24:42,990 është gjithmonë do të ju tregojnë se çfarë është në llogarinë tuaj, çfarë është 505 00:24:42,990 --> 00:24:44,790 brenda CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 Dhe nuk ka tre fotografi atje. 507 00:24:46,680 --> 00:24:49,070 >> Kështu që unë dua të shpëtoj prej a.out dhe përshëndetje. 508 00:24:49,070 --> 00:24:51,275 Dhe si ju mund të imagjinoni intuitive, ju 509 00:24:51,275 --> 00:24:53,400 mund të lloj të kontrollit klik ose right click mbi këtë. 510 00:24:53,400 --> 00:24:54,590 Dhe kjo menu pak pops up. 511 00:24:54,590 --> 00:24:57,170 Ju mund të shkarkoni skedarin, të drejtuar ajo, preview atë, refresh, riemërtoj, 512 00:24:57,170 --> 00:24:57,700 apo çfarë jo. 513 00:24:57,700 --> 00:25:00,260 >> Dhe unë mund vetëm të fshini, dhe ajo do të shkojë larg. 514 00:25:00,260 --> 00:25:05,260 Por le të bëjë gjëra me një komandë Linja tani për tani, në mënyrë që të merrni të rehatshme 515 00:25:05,260 --> 00:25:07,010 me këtë, dhe të bëjë të mëposhtme. 516 00:25:07,010 --> 00:25:12,345 Unë jam duke shkuar për të shkuar përpara dhe për të hequr a.out nga shtypja fjalë për fjalë rma.out. 517 00:25:12,345 --> 00:25:14,890 Ajo rezulton, urdhrin për heqjen ose fshirë diçka, 518 00:25:14,890 --> 00:25:16,280 nuk është hequr apo fshij. 519 00:25:16,280 --> 00:25:21,260 >> Është më shumë shkurtimisht RM, vetëm për të kursyer ju disa tasteve, dhe hit Enter. 520 00:25:21,260 --> 00:25:24,707 Tani ne do të jetë disi cryptically hequr a.out rregullt file. 521 00:25:24,707 --> 00:25:27,040 Unë vërtetë nuk e di se çfarë një fotografi të parregullt do të jetë ende. 522 00:25:27,040 --> 00:25:28,660 Por unë dua për të hequr atë. 523 00:25:28,660 --> 00:25:30,150 >> Kështu që unë jam duke shkuar për të tipit Y për Po. 524 00:25:30,150 --> 00:25:31,940 Ose unë mund të shkruani atë jashtë, dhe hit Enter. 525 00:25:31,940 --> 00:25:33,440 Dhe, përsëri, asgjë nuk duket të ndodhë. 526 00:25:33,440 --> 00:25:35,840 Por kjo është, në përgjithësi, një gjë e mirë. 527 00:25:35,840 --> 00:25:40,490 >> Në qoftë se unë lloji LS këtë herë, çfarë duhet të shoh? 528 00:25:40,490 --> 00:25:44,930 Shpresojmë, vetëm përshëndetje dhe hello.c. 529 00:25:44,930 --> 00:25:47,286 Tani, si një mënjanë, ju do të vini re këtë yll, yll, 530 00:25:47,286 --> 00:25:48,660 kjo është në fund të programeve të mia. 531 00:25:48,660 --> 00:25:50,201 Dhe ata janë gjithashtu duke treguar deri në të gjelbër. 532 00:25:50,201 --> 00:25:53,970 Kjo është vetëm mënyrë CS50 IDE-së e cluing ju në faktin 533 00:25:53,970 --> 00:25:55,280 se kjo nuk është kodi burim. 534 00:25:55,280 --> 00:25:58,880 Kjo është një ekzekutues, një runnable program që ju në fakt mund të kandidojë 535 00:25:58,880 --> 00:26:01,020 duke bërë dot plagë, dhe atëherë është emri. 536 00:26:01,020 --> 00:26:05,860 >> Tani, më lejoni të shkojnë përpara dhe për të hequr kjo, rm hello, Shkruani, hiqni rregullt 537 00:26:05,860 --> 00:26:08,010 paraqesë hello, po. 538 00:26:08,010 --> 00:26:11,180 Dhe tani, nëse unë lloji LS, ne jemi kthyer në hello.c. 539 00:26:11,180 --> 00:26:13,917 Mundohuni të mos fshini tuaj Kodi aktual burimi. 540 00:26:13,917 --> 00:26:16,250 Edhe pse ka karakteristika ndërtuar në CS50 IDE ku 541 00:26:16,250 --> 00:26:19,870 ju mund të shkoni nëpër historinë tuaj rishikim dhe rewind në kohë, nëse ju aksidentalisht 542 00:26:19,870 --> 00:26:23,660 fshini diçka, të bëjë të jemi të ndërgjegjshëm sipas këtyre promptet po ose jo, 543 00:26:23,660 --> 00:26:25,381 për atë që ju në të vërtetë doni të bëni. 544 00:26:25,381 --> 00:26:27,380 Dhe kur të shkoj deri në krye la qoshe dorën këtu, 545 00:26:27,380 --> 00:26:30,696 të gjitha që mbetet është hello.c. 546 00:26:30,696 --> 00:26:32,570 Pra, ka bunches e komandat e tjera që 547 00:26:32,570 --> 00:26:37,550 mund të ekzekutojë në botën e Linux, njëra prej të cilave është, përsëri, Për të bërë. 548 00:26:37,550 --> 00:26:40,180 Dhe ne jemi duke shkuar për të bërë programi im tani si më poshtë. 549 00:26:40,180 --> 00:26:43,270 >> Në vend të bërë tingëllim, në vend të bërë tingëllimë-o, 550 00:26:43,270 --> 00:26:45,860 Unë do të thjesht fjalë për fjalë të tipit, të bëjë përshëndetje. 551 00:26:45,860 --> 00:26:49,630 Dhe tani vini re, unë jam Nuk shtypja bëjnë hello.c. 552 00:26:49,630 --> 00:26:50,910 Unë jam i shtypur bërë përshëndetje. 553 00:26:50,910 --> 00:26:54,840 >> Dhe ky program Sigurohuni që vjen me IDE CS50, dhe më shumë 554 00:26:54,840 --> 00:26:57,090 në përgjithësi me Linux, është një program që është 555 00:26:57,090 --> 00:26:59,120 duke shkuar për të bërë një program të quajtur Përshëndetje. 556 00:26:59,120 --> 00:27:03,680 Dhe ajo do të marrë, me konventë, se në qoftë se ky program mund të bëhet, 557 00:27:03,680 --> 00:27:09,030 ajo do të jetë bërë nga një burim Kodi Dosja përfundon në dot c, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Pra, nëse unë hit Enter tani, njoftim që komanda që merr ekzekutohet 559 00:27:12,210 --> 00:27:14,340 është në fakt edhe më gjatë para se më parë. 560 00:27:14,340 --> 00:27:16,670 Dhe kjo është për shkak se ne kemi preconfigured CS50 IDE që të ketë 561 00:27:16,670 --> 00:27:19,878 disa karakteristika të tjera të ndërtuara në atë ne nuk kemi nevojë vetëm ende, por së shpejti do të. 562 00:27:19,878 --> 00:27:23,470 Por gjëja kryesore për të realizuar Tani unë kam një program Përshëndetje. 563 00:27:23,470 --> 00:27:27,080 >> Në qoftë se unë lloji LS përsëri, unë kanë një program Hello. 564 00:27:27,080 --> 00:27:32,070 Dhe unë mund të kandidojë atë me dot çaj a.out, jo, 565 00:27:32,070 --> 00:27:35,590 sepse të gjithë pika e kësaj Ushtrimi ishte dot përshëndetje plagë. 566 00:27:35,590 --> 00:27:38,089 Dhe tani kam programin tim përshëndetje botërore. 567 00:27:38,089 --> 00:27:39,880 Pra duke shkuar përpara, ne jemi pothuajse gjithmonë vetëm 568 00:27:39,880 --> 00:27:42,088 do të hartojnë programet tona Bëni përdorimin e komandës. 569 00:27:42,088 --> 00:27:45,300 Dhe atëherë ne jemi duke shkuar për të drejtuar ata nga dot çaj, dhe emri i programit. 570 00:27:45,300 --> 00:27:49,610 Por kuptojnë se çfarë është duke bërë Bëni për ju, a nuk është në vetvete një përpilues. 571 00:27:49,610 --> 00:27:53,310 Kjo është vetëm një program komoditet që e di se si për të shkaktuar një përpilues 572 00:27:53,310 --> 00:27:56,470 për të drejtuar në mënyrë që ju vetë mund ta përdorni atë. 573 00:27:56,470 --> 00:28:00,220 >> Çfarë komandat e tjera ekzistojnë në Linux, dhe nga ana tjetër CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Ne së shpejti do të shohim se ka një CD komandë, Ndryshimi Directory. 575 00:28:03,107 --> 00:28:05,190 Kjo ju lejon brenda Ndërfaqja juaj command line 576 00:28:05,190 --> 00:28:07,610 për të ecur përpara dhe prapa, dhe të hapur dosje të ndryshme 577 00:28:07,610 --> 00:28:08,860 pa përdorur miun. 578 00:28:08,860 --> 00:28:12,470 >> LS kemi parë, i cili qëndron për listën fotografi në dosjen aktuale. 579 00:28:12,470 --> 00:28:14,650 Bëni Dir, ju mund të ndoshta fillojnë të konkludoj 580 00:28:14,650 --> 00:28:18,150 ç'do të thotë kjo now-- bëjë directory, në qoftë se ju doni të krijoni një dosje. 581 00:28:18,150 --> 00:28:21,270 RM për hiqni, RM Dir për hequr directory-- dhe këto, 582 00:28:21,270 --> 00:28:24,160 përsëri, janë vija e komandës ekuivalentet e çfarë ju 583 00:28:24,160 --> 00:28:26,945 mund të bëjë në CS50 IDE me miun tuaj. 584 00:28:26,945 --> 00:28:28,820 Por ju do të gjeni së shpejti që ndonjëherë kjo është vetëm 585 00:28:28,820 --> 00:28:30,610 shumë më të shpejtë për të bërë gjëra me një tastierë, 586 00:28:30,610 --> 00:28:33,690 dhe në fund të fundit shumë më të fuqishme. 587 00:28:33,690 --> 00:28:36,440 >> Por është e vështirë për të argumentuar se çdo gjë që kemi bërë deri më tani 588 00:28:36,440 --> 00:28:39,990 është e gjitha që e fuqishme, kur të gjithë ne kemi qenë të thënë se është, Hello World. 589 00:28:39,990 --> 00:28:43,740 Dhe, në fakt, unë hardcoded fjalë përshëndetje botërore në programin tim. 590 00:28:43,740 --> 00:28:45,530 Nuk ka dinamizëm ende. 591 00:28:45,530 --> 00:28:49,320 Scratch ishte një urdhër të magnitudë më interesante javën e kaluar. 592 00:28:49,320 --> 00:28:51,220 >> Dhe kështu që le të merrni atje. 593 00:28:51,220 --> 00:28:55,310 Le të bëjmë një hap drejt që nga Mënyra e disa prej këtyre funksioneve. 594 00:28:55,310 --> 00:28:59,470 Pra, jo vetëm që e bën C vijnë me printf, dhe rrush të funksioneve të tjera 595 00:28:59,470 --> 00:29:01,850 disa prej të cilave ne do të shohim me kalimin e kohës, ajo nuk ka 596 00:29:01,850 --> 00:29:05,760 bëjnë të gjitha që lehtë të drejtë nga e portës në marrjen e të dhëna përdoruesi. 597 00:29:05,760 --> 00:29:08,140 >> Në fakt, një nga dobësitë e gjuhëve si C, 598 00:29:08,140 --> 00:29:10,140 dhe madje edhe të Java dhe ende tjerë, është se ajo nuk ka 599 00:29:10,140 --> 00:29:15,860 e bëjnë të lehtë për të marrë vetëm gjëra të tilla si integers nga përdoruesit, ose vargjet, fjalët, 600 00:29:15,860 --> 00:29:19,970 dhe frazat, le të vetëm gjëra të tilla si vlerat pikë, ose numrat e vërtetë lundrues 601 00:29:19,970 --> 00:29:23,240 me pikë dhjetore, dhe të vërtetë numrat e gjatë, si ne së shpejti do të shohim. 602 00:29:23,240 --> 00:29:27,000 Pra, kjo listë e funksioneve këtu, këto janë si pjesë të tjera puzzle Scratch 603 00:29:27,000 --> 00:29:31,090 se ne kemi para-instaluar në CS50 IDE që ne do të përdorim për disa javë 604 00:29:31,090 --> 00:29:34,010 si rrotat të trajnimit të llojeve dhe përfundimisht të marrë të tyre, dhe të kërkoni 605 00:29:34,010 --> 00:29:37,210 nën kapuç, ndoshta, në se si këto gjëra janë zbatuar. 606 00:29:37,210 --> 00:29:40,460 >> Por për të bërë këtë, le të në fakt të shkruar një program. 607 00:29:40,460 --> 00:29:41,770 Më lejoni të shkojnë përpara tani. 608 00:29:41,770 --> 00:29:44,750 Dhe unë jam duke shkuar për të krijuar një të ri fotografi duke klikuar këtë plus të vogël, 609 00:29:44,750 --> 00:29:45,970 dhe klikuar File ri. 610 00:29:45,970 --> 00:29:49,250 >> Unë jam duke shkuar për të shpëtuar këtë të ardhshëm një si, le të themi, string.c, 611 00:29:49,250 --> 00:29:50,750 sepse unë dua të luaj me vargjet. 612 00:29:50,750 --> 00:29:53,990 Dhe string në C është vetëm një sekuencë e karaktereve. 613 00:29:53,990 --> 00:29:56,090 Pra, tani le të shkojë përpara dhe të bëjë të mëposhtme. 614 00:29:56,090 --> 00:30:01,204 >> Përfshijnë standarde IO.h-- dhe rezulton IO standarde, 615 00:30:01,204 --> 00:30:03,360 IO thjesht do të thotë input dhe output. 616 00:30:03,360 --> 00:30:05,920 Pra, rezulton se kjo linjë këtu është se çfarë 617 00:30:05,920 --> 00:30:08,140 është na fqinje për të përdorur printf. 618 00:30:08,140 --> 00:30:10,410 Printf, natyrisht, prodhon dalje. 619 00:30:10,410 --> 00:30:15,000 Pra, në mënyrë që të përdorin printf, ajo kthehet se ju duhet të keni këtë linjë të kodit 620 00:30:15,000 --> 00:30:16,040 në krye të dosjes tuaj. 621 00:30:16,040 --> 00:30:18,456 >> Dhe ne do të kthehen në atë që që me të vërtetë do të thotë para se të gjatë. 622 00:30:18,456 --> 00:30:20,400 Ajo rezulton se në çdo program C unë shkruaj, 623 00:30:20,400 --> 00:30:23,640 Unë kam marrë për të filluar me Kodi që duket si kjo. 624 00:30:23,640 --> 00:30:26,860 Dhe ju do të vëreni CS50 IDE, dhe zhvillim tjetër i integruar 625 00:30:26,860 --> 00:30:30,050 mjedise si ai, do të përpiqemi sa më mirë 626 00:30:30,050 --> 00:30:31,780 ata mund të për të përfunduar mendimin tuaj. 627 00:30:31,780 --> 00:30:35,930 Në fakt, një moment më parë në qoftë se unë të prish atë që unë vetëm e bëri, unë hit Enter. 628 00:30:35,930 --> 00:30:39,160 >> Unë pastaj goditi kaçurrel hapur mbajtëse, hit Enter përsëri. 629 00:30:39,160 --> 00:30:40,430 Dhe kjo përfundoi mendimin tim. 630 00:30:40,430 --> 00:30:45,140 Ajo më dha një linjë të re, prerë jo më pak për arsye bukur stilistike ne do të shohim. 631 00:30:45,140 --> 00:30:48,559 Dhe pastaj ajo automatikisht dha mua që mbajtëse kaçurrel për të përfunduar mendimin tim. 632 00:30:48,559 --> 00:30:50,600 Tani, ajo nuk ka gjithmonë me mend se çfarë ju doni të bëni. 633 00:30:50,600 --> 00:30:53,620 Por në pjesën më të madhe, ajo ka ju kursejnë disa tasteve. 634 00:30:53,620 --> 00:30:59,560 Pra, një moment më parë, ne u këtë program-- hello, bota, dhe pastaj të hartuar atë, 635 00:30:59,560 --> 00:31:00,460 dhe pastaj vrapoi atë. 636 00:31:00,460 --> 00:31:01,867 Por nuk ka dinamizëm këtu. 637 00:31:01,867 --> 00:31:03,700 Po në qoftë se ne të kërkuar për të bëjë diçka të ndryshme? 638 00:31:03,700 --> 00:31:07,630 E pra, çfarë nëse kam kërkuar për të vërtetë të marrë një varg nga përdoruesit? 639 00:31:07,630 --> 00:31:11,250 Unë jam duke shkuar për të përdorur një pjesë mister quajtur pikërisht that-- merrni string. 640 00:31:11,250 --> 00:31:15,860 >> Rezulton në C se kur ju nuk doni për të siguruar të dhëna për një copë mister, 641 00:31:15,860 --> 00:31:19,360 ose më shumë si duhet në një funksion, ju fjalë për fjalë vetëm të bëjë kllapa hapur, 642 00:31:19,360 --> 00:31:20,430 kllapa të ngushtë. 643 00:31:20,430 --> 00:31:25,540 Pra, kjo është sikur nuk ka asnjë kuti e bardhë të tipit në. 644 00:31:25,540 --> 00:31:27,720 Blloku themi para kishte një kuti të vogël të bardhë. 645 00:31:27,720 --> 00:31:29,660 Ne nuk e kemi atë kuti e bardhë tani. 646 00:31:29,660 --> 00:31:33,310 >> Por, kur unë e quaj të marrë varg, I duan të vënë rezultatin diku. 647 00:31:33,310 --> 00:31:37,680 Pra, një paradigmë shumë të zakonshme në C është për të thërrasë një funksion, si get varg këtu, 648 00:31:37,680 --> 00:31:41,070 dhe pastaj të ruajtur vlerën e saj të kthimit. 649 00:31:41,070 --> 00:31:44,450 Kjo është rezultat i saj përpjekje në diçka. 650 00:31:44,450 --> 00:31:47,630 >> Dhe çfarë është ndërtuar në programimin, 651 00:31:47,630 --> 00:31:53,450 qoftë në Scratch, ose tashmë C, se ne mund të përdorni të vërtetë të ruajtur diçka? 652 00:31:53,450 --> 00:31:55,990 E quajti atë një variabël, e drejtë? 653 00:31:55,990 --> 00:32:00,320 Dhe në Scratch, ne nuk të vërtetë kujdes se çfarë po ndodhte në variablave. 654 00:32:00,320 --> 00:32:02,170 >> Por në këtë rast, ne të vërtetë të bëjë. 655 00:32:02,170 --> 00:32:03,719 Unë jam duke shkuar për të thënë varg. 656 00:32:03,719 --> 00:32:05,510 Dhe atëherë unë mund të telefononi kjo gjë që unë dua. 657 00:32:05,510 --> 00:32:08,340 Unë jam duke shkuar për të thirrur atë emri, merr të string. 658 00:32:08,340 --> 00:32:10,250 >> Dhe tani edhe në qoftë se ju jeni një të ri pak për këtë, 659 00:32:10,250 --> 00:32:11,984 vëreni se unë jam i mungojnë disa detaje. 660 00:32:11,984 --> 00:32:13,150 Unë jam duke harruar një gjysmë-zorrës së trashë. 661 00:32:13,150 --> 00:32:14,400 Unë kam nevojë për të përfunduar këtë mendim. 662 00:32:14,400 --> 00:32:17,480 Kështu që unë jam duke shkuar për të lëvizur kursorin e mia, dhe e goditi gjysmë-zorrës së trashë atje. 663 00:32:17,480 --> 00:32:19,130 Dhe çfarë kam bërë vetëm? 664 00:32:19,130 --> 00:32:21,440 Në këtë linjë të kodit, numër 5 në këtë moment, 665 00:32:21,440 --> 00:32:23,799 Unë jam duke e quajtur varg të marrë me pa inputeve. 666 00:32:23,799 --> 00:32:26,090 Kështu që nuk ka të bardhë pak kuti si blloku Save ka. 667 00:32:26,090 --> 00:32:28,590 >> Unë jam vetëm duke thënë, hej, kompjuter, të marrë më një varg. 668 00:32:28,590 --> 00:32:31,390 Shenja të barabartë nuk është me të vërtetë një shenjë të barabartë, në vetvete. 669 00:32:31,390 --> 00:32:33,790 Është detyra operatori, që do të thotë, 670 00:32:33,790 --> 00:32:37,860 hey, kompjuter, të lëvizin vlera nga e drejta mbi të majtë. 671 00:32:37,860 --> 00:32:40,480 Dhe në të majtë, unë kam në vijim. 672 00:32:40,480 --> 00:32:43,580 >> Hey, kompjuter, më jepni një string-- një sekuencë e karaktereve. 673 00:32:43,580 --> 00:32:45,637 Dhe e quajnë atë string emrin. 674 00:32:45,637 --> 00:32:47,220 Dhe as nuk keni për të thirrur atë Emri. 675 00:32:47,220 --> 00:32:49,970 >> Unë mund të telefononi atë, konvencionale, diçka si S, 676 00:32:49,970 --> 00:32:52,900 ashtu si ne i përdorur për të e quajnë variabli i. 677 00:32:52,900 --> 00:32:54,829 Por tani kam nevojë për të bërë diçka me të. 678 00:32:54,829 --> 00:32:57,370 Ajo do të jetë goxha i trashë për të provoni hartimin e këtij kodi, duke 679 00:32:57,370 --> 00:32:59,410 ky program, edhe pse Unë jam duke marrë një varg, 680 00:32:59,410 --> 00:33:01,580 sepse kjo është ende vetëm do të thonë hello botë. 681 00:33:01,580 --> 00:33:06,140 >> Por, çfarë nëse unë dua për të ndryshuar këtë. 682 00:33:06,140 --> 00:33:07,940 Pse nuk mund ta bëj këtë? 683 00:33:07,940 --> 00:33:11,632 Percent s, presje s. 684 00:33:11,632 --> 00:33:13,090 Dhe kjo është pak i fshehtë ende. 685 00:33:13,090 --> 00:33:15,560 >> Pra më lejoni të bëjë variablat e mia më të qartë. 686 00:33:15,560 --> 00:33:17,510 Më lejoni të përmendur këtë Emri ndryshueshme. 687 00:33:17,510 --> 00:33:20,230 Dhe le të shohim nëse ne nuk mund të vë në lojë pavarësisht se çfarë po ndodh këtu. 688 00:33:20,230 --> 00:33:22,770 >> Pra, në linjë pesë, Unë jam duke marrë një varg. 689 00:33:22,770 --> 00:33:25,620 Dhe unë jam ruajtjen atë varg, çfarëdo që përdoruesi ka shtypur në 690 00:33:25,620 --> 00:33:28,430 në tastierën e tij ose të saj, në një ndryshore të quajtur Emri. 691 00:33:28,430 --> 00:33:30,590 Dhe kjo rezulton se printf nuk ka vetëm 692 00:33:30,590 --> 00:33:34,220 të marrë një argument në të dyfishtë citate, një input në thonjëza dyshe. 693 00:33:34,220 --> 00:33:39,100 >> Ajo mund të marrë dy ose tre, ose më shumë, të tilla se dyti, apo të tretë, apo të katërt, 694 00:33:39,100 --> 00:33:42,320 janë të gjithë emrat e variablave, ose në mënyrë specifike vlerat, 695 00:33:42,320 --> 00:33:48,610 që ju doni të prizë në, dinamike, që string në thonjëza. 696 00:33:48,610 --> 00:33:52,110 Me fjalë të tjera, çfarë do të ishte gabim me këtë? 697 00:33:52,110 --> 00:33:57,920 Në qoftë se unë vetëm tha hello emri, backslash n, shpëtoi dosjen time, hartuar kodin tim, 698 00:33:57,920 --> 00:34:01,660 dhe u zhvillua kjo, çfarë do të ndodhë? 699 00:34:01,660 --> 00:34:05,139 >> Është vetëm do të thonë, përshëndetje emrin, fjalë për fjalë N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 që është lloj i trashë, sepse nuk është e ndryshme nga bota. 701 00:34:07,900 --> 00:34:10,400 Pra, çdo gjë në thonjëza është ajo fjalë për fjalë merr shtypura. 702 00:34:10,400 --> 00:34:12,520 Pra, nëse unë dua që të ketë një placeholder atje, 703 00:34:12,520 --> 00:34:14,422 Unë në fakt duhet të përdorni disa sintaksë të veçantë. 704 00:34:14,422 --> 00:34:17,380 Dhe kjo rezulton në qoftë se ju lexoni Dokumentacioni për funksionin printf, 705 00:34:17,380 --> 00:34:21,320 ajo do të ju them se qoftë se ju përdorni për qind s, 706 00:34:21,320 --> 00:34:23,920 ju mund të zëvendësojnë një vlerë si më poshtë. 707 00:34:23,920 --> 00:34:27,190 >> Pas një presje pas kësaj quote dyfishtë, ju thjesht 708 00:34:27,190 --> 00:34:29,179 shkruani emrin e të variable që ju dëshironi 709 00:34:29,179 --> 00:34:33,790 të vihet në prizë në atë format Kodi, apo format specifier, 710 00:34:33,790 --> 00:34:35,469 qind s për vargjet. 711 00:34:35,469 --> 00:34:39,190 Dhe tani, në qoftë se unë kam ruajtur dosjen time, I kthehemi poshtë për terminalin tim. 712 00:34:39,190 --> 00:34:42,870 Dhe unë lloji Bëni String, sepse, përsëri, emri i këtij 713 00:34:42,870 --> 00:34:45,510 fotografi që kam zgjedhur para është string.c. 714 00:34:45,510 --> 00:34:48,510 >> Kështu që unë jam duke shkuar për të thënë Bëni String, të hyjë. 715 00:34:48,510 --> 00:34:51,550 Oh mirësinë time, shikoni në të gjitha gabimet që kemi bërë tashmë. 716 00:34:51,550 --> 00:34:55,540 Dhe kjo is-- çfarë, kjo është me të vërtetë si një, shtatë program gjashtë linjë? 717 00:34:55,540 --> 00:34:57,790 Pra, ky është vendi ku ajo mund shumë shpejt të madhe. 718 00:34:57,790 --> 00:35:00,890 >> Kjo dritare terminali ka tani regurgitated vetëm 719 00:35:00,890 --> 00:35:03,230 një numër i madh i mesazhet e gabimit. 720 00:35:03,230 --> 00:35:07,560 Sigurisht, unë nuk kam shumë gabim Mesazhet se unë rreshta të kodit. 721 00:35:07,560 --> 00:35:08,680 Pra, çfarë po ndodh? 722 00:35:08,680 --> 00:35:10,920 >> E pra, strategjia më e mirë për të bërë në çdo kohë ju 723 00:35:10,920 --> 00:35:13,710 do të hasni një e madhe Lista e gabimeve si kjo, 724 00:35:13,710 --> 00:35:16,690 po lëviz prapa, shikoni për komandën ju vetëm u, e cila në rastin tim 725 00:35:16,690 --> 00:35:18,020 është bërë varg. 726 00:35:18,020 --> 00:35:21,630 Shikoni se çfarë bëjnë bëri, dhe kjo është se komandën e gjatë tingëllimë, ndonjë gjë e madhe atje. 727 00:35:21,630 --> 00:35:22,950 >> Por, e kuqe është e keqe. 728 00:35:22,950 --> 00:35:24,750 Gjelbër është duke u përpjekur të jetë butë dhe të dobishme. 729 00:35:24,750 --> 00:35:26,140 Por është ende e keqe, në këtë rast. 730 00:35:26,140 --> 00:35:27,510 Por ku është kjo e keqe? 731 00:35:27,510 --> 00:35:31,450 >> String.c, linjë pesë, karakteri pesë. 732 00:35:31,450 --> 00:35:32,930 Pra, kjo është vetëm konventë e zakonshme. 733 00:35:32,930 --> 00:35:36,060 diçka diçka të zorrës së trashë do të thotë Numri i linjës dhe numri karakter. 734 00:35:36,060 --> 00:35:41,080 Gabim, përdorimi i padeklaruar string identifikues. 735 00:35:41,080 --> 00:35:42,900 A e keni të thotë standarde në? 736 00:35:42,900 --> 00:35:45,530 >> Pra, për fat të keq, tingëllimë është duke u përpjekur të jenë të dobishëm. 737 00:35:45,530 --> 00:35:46,850 Por kjo është e gabuar, në këtë rast. 738 00:35:46,850 --> 00:35:49,350 Jo, tingëllimë, unë nuk do të thotë IO standarde. 739 00:35:49,350 --> 00:35:51,070 Unë do të thotë se në vijën e parë, po. 740 00:35:51,070 --> 00:35:53,420 >> Por linja pesë është kjo këtu. 741 00:35:53,420 --> 00:35:57,040 Dhe tingëllimë nuk ka kuptojnë S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 Kjo është një identifikues padeklaruar, një fjala vetëm ajo kurrë nuk e ka parë më parë. 743 00:36:01,490 --> 00:36:05,730 Dhe kjo është për shkak se C, gjuha ne jemi duke shkruar kodin në të drejtë tani, 744 00:36:05,730 --> 00:36:08,070 nuk ka ndryshore të quajtur vargjet. 745 00:36:08,070 --> 00:36:11,380 >> Ajo nuk ka, nga parazgjedhur, mbështetje diçka që quhet një varg. 746 00:36:11,380 --> 00:36:16,750 Kjo është një pjesë e CS50 zhargon, por shumë konvencionale. 747 00:36:16,750 --> 00:36:18,600 Por unë mund të rregullojmë këtë si më poshtë. 748 00:36:18,600 --> 00:36:22,090 >> Nëse unë të shtoni një linjë të kodit në majë të këtij programi, 749 00:36:22,090 --> 00:36:27,890 përfshijnë CS50.h, i cili është një tjetër fotografi diku brenda CS50 IDE, diku 750 00:36:27,890 --> 00:36:30,820 në hard drive, kështu që të flasin, i sistemit operativ Ubuntu 751 00:36:30,820 --> 00:36:33,590 se unë jam në punë, që është fotografi që është 752 00:36:33,590 --> 00:36:38,740 duke shkuar për të mësuar operative sistemi çfarë është një string është, vetëm 753 00:36:38,740 --> 00:36:41,930 si io.h standarde është fotografi në sistemin operativ që është 754 00:36:41,930 --> 00:36:44,430 duke shkuar për të mësuar se çfarë është printf. 755 00:36:44,430 --> 00:36:46,810 >> Në të vërtetë, ne do të ketë marrë një mesazh shumë të ngjashme 756 00:36:46,810 --> 00:36:50,600 nëse IO kishte pranuar standardin IO.h dhe u përpoq për të përdorur printf. 757 00:36:50,600 --> 00:36:53,632 Kështu që unë jam duke shkuar për të shkuar përpara dhe vetëm Merrni kontrollin L për të pastruar ekranin tim. 758 00:36:53,632 --> 00:36:56,340 Ose ju mund të shtypni të qartë dhe kjo do vetëm të pastruar dritare terminali. 759 00:36:56,340 --> 00:36:58,020 Por ju mund të shkoni prapa në kohë. 760 00:36:58,020 --> 00:37:01,100 >> Dhe unë jam duke shkuar për të bërë përsëritje String. 761 00:37:01,100 --> 00:37:03,660 Kalojnë gishtat e mi këtë herë, Enter. 762 00:37:03,660 --> 00:37:05,380 O Zoti im, ai ka punuar. 763 00:37:05,380 --> 00:37:09,280 kjo tregon mua një komandë të gjatë fshehtë kjo është ajo që gjenerohet Sigurohuni via tingëllimë, 764 00:37:09,280 --> 00:37:10,460 por jo mesazhet e gabimit. 765 00:37:10,460 --> 00:37:12,460 Pra e kupton, edhe pse ju mund të merrni plotësisht 766 00:37:12,460 --> 00:37:14,480 përshkuar me numrin e mesazhet e gabimit, 767 00:37:14,480 --> 00:37:17,540 ajo vetëm mund të jetë kjo Cascading bezdisshëm Efekti, ku tingëllimë nuk e kupton 768 00:37:17,540 --> 00:37:19,620 një gjë, që do të thotë atë, atëherë nuk e kupton fjalën tjetër, 769 00:37:19,620 --> 00:37:20,560 ose linjë tjetër. 770 00:37:20,560 --> 00:37:22,850 Dhe kështu që ajo vetëm nuk gëlltitet në kodin tuaj. 771 00:37:22,850 --> 00:37:24,440 Por fix mund të jetë e thjeshtë. 772 00:37:24,440 --> 00:37:27,822 Dhe kështu që gjithmonë të përqëndrohet në Linja e parë e prodhimit. 773 00:37:27,822 --> 00:37:29,530 Dhe në qoftë se ju nuk e bëni kuptojnë atë, vetëm shikoni 774 00:37:29,530 --> 00:37:32,480 për fjalë kyçe që mund të jetë të dhëna, dhe numri i linjës, 775 00:37:32,480 --> 00:37:34,650 dhe karakteri, ku se gabimi mund të jetë. 776 00:37:34,650 --> 00:37:40,328 >> Tani më lejoni të shkoj përpara dhe të shkruani dot çaj, varg, të hyjë. 777 00:37:40,328 --> 00:37:44,340 Hm, nuk është thënë përshëndetje asgjë. 778 00:37:44,340 --> 00:37:46,210 Pse? 779 00:37:46,210 --> 00:37:48,170 E pra, kujtoj, ku ai kandidon? 780 00:37:48,170 --> 00:37:53,730 >> Kjo është mbërthyer ndoshta në këtë moment në një lak, në qoftë se ju do të, në përputhje gjashtë, 781 00:37:53,730 --> 00:37:56,950 sepse Get String me dashje, shkruar nga stafi CS50, 782 00:37:56,950 --> 00:38:00,350 ka për qëllim të vërtetë të rrimë aty duke pritur, dhe duke pritur, 783 00:38:00,350 --> 00:38:01,850 dhe duke pritur për një varg. 784 00:38:01,850 --> 00:38:03,792 Të gjithë ne kuptojmë me varg është input njerëzore. 785 00:38:03,792 --> 00:38:04,500 Kështu që ju e dini se çfarë? 786 00:38:04,500 --> 00:38:05,166 Më lejoni të shkojnë përpara. 787 00:38:05,166 --> 00:38:08,704 Dhe vetëm në një trill, më lejoni shkruani emrin tim, Davidit, të hyjë. 788 00:38:08,704 --> 00:38:10,120 Tani unë kam një program më dinamik. 789 00:38:10,120 --> 00:38:11,240 Ai tha, përshëndetje David. 790 00:38:11,240 --> 00:38:16,280 >> Nëse unë të shkojnë përpara dhe të drejtuar këtë përsëri, më lejoni të provoni të them emrin Zamila, të hyjë. 791 00:38:16,280 --> 00:38:17,940 Dhe tani ne kemi një program dinamik. 792 00:38:17,940 --> 00:38:19,380 Unë nuk e kanë koduar vështirë botën. 793 00:38:19,380 --> 00:38:21,760 Unë nuk e kanë koduar vështirë emrin, apo David, apo Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Tani është më shumë si programet ne e dimë, ku në qoftë se ajo merr të dhëna, 795 00:38:25,350 --> 00:38:27,870 ajo prodhon dalje pak më të ndryshme. 796 00:38:27,870 --> 00:38:31,020 Tani, kjo nuk është më e mirë user experience, ose UX. 797 00:38:31,020 --> 00:38:33,000 I drejtuar programin. 798 00:38:33,000 --> 00:38:35,830 >> Unë nuk e di atë që unë jam duke menduar për të bërë, nëse unë në fakt të parë në 799 00:38:35,830 --> 00:38:37,290 ose mbani mend kodin burimor. 800 00:38:37,290 --> 00:38:39,640 Pra, le të bëjë të përdoruesit përvojë pak më të mirë 801 00:38:39,640 --> 00:38:41,240 me thjeshte e gjërave. 802 00:38:41,240 --> 00:38:44,782 Më lejoni të shkoj përsëri në këtë program, dhe thjesht të them printf. 803 00:38:44,782 --> 00:38:48,870 >> Dhe më lejoni të shkoj përpara dhe të thonë emrin, zorrës së trashë, dhe një hapësirë, dhe pastaj një gjysmë-zorrës së trashë. 804 00:38:48,870 --> 00:38:51,170 Dhe vetëm për shkelma, asnjë reagim n. 805 00:38:51,170 --> 00:38:52,980 Dhe kjo është e qëllimshme, sepse unë nuk dua 806 00:38:52,980 --> 00:38:54,590 e shpejtë për të lëvizur në vijën e ardhshëm. 807 00:38:54,590 --> 00:38:58,800 >> Unë dua të, në vend të kësaj, e bëjnë këtë, të bëjë string për të përpiluar kodin tim në makinë të re 808 00:38:58,800 --> 00:39:00,980 Kodi dot çaj string. 809 00:39:00,980 --> 00:39:02,460 Ah, kjo është shumë prettier. 810 00:39:02,460 --> 00:39:05,780 Tani unë në fakt e di se çfarë kompjuteri dëshiron që unë të bëj, t'i jepte një emër. 811 00:39:05,780 --> 00:39:10,020 >> Kështu që unë jam duke shkuar për të shkuar përpara dhe të shkruani në Rob, të hyjë, dhe hello, Rob. 812 00:39:10,020 --> 00:39:13,640 Pra, të kuptojnë, kjo është ende, në fund e ditës, vetëm një program nëntë linjë. 813 00:39:13,640 --> 00:39:15,090 Por ne kemi marrë këto hapa të fëmijës. 814 00:39:15,090 --> 00:39:18,380 >> Ne shkruam një linjë me të cilat ne ishin të njohur, printf, Hello World. 815 00:39:18,380 --> 00:39:19,980 Pastaj ne undid pak se. 816 00:39:19,980 --> 00:39:21,560 Dhe ne fakt përdorur marrë string. 817 00:39:21,560 --> 00:39:23,362 Dhe ne flak se vlera në një variabël. 818 00:39:23,362 --> 00:39:26,070 Dhe pastaj kemi shkuar përpara dhe përmirësuar më tej me një linjë të tretë. 819 00:39:26,070 --> 00:39:29,220 Dhe ky proces përsëritës i shkrim software është me të vërtetë i rëndësishëm. 820 00:39:29,220 --> 00:39:33,420 Në CS50, dhe në jetë në përgjithësi, ju duhet në përgjithësi nuk ulen, 821 00:39:33,420 --> 00:39:36,800 kanë një program në mendje, dhe të përpiqemi për shkrim të gjithë gjë damn të gjitha përnjëherë. 822 00:39:36,800 --> 00:39:40,810 >> Ajo do të, në mënyrë të pashmangshme, të rezultojë në mënyrë të më shumë gabime se sa ne vetë e panë këtu. 823 00:39:40,810 --> 00:39:44,070 Edhe unë, në këtë ditë, vazhdimisht bëjnë gabime të tjera idiote, 824 00:39:44,070 --> 00:39:47,480 gabime në fakt më e vështirë që janë të vështirë të kuptoj. 825 00:39:47,480 --> 00:39:52,095 Por ju do të bëni shumë gabime më shumë rreshta të kodit të shkruani të gjitha përnjëherë. 826 00:39:52,095 --> 00:39:54,220 Dhe kështu që kjo praktikë e, shkruaj pak të kodit 827 00:39:54,220 --> 00:39:57,930 se ju jeni të kënaqur me të, të hartojnë kjo, e drejtuar atë, të provuar atë në përgjithësi, 828 00:39:57,930 --> 00:40:01,370 pastaj të kalojnë on-- kështu që ashtu si ne mbajtur layering dhe layering javën e kaluar, 829 00:40:01,370 --> 00:40:04,190 ndërtuar nga diçka shumë thjeshtë për diçka më të ndërlikuar, 830 00:40:04,190 --> 00:40:05,200 bëjë të njëjtën gjë këtu. 831 00:40:05,200 --> 00:40:08,500 Mos u ulen, dhe të përpiqen për shkruani një problem të tërë. 832 00:40:08,500 --> 00:40:10,780 Aktualisht marrë këto hapa të fëmijës. 833 00:40:10,780 --> 00:40:15,100 >> Tani, vargjet nuk janë të gjithë se e dobishme për vete. 834 00:40:15,100 --> 00:40:18,210 Ne kishim në fakt, në mënyrë ideale, si për kanë diçka tjetër në veglën tonë. 835 00:40:18,210 --> 00:40:20,990 Pra, le të vërtetë të bëjë pikërisht këtë. 836 00:40:20,990 --> 00:40:24,900 >> Më lejoni të shkojnë përpara dhe tani nxit një program pak më të ndryshme. 837 00:40:24,900 --> 00:40:28,320 Dhe ne do të quajmë këtë int.c, për numër të plotë. 838 00:40:28,320 --> 00:40:30,870 Unë jam duke shkuar për të, në mënyrë të ngjashme, përfshijnë CS550.h. 839 00:40:30,870 --> 00:40:33,060 Unë jam duke shkuar për të përfshirë IO standarde. 840 00:40:33,060 --> 00:40:36,630 Dhe kjo do të jetë shumë e zakonshme në këto ditët e para të klasës. 841 00:40:36,630 --> 00:40:39,050 >> Dhe unë jam duke shkuar për të gatshme veten me një funksion kryesor. 842 00:40:39,050 --> 00:40:43,370 Dhe tani në vend të gjetjes së një varg, le të shkojnë përpara dhe për të marrë një int. 843 00:40:43,370 --> 00:40:49,285 Le të thërrasë atë unë, dhe e quajti atë të marrë int, parens ngushtë, gjysmë-zorrës së trashë. 844 00:40:49,285 --> 00:40:51,410 Dhe tani le të bëjmë diçka me të, printf. 845 00:40:51,410 --> 00:40:56,190 >> Le të thonë diçka si hello, backslash n, presje i. 846 00:40:56,190 --> 00:41:00,010 Kështu që unë jam shumë e shumë të imituar çfarë kam bërë vetëm një moment më parë. 847 00:41:00,010 --> 00:41:01,660 Unë kam një placeholder këtu. 848 00:41:01,660 --> 00:41:05,150 Kam presje bëj unë këtu, sepse unë dua të plug unë në atë placeholder. 849 00:41:05,150 --> 00:41:07,250 >> Pra, le të shkojnë përpara dhe të përpiqemi hartimin e këtij programi. 850 00:41:07,250 --> 00:41:10,060 Dosja është quajtur int.c. 851 00:41:10,060 --> 00:41:12,920 Kështu që unë jam duke shkuar për të thënë, të int, të hyjë. 852 00:41:12,920 --> 00:41:16,420 O Zoti im, por nuk është e madhe, apo jo? 853 00:41:16,420 --> 00:41:17,230 Ka një gabim. 854 00:41:17,230 --> 00:41:19,810 >> Ka një gabim sintaktik këtu tille qe programi nuk mund 855 00:41:19,810 --> 00:41:25,460 të përpilohet brenda int.c, linjë shtatë, karakteri 27, format gabim 856 00:41:25,460 --> 00:41:28,400 specifikon tipit char yll, çfarëdo që është. 857 00:41:28,400 --> 00:41:30,020 Por lloji argumenti është int. 858 00:41:30,020 --> 00:41:33,110 >> Kështu që këtu, edhe ne nuk jemi duke shkuar to-- edhe pse sot është një shumë e materialit, 859 00:41:33,110 --> 00:41:35,710 ne do të trullos ju me absolutisht çdo tipar C, 860 00:41:35,710 --> 00:41:38,070 dhe programimit në përgjithësi, në vetëm këto javët e para. 861 00:41:38,070 --> 00:41:40,400 Pra, nuk është shpesh do të jetë zhargon me të cilat ju nuk jeni të njohur. 862 00:41:40,400 --> 00:41:43,350 Dhe, në fakt, ylli char është diçka ne do të kthehen në 863 00:41:43,350 --> 00:41:44,830 në një javë ose dy herë së. 864 00:41:44,830 --> 00:41:47,530 >> Por tani për tani, le të shohim nëse ne mund të kuptoj fjalët që janë të njohur. 865 00:41:47,530 --> 00:41:50,750 Formats-- kështu që ne dëgjuam format specifier, kodi format para. 866 00:41:50,750 --> 00:41:51,840 Kjo është e njohur. 867 00:41:51,840 --> 00:41:53,840 Type-- por argumenti ka të tipit int. 868 00:41:53,840 --> 00:41:55,980 Prisni një minutë, i është një int. 869 00:41:55,980 --> 00:41:59,230 >> Ndoshta për qind në të vërtetë s ka disa kuptimin e përcaktuar. 870 00:41:59,230 --> 00:42:00,230 Dhe, në të vërtetë, ajo ka. 871 00:42:00,230 --> 00:42:03,101 Një numër i plotë, në qoftë se ju doni printf për të zëvendësuar atë, 872 00:42:03,101 --> 00:42:05,350 ju në të vërtetë duhet të përdorë format e ndryshme specifier. 873 00:42:05,350 --> 00:42:06,890 Dhe ju nuk do të dinë këtë nëse dikush ju tha, 874 00:42:06,890 --> 00:42:07,973 ose ju kishte bërë atë më parë. 875 00:42:07,973 --> 00:42:10,490 Por për qind i është çfarë mund të përdoret gjerësisht 876 00:42:10,490 --> 00:42:12,240 në printf për mbylljen në një numër të plotë. 877 00:42:12,240 --> 00:42:14,920 Ju mund të përdorni për qind d për një numër të plotë dhjetore. 878 00:42:14,920 --> 00:42:16,490 Por i është e bukur dhe e thjeshtë këtu. 879 00:42:16,490 --> 00:42:17,590 Pra, ne do të shkojnë me këtë. 880 00:42:17,590 --> 00:42:21,160 >> Tani më lejoni të shkoj përpara dhe të përsëritje make int, Enter. 881 00:42:21,160 --> 00:42:23,328 Kjo është e mirë, nuk ka gabime. 882 00:42:23,328 --> 00:42:27,260 Dot çaj OK int--, përvojë të keqe të përdoruesit, sepse unë nuk kam thënë vetes 883 00:42:27,260 --> 00:42:27,760 Cfare te bej. 884 00:42:27,760 --> 00:42:28,426 Por kjo është në rregull. 885 00:42:28,426 --> 00:42:29,480 Unë jam infektues shpejt. 886 00:42:29,480 --> 00:42:36,260 >> Dhe tani më lejoni të shkoj përpara dhe të të shkruani Davidin, OK, Zamila, Rob. 887 00:42:36,260 --> 00:42:37,820 OK, kështu që kjo është një gjë e mirë. 888 00:42:37,820 --> 00:42:41,710 Këtë herë, unë jam duke përdorur një funksion, një copë mister, i quajtur get int. 889 00:42:41,710 --> 00:42:44,230 Dhe kjo rezulton out-- dhe ne do të shohim këtë më vonë në term-- 890 00:42:44,230 --> 00:42:47,730 stafi CS50 ka zbatuar të marrë varg në mënyrë të tillë 891 00:42:47,730 --> 00:42:50,350 se ai vetëm do të fizikisht të marrë një varg për ty. 892 00:42:50,350 --> 00:42:54,340 >> Ajo ka zbatuar merrni int në një mënyrë të tillë që ajo vetëm do të 893 00:42:54,340 --> 00:42:55,590 të marrë një numër të plotë për ju. 894 00:42:55,590 --> 00:42:57,830 Dhe në qoftë se ju, njerëzore, nuk bashkëpunojnë, është 895 00:42:57,830 --> 00:43:00,590 fjalë për fjalë vetëm do të thonë rigjykuar, rigjykuar, rigjykuar, 896 00:43:00,590 --> 00:43:05,200 fjalë për fjalë ulur atje looping, deri në ju detyrojnë me disa numër magjik, 897 00:43:05,200 --> 00:43:07,670 si 50 dhe përshëndetje 50. 898 00:43:07,670 --> 00:43:11,440 >> Ose në qoftë se kemi drejtuar këtë përsëri dhe lloji në 42, përshëndetje 42. 899 00:43:11,440 --> 00:43:15,750 Dhe kështu funksioni i get int brenda atë pjesë të puzzle 900 00:43:15,750 --> 00:43:19,050 është logjika e mjaftueshme, mendim të mjaftueshme, të kuptoj se çfarë është një fjalë? 901 00:43:19,050 --> 00:43:20,330 Dhe çfarë është një numër? 902 00:43:20,330 --> 00:43:23,165 Vetëm duke pranuar, në fund të fundit, numra. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Pra, rezulton se ky nuk është e gjitha që ekspresive. 905 00:43:30,230 --> 00:43:30,910 deri më tani. 906 00:43:30,910 --> 00:43:33,690 Pra, yay, hera e fundit që ne shkoi shumë shpejt 907 00:43:33,690 --> 00:43:38,320 në lojëra implementuese, dhe animacion, dhe punime artistike në Scratch. 908 00:43:38,320 --> 00:43:42,260 Dhe këtu, ne jemi duke u përmbajtja me botën përshëndetje, përshëndetje dhe 50. 909 00:43:42,260 --> 00:43:43,696 >> Kjo nuk është e gjitha që frymëzues. 910 00:43:43,696 --> 00:43:46,070 Dhe, me të vërtetë, këto para disa Shembujt do të marrë disa kohë 911 00:43:46,070 --> 00:43:47,510 të luftoj deri në eksitim. 912 00:43:47,510 --> 00:43:49,854 Por ne kemi shumë më shumë kontrollojnë tani, në fakt. 913 00:43:49,854 --> 00:43:51,770 Dhe ne jemi duke shkuar për shumë shpejt të fillojnë layering 914 00:43:51,770 --> 00:43:53,870 në krye të këtyre primitives themelore. 915 00:43:53,870 --> 00:43:56,370 >> Por së pari, le të kuptojnë se cilat janë kufizimet. 916 00:43:56,370 --> 00:43:58,620 Në fakt, një nga gjërat Scratch nuk ka të lehtë 917 00:43:58,620 --> 00:44:00,990 le të bëjmë është me të vërtetë duken nën kapuç, 918 00:44:00,990 --> 00:44:03,740 dhe për të kuptuar atë që një kompjuter është, çfarë mund të bëjë, 919 00:44:03,740 --> 00:44:05,250 dhe atë që kufizimet e saj janë. 920 00:44:05,250 --> 00:44:08,580 Dhe, me të vërtetë, se mungesa e të kuptuarit, potencialisht, afat-gjatë 921 00:44:08,580 --> 00:44:12,520 mund të çojë në shkrimin tonë të mistakes-- mete, shkrim software të pasigurt se 922 00:44:12,520 --> 00:44:13,880 merr hacked në një farë mënyre. 923 00:44:13,880 --> 00:44:17,130 >> Pra, le të marrë disa hapa drejt kuptuar këtë pak më të mirë nga 924 00:44:17,130 --> 00:44:19,710 mënyrë për të, të themi, shembullin e mëposhtëm. 925 00:44:19,710 --> 00:44:23,550 Unë jam duke shkuar për të shkuar përpara dhe të zbatojë vërtetë të shpejtë një program të quajtur Adder. 926 00:44:23,550 --> 00:44:25,134 Si, le të shtoni disa numra së bashku. 927 00:44:25,134 --> 00:44:27,800 Dhe unë jam duke shkuar për kodin disa qoshet këtu, dhe vetëm kopjoni dhe ngjisni 928 00:44:27,800 --> 00:44:30,270 ku ishte më parë, vetëm kështu që ne mund të merrni duke shkuar më shpejt. 929 00:44:30,270 --> 00:44:33,090 Deri tani unë kam marrë fillimet themelore e një programi të quajtur Adder. 930 00:44:33,090 --> 00:44:34,670 >> Dhe le të shkojnë përpara dhe të bëjë këtë. 931 00:44:34,670 --> 00:44:38,680 Unë jam duke shkuar për të shkuar përpara dhe të të themi, intx merr të int. 932 00:44:38,680 --> 00:44:39,430 Dhe ju e dini se çfarë? 933 00:44:39,430 --> 00:44:40,990 Le të bëjë një përvojë më të mirë të përdoruesit. 934 00:44:40,990 --> 00:44:45,740 >> Pra, le të them vetëm x është, dhe në mënyrë efektive menjëhershëm të përdoruesit për të na dhënë x. 935 00:44:45,740 --> 00:44:50,600 Dhe pastaj më lejoni të shkoj përpara dhe të thonë, printf si në lidhje me y është, këtë herë duke pritur 936 00:44:50,600 --> 00:44:53,140 dy vlera nga përdoruesi. 937 00:44:53,140 --> 00:44:59,759 Dhe pastaj le të vetëm të shkojnë përpara dhe të të themi, printf, shuma e x dhe y është. 938 00:44:59,759 --> 00:45:01,300 Dhe tani unë nuk dua të bëj për qind s. 939 00:45:01,300 --> 00:45:09,080 Unë dua të bëj për qind unë, backslash n, dhe pastaj plug në vlerë shuma. 940 00:45:09,080 --> 00:45:10,620 >> Pra, si mund të shkoj për të bërë këtë? 941 00:45:10,620 --> 00:45:11,270 Ju e dini se çfarë? 942 00:45:11,270 --> 00:45:12,840 Unë e di se si të përdorin variablave. 943 00:45:12,840 --> 00:45:15,140 Më lejoni vetëm të shpallë një të re, int z. 944 00:45:15,140 --> 00:45:16,770 >> Dhe unë jam duke shkuar për të marrë me mend ketu. 945 00:45:16,770 --> 00:45:21,470 Nëse ka shenja të barabarta në këtë gjuha, ndoshta unë mund të bëni vetëm x plus y, 946 00:45:21,470 --> 00:45:23,660 deri sa do të përfundojnë tim menduar me pikëpresje? 947 00:45:23,660 --> 00:45:28,170 Tani unë mund të shkoni përsëri këtu poshtë, vihet në prizë z, përfundojë këtë mendim me pikëpresje. 948 00:45:28,170 --> 00:45:33,160 Dhe le të shohim tani, në qoftë se këto sekuenca e lines-- x është marrë int. 949 00:45:33,160 --> 00:45:34,770 Y është marrë int. 950 00:45:34,770 --> 00:45:37,980 >> Shto x dhe y, të ruajë vlerën në z-- kështu, edhe një herë, mos harroni shenjën e barazimit 951 00:45:37,980 --> 00:45:38,560 nuk është e barabartë. 952 00:45:38,560 --> 00:45:41,100 Është detyrë nga djathta në të majtë. 953 00:45:41,100 --> 00:45:45,180 Dhe le të shtypura në dukje se shuma e x dhe y është fjalë z, 954 00:45:45,180 --> 00:45:46,830 por ajo që është brenda e z. 955 00:45:46,830 --> 00:45:50,090 Pra, le të bëjë Adder - bukur, pa gabime kete here. 956 00:45:50,090 --> 00:45:53,030 Dot çaj adder, të hyjë, x do të jetë 1. 957 00:45:53,030 --> 00:45:55,380 >> Y do të jetë 2. 958 00:45:55,380 --> 00:45:58,964 Dhe shuma e x dhe y është 3. 959 00:45:58,964 --> 00:46:00,130 Pra, kjo është e gjitha mirë dhe të mirë. 960 00:46:00,130 --> 00:46:03,260 >> Kështu që ju do të imagjinohet se matematikë duhet të punojnë në një program të tillë. 961 00:46:03,260 --> 00:46:04,040 Por ju e dini se çfarë? 962 00:46:04,040 --> 00:46:06,904 A është kjo variabël, linjë 12, madje edhe e nevojshme? 963 00:46:06,904 --> 00:46:09,820 Ju nuk keni nevojë për të marrë në zakonin të vetëm ruajtjen gjërat në variablat 964 00:46:09,820 --> 00:46:10,980 vetëm për shkak se ju mund të. 965 00:46:10,980 --> 00:46:13,550 Dhe, në fakt, është në përgjithësi Dizajni Konsiderohen keq 966 00:46:13,550 --> 00:46:18,100 në qoftë se ju jeni duke krijuar një ndryshore, të quajtur z në këtë rast, ruajtjen diçka në të, 967 00:46:18,100 --> 00:46:21,390 dhe pastaj menjëherë duke e përdorur atë, por kurrë përsëri. 968 00:46:21,390 --> 00:46:24,700 Pse të japë diçka një emër si z qoftë se ju jeni fjalë për fjalë 969 00:46:24,700 --> 00:46:26,770 do të përdorin atë gjë vetëm një herë, dhe kështu 970 00:46:26,770 --> 00:46:29,380 proximal ku keni krijuar në radhë të parë, 971 00:46:29,380 --> 00:46:31,052 në mënyrë të ngushtë në drejtim të linjave të kodit? 972 00:46:31,052 --> 00:46:31,760 Kështu që ju e dini se çfarë? 973 00:46:31,760 --> 00:46:34,480 Ajo rezulton se C është shumë fleksibël. 974 00:46:34,480 --> 00:46:36,586 Në qoftë se unë të vërtetë duan të plug-in vlerave këtu, 975 00:46:36,586 --> 00:46:38,210 Unë nuk duhet të deklarojë një ndryshore të re. 976 00:46:38,210 --> 00:46:41,680 Unë vetëm mund të plug-in x plus y, sepse C kupton 977 00:46:41,680 --> 00:46:43,390 aritmetike, dhe operatorët matematike. 978 00:46:43,390 --> 00:46:47,140 >> Kështu që unë thjesht mund të them, të bëjë këtë matematikë, x plus y, çfarëdo që këto vlera janë, 979 00:46:47,140 --> 00:46:50,780 plug rezulton integer në atë varg. 980 00:46:50,780 --> 00:46:53,730 Pra, kjo mund të jetë, edhe pse vetëm një linjë të shkurtër, 981 00:46:53,730 --> 00:46:58,480 një dizajn më të mirë, një program më të mirë, sepse nuk ka kodin më pak, për këtë arsye 982 00:46:58,480 --> 00:46:59,921 më pak për mua për të kuptuar. 983 00:46:59,921 --> 00:47:01,920 Dhe kjo është gjithashtu vetëm të pastër, aq sa ne nuk jemi 984 00:47:01,920 --> 00:47:04,620 duke futur fjalë të reja, simbolet e reja, si z, 985 00:47:04,620 --> 00:47:07,510 edhe pse ata nuk e bëjnë me të vërtetë të shërbejë shumë për një qëllim. 986 00:47:07,510 --> 00:47:12,890 >> Për fat të keq, matematikë nuk është të gjitha që ndonjëherë të besueshme. 987 00:47:12,890 --> 00:47:15,270 Le të shkojnë përpara dhe të bëjë këtë. 988 00:47:15,270 --> 00:47:18,200 Unë jam duke shkuar për të shkuar përpara tani dhe të bëjë të mëposhtme. 989 00:47:18,200 --> 00:47:27,650 >> Le të bëjmë printf, për qind i, plus qind i, do të jetë për qind i, backslash n. 990 00:47:27,650 --> 00:47:32,240 Dhe unë jam duke shkuar për të bërë this-- XYZ plus y. 991 00:47:32,240 --> 00:47:34,821 Kështu që unë jam vetëm duke shkuar për të rishkruar kjo pak më ndryshe këtu. 992 00:47:34,821 --> 00:47:36,320 Më lejoni vetëm të bëjë një kontroll të shpejtë mendje e shëndoshë. 993 00:47:36,320 --> 00:47:37,986 Përsëri, le të mos marrë përpara veten. 994 00:47:37,986 --> 00:47:41,420 Bëni nëpërkë, dot plagë kuçedër. 995 00:47:41,420 --> 00:47:44,950 x eshte 1, y eshte 2, 1 plus 2 është 3. 996 00:47:44,950 --> 00:47:45,870 Pra, kjo është e mirë. 997 00:47:45,870 --> 00:47:49,060 Por le të komplikojë këtë tani pak, dhe për të krijuar një skedë të re. 998 00:47:49,060 --> 00:47:53,350 >> Unë jam duke shkuar për të thirrur këtë, thonë, Ints, shumës për integers. 999 00:47:53,350 --> 00:47:55,980 Më lejoni të filloj kur isha një moment më parë. 1000 00:47:55,980 --> 00:47:57,770 Por tani le të bëjmë disa rreshta të tjera. 1001 00:47:57,770 --> 00:48:03,430 Më lejoni të shkojnë përpara dhe të bëjë të mëposhtme, printf, për qind i, minus për qind i, 1002 00:48:03,430 --> 00:48:08,959 është qind i, comma x, comma yx minus y. 1003 00:48:08,959 --> 00:48:10,750 Kështu që unë jam duke bërë pak math të ndryshme atje. 1004 00:48:10,750 --> 00:48:11,624 Le të bëjmë një tjetër. 1005 00:48:11,624 --> 00:48:16,610 Kështu për qind i herë për qind i është qind i, backslash n. 1006 00:48:16,610 --> 00:48:21,430 Le të plug-in x dhe y, dhe herë x y. 1007 00:48:21,430 --> 00:48:24,530 Ne do të përdorim të yll në kompjuterin tuaj për kohë. 1008 00:48:24,530 --> 00:48:26,390 >> Ju nuk e përdorni x. x është një emër ndryshueshme këtu. 1009 00:48:26,390 --> 00:48:28,270 Ju përdorni yll për shumëzim. 1010 00:48:28,270 --> 00:48:29,020 Le të bëjmë një më shumë. 1011 00:48:29,020 --> 00:48:34,580 Printf për qind I, të ndarë nga për qind i është qind i, 1012 00:48:34,580 --> 00:48:40,460 n backslash. xy ndarë nga y-- kështu që ju përdorni plagë përpara në C 1013 00:48:40,460 --> 00:48:41,502 për të bërë ndarje. 1014 00:48:41,502 --> 00:48:42,460 Dhe le të bëjmë një tjetër. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Pjesa tjetër e qind i, e ndarë nga për qind i është qind i. 1017 00:48:55,240 --> 00:48:59,550 xy-- dhe tani e mbetur është ajo që ka mbetur gjatë. 1018 00:48:59,550 --> 00:49:02,980 Kur ju provoni duke e ndarë një Emëruesi në një numërues, 1019 00:49:02,980 --> 00:49:05,570 se sa është lënë gjatë se ju nuk mund të ndajë jashtë? 1020 00:49:05,570 --> 00:49:07,910 >> Kështu që nuk është me të vërtetë, domosdoshmërisht, një simbol 1021 00:49:07,910 --> 00:49:09,470 ne kemi përdorur në klasën e shkollës për këtë. 1022 00:49:09,470 --> 00:49:13,830 Por ka në C. Ju ose mund thonë x modulo y, ku 1023 00:49:13,830 --> 00:49:18,000 kjo shenjë për qind në këtë context-- për çudi, kur ju jeni brenda 1024 00:49:18,000 --> 00:49:20,170 nga kuotat e dyfishtë, brenda të printf, për qind 1025 00:49:20,170 --> 00:49:21,830 është përdorur si formatin specifier. 1026 00:49:21,830 --> 00:49:25,420 >> Kur e keni përdorur për qind jashtë që në një shprehje matematik, 1027 00:49:25,420 --> 00:49:29,910 është operatori modulo për modulare arithmetic-- për qëllimet tona 1028 00:49:29,910 --> 00:49:33,650 këtu, thjesht do të thotë, çfarë është Pjesa e mbetur e ndarë nga x y? 1029 00:49:33,650 --> 00:49:36,130 Kështu x ndarë nga y është x plagë y. 1030 00:49:36,130 --> 00:49:38,220 Cila është pjesa e mbetur e ndarë nga x y? 1031 00:49:38,220 --> 00:49:41,780 Është x y mod, siç do të thoshte një programues. 1032 00:49:41,780 --> 00:49:48,300 >> Pra, nëse kam bërë asnjë gabim këtu, le të më të shkojnë përpara dhe të bëjë Ints, shumës, e bukur, 1033 00:49:48,300 --> 00:49:50,010 dhe Ints dot Slash. 1034 00:49:50,010 --> 00:49:55,270 Dhe le të shkojnë përpara dhe të bërë, le të themi, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Të gjithë të drejtë, 1 plus 10 është 11, check. 1036 00:49:58,390 --> 00:50:01,240 1 minus 10 është negative 9, kontrolloni. 1037 00:50:01,240 --> 00:50:03,420 >> 1 herë 10 është 10, check. 1038 00:50:03,420 --> 00:50:07,090 1 të ndarë me 10 is-- OK, ne do të kaloni këtë një të tillë. 1039 00:50:07,090 --> 00:50:09,480 Pjesa e 1 e ndarë nga 10 është 1. 1040 00:50:09,480 --> 00:50:10,680 Kjo është e saktë. 1041 00:50:10,680 --> 00:50:12,630 Por ka një bug në këtu. 1042 00:50:12,630 --> 00:50:15,390 >> Kështu që e kam vënë mia dorëzojë, nuk është e saktë. 1043 00:50:15,390 --> 00:50:16,670 Unë do të thotë, se është afër 0. 1044 00:50:16,670 --> 00:50:20,670 1 të ndarë me 10, ju e dini, në qoftë se ne jemi prerja disa qoshet, të sigurt, është zero. 1045 00:50:20,670 --> 00:50:28,050 Por ajo duhet të vërtetë të jetë 1/10, 0.1, ose 0.10, 0,1000, ose kështu me radhë. 1046 00:50:28,050 --> 00:50:30,600 >> Ajo nuk duhet të vërtetë të jetë zero. 1047 00:50:30,600 --> 00:50:35,990 E pra, ajo rezulton se kompjuteri është duke bërë fjalë për fjalë atë që kemi thënë atë për të bërë. 1048 00:50:35,990 --> 00:50:39,460 Ne jemi duke bërë matematikë si x pjesëtuar me y. 1049 00:50:39,460 --> 00:50:44,680 Dhe të dy x dhe y, per linjat e kodit të parë, janë integers. 1050 00:50:44,680 --> 00:50:50,440 >> Për më tepër, on line 15, ne jemi thënë printf, hey, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 një numër i plotë, plug-in një numër të plotë, plug-in një integer-- specifike 1052 00:50:54,230 --> 00:50:57,580 x, dhe pastaj y, dhe pastaj x ndarë nga y. x dhe y jane Ints. 1053 00:50:57,580 --> 00:50:59,060 Ne jemi mirë atje. 1054 00:50:59,060 --> 00:51:01,250 >> Por ajo që është e ndarë nga x x? 1055 00:51:01,250 --> 00:51:06,790 x ndarë nga y duhet të jetë, matematikisht, 1/10, ose 0.1, 1056 00:51:06,790 --> 00:51:11,600 i cili është një numër të vërtetë, një numër real që ka, potencialisht, një pikë dhjetore. 1057 00:51:11,600 --> 00:51:13,230 Kjo nuk është një numër të plotë. 1058 00:51:13,230 --> 00:51:18,290 >> Por ajo që është më e afërt integer 1/10, ose 0.1? 1059 00:51:18,290 --> 00:51:21,114 Yeah, kjo lloj është zero. 1060 00:51:21,114 --> 00:51:22,030 0.1 është si kjo shumë. 1061 00:51:22,030 --> 00:51:22,890 Dhe 1 është kjo shumë. 1062 00:51:22,890 --> 00:51:25,870 Pra 1/10 është më afër 0 se ajo është për një. 1063 00:51:25,870 --> 00:51:30,800 >> Dhe kështu që ajo C është duke bërë për us-- lloj sepse ne ua tregoi to-- 1064 00:51:30,800 --> 00:51:32,600 është truncating se numër i plotë. 1065 00:51:32,600 --> 00:51:40,540 Është marrë vlerën, e cila përsëri është menduar të jetë diçka si 0.1000, 1066 00:51:40,540 --> 00:51:41,800 0 dhe kështu me radhë. 1067 00:51:41,800 --> 00:51:45,320 Dhe kjo është truncating gjithçka pas presjes dhjetore 1068 00:51:45,320 --> 00:51:47,510 në mënyrë që e gjithë kjo gjëra, sepse nuk ka 1069 00:51:47,510 --> 00:51:51,910 përshtaten në nocionin e një numër të plotë, e cila është vetëm një numër si negative 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 lart e poshtë, që hedh çdo gjë pas presjes dhjetore, sepse ju 1071 00:51:55,830 --> 00:51:59,020 nuk mund të përshtatet një pikë dhjetore në një numër të plotë nga ana e definicionit. 1072 00:51:59,020 --> 00:52:01,290 >> Pra, përgjigja këtu është zero. 1073 00:52:01,290 --> 00:52:02,600 Deri sa nuk kemi fix this? 1074 00:52:02,600 --> 00:52:04,400 Ne kemi nevojë për një zgjidhje tjetër të gjithë së bashku. 1075 00:52:04,400 --> 00:52:06,880 Dhe ne mund të bëjmë këtë, si më poshtë. 1076 00:52:06,880 --> 00:52:12,820 >> Më lejoni të shkojnë përpara dhe për të krijuar një të ri file, kjo quhet floats.c. 1077 00:52:12,820 --> 00:52:16,500 Dhe për të shpëtuar atë këtu në njëjtën directory, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Dhe më lejoni të shkoj përpara dhe kopje disa prej se kodit nga më parë. 1080 00:52:23,260 --> 00:52:27,690 >> Por në vend të gjetjes së një int, le ta bëjmë këtë. 1081 00:52:27,690 --> 00:52:31,037 Më jep një vlerë lundrues pikë quajtur x. ku një pikë lundrues 1082 00:52:31,037 --> 00:52:33,370 Vlera është vetëm fjalë për fjalë diçka me një pikë lundrues. 1083 00:52:33,370 --> 00:52:34,410 Ajo mund të lëvizin në të majtë, në të djathtë. 1084 00:52:34,410 --> 00:52:35,530 Kjo është një numër real. 1085 00:52:35,530 --> 00:52:38,050 >> Dhe më lejoni të mos e quajnë merrni int, por të marrë noton, 1086 00:52:38,050 --> 00:52:41,420 e cila gjithashtu ishte ndër menu e opsioneve në bibliotekë C250. 1087 00:52:41,420 --> 00:52:43,220 Le të ndryshojë y në një noton. 1088 00:52:43,220 --> 00:52:45,000 Pra, kjo bëhet për të marrë noton. 1089 00:52:45,000 --> 00:52:47,620 >> Dhe tani, ne nuk duam të vihet në prizë ints. 1090 00:52:47,620 --> 00:52:53,130 Ajo rezulton ne duhet të përdorim për qind f për të noton, f qind për noton, 1091 00:52:53,130 --> 00:52:54,560 dhe tani për të shpëtuar atë. 1092 00:52:54,560 --> 00:53:01,220 Dhe tani, gishtat e kaluar, të bëjë gjithandej, bukur, gjithandej dot Slash. 1093 00:53:01,220 --> 00:53:04,280 x do të jetë një 1. y Do të jetë 10 herë. 1094 00:53:04,280 --> 00:53:08,240 >> Dhe, e bukur, OK shtimi im është i saktë. 1095 00:53:08,240 --> 00:53:10,240 Unë isha duke shpresuar për më shumë, por kam harruar për të shkruar atë. 1096 00:53:10,240 --> 00:53:13,250 Pra, le të shkojë dhe të rregulluar këtë gabim logjik. 1097 00:53:13,250 --> 00:53:16,280 >> Le të shkojnë përpara dhe të kap në vijim. 1098 00:53:16,280 --> 00:53:18,080 Ne vetëm do të bëjë një kopje të vogël dhe paste. 1099 00:53:18,080 --> 00:53:20,080 Dhe unë jam duke shkuar për të thënë minus. 1100 00:53:20,080 --> 00:53:21,890 >> Dhe unë jam duke shkuar për të thënë herë. 1101 00:53:21,890 --> 00:53:24,060 Dhe unë jam duke shkuar për të thonë ndarë. 1102 00:53:24,060 --> 00:53:28,240 Dhe unë nuk jam duke shkuar për të bërë modulo, e cila nuk është aq i lidhur ngushtë këtu, 1103 00:53:28,240 --> 00:53:33,690 ndarë nga F, dhe herë plus-- OK, le ta bëjmë këtë përsëri. 1104 00:53:33,690 --> 00:53:44,210 >> Bëni gjithandej, gjithandej dot Slash, dhe 1, 10, and-- bukur, jo, OK. 1105 00:53:44,210 --> 00:53:45,250 Kështu që unë jam një idiot. 1106 00:53:45,250 --> 00:53:47,000 Pra, kjo është shumë e zakonshme në shkenca kompjuterike 1107 00:53:47,000 --> 00:53:49,780 për të bërë gabime idiote si kjo. 1108 00:53:49,780 --> 00:53:53,100 >> Për qëllime pedagogjike, ajo që unë me të vërtetë të kërkuar për të bërë 1109 00:53:53,100 --> 00:53:57,410 u ndryshonte shkencën këtu me plus, minus për të, në kohë, 1110 00:53:57,410 --> 00:54:01,140 dhe për të ndarë, si ju me shpresë vënë re gjatë këtij ushtrimi. 1111 00:54:01,140 --> 00:54:04,700 Pra, tani le të ri-përpilojnë këtë program, të bëjë gjithandej dot çaj. 1112 00:54:04,700 --> 00:54:07,950 >> Dhe për herë të tretë, le të të shohim nëse ajo i plotëson pritjet e mia. 1113 00:54:07,950 --> 00:54:21,480 1, 10, të hyjë, po, OK, 1.000, ndarë nga 10.000, është 0,100000. 1114 00:54:21,480 --> 00:54:24,952 Dhe kjo rezulton ne mund të kontrollojë se sa Numrat janë pas ato pika dhjetore. 1115 00:54:24,952 --> 00:54:25,660 Ne fakt do. 1116 00:54:25,660 --> 00:54:26,790 Ne do të kthehen në atë. 1117 00:54:26,790 --> 00:54:28,440 >> Por tani, në fakt, matematika është e saktë. 1118 00:54:28,440 --> 00:54:30,090 Pra, përsëri, çfarë është takeaway këtu? 1119 00:54:30,090 --> 00:54:33,050 Ajo rezulton se në C, nuk janë jo vetëm vetëm strings-- dhe, në fakt, 1120 00:54:33,050 --> 00:54:36,120 nuk janë me të vërtetë, sepse ne shtoni ato me bibliotekën CS50. 1121 00:54:36,120 --> 00:54:37,710 Por nuk janë vetëm Ints. 1122 00:54:37,710 --> 00:54:38,990 >> Ka edhe gjithandej. 1123 00:54:38,990 --> 00:54:42,810 Dhe kjo rezulton një bandë e të dhënave të tjera Llojet gjithashtu, se ne do të përdorim para se të gjatë. 1124 00:54:42,810 --> 00:54:46,270 Rezulton se në qoftë se ju doni një të vetme karakter, jo një varg të karaktereve, 1125 00:54:46,270 --> 00:54:47,610 ju mund të përdorni vetëm një char. 1126 00:54:47,610 --> 00:54:52,350 >> Rezulton se në qoftë se ju doni një bool, një vlerë Boolean, e vërtetë apo vetëm të rreme, 1127 00:54:52,350 --> 00:54:56,840 në sajë të bibliotekës CS50, ne kemi shtuar C tipin e të dhënave bool si. 1128 00:54:56,840 --> 00:54:59,180 Por është i pranishëm edhe në shumë gjuhë të tjera. 1129 00:54:59,180 --> 00:55:04,130 Dhe kjo rezulton se ndonjëherë ju nevojë për numra të mëdha vijnë pastaj nga default 1130 00:55:04,130 --> 00:55:05,210 me ints dhe gjithandej. 1131 00:55:05,210 --> 00:55:10,590 >> Dhe, në fakt, një të dyfishtë është një numër që përdor jo 32 bit, por 64 bit. 1132 00:55:10,590 --> 00:55:14,990 Dhe një kohë të gjatë kohë të gjatë është një numër që përdor jo 32, por 64 bit bit, 1133 00:55:14,990 --> 00:55:19,190 respektivisht, për pikë lundrues vlerat dhe integers, respektivisht. 1134 00:55:19,190 --> 00:55:22,780 Pra, le të vërtetë tani shihni këtë në veprim. 1135 00:55:22,780 --> 00:55:26,150 >> Unë jam duke shkuar për të shkuar përpara këtu dhe nxit një program tjetër. 1136 00:55:26,150 --> 00:55:32,020 Këtu, unë jam duke shkuar për të shkuar përpara dhe përfshijnë CS50.h. 1137 00:55:32,020 --> 00:55:34,910 Dhe më lejoni të shkoj, përfshijnë IO.h. standarde 1138 00:55:34,910 --> 00:55:37,320 >> Dhe ju do të vëreni diçka funky po ndodh këtu. 1139 00:55:37,320 --> 00:55:40,592 Kjo nuk është ngjyra coding gjërat në në të njëjtën mënyrë siç bëri më parë. 1140 00:55:40,592 --> 00:55:43,550 Dhe kjo rezulton, kjo është për shkak se unë nuk kanë dhënë gjë një emër file. 1141 00:55:43,550 --> 00:55:47,270 >> Unë jam duke shkuar për të thirrur këtë një sizeof.c, dhe e goditi Save. 1142 00:55:47,270 --> 00:55:51,039 Dhe vini re se çfarë ndodh me shumë tim Kodi white kundër këtij sfondi të zi. 1143 00:55:51,039 --> 00:55:52,830 Tani, të paktën nuk ka disa purpurtë në atje. 1144 00:55:52,830 --> 00:55:54,490 Dhe kjo është sintaksë theksuar. 1145 00:55:54,490 --> 00:55:57,700 >> Kjo për shkak se, thjesht, unë kam tha IDE çfarë lloj skedari 1146 00:55:57,700 --> 00:56:01,060 ajo është duke i dhënë një emër, dhe në mënyrë specifike një file extension. 1147 00:56:01,060 --> 00:56:03,620 Tani, le të shkojnë përpara dhe të bëjë këtë. 1148 00:56:03,620 --> 00:56:08,910 Unë jam duke shkuar për të shkuar përpara dhe shumë thjesht të shtypura nga bool following-- 1149 00:56:08,910 --> 00:56:11,080 është qind LU. 1150 00:56:11,080 --> 00:56:12,950 >> Ne do të kthehen në se në një moment të vetëm. 1151 00:56:12,950 --> 00:56:15,840 Dhe atëherë unë jam duke shkuar për madhësia print e bool. 1152 00:56:15,840 --> 00:56:18,170 Dhe tani, vetëm për të kursyer vetë disa kohë, unë jam 1153 00:56:18,170 --> 00:56:20,280 do të bëjë një tërësi bandë e tyre në të njëjtën kohë. 1154 00:56:20,280 --> 00:56:24,620 Dhe, në veçanti, unë do të ndryshojë këtë në një char dhe char. 1155 00:56:24,620 --> 00:56:27,760 Kjo, unë jam duke shkuar për të ndryshuar për një të dyfishtë dhe një të dyfishtë. 1156 00:56:27,760 --> 00:56:31,440 >> Kjo, unë jam duke shkuar për të ndryshuar me një noton dhe një noton. 1157 00:56:31,440 --> 00:56:35,670 Kjo, unë do të të ndryshojë në një int dhe një int. 1158 00:56:35,670 --> 00:56:38,660 Dhe kjo, unë jam duke shkuar për të ndryshuar për një kohë të gjatë të gjatë. 1159 00:56:38,660 --> 00:56:40,840 Dhe kjo është ende duke një kohë të gjatë, të gjatë e gjatë. 1160 00:56:40,840 --> 00:56:44,572 >> Dhe pastaj, në fund, dhashë vetë një shumë, string. 1161 00:56:44,572 --> 00:56:47,030 Ajo rezulton se në C, nuk ka operatori të veçantë të quajtur 1162 00:56:47,030 --> 00:56:50,260 Madhësia e kjo është fjalë për fjalë do të, kur të drejtuar, 1163 00:56:50,260 --> 00:56:52,099 na tregoni madhësinë e secili prej këtyre variablat. 1164 00:56:52,099 --> 00:56:53,890 Dhe kjo është një mënyrë, tani, ne mund të lidheni përsëri 1165 00:56:53,890 --> 00:56:57,140 për diskutimin e javës së kaluar e të dhënave dhe përfaqësimit. 1166 00:56:57,140 --> 00:57:00,330 >> Më lejoni të shkojnë përpara dhe të hartojnë Madhësia e madhësisë dot çaj të. 1167 00:57:00,330 --> 00:57:01,210 Dhe le të shohim. 1168 00:57:01,210 --> 00:57:05,210 Ajo rezulton se në C, veçanërisht në CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 në mënyrë të veçantë mbi të sistemit operativ Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 e cila është një operativ 64-bit Sistemi në këtë rast, 1171 00:57:11,100 --> 00:57:14,189 një bool do të përdorin një bajt hapësirë. 1172 00:57:14,189 --> 00:57:16,480 Kjo është se si madhësia është i matur, jo në copa, por në bytes. 1173 00:57:16,480 --> 00:57:18,690 Dhe kujtojnë se një bajt është tetë bit. 1174 00:57:18,690 --> 00:57:22,030 Pra, një bool, edhe pse ju teknike duhet vetëm një 0 ose 1, 1175 00:57:22,030 --> 00:57:24,092 kjo është pak kota se si ne kemi zbatuar atë. 1176 00:57:24,092 --> 00:57:26,800 Është e vërtetë do të përdorin një tërësi byte-- kështu që të gjitha zero, janë ndoshta 1177 00:57:26,800 --> 00:57:31,050 të gjitha ato, ose diçka të tillë, ose vetëm një 1 në mesin e tetë bit. 1178 00:57:31,050 --> 00:57:34,962 >> Një char, ndërkohë, e përdorur për një karakter si një karakter ASCII për javën e kaluar, 1179 00:57:34,962 --> 00:57:36,170 do të jetë një karakter. 1180 00:57:36,170 --> 00:57:42,340 Dhe kjo synchs me nocionin tonë të duke qenë jo më shumë se 256 bits-- në vend, 1181 00:57:42,340 --> 00:57:45,360 synchs deri me atë që po asnjë më shumë se 8 bit, e cila 1182 00:57:45,360 --> 00:57:47,450 na jep sa më shumë si 256 vlera. 1183 00:57:47,450 --> 00:57:49,680 A e dyfishtë do të të jetë 8 bytes ose 64 bit. 1184 00:57:49,680 --> 00:57:50,510 >> Një noton është 4. 1185 00:57:50,510 --> 00:57:51,690 Një int është 4. 1186 00:57:51,690 --> 00:57:52,980 Një kohë të gjatë, kohë të gjatë është 8. 1187 00:57:52,980 --> 00:57:54,716 Dhe një varg është 8. 1188 00:57:54,716 --> 00:57:55,840 Por mos u bëni merak për këtë. 1189 00:57:55,840 --> 00:57:57,340 Ne jemi duke shkuar për të zhvishem përsëri se shtresa. 1190 00:57:57,340 --> 00:57:59,940 Ajo rezulton, vargjet mund të jetë më shumë se 8 bytes. 1191 00:57:59,940 --> 00:58:02,310 >> Dhe, me të vërtetë, ne kemi shkruar strings tashmë, Hello World, 1192 00:58:02,310 --> 00:58:03,700 më shumë se 8 bytes. 1193 00:58:03,700 --> 00:58:06,270 Por ne do të kthehen në se në një moment të vetëm. 1194 00:58:06,270 --> 00:58:09,690 Por marrë larg këtu është në vijim. 1195 00:58:09,690 --> 00:58:15,320 >> Çdo kompjuter ka vetëm një fundme Sasia e memories dhe hapësirë. 1196 00:58:15,320 --> 00:58:17,860 Ju vetëm mund të ruajë kaq shumë fotografi në Mac apo PC. 1197 00:58:17,860 --> 00:58:23,030 Ju mund të ruajë vetëm kaq shumë programe në RAM drejtimin në të njëjtën kohë, detyrimisht, edhe 1198 00:58:23,030 --> 00:58:26,360 me memorie virtuale, sepse ju keni një sasi të caktuar të RAM. 1199 00:58:26,360 --> 00:58:28,990 >> Dhe vetëm për picture-- nëse ju kurrë nuk kam hapur një laptop 1200 00:58:28,990 --> 00:58:31,300 apo urdhëruar memorie ekstra për një kompjuter, ju 1201 00:58:31,300 --> 00:58:33,670 mund të mos e dinë se brenda e kompjuterit tuaj 1202 00:58:33,670 --> 00:58:36,590 është diçka që duket pak si kjo. 1203 00:58:36,590 --> 00:58:40,540 Pra, kjo është vetëm një kompani të përbashkët të quajtur Rëndësishme që e bën RAM për kompjuterët. 1204 00:58:40,540 --> 00:58:43,620 Dhe RAM është ku programet jetuar, ndërsa ata janë running. 1205 00:58:43,620 --> 00:58:46,630 >> Pra, në çdo Mac apo PC, kur të dyfishtë click një program, dhe kjo hap, 1206 00:58:46,630 --> 00:58:48,921 dhe kjo hap një dokument Word ose diçka të tillë, 1207 00:58:48,921 --> 00:58:51,764 ajo ruan atë përkohësisht në RAM, sepse është më e shpejtë RAM 1208 00:58:51,764 --> 00:58:53,680 se hard disku juaj, ose disku juaj solide të shtetit. 1209 00:58:53,680 --> 00:58:56,600 Pra, kjo është vetëm ku programet shkoni për të jetuar, kur ata janë në punë, 1210 00:58:56,600 --> 00:58:58,060 ose kur dosjet janë duke u përdorur. 1211 00:58:58,060 --> 00:59:00,890 >> Pra, ju keni gjëra që duken të si ky brendësi të laptopë tuaj, 1212 00:59:00,890 --> 00:59:03,320 ose gjëra pak më të mëdha brenda të desktop tuaj. 1213 00:59:03,320 --> 00:59:07,440 Por kryesore është që ju keni vetëm një numër i caktuar i këtyre gjërave. 1214 00:59:07,440 --> 00:59:11,230 Dhe ka vetëm një sasi të caktuar të hardware ulur në këtë tavolinë të drejtë 1215 00:59:11,230 --> 00:59:11,730 këtu. 1216 00:59:11,730 --> 00:59:15,920 >> Pra, me siguri, ne nuk mund të ruajë Numrat pafundësisht të gjata. 1217 00:59:15,920 --> 00:59:19,030 Dhe, megjithatë, në qoftë se ju mendoni përsëri në Shkolla grade, sa shifra mund të 1218 00:59:19,030 --> 00:59:21,400 ju keni për të drejtën nga një pikë dhjetore? 1219 00:59:21,400 --> 00:59:24,680 Për këtë çështje, sa shifra mund të ju keni në të majtë të presjes dhjetore një? 1220 00:59:24,680 --> 00:59:26,300 Really, pafundësisht shumë. 1221 00:59:26,300 --> 00:59:30,840 >> Tani, ne njerëzit fuqi vetëm e di se si të shprehem milion, 1222 00:59:30,840 --> 00:59:34,990 dhe miliard, trilion, dhe katrilion, dhe quintillion. 1223 00:59:34,990 --> 00:59:39,370 Dhe unë jam i shtyrë kufijtë e mia understanding-- ose my-- kuptoj 1224 00:59:39,370 --> 00:59:41,110 numra, por my shqiptim të numrave. 1225 00:59:41,110 --> 00:59:44,720 Por ata mund të merrni pafundësisht i madh me pafundësisht shumë Shifrat në të majtë 1226 00:59:44,720 --> 00:59:47,050 apo në të djathtë të presjes dhjetore. 1227 00:59:47,050 --> 00:59:50,040 >> Por kompjuterat kanë vetëm një Shuma e fundme e kujtesës, 1228 00:59:50,040 --> 00:59:53,510 një numër i caktuar i transistorëve, një numër i caktuar i poqat brenda. 1229 00:59:53,510 --> 00:59:57,350 Pra, çfarë ndodh kur ju drejtuar nga hapësira? 1230 00:59:57,350 --> 00:59:59,620 Me fjalë të tjera, në qoftë se ju mendoj se mbrapa në javën e fundit 1231 00:59:59,620 --> 01:00:03,160 kur kemi biseduar në lidhje me numrat veten duke u përfaqësuar në binar, 1232 01:00:03,160 --> 01:00:05,480 mendoj se ne kemi marrë kjo vlerë 8-bit këtu. 1233 01:00:05,480 --> 01:00:08,290 >> Dhe ne kemi shtatë 1-të dhe një 0. 1234 01:00:08,290 --> 01:00:10,827 Dhe mendoj se ne duam për të shtuar 1 për këtë vlerë. 1235 01:00:10,827 --> 01:00:12,410 Ky është një numër të vërtetë e madhe tani. 1236 01:00:12,410 --> 01:00:16,610 >> Kjo është 254, nëse më kujtohet matematikë nga javën e fundit të djathtë. 1237 01:00:16,610 --> 01:00:19,480 Por, çfarë nëse unë të ndryshojë që rightmost 0 to a 1? 1238 01:00:19,480 --> 01:00:22,800 Numri i përgjithshëm, i Sigurisht, bëhet e tetë 1 s. 1239 01:00:22,800 --> 01:00:24,050 Pra, ne jemi ende mirë. 1240 01:00:24,050 --> 01:00:27,204 >> Dhe që ndoshta përfaqëson 255, edhe pse në varësi të kontekstit 1241 01:00:27,204 --> 01:00:29,120 ai në fakt mund të përfaqësojë një numër negativ. 1242 01:00:29,120 --> 01:00:31,240 Por më shumë në atë kohë tjetër. 1243 01:00:31,240 --> 01:00:34,220 Kjo ndjehet si ajo është në lidhje aq i lartë sa unë mund të llogarisë. 1244 01:00:34,220 --> 01:00:35,290 >> Tani, kjo është vetëm 8 bit. 1245 01:00:35,290 --> 01:00:38,170 Dhe Mac tim, me siguri, ka rrugën e më shumë se 8 bit të memories. 1246 01:00:38,170 --> 01:00:39,170 Por ajo ka fundme. 1247 01:00:39,170 --> 01:00:43,230 Pra, i njëjti argument vlen, edhe nëse kanë më shumë nga këta të në ekran. 1248 01:00:43,230 --> 01:00:47,020 >> Por çfarë ndodh nëse ju jeni ruajtjen këtë numër, 255, 1249 01:00:47,020 --> 01:00:49,290 dhe ju doni për të numëruar 1 pak më e lartë? 1250 01:00:49,290 --> 01:00:51,600 Ju doni të shkoni nga 255 në 256. 1251 01:00:51,600 --> 01:00:55,800 Problemi, natyrisht, është se në qoftë se ju të fillojë numërimi në zero si javën e kaluar, 1252 01:00:55,800 --> 01:00:59,670 ju nuk mund të llogaritet si e lartë si 256, e lëre më 257, 1253 01:00:59,670 --> 01:01:02,584 e lëre më 258, m sepse çfarë ndodh kur ju shtoni një 1? 1254 01:01:02,584 --> 01:01:05,000 Nëse ju bëni shkollën e vjetër të klasës qasje, ju vënë një 1 këtu, 1255 01:01:05,000 --> 01:01:08,150 dhe pastaj 1 plus 1 është 2, por kjo është me të vërtetë një zero, keni kryer 1, 1256 01:01:08,150 --> 01:01:09,695 mbajnë 1, mbajnë 1. 1257 01:01:09,695 --> 01:01:12,620 Të gjitha këto gjëra, këto 1-së, të shkojnë në zero. 1258 01:01:12,620 --> 01:01:17,820 Dhe ju era deri, po, si dikush vuri në dukje, një 1 në anën e majtë. 1259 01:01:17,820 --> 01:01:22,540 Por çdo gjë që ju mund të në fakt të parë dhe të përshtaten në kujtesën 1260 01:01:22,540 --> 01:01:27,960 është vetëm tetë 0-së, e cila është për të thënë në një pikë në qoftë se ju, një kompjuter, 1261 01:01:27,960 --> 01:01:32,490 përpoq numëruar mjaft e lartë, ju jeni do të përfundojë rreth, kjo do të duket, 1262 01:01:32,490 --> 01:01:35,850 me zero, ose ndoshta edhe më negative numra, të cilat janë edhe më të ulëta se zero. 1263 01:01:35,850 --> 01:01:37,260 >> Dhe ne mund të lloj të shihni këtë. 1264 01:01:37,260 --> 01:01:39,900 Më lejoni të shkojnë përpara dhe të shkruajnë një program i vërtetë të shpejtë këtu. 1265 01:01:39,900 --> 01:01:43,690 Më lejoni të shkojnë përpara dhe të shkruajnë një program të quajtur Overflow. 1266 01:01:43,690 --> 01:01:49,980 Përfshijnë CS50.h, përfshijnë standarde IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Unë me të vërtetë humbur theksim i sintaksës tim. 1268 01:01:51,730 --> 01:01:54,440 Pra, le të ruani këtë si overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> Dhe tani int void-- kryesore dhe para se të gjatë, ne do të 1270 01:01:57,084 --> 01:01:59,500 kthehen për të shpjeguar se pse do të vazhdojmë me shkrim pavlefshme int kryesore. 1271 01:01:59,500 --> 01:02:02,080 Por tani për tani, le të vetëm të bëjë ajo, duke marrë atë për të dhënë. 1272 01:02:02,080 --> 01:02:06,200 Le të jap vetes një int, dhe nisja atë në 0. 1273 01:02:06,200 --> 01:02:11,716 >> Le pastaj të bëjë për int shkoj zero-- në fakt, le të bëjë një lak pafund 1274 01:02:11,716 --> 01:02:12,590 dhe shikoni se çfarë ndodh. 1275 01:02:12,590 --> 01:02:22,440 Ndërsa e vërtetë, atëherë le të shtypura nga n është qind i, backslash n, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Por, tani, le ta bëjmë n merr n plus 1. 1277 01:02:27,200 --> 01:02:29,660 >> Pra, me fjalë të tjera, në secilën përsëritje të këtij lak të pafund, 1278 01:02:29,660 --> 01:02:32,550 le të marrin vlerën e N-së, dhe për të shtuar 1 për të, dhe pastaj 1279 01:02:32,550 --> 01:02:34,350 ruajtur rezultatin përsëri në n në të majtë. 1280 01:02:34,350 --> 01:02:37,150 Dhe, në fakt, ne kemi parë Sintaksa pak si kjo, një kohë të shkurtër. 1281 01:02:37,150 --> 01:02:39,730 Një mashtrim i ftohtë është në vend e të shkruarit të gjithë këtë, 1282 01:02:39,730 --> 01:02:42,770 ju në fakt mund të them një plus n është e barabartë me 1. 1283 01:02:42,770 --> 01:02:47,480 >> Ose në qoftë se ju me të vërtetë duan të jenë të dashuroj, ju mund të them n plus plus gjysmë-zorrës së trashë. 1284 01:02:47,480 --> 01:02:50,130 Por këto dy të fundit janë vetëm ajo që ne do të thërrasë sheqer sintaktik 1285 01:02:50,130 --> 01:02:50,790 për gjë të parë. 1286 01:02:50,790 --> 01:02:53,456 >> Gjëja e parë është më i qartë, krejtësisht në rregull, tërësisht e saktë. 1287 01:02:53,456 --> 01:02:55,470 Por kjo është më e zakonshme, unë do të të them. 1288 01:02:55,470 --> 01:02:57,210 Pra, ne do të bëjmë këtë për vetëm një moment. 1289 01:02:57,210 --> 01:03:01,685 >> Le tani të del nga shtrati, e cila tingëllon në vend ogurzi, del nga shtrati dot plagë. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Le të shohim, n është marrë goxha i madh. 1292 01:03:09,852 --> 01:03:11,310 Por le të mendojmë, se si e madhe n mund të merrni? 1293 01:03:11,310 --> 01:03:12,870 >> n është një int. 1294 01:03:12,870 --> 01:03:16,400 Ne pamë një moment më parë me madhësinë e Shembulli se një int është katër bytes. 1295 01:03:16,400 --> 01:03:22,070 Ne e dimë nga java e fundit, katër bytes është 32 bit, sepse 8 herë 4, kjo është 32. 1296 01:03:22,070 --> 01:03:23,460 Kjo do të jetë 4 miliardë. 1297 01:03:23,460 --> 01:03:25,802 >> Dhe ne jemi deri në 800.000. 1298 01:03:25,802 --> 01:03:28,510 Kjo do të marrë përgjithmonë për të llogariten si të lartë si unë ndoshta mund. 1299 01:03:28,510 --> 01:03:30,635 Kështu që unë jam duke shkuar për të shkuar përpara, si ju mund të para se të gjatë, 1300 01:03:30,635 --> 01:03:34,910 dhe e goditi Kontrollit C-- sinqerisht, Kontrollit C, një shumë, ku Kontrolli C në përgjithësi 1301 01:03:34,910 --> 01:03:36,034 do të thotë të anulluar. 1302 01:03:36,034 --> 01:03:38,200 Për fat të keq, sepse kjo po kandidon në një re, 1303 01:03:38,200 --> 01:03:41,190 nganjëherë cloud është pështyrë nga aq shumë gjëra, 1304 01:03:41,190 --> 01:03:44,180 output aq shumë, ajo do të të marrë pak kohë për kontributin tim 1305 01:03:44,180 --> 01:03:45,630 për të marrë për të renë. 1306 01:03:45,630 --> 01:03:49,240 Pra, edhe pse kam goditur Kontrolli C disa sekonda më parë, 1307 01:03:49,240 --> 01:03:53,110 kjo është padyshim në anën e Efekti i një lak të pafund. 1308 01:03:53,110 --> 01:03:56,070 >> Dhe kështu që në raste të tilla, ne jemi të do të largohen që të jetë. 1309 01:03:56,070 --> 01:03:59,050 Dhe ne jemi duke shkuar për të shtuar një tjetër dritare terminali këtu 1310 01:03:59,050 --> 01:04:03,186 me plus, e cila natyrisht nuk e bën si kjo, pasi ajo është ende duke menduar. 1311 01:04:03,186 --> 01:04:05,310 Dhe le të shkojnë përpara dhe të jetë pak më e arsyeshme. 1312 01:04:05,310 --> 01:04:07,768 >> Unë jam duke shkuar për të shkuar përpara dhe të bëjë kjo vetëm finitely shumë herë. 1313 01:04:07,768 --> 01:04:10,047 Le të përdorim një për lak, që kam përmendur më herët. 1314 01:04:10,047 --> 01:04:10,630 Le ta bejme kete. 1315 01:04:10,630 --> 01:04:13,430 Më jep një int variabël i merr 0. 1316 01:04:13,430 --> 01:04:17,430 i është më pak se, le të themi, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 Dhe tani më lejoni të shkoj përpara dhe të shtypura se n është qind i, presje n. 1318 01:04:24,010 --> 01:04:27,547 Dhe pastaj n-- kjo është ende do të marrë përgjithmonë. 1319 01:04:27,547 --> 01:04:28,130 Le ta bejme kete. 1320 01:04:28,130 --> 01:04:30,620 >> n merr n herë 2. 1321 01:04:30,620 --> 01:04:34,140 Ose ne mund të jetë i zbukuruar dhe të bëjë herë është e barabartë me 2. 1322 01:04:34,140 --> 01:04:37,120 Por le të them vetëm n barabartë në vetvete, herë 2. 1323 01:04:37,120 --> 01:04:39,321 Me fjalë të tjera, në këtë Versioni i ri i programit, 1324 01:04:39,321 --> 01:04:41,820 Unë nuk dua të pres përgjithmonë nga si 800,000 në 4 miliardë. 1325 01:04:41,820 --> 01:04:43,070 Le të vetëm të marrë këtë gjatë me të. 1326 01:04:43,070 --> 01:04:44,920 >> Le të vërtetë të dyfishtë n çdo kohë. 1327 01:04:44,920 --> 01:04:47,660 E cila, kujtojnë, është dyfishuar kundërta e që ka, natyrisht. 1328 01:04:47,660 --> 01:04:50,035 Dhe ndërsa javën e kaluar kemi diçka përsëri, dhe përsëri, 1329 01:04:50,035 --> 01:04:52,200 dhe përsëri, super të shpejtë, dyfishim me siguri do 1330 01:04:52,200 --> 01:04:58,080 të na marrë nga 1 deri më i madh të jetë e mundur vlera që ne mund të llogarisë për të me një int. 1331 01:04:58,080 --> 01:04:59,750 >> Pra, le të bëjë pikërisht këtë. 1332 01:04:59,750 --> 01:05:01,720 Dhe ne do të kthehen në këtë para se të gjatë. 1333 01:05:01,720 --> 01:05:04,180 Por kjo, përsëri, është vetëm si blloku përsëritur në Scratch. 1334 01:05:04,180 --> 01:05:05,600 Dhe ju do të përdorni këtë para se të gjatë. 1335 01:05:05,600 --> 01:05:10,170 >> Kjo thjesht do të thotë akuzë nga zero deri ne, por jo të barabartë në 64. 1336 01:05:10,170 --> 01:05:14,285 Dhe në çdo përsëritje të këtij loop, vetëm i mbajnë bën rritjen i. 1337 01:05:14,285 --> 01:05:18,990 Pra, i ++ - dhe ky konstrukt të përgjithshme on line 7 është vetëm një mënyrë super të përbashkët 1338 01:05:18,990 --> 01:05:22,290 e përsëritur disa linja të Kodi, disa disa herë. 1339 01:05:22,290 --> 01:05:23,362 Të cilat rreshta të kodit? 1340 01:05:23,362 --> 01:05:25,570 Këto formatimin e teksteve kaçurrel, si ju mund të nxirren nga tani, 1341 01:05:25,570 --> 01:05:26,780 do të thotë, të bëjë të mëposhtme. 1342 01:05:26,780 --> 01:05:29,510 >> Është në Scratch si, kur ajo ka blloqe të verdhë 1343 01:05:29,510 --> 01:05:32,680 dhe ngjyra të tjera që lloj përqafuar apo përqafim blloqe të tjera. 1344 01:05:32,680 --> 01:05:34,750 Kjo është ajo që ata kaçurrel formatimin e teksteve janë bërë këtu. 1345 01:05:34,750 --> 01:05:40,200 Pra, nëse unë kam sintaksë tim right-- ju mund të shihni simbolin karrota në mjetet C 1346 01:05:40,200 --> 01:05:42,706 kjo është se sa herë unë u duke u përpjekur për të zgjidhur këtë problem. 1347 01:05:42,706 --> 01:05:45,330 Pra, le të heqin qafe se një krejt, dhe mbylleni atë dritare. 1348 01:05:45,330 --> 01:05:46,520 Dhe ne do të përdorim një të ri. 1349 01:05:46,520 --> 01:05:51,980 Bëni del nga shtrati, dot plagë del nga shtrati, Enter, të gjithë të drejtë, 1350 01:05:51,980 --> 01:05:53,090 ajo duket e keqe në fillim. 1351 01:05:53,090 --> 01:05:56,200 Por le të shkoni mbrapa në kohë, sepse unë e bëri këtë 64 herë. 1352 01:05:56,200 --> 01:05:58,700 >> Dhe vini re për herë të parë, n është 1. 1353 01:05:58,700 --> 01:06:03,110 Herën e dytë, n është 2, atëherë 4, pastaj 8, pastaj 16. 1354 01:06:03,110 --> 01:06:09,450 Dhe duket se sa më shpejt që I merrni për rreth 1 miliard, 1355 01:06:09,450 --> 01:06:12,800 në qoftë se unë të dyfishtë atë përsëri, që duhet të më jep 2 miliardë. 1356 01:06:12,800 --> 01:06:14,980 Por kjo rezulton, është e të drejtë në majë. 1357 01:06:14,980 --> 01:06:18,930 >> Dhe kështu ai në fakt përplot një int nga 1 miliard 1358 01:06:18,930 --> 01:06:23,514 për afërsisht negative 2 miliardë, për shkak se një numër të plotë, 1359 01:06:23,514 --> 01:06:25,430 ndryshe nga numrat e ne ishin supozuar javën e kaluar, 1360 01:06:25,430 --> 01:06:28,397 mund të jetë edhe pozitive dhe negative në të vërtetë dhe në një kompjuter. 1361 01:06:28,397 --> 01:06:30,730 Dhe kështu që të paktën një prej atyre bit është vjedhur në mënyrë efektive. 1362 01:06:30,730 --> 01:06:34,190 Pra, ne të vërtetë kanë vetëm 31 bit, ose 2 miliardë vlerat e mundshme. 1363 01:06:34,190 --> 01:06:38,220 >> Por tani për tani, takeaway është mjaft thjesht, pavarësisht këto shifra janë 1364 01:06:38,220 --> 01:06:42,280 dhe sido që matematika është, diçka e keqe ndodh në fund, 1365 01:06:42,280 --> 01:06:46,980 sepse në fund ju janë duke u përpjekur për të ndryshoj renditjen bit shumë herë. 1366 01:06:46,980 --> 01:06:51,060 Dhe në mënyrë efektive të shkojnë nga e gjithë 1 e deri ndoshta të gjithë 0-së, apo ndoshta 1367 01:06:51,060 --> 01:06:54,260 vetëm disa model tjetër që të në mënyrë të qartë, në varësi të kontekstit, 1368 01:06:54,260 --> 01:06:56,342 mund të interpretohet si një numër negativ. 1369 01:06:56,342 --> 01:06:59,300 Dhe kështu kjo do të duket e I të lartë mund të mbështeteni në këtë program të veçantë 1370 01:06:59,300 --> 01:07:01,210 është vetëm rreth 1 miliard. 1371 01:07:01,210 --> 01:07:02,760 Por ka një zgjidhje e pjesshme këtu. 1372 01:07:02,760 --> 01:07:03,480 Ju e dini se çfarë? 1373 01:07:03,480 --> 01:07:07,600 >> Më lejoni të ndryshojë nga një int për një kohë të gjatë të gjatë. 1374 01:07:07,600 --> 01:07:10,633 Dhe më lejoni të shkoj përpara këtu dhe say-- Unë do të ketë 1375 01:07:10,633 --> 01:07:12,290 për të ndryshuar këtë për një kohë të gjatë unsigned. 1376 01:07:12,290 --> 01:07:16,860 Ose, le të shohim, unë kurrë nuk kujtohet vetë. 1377 01:07:16,860 --> 01:07:19,920 >> Le të shkojnë përpara dhe të bëjë del nga shtrati. 1378 01:07:19,920 --> 01:07:21,860 Jo, kjo nuk është ajo, LLD, faleminderit. 1379 01:07:21,860 --> 01:07:23,430 Kështu që nganjëherë tingëllimë mund të jenë të dobishme. 1380 01:07:23,430 --> 01:07:27,550 Unë nuk e mbani mend se çfarë formatin specifier ka qenë për një kohë të gjatë kohë të gjatë. 1381 01:07:27,550 --> 01:07:28,950 >> Por, në të vërtetë, tingëllimë më tha. 1382 01:07:28,950 --> 01:07:31,570 Green është një lloj i mirë, ende do të thotë që keni bërë një gabim. 1383 01:07:31,570 --> 01:07:33,190 Është guessing se unë do të thotë LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Pra më lejoni të marrë kjo është këshillë, një kohë të gjatë numër i gjatë decimal, të shpëtuar atë. 1385 01:07:38,750 --> 01:07:43,190 Dhe më lejoni përsëritje atë me pikë çaj del nga shtrati, Enter. 1386 01:07:43,190 --> 01:07:45,020 Dhe tani ajo është e ftohtë është kjo. 1387 01:07:45,020 --> 01:07:49,140 >> Në qoftë se unë lëviz prapa në kohë, ne ende të fillojë numërimi në të njëjtën place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Njoftim, ne kemi marrë të gjitha rrugën deri në 1 miliard. 1390 01:07:54,860 --> 01:07:57,070 Por pastaj ne mund të sigurtë të marrë në 2 miliardë. 1391 01:07:57,070 --> 01:08:01,300 >> Atëherë ne të merrni në 4 miliardë, pastaj 8 miliardë, 17 miliardë. 1392 01:08:01,300 --> 01:08:03,340 Dhe ne do të shkojmë të lartë, dhe më të lartë, dhe të lartë. 1393 01:08:03,340 --> 01:08:05,740 Përfundimisht, kjo, gjithashtu, prishet. 1394 01:08:05,740 --> 01:08:09,350 >> Përfundimisht, me një kohë të gjatë të gjatë, që është vlera 64-bit, jo 1395 01:08:09,350 --> 01:08:13,660 një vlerë të 32-bit, në qoftë se ju numërimin shumë i lartë, ju të përfundojë rreth 0. 1396 01:08:13,660 --> 01:08:16,410 Dhe në këtë rast, ne të ndodhë të përfundojnë me një numër negativ. 1397 01:08:16,410 --> 01:08:17,550 >> Pra, ky është një problem. 1398 01:08:17,550 --> 01:08:20,439 Dhe kjo rezulton se kjo Problemi nuk është e gjitha që misterioze. 1399 01:08:20,439 --> 01:08:23,060 Edhe pse unë kam qëllim detyruar me këto gabime, 1400 01:08:23,060 --> 01:08:26,149 rezulton ne e shohim atë lloj të të gjitha rreth nesh, ose të paktën disa prej nesh. 1401 01:08:26,149 --> 01:08:28,939 >> Pra, në Lego Star Wars, nëse ju keni luajtur ndonjëherë lojë, 1402 01:08:28,939 --> 01:08:33,830 kjo rezulton nga ju mund të shkoni nëpër thyer gjërat në botë LEGO, 1403 01:08:33,830 --> 01:08:36,640 dhe mbledhjen e monedhave, në thelb. 1404 01:08:36,640 --> 01:08:39,200 Dhe në qoftë se ju keni luajtur ndonjëherë kjo lojë mënyrë shumë kohë, 1405 01:08:39,200 --> 01:08:42,630 si ky individ pa emër këtu ka, numri i përgjithshëm 1406 01:08:42,630 --> 01:08:46,700 e monedhave që ju mund të mbledhin është, kjo do të duket, 4 miliardë. 1407 01:08:46,700 --> 01:08:48,240 >> Tani, me të është e rrumbullakuar në fakt. 1408 01:08:48,240 --> 01:08:50,239 Pra LEGO po përpiqej të të mbajtur gjëra përdorues miqësore. 1409 01:08:50,239 --> 01:08:53,779 Ata nuk e bëjnë atë saktësisht 2 të 32 Fuqia, në javën e kaluar. 1410 01:08:53,779 --> 01:08:55,310 Por, 4 miliardë është një arsye. 1411 01:08:55,310 --> 01:08:58,979 Duket, në bazë të këtij informacioni, që LEGO, dhe kompania që 1412 01:08:58,979 --> 01:09:02,624 e bëri këtë softuer aktuale, vendosi se numri maksimal i monedhave 1413 01:09:02,624 --> 01:09:04,540 përdoruesi mund të mblidhen është, në të vërtetë, 4 miliardë, 1414 01:09:04,540 --> 01:09:12,069 sepse ata zgjodhën në kodin e tyre të përdorur nuk është një kohë të gjatë e gjatë, me sa duket, 1415 01:09:12,069 --> 01:09:16,140 por vetëm një numër i plotë, një unsigned integer, vetëm një numër i plotë pozitiv, të cilit 1416 01:09:16,140 --> 01:09:18,089 Vlera max rreth është se. 1417 01:09:18,089 --> 01:09:19,380 E pra, këtu është një tjetër funny. 1418 01:09:19,380 --> 01:09:23,500 Pra, në lojë Civilization, e cila disa prej jush mund të jenë të njohur me 1419 01:09:23,500 --> 01:09:26,660 rezulton se vite më parë ka ishte një bug në këtë lojë ku 1420 01:09:26,660 --> 01:09:28,750 në qoftë se keni luajtur rolin e Gandi në lojë, 1421 01:09:28,750 --> 01:09:34,020 në vend të tij qenë shumë pacifist, në vend të kësaj ishte tepër, tepër 1422 01:09:34,020 --> 01:09:36,399 agresive, në disa rrethana. 1423 01:09:36,399 --> 01:09:40,529 Në veçanti, mënyra se Civilization vepra është se në qoftë se ju, lojtar, 1424 01:09:40,529 --> 01:09:44,680 miratojë demokracinë, tuaj Rezultati agresiviteti merr 1425 01:09:44,680 --> 01:09:48,130 decremented nga dy, kështu minus minus, dhe pastaj minus minus. 1426 01:09:48,130 --> 01:09:50,569 >> Kështu që ju zbres 2 nga iterating tuaj aktuale. 1427 01:09:50,569 --> 01:09:56,650 Për fat të keq, në qoftë se iterating juaj është fillimisht 1, dhe zbres 2 prej tij 1428 01:09:56,650 --> 01:09:59,050 pas miratimit të demokracisë si Gandhi këtu fuqisë 1429 01:09:59,050 --> 01:10:02,200 kanë bërë, për shkak se ai ishte shumë i passive-- 1 në shkallën e agresivitetit. 1430 01:10:02,200 --> 01:10:04,830 Por në qoftë se ai miraton demokracinë, atëherë ai shkon nga 1 deri negative 1. 1431 01:10:04,830 --> 01:10:11,470 >> Për fat të keq, ata ishin duke përdorur numrat unsigned, 1432 01:10:11,470 --> 01:10:15,400 që do të thotë se ata trajtohen edhe negative Numrat sikur të ishin pozitive. 1433 01:10:15,400 --> 01:10:19,780 Dhe kjo rezulton se ekuivalente pozitive e negative 1, 1434 01:10:19,780 --> 01:10:23,480 në programet tipike kompjuterike, është 255. 1435 01:10:23,480 --> 01:10:27,250 Pra, nëse Gandhi miraton demokraci, dhe për këtë arsye ka 1436 01:10:27,250 --> 01:10:32,470 rezultati i tij agresiviteti ulur, në fakt ajo rrotullon rreth në 255 1437 01:10:32,470 --> 01:10:35,470 dhe e bën atë më të Karakteri agresiv në lojë. 1438 01:10:35,470 --> 01:10:36,930 Kështu që ju mund të Google deri në këtë. 1439 01:10:36,930 --> 01:10:39,380 Dhe kjo ishte, në të vërtetë, një aksidentale bug programimit, 1440 01:10:39,380 --> 01:10:43,010 por që është futur mjaft lore që ndonjëherë. 1441 01:10:43,010 --> 01:10:44,360 >> Kjo është e gjitha argëtim dhe cute. 1442 01:10:44,360 --> 01:10:47,760 Më e frikshme është kur aktuale pajisjet e botës reale, dhe jo lojra, 1443 01:10:47,760 --> 01:10:48,820 kanë të njëjtat të mete. 1444 01:10:48,820 --> 01:10:54,500 Në fakt, vetëm një vit më parë një artikull erdhi rreth Boeing 787 Dreamliner të. 1445 01:10:54,500 --> 01:10:56,850 >> Dhe artikulli në fillim shikim lexon një misterioze të vogël. 1446 01:10:56,850 --> 01:11:01,480 Por ai tha se kjo, një software dobësi në Boeing-së 1447 01:11:01,480 --> 01:11:04,790 ri 787 Dreamliner jet ka potencial për të shkaktuar pilotët 1448 01:11:04,790 --> 01:11:07,220 të humbni kontrollin e avioni, ndoshta 1449 01:11:07,220 --> 01:11:11,750 në mes të fluturimit, zyrtarët e FAA airlines paralajmëroi kohët e fundit. 1450 01:11:11,750 --> 01:11:14,520 Ishte vendosmëria se një model 787 1451 01:11:14,520 --> 01:11:19,770 Aeroplani që i është mundësuar vazhdimisht për 248 ditë 1452 01:11:19,770 --> 01:11:24,880 mund të humbasin të gjithë rrymën rotacion, AC, energjisë elektrike për shkak të gjenerator 1453 01:11:24,880 --> 01:11:28,892 njësitë e kontrollit, GCUs, në të njëjtën kohë duke shkuar në mënyrë të sigurt të dështojnë. 1454 01:11:28,892 --> 01:11:29,850 Kjo është lloj i humbjes më. 1455 01:11:29,850 --> 01:11:35,390 Por memo thuhet, OK, tani kam marrë atë, gjendja është shkaktuar nga një software 1456 01:11:35,390 --> 01:11:38,590 kundër të brendshëm për kontrolli gjenerator 1457 01:11:38,590 --> 01:11:44,860 njësi që do të del nga shtrati pas 248 ditët e pushtetit të vazhdueshëm. 1458 01:11:44,860 --> 01:11:47,070 Ne jemi lëshimin e kësaj re për të parandaluar humbjen 1459 01:11:47,070 --> 01:11:49,300 të gjitha AC elektrike të energjisë, e cila mund të rezultojë 1460 01:11:49,300 --> 01:11:50,980 në humbjen e kontrollit të aeroplanit. 1461 01:11:50,980 --> 01:11:55,380 >> Pra, fjalë për fjalë, ka një numër i plotë, ose ndonjë lloj ekuivalente të dhënave, 1462 01:11:55,380 --> 01:11:57,960 duke u përdorur në software në një aeroplan aktual 1463 01:11:57,960 --> 01:12:00,756 se në qoftë se ju mbani aeroplan tuaj në kohë të mjaftueshme, e cila me sa duket 1464 01:12:00,756 --> 01:12:03,880 mund të jetë rasti në qoftë se ju jeni vetëm duke ato vazhdimisht dhe nuk unplugging 1465 01:12:03,880 --> 01:12:06,810 aeroplan tuaj, me sa duket, ose lënë bateri e saj të vdekur, 1466 01:12:06,810 --> 01:12:09,840 përfundimisht do të numërojnë deri, dhe lart, dhe lart, dhe lart, dhe lart, dhe deri. 1467 01:12:09,840 --> 01:12:12,150 >> Dhe, nga natyra, një Shuma e fundme e kujtesës 1468 01:12:12,150 --> 01:12:15,880 do të vërshojë, kodrina prapa zero ose disa vlera negative, 1469 01:12:15,880 --> 01:12:19,920 një efekt anësor i cili është Realiteti tmerrësisht e vërtetë 1470 01:12:19,920 --> 01:12:23,970 se avioni mund të ketë nevojë për të restartohet, në mënyrë efektive, 1471 01:12:23,970 --> 01:12:27,290 ose mund të bien, edhe më keq, si ajo fluturon. 1472 01:12:27,290 --> 01:12:29,230 Pra, këto lloje të çështjeve janë ende me ne, 1473 01:12:29,230 --> 01:12:33,130 even-- kjo ishte një artikull i 2015 edhe më të frikshme 1474 01:12:33,130 --> 01:12:36,100 kur ju nuk domosdoshmërisht kuptojnë, vlerësojnë, ose parashikojnë 1475 01:12:36,100 --> 01:12:38,640 këto lloje të gabimeve. 1476 01:12:38,640 --> 01:12:42,030 >> Pra, rezulton se ka një tjetër gjë e keqe për përfaqësimin e të dhënave. 1477 01:12:42,030 --> 01:12:47,080 Ajo rezulton se edhe gjithandej janë lloj të meta, sepse gjithandej, gjithashtu, 1478 01:12:47,080 --> 01:12:51,440 I propozuar janë 32 bit, ose ndoshta 64 në qoftë se ju përdorni një të dyfishtë. 1479 01:12:51,440 --> 01:12:53,070 Por kjo është ende e fundme. 1480 01:12:53,070 --> 01:12:57,070 >> Dhe Kapur është se në qoftë se ju mund të vënë një numër të pafund të numrave 1481 01:12:57,070 --> 01:12:59,460 pas presjes dhjetore, nuk ka asnjë mënyrë ju 1482 01:12:59,460 --> 01:13:02,690 mund të përfaqësojnë të gjitha të jetë e mundur Numrat që ne ishim mësuar 1483 01:13:02,690 --> 01:13:04,990 në klasën e shkollës mund të ekzistojë në botë. 1484 01:13:04,990 --> 01:13:08,870 Një kompjuter, në thelb, ka të zgjidhni një mesin e atyre numrave 1485 01:13:08,870 --> 01:13:10,200 për të përfaqësuar me saktësi. 1486 01:13:10,200 --> 01:13:12,450 >> Tani, kompjuteri mund të Raundi ndoshta pak, 1487 01:13:12,450 --> 01:13:17,900 dhe mund t'ju lejojë të ruajtur afërsisht çdo numër që ju mund të dëshironi. 1488 01:13:17,900 --> 01:13:20,940 Por vetëm intuitive, në qoftë se ju kanë një numër i caktuar i bit, 1489 01:13:20,940 --> 01:13:24,560 ju vetëm mund të ndryshoj renditjen e tyre në shumë mënyra të fundme. 1490 01:13:24,560 --> 01:13:26,570 Pra, ju nuk mund të ndoshta përdorin një numër i caktuar 1491 01:13:26,570 --> 01:13:29,880 e ndërrim të bit, modelet e zero dhe ato, 1492 01:13:29,880 --> 01:13:32,940 për të përfaqësuar një të pafund numri i numrave, 1493 01:13:32,940 --> 01:13:37,370 i cili sugjeron se kompjuterët e fuqisë shumë mirë të jetë shtrirë për ne ndonjëherë. 1494 01:13:37,370 --> 01:13:38,770 >> Në fakt, le ta bëjmë këtë. 1495 01:13:38,770 --> 01:13:41,239 Më lejoni të kthehem në CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Më lejoni të shkojnë përpara dhe të krijuar një program të vogël 1497 01:13:43,030 --> 01:13:47,940 quajtur pasaktësi, për të treguar se kompjutera janë, me të vërtetë, të pasakta. 1498 01:13:47,940 --> 01:13:51,910 >> Dhe më lejoni të shkoj përpara dhe të fillojnë me disa prej se kodit të para, 1499 01:13:51,910 --> 01:13:53,830 dhe tani vetëm të bëjë të mëposhtme. 1500 01:13:53,830 --> 01:14:03,640 Më lejoni të shkoj përpara dhe të bëjë printf, për qind f, backslash n, 1 të ndarë me 10. 1501 01:14:03,640 --> 01:14:07,430 Me fjalë të tjera, le të zhyten në të thellë 1/10, si 1 dhe ndarë me 10. 1502 01:14:07,430 --> 01:14:09,760 Sigurisht, një kompjuter mund të përfaqësojnë 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Pra, le të shkojnë përpara dhe të bëjë pasaktësi. 1504 01:14:13,620 --> 01:14:14,390 Le të shohim. 1505 01:14:14,390 --> 01:14:16,210 Format specifikon tipit double. 1506 01:14:16,210 --> 01:14:18,160 Por argumenti ka të tipit int. 1507 01:14:18,160 --> 01:14:19,040 Çfarë po ndodh? 1508 01:14:19,040 --> 01:14:21,970 >> Oh, interesante, kështu që është një mësim i mësuar nga më parë. 1509 01:14:21,970 --> 01:14:26,050 Unë jam duke thënë, hej, show kompjuter me një noton me qind f. 1510 01:14:26,050 --> 01:14:28,200 Por unë jam duke i dhënë asaj 2 ints. 1511 01:14:28,200 --> 01:14:31,120 Pra, ajo rezulton, unë mund të rregullohet këtë në disa mënyra. 1512 01:14:31,120 --> 01:14:38,430 >> Unë vetëm mund të kthehet në një në 1.0, dhe 10 në 10.0, e cila do të, në të vërtetë, 1513 01:14:38,430 --> 01:14:42,390 kanë efektin e konvertimin ato në floats-- ende shpresë 1514 01:14:42,390 --> 01:14:43,180 të njëjtin numër. 1515 01:14:43,180 --> 01:14:45,880 Ose ajo rezulton atje është diçka ne do të shohim një herë para se të gjatë. 1516 01:14:45,880 --> 01:14:47,170 Ju mund të hedhin numrat. 1517 01:14:47,170 --> 01:14:49,880 >> Ju mund të, duke përdorur këtë ndermjetese shprehje, ju mund të thoni, 1518 01:14:49,880 --> 01:14:52,560 hey, kompjuter, të marrë këtë 10, i cili e di është një int. 1519 01:14:52,560 --> 01:14:54,660 Por të trajtuar atë, të lutem, sikur kjo është një noton. 1520 01:14:54,660 --> 01:14:56,680 Por kjo ndihet në mënyrë të panevojshme kompleks. 1521 01:14:56,680 --> 01:14:59,040 >> Për qëllimet tona sot, le të vetëm fjalë për fjalë 1522 01:14:59,040 --> 01:15:02,700 t'i bëjë ata lundrues vlerat pikë me një pikë dhjetore, si kjo. 1523 01:15:02,700 --> 01:15:07,060 Më lejoni të shkojnë përpara dhe përsëritje, të bëjë pasaktësi, mirë, dot slash 1524 01:15:07,060 --> 01:15:08,870 pasaktësi, të hyjë. 1525 01:15:08,870 --> 01:15:10,990 OK, ne jemi në kërkim të mira. 1526 01:15:10,990 --> 01:15:18,194 >> 1 të ndarë me 10, sipas mia Mac këtu, është, në të vërtetë, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Tani, unë isha mësuar në klasën e shkollës ka duhet të jetë një numër i pafund 0-së. 1528 01:15:21,360 --> 01:15:23,151 Pra, le të të paktën të përpiqet për të parë disa nga ata. 1529 01:15:23,151 --> 01:15:26,770 Ajo rezulton se printf është pak ende njohës se ne kemi qenë duke përdorur. 1530 01:15:26,770 --> 01:15:30,890 Kjo rezulton nga ju nuk duhet të specifikojë vetëm qind f, ose vetëm për qind i. 1531 01:15:30,890 --> 01:15:33,830 Ju në fakt mund të specifikoni disa opsione kontrollit këtu. 1532 01:15:33,830 --> 01:15:36,470 >> Në mënyrë të veçantë, unë jam duke shkuar për të thënë, hej, printf, 1533 01:15:36,470 --> 01:15:39,660 në fakt më tregoni 10 pikë dhjetore. 1534 01:15:39,660 --> 01:15:40,820 Kështu që duket pak i çuditshëm. 1535 01:15:40,820 --> 01:15:42,845 Por ju thoni për qind, dot, sa shumë numra 1536 01:15:42,845 --> 01:15:44,970 ju doni të shihni pas pikë dhjetore, dhe pastaj f 1537 01:15:44,970 --> 01:15:48,340 për banesë, vetëm për shkak se kjo është çfarë thotë dokumentacioni. 1538 01:15:48,340 --> 01:15:50,080 Më lejoni të shkojnë përpara dhe për të shpëtuar atë. 1539 01:15:50,080 --> 01:15:52,460 >> Dhe vini re gjithashtu, unë jam duke lodhur e rishtypjes gjëra. 1540 01:15:52,460 --> 01:15:55,900 Kështu që unë jam vetëm ngritjen dhe down arrow mbi çelësat e mia këtu. 1541 01:15:55,900 --> 01:15:58,710 Dhe në qoftë se unë mbaj goditur, ju mund të shihni të gjitha komandat e 1542 01:15:58,710 --> 01:16:01,090 që kam bërë, ose ka bërë gabimisht. 1543 01:16:01,090 --> 01:16:04,630 >> Dhe unë jam duke shkuar për të shkuar përpara dhe tani fakt nuk e përdorin atë, me sa duket. 1544 01:16:04,630 --> 01:16:11,416 Bëni pasaktësi, dot çaj imprecision-- kështu 1545 01:16:11,416 --> 01:16:13,290 ajo që unë isha mësuar në Shkolla klasën kontrollon jashtë. 1546 01:16:13,290 --> 01:16:19,010 Edhe në qoftë se unë të shtypura atë në 10 dhjetore vendos atë, në të vërtetë, është 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Por ju e dini se çfarë? 1548 01:16:19,840 --> 01:16:21,150 >> Le të merrni pak lakmitar. 1549 01:16:21,150 --> 01:16:23,990 Le të themi, si, më tregoni 55 pikë pas dhjetore. 1550 01:16:23,990 --> 01:16:26,160 Le të vërtetë të marrë këtë programit për një shëtitje. 1551 01:16:26,160 --> 01:16:31,170 Më lejoni të ribërë atë me make pasaktësi, dot plagë, pasaktësi. 1552 01:16:31,170 --> 01:16:32,390 >> Dhe këtu ne do të shkojmë. 1553 01:16:32,390 --> 01:16:34,420 fëmijëria juaj ishte një gënjeshtër. 1554 01:16:34,420 --> 01:16:48,410 Me sa duket, 1 ndarë nga 10 është me të vërtetë 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Çfarë po ndodh? 1556 01:16:49,740 --> 01:16:53,360 E pra, ajo rezulton, në qoftë se ju lloj i duken mjaft larg jashtë në të themelor 1557 01:16:53,360 --> 01:16:55,950 përfaqësimi i kësaj numrin, ai në fakt 1558 01:16:55,950 --> 01:17:00,400 nuk është saktësisht 1/10, ose 0.1 dhe një numër i pafund zero. 1559 01:17:00,400 --> 01:17:01,630 Tani, pse është kjo? 1560 01:17:01,630 --> 01:17:06,250 >> E pra, edhe pse kjo është një e thjeshtë Numri për ne njerëzit, 1 të ndarë me 10, 1561 01:17:06,250 --> 01:17:10,910 kjo është ende një nga pafundësisht shumë Numrat që ne mund të mendojmë up. 1562 01:17:10,910 --> 01:17:14,490 Por, një kompjuter mund të përfaqësojë vetëm finitely shumë numra kështu. 1563 01:17:14,490 --> 01:17:18,710 Dhe kështu, në mënyrë efektive, çfarë kompjuteri është duke na është i afërt i tij 1564 01:17:18,710 --> 01:17:22,940 përafrimi në numrin ne duam të besojmë se është 1/10, 1565 01:17:22,940 --> 01:17:27,760 apo me të vërtetë 0,10000 ad infinitum. 1566 01:17:27,760 --> 01:17:30,425 >> Përkundrazi, edhe pse, kjo është sa më afër që ajo mund të merrni. 1567 01:17:30,425 --> 01:17:32,300 Dhe, me të vërtetë, në qoftë se ju shikoni nën kapuç, 1568 01:17:32,300 --> 01:17:37,050 si ne jemi këtu duke shikuar 55 shifra pas decimal, 1569 01:17:37,050 --> 01:17:39,990 ne fakt shohim këtë realitet. 1570 01:17:39,990 --> 01:17:42,610 Tani si një mënjanë, në qoftë se ju keni parë ndonjëherë movie-- 1571 01:17:42,610 --> 01:17:45,780 shumica prej jush ndoshta haven't-- por Superman 3 disa vite më parë, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor leveraged thelb kjo Realiteti në kompaninë e tij për të vjedhur një shumë 1573 01:17:49,500 --> 01:17:53,500 e fraksionet dhe fraksionet e pennies, sepse company-- si unë kujtoj, 1574 01:17:53,500 --> 01:17:57,210 kjo është një while-- ishte në thelb duke hedhur larg çdo gjë që nuk përshtaten 1575 01:17:57,210 --> 01:17:58,790 në nocionin e cent. 1576 01:17:58,790 --> 01:18:01,480 >> Por në qoftë se ju të shtoni deri të gjitha këto vogël, të vogël, numrat e vogël përsëri, 1577 01:18:01,480 --> 01:18:04,960 dhe përsëri, dhe përsëri, ju mund të, si në rasti i tij, të bëjë një sasi të mirë parash. 1578 01:18:04,960 --> 01:18:08,010 >> Të njëjtën ide u shqye nga një më të fundit, por ende tani të vjetër 1579 01:18:08,010 --> 01:18:10,500 Filmi, i quajtur Office Space, ku djemtë në atë film, 1580 01:18:10,500 --> 01:18:13,501 bëri të njëjtën gjë, i dehur atë plotësisht, përfundoi me mënyrë shumë 1581 01:18:13,501 --> 01:18:14,666 Paratë në llogarinë e tyre bankare. 1582 01:18:14,666 --> 01:18:15,800 Kjo ishte e gjitha shumë e dyshimtë. 1583 01:18:15,800 --> 01:18:19,290 Por në fund të ditës, pasaktësi është e të gjithë rreth nesh. 1584 01:18:19,290 --> 01:18:22,240 >> Dhe se, gjithashtu, mund të jetë tmerrësisht rastin. 1585 01:18:22,240 --> 01:18:25,590 Ajo rezulton se Superman 3 dhe Office Space mënjanë, ka 1586 01:18:25,590 --> 01:18:28,460 mund të jetë një shumë e vërtetë pasojat e botës 1587 01:18:28,460 --> 01:18:32,290 e realiteteve të papërcaktuar Përfaqësimi i të dhënave 1588 01:18:32,290 --> 01:18:34,770 se edhe ne njerëzit për kjo ditë nuk domosdoshmërisht 1589 01:18:34,770 --> 01:18:38,230 kuptojmë si duhet, ose mend aq shpesh sa duhet. 1590 01:18:38,230 --> 01:18:42,950 Dhe, me të vërtetë, clip vijim është nga një vështrim në një botë shumë e vërtetë 1591 01:18:42,950 --> 01:18:47,730 Pasojat e asaj që ndodh në qoftë se ju nuk e vlerësojmë pasaktësitë që 1592 01:18:47,730 --> 01:18:50,065 mund të ndodhë në numrat përfaqësim. 1593 01:18:50,065 --> 01:18:51,300 >> [VIDEO rishikim] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Ne kemi ardhur të gjithë për të pranuar problemet shpesh frustruese që 1595 01:18:55,620 --> 01:19:00,310 shkoni me, porsi mete, viruset, dhe glitches software, 1596 01:19:00,310 --> 01:19:03,130 për çmime të vogla për të paguar për lehtësi. 1597 01:19:03,130 --> 01:19:07,800 Por, në të teknologjisë së lartë dhe shpejtësi të lartë aplikimet ushtarake dhe programit hapësirë, 1598 01:19:07,800 --> 01:19:12,800 problemi më i vogël mund të të madhërohet në fatkeqësi. 1599 01:19:12,800 --> 01:19:18,900 >> Më 4 qershor 1996, shkencëtarët përgatitur për të nisur një pilot Ariane 5 raketa. 1600 01:19:18,900 --> 01:19:21,220 Ajo mbante shkencore satelitët projektuar 1601 01:19:21,220 --> 01:19:24,600 për të përcaktuar saktësisht se si ndërvepron magnetike e tokës në terren 1602 01:19:24,600 --> 01:19:27,410 me erërat diellore. 1603 01:19:27,410 --> 01:19:30,800 Raketa është ndërtuar për Agjencia Hapësinore Evropiane, 1604 01:19:30,800 --> 01:19:34,370 dhe ngriti jashtë nga objekti i saj në bregdetin e Guajanën Franceze. 1605 01:19:34,370 --> 01:19:37,540 >> -Në Rreth 37 sekonda në fluturimi, ata së pari 1606 01:19:37,540 --> 01:19:39,270 vënë re diçka ishte duke shkuar gabim. 1607 01:19:39,270 --> 01:19:42,250 Nozzles u swiveling në një mënyrë që ata me të vërtetë nuk duhet. 1608 01:19:42,250 --> 01:19:46,580 Rreth 40 sekonda, në fluturim, në mënyrë të qartë, automjeti ishte në telashe. 1609 01:19:46,580 --> 01:19:48,850 >> Dhe kjo është kur ata bënë një vendim për ta shkatërruar atë. 1610 01:19:48,850 --> 01:19:52,780 Zyrtari varg sigurisë, me guxim jashtëzakonshme, shtypur butonin, 1611 01:19:52,780 --> 01:19:58,150 shpërtheu raketa, para se të mund të të bëhet një rrezik për sigurinë publike. 1612 01:19:58,150 --> 01:20:01,060 >> -Kjo Ishte vajza fluturim i Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 Dhe shkatërrimi i saj mori vendin për shkak të një krisje 1614 01:20:03,960 --> 01:20:05,822 ngulitura në software raketa-së. 1615 01:20:05,822 --> 01:20:08,280 -The Problemi në Ariane ishte se ka pasur një numër që 1616 01:20:08,280 --> 01:20:10,600 kërkohet 64 bit për të shprehur. 1617 01:20:10,600 --> 01:20:13,590 Dhe ata donin për të kthyer është një numër 16-bit. 1618 01:20:13,590 --> 01:20:15,610 Ata supozohet se Numri nuk ishte duke shkuar 1619 01:20:15,610 --> 01:20:20,980 të jetë shumë i madh, se shumica e atyre shifrat në një numër të 64-bit ishin zero. 1620 01:20:20,980 --> 01:20:22,440 Ata e kishin gabim. 1621 01:20:22,440 --> 01:20:25,060 >> -The Paaftësia e një program software për të pranuar 1622 01:20:25,060 --> 01:20:29,510 lloji i numrit të gjeneruara nga një tjetër ishte në rrënjë të dështimit. 1623 01:20:29,510 --> 01:20:34,350 Software zhvillimit ishte bërë një pjesë shumë e kushtueshme të teknologjisë së re. 1624 01:20:34,350 --> 01:20:38,140 Raketa Ariane kanë qenë shumë i suksesshëm, aq shumë e softuerit 1625 01:20:38,140 --> 01:20:41,550 krijuar për të ishte edhe përdoret në Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Problemi themelor ishte se Ariane 5 ka qenë më i shpejtë, më të shpejtë përshpejtuar. 1627 01:20:47,940 --> 01:20:51,450 Dhe software nuk kishte llogariten për këtë. 1628 01:20:51,450 --> 01:20:55,060 >> -The Shkatërrimin e raketave ishte një fatkeqësi e madhe financiare, 1629 01:20:55,060 --> 01:20:58,790 të gjitha për shkak të një gabimi minuta software. 1630 01:20:58,790 --> 01:21:01,210 Por ky nuk ishte i pari kohë probleme të dhënat e konvertimit 1631 01:21:01,210 --> 01:21:04,820 kishte pllakosur teknologji moderne raketa. 1632 01:21:04,820 --> 01:21:08,050 >> -Në 1991 me fillim e Luftës së parë të Gjirit, 1633 01:21:08,050 --> 01:21:10,570 patriot raketave përjetuar një lloj i ngjashëm 1634 01:21:10,570 --> 01:21:12,800 problemi numër konvertimit. 1635 01:21:12,800 --> 01:21:16,090 Dhe si rezultat, 28 persona, 28 ushtarë amerikanë, 1636 01:21:16,090 --> 01:21:19,080 u vranë dhe rreth 100 të tjerë janë plagosur, 1637 01:21:19,080 --> 01:21:22,780 kur Patriot, i cili është dashur për të mbrojtur kundër scuds hyrje, 1638 01:21:22,780 --> 01:21:25,830 dështuar për të zjarrit një raketë. 1639 01:21:25,830 --> 01:21:31,670 >> -Kur Iraku pushtoi Kuvajtin, dhe Amerika nisur Desert Storm në fillim të vitit 1991, 1640 01:21:31,670 --> 01:21:35,780 Bateritë Patriot raketave u vendosën për të mbrojtur Arabinë Saudite dhe Izraelit 1641 01:21:35,780 --> 01:21:39,230 nga sulmet me raketa Skud Irakut. 1642 01:21:39,230 --> 01:21:43,810 Patriot është një medium-varg amerikan sipërfaqe të sistemit të ajrit, të prodhuara 1643 01:21:43,810 --> 01:21:45,770 nga kompania Raytheon. 1644 01:21:45,770 --> 01:21:52,340 >> -The Madhësia e interceptorëve Patriot në vetvete është rreth rreth 20 këmbë të gjatë. 1645 01:21:52,340 --> 01:21:55,230 Dhe peshon rreth 2.000 £. 1646 01:21:55,230 --> 01:21:59,320 Dhe ajo mbart një kokë rakete prej rreth, Unë mendoj se është rreth 150 £. 1647 01:21:59,320 --> 01:22:03,930 Dhe mbushje në vetvete është një eksploziv të lartë, i cili 1648 01:22:03,930 --> 01:22:07,330 ka fragmente rreth tij. 1649 01:22:07,330 --> 01:22:11,680 Zorrë e mbushje është projektuar për të vepruar si buckshot. 1650 01:22:11,680 --> 01:22:14,110 >> -The Raketa janë kryer katër për enë, 1651 01:22:14,110 --> 01:22:17,130 dhe janë transportuar me një rimorkio gjysmë. 1652 01:22:17,130 --> 01:22:24,930 >> -The Sistemit Patriot anti-raketë shkon prapa të paktën 20 vjet tani. 1653 01:22:24,930 --> 01:22:28,420 Ajo ishte projektuar në fillim si një raketë e mbrojtjes ajrore 1654 01:22:28,420 --> 01:22:30,720 për të shuar avionët e armikut. 1655 01:22:30,720 --> 01:22:34,500 Në Luftën e parë të Gjirit, kur se lufta erdhi së bashku, 1656 01:22:34,500 --> 01:22:39,745 Ushtria donte të përdorin atë për të xhiruar poshtë scuds, jo aeroplanë. 1657 01:22:39,745 --> 01:22:43,620 >> Forcat Ajrore Irakut ishte jo aq shumë e një problemi. 1658 01:22:43,620 --> 01:22:46,670 Por ushtria u shqetësuar për scuds. 1659 01:22:46,670 --> 01:22:50,170 Dhe kështu ata u përpoqën të përmirësuar Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Një armik raketave udhëtojnë në mach 5 1661 01:22:52,800 --> 01:22:55,830 do të ishte sfiduese të mjaftueshme. 1662 01:22:55,830 --> 01:22:58,490 Por kur Patriot u nxituan në shërbim, 1663 01:22:58,490 --> 01:23:02,860 Ushtria nuk ishte në dijeni të një Modifikimi i Irakut që e bëri 1664 01:23:02,860 --> 01:23:05,930 scuds e tyre gati e pamundur për të goditur. 1665 01:23:05,930 --> 01:23:10,740 >> -Çfarë Ndodhi është scuds që vinin në ishin të paqëndrueshme. 1666 01:23:10,740 --> 01:23:11,692 Ata ishin hapa të pasigurt. 1667 01:23:11,692 --> 01:23:14,910 Arsyeja për këtë ishte Irakianët, në mënyrë 1668 01:23:14,910 --> 01:23:18,280 për të marrë 600 kilometra nga një kilometër 300 1669 01:23:18,280 --> 01:23:21,700 varg raketat, mori peshë nga mbushje para. 1670 01:23:21,700 --> 01:23:23,390 Ato bërë mbushje të lehta. 1671 01:23:23,390 --> 01:23:27,330 >> Deri tani Patriot është duke u përpjekur për të ardhur në Skud. 1672 01:23:27,330 --> 01:23:30,230 Dhe shumicën e kohës, Shumica dërrmuese e kohës, 1673 01:23:30,230 --> 01:23:32,940 ajo do të fluturojnë vetëm nga Skud. 1674 01:23:32,940 --> 01:23:37,260 Pasi operatorët e sistemit Patriot realizuar Patriot humbi objektivin e saj, 1675 01:23:37,260 --> 01:23:41,690 ata shpërtheu mbushje patriot-së për të shmangur viktima të mundshme nëse ajo 1676 01:23:41,690 --> 01:23:44,570 u lejohet të bjerë në tokë. 1677 01:23:44,570 --> 01:23:48,790 >> -Kjo Ishte ajo e pa që shumica e njerëzve, këto fireballs mëdha në qiell, 1678 01:23:48,790 --> 01:23:54,550 dhe keqkuptuar si Përgjimet e raketave Skud. 1679 01:23:54,550 --> 01:23:56,630 >> -Megjithëse Në natën Qielli, Patriots shfaq 1680 01:23:56,630 --> 01:24:00,370 të jetë i suksesshëm shkatërrimin Scuds, në Dhahran, 1681 01:24:00,370 --> 01:24:03,360 nuk mund të ketë gabim në lidhje me performancën e saj. 1682 01:24:03,360 --> 01:24:07,970 Atje, sistemi radar patriot-së humbur gjurmët e një Skud në hyrje, 1683 01:24:07,970 --> 01:24:10,721 dhe kurrë nuk filloi për shkak për një krisje software. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Ishte izraelitët i cili e parë të zbuluara se sa më gjatë sistemi ishte në, 1686 01:24:18,940 --> 01:24:22,690 më e madhe koha mospërputhje u bë, për shkak të një orë ngulitur 1687 01:24:22,690 --> 01:24:24,810 në kompjuterin e sistemit. 1688 01:24:24,810 --> 01:24:28,210 >> -Rreth Dy javë më parë tragjedia në Dhahran, 1689 01:24:28,210 --> 01:24:30,770 izraelitët raportuar Departamenti i Mbrojtjes 1690 01:24:30,770 --> 01:24:32,590 se sistemi është humbur kohë. 1691 01:24:32,590 --> 01:24:35,360 Pas rreth tetë orë apo drejtimin, ata vënë re se sistemi 1692 01:24:35,360 --> 01:24:37,720 ishte duke u bërë dukshëm më pak të sakta. 1693 01:24:37,720 --> 01:24:41,900 Departamenti i Mbrojtjes u përgjigj duke thënë të gjitha baterive Patriot 1694 01:24:41,900 --> 01:24:44,950 për të mos i lënë sistemet për një kohë të gjatë. 1695 01:24:44,950 --> 01:24:49,160 Ata kurrë nuk tha se çfarë një kohë të gjatë was-- tetë orë, 10 orë, 1,000 orë. 1696 01:24:49,160 --> 01:24:51,360 Askush nuk e dinte. 1697 01:24:51,360 --> 01:24:53,380 >> -The Bateri Patriot stacionuar në kazermën 1698 01:24:53,380 --> 01:24:58,350 në Dhahran dhe e brendshme e saj me të meta Ora ka qenë në më shumë se 100 orë 1699 01:24:58,350 --> 01:25:01,670 në natën e 25 shkurt. 1700 01:25:01,670 --> 01:25:05,917 >> -Ajo Gjurmuar kohë për një saktësi rreth një të dhjetën e një të dytë. 1701 01:25:05,917 --> 01:25:08,000 Tani, një e dhjeta e një të dytë është një numër interesante, 1702 01:25:08,000 --> 01:25:11,920 sepse ajo nuk mund të shprehet në binar saktësisht, e cila 1703 01:25:11,920 --> 01:25:16,820 do të thotë se nuk mund të shprehet saktësisht në çdo kompjuter moderne digjitale. 1704 01:25:16,820 --> 01:25:18,540 Është e vështirë të besohet. 1705 01:25:18,540 --> 01:25:21,210 >> Por e përdorin këtë si një shembull. 1706 01:25:21,210 --> 01:25:23,540 Le të marrin numrin një të tretën. 1707 01:25:23,540 --> 01:25:27,350 Një e treta nuk mund të jetë të shprehura në decimal saktësisht. 1708 01:25:27,350 --> 01:25:32,080 Një e treta është 0,333 ndodh për pafundësi. 1709 01:25:32,080 --> 01:25:36,480 >> Nuk ka asnjë mënyrë për të bërë këtë me Saktësia absolute në decimal. 1710 01:25:36,480 --> 01:25:39,560 Kjo është pikërisht lloji i problemit që ka ndodhur në Patriot. 1711 01:25:39,560 --> 01:25:44,100 Sa më gjatë që sistemi u, keq u bë herë gabim. 1712 01:25:44,100 --> 01:25:48,890 >> -Pas 100 orë të punës, gabim në atë kohë ishte vetëm rreth një e treta 1713 01:25:48,890 --> 01:25:50,600 e një të dytë. 1714 01:25:50,600 --> 01:25:54,210 Por, sa i përket synimeve të dhënësit një raketave udhëtojnë në mach 5, 1715 01:25:54,210 --> 01:25:58,710 kjo ka rezultuar në një ndjekja gabim prej mbi 600 metra. 1716 01:25:58,710 --> 01:26:02,120 Do të ishte një gabim fatal për ushtarët në atë 1717 01:26:02,120 --> 01:26:08,940 ndodhur është një fillojë Skud ishte zbuluar nga satelitët të Paralajmërimit të Hershëm 1718 01:26:08,940 --> 01:26:12,860 dhe ata e dinin se ishte Skud që vijnë në drejtim të tyre të përgjithshëm. 1719 01:26:12,860 --> 01:26:15,320 Ata nuk e dinë se ku po vinte. 1720 01:26:15,320 --> 01:26:18,250 >> -Ishte Tani deri në radar komponent i sistemit Patriot 1721 01:26:18,250 --> 01:26:23,190 mbrojtur Dhahran për të gjetur dhe për të mbajtur udhë të raketave të armikut në hyrje. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radar ishte shumë i zgjuar. 1723 01:26:24,609 --> 01:26:26,650 Kjo në fakt do të pista pozicioni i Skud, 1724 01:26:26,650 --> 01:26:30,350 dhe pastaj të parashikohet se ku ai ndoshta do të jetë hera e ardhshëm radar dërguar 1725 01:26:30,350 --> 01:26:31,420 një impuls jashtë. 1726 01:26:31,420 --> 01:26:33,110 Kjo u quajt një portë varg. 1727 01:26:33,110 --> 01:26:37,660 >> -Pastaj, Dikur Patriot vendos kohë të mjaftueshme ka 1728 01:26:37,660 --> 01:26:42,450 kaluar për të shkuar mbrapa dhe të kontrolloni të ardhshëm Lokacioni për këtë objekt zbuluar, 1729 01:26:42,450 --> 01:26:43,600 ajo shkon prapa. 1730 01:26:43,600 --> 01:26:48,650 Pra, kur ai u kthye në gabim vend, atëherë nuk sheh ndonjë objekt. 1731 01:26:48,650 --> 01:26:52,160 Dhe vendos se nuk ka objekt, ajo ishte një zbulimin e rreme, 1732 01:26:52,160 --> 01:26:53,930 dhe bie pista. 1733 01:26:53,930 --> 01:26:57,030 >> -The Hyrje Skud u zhduk nga radari. 1734 01:26:57,030 --> 01:27:00,260 Dhe sekonda më vonë, atë përplas në fortesë. 1735 01:27:00,260 --> 01:27:06,150 Skud vrarë 28, dhe ishte i fundit një gjuajtur gjatë Luftës së parë të Gjirit. 1736 01:27:06,150 --> 01:27:11,960 >> Tragjikisht, software updated arriti në Dhahran një ditë më pas. 1737 01:27:11,960 --> 01:27:14,930 Software metë kishte qenë fikse, mbylljes 1738 01:27:14,930 --> 01:27:19,806 një kapitull në trazuar Historia e raketave Patriot. 1739 01:27:19,806 --> 01:27:20,729 >> [VIDEO rishikim] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. Malan: Pra, kjo është e gjitha për të thonë se këto çështje të del nga shtrati 1741 01:27:23,520 --> 01:27:25,860 dhe pasaktësi janë të gjitha shumë e vërtetë. 1742 01:27:25,860 --> 01:27:26,920 Pra, si nuk kemi marrë këtu? 1743 01:27:26,920 --> 01:27:28,895 Kemi filluar me vetëm duke folur për printf. 1744 01:27:28,895 --> 01:27:31,270 Përsëri, ky funksion që shtyp diçka në ekran, 1745 01:27:31,270 --> 01:27:33,450 dhe ne kemi prezantuar më pas disa funksione disa të tjera 1746 01:27:33,450 --> 01:27:34,945 nga e ashtuquajtura bibliotekën CS50 e. 1747 01:27:34,945 --> 01:27:36,910 Dhe ne do të vazhdojmë të shikoni këto në kohën e duhur. 1748 01:27:36,910 --> 01:27:40,760 Dhe ne, në veçanti, e përdorur për të marrë varg, dhe për të marrë int, dhe tani edhe të noton, 1749 01:27:40,760 --> 01:27:44,410 dhe ende të tjerët ende do të hasim dhe të përdorin veten para se të gjatë. 1750 01:27:44,410 --> 01:27:47,220 >> Por në disa raste, kanë ne tashmë shihet një nevojë të 1751 01:27:47,220 --> 01:27:50,520 për të ruajtur atë që ato funksione të dorës prapa? 1752 01:27:50,520 --> 01:27:52,920 Ata na kthehet një varg dorë, ose një int, ose nje pluskues. 1753 01:27:52,920 --> 01:27:56,070 Dhe nganjëherë ne kemi nevojë për të vënë atë string, ose int, apo noton, diku. 1754 01:27:56,070 --> 01:28:00,100 >> Dhe për të ruajtur këto gjëra, të kujtojnë vetëm si në Scratch, ne kemi variablave. 1755 01:28:00,100 --> 01:28:03,260 Por ndryshe në Scratch, në C ne kemi lloje aktuale 1756 01:28:03,260 --> 01:28:05,530 e të dhënave variables-- llojet, generally-- më shumë 1757 01:28:05,530 --> 01:28:08,640 në mesin e tyre, një varg, një int, një noton, dhe këto të tjerët ende. 1758 01:28:08,640 --> 01:28:12,321 >> Dhe kështu, kur ne deklarojmë variablat në C, ne do të duhet të deklarojnë lloje tona të dhënave. 1759 01:28:12,321 --> 01:28:14,820 Kjo nuk është diçka që ne do të duhet të bëni më vonë në semestrin 1760 01:28:14,820 --> 01:28:16,810 si ne kalimin në gjuhë të tjera. 1761 01:28:16,810 --> 01:28:19,610 Por tani për tani, ne kemi nevojë për një priori paraprakisht, 1762 01:28:19,610 --> 01:28:24,370 shpjegojë për kompjuter se çfarë lloji i ndryshore ne duam që ajo të na japë. 1763 01:28:24,370 --> 01:28:27,290 >> Tani, ndërkohë, për të shtypur ato llojet e llojeve të të dhënave, 1764 01:28:27,290 --> 01:28:29,570 ne duhet të them printf se çfarë të presin. 1765 01:28:29,570 --> 01:28:32,450 Dhe ne pamë qind s për vargjet, dhe për qind i të integers, 1766 01:28:32,450 --> 01:28:33,790 dhe disa të tjerë tashmë. 1767 01:28:33,790 --> 01:28:37,237 Dhe ata janë thjesht kërkesa për prezantimin vizual 1768 01:28:37,237 --> 01:28:38,070 këtë informacion. 1769 01:28:38,070 --> 01:28:42,080 >> Dhe secili prej tyre në fakt mund të jetë parametrized ose tweaked në një farë mënyre, 1770 01:28:42,080 --> 01:28:45,370 në qoftë se ju doni të kontrollit të mëtejshëm llojin e prodhimit që ju të merrni. 1771 01:28:45,370 --> 01:28:49,604 Dhe, në fakt, rezulton se jo vetëm a ka backslash n për një linjë të re. 1772 01:28:49,604 --> 01:28:52,520 Ka diçka tjetër të quajtur backslash r për një kthim topi, e cila 1773 01:28:52,520 --> 01:28:54,360 është më e ngjashme me një makinë shkrimi të vjetër e shkollës, 1774 01:28:54,360 --> 01:28:57,690 dhe gjithashtu të Windows përdorur për shumë vite. 1775 01:28:57,690 --> 01:28:59,690 >> Ka t backslash për tabs. 1776 01:28:59,690 --> 01:29:03,170 Rezulton, se në qoftë se ju doni të quote dyfishtë brenda një varg, 1777 01:29:03,170 --> 01:29:05,000 kujtojnë se ne kemi përdorur double quote dyfishtë 1778 01:29:05,000 --> 01:29:07,900 quote në të majtë dhe të djathtë skajet e vargjet tona deri tani. 1779 01:29:07,900 --> 01:29:09,420 Kjo do të duket për të ngatërruar gjërat. 1780 01:29:09,420 --> 01:29:12,503 >> Nëse ju doni të vendosni një kuotë të dyfishtë në mes të një string-- dhe, në të vërtetë, 1781 01:29:12,503 --> 01:29:13,670 ajo është konfuze për të parë. 1782 01:29:13,670 --> 01:29:17,120 Dhe kështu që ju keni për të shpëtuar, në mënyrë që të flasin, një kuotë të dyfishtë me diçka 1783 01:29:17,120 --> 01:29:18,860 si, fjalë për fjalë, backslash kuotë të dyfishtë. 1784 01:29:18,860 --> 01:29:20,230 Dhe ka një tjetër disa ende. 1785 01:29:20,230 --> 01:29:24,540 Dhe ne do të shohim më shumë nga ata në përdorimin aktual para të gjatë. 1786 01:29:24,540 --> 01:29:27,930 >> Pra, tani le të kalojnë nga të dhënave, dhe përfaqësim, 1787 01:29:27,930 --> 01:29:30,820 dhe operatorët aritmetike, të gjitha i cili na dha një ndërtesë 1788 01:29:30,820 --> 01:29:32,070 blloqe me të cilat për të luajtur. 1789 01:29:32,070 --> 01:29:34,481 Por tani le të vërtetë të japë na pjesa tjetër e fjalorit 1790 01:29:34,481 --> 01:29:36,230 që ne tashmë kishte javën e kaluar me Scratch 1791 01:29:36,230 --> 01:29:39,350 duke marrë një vështrim në disa të tjera ndërton në C-- jo të gjitha prej tyre. 1792 01:29:39,350 --> 01:29:41,680 Por idetë jemi gati për të parë të vërtetë vetëm 1793 01:29:41,680 --> 01:29:45,610 për të theksuar nga përkthimi një gjuhë, Scratch, në një tjetër, C. 1794 01:29:45,610 --> 01:29:48,470 >> Dhe me kalimin e kohës, ne do të të marr më shumë mjete për veglën tonë, 1795 01:29:48,470 --> 01:29:49,820 mënyrë që të flasin, sintaksore. 1796 01:29:49,820 --> 01:29:54,190 Dhe, me të vërtetë, ju do të shihni se idetë tani janë mjaft të njohur nga java e fundit. 1797 01:29:54,190 --> 01:29:55,200 Pra, le ta bëjmë këtë. 1798 01:29:55,200 --> 01:29:58,870 >> Le të shkojnë përpara dhe nxit një program që në fakt përdor disa shprehje, 1799 01:29:58,870 --> 01:30:00,720 një shprehje Boolean. 1800 01:30:00,720 --> 01:30:02,810 Më lejoni të shkojnë përpara këtu dhe për të krijuar një skedë të re. 1801 01:30:02,810 --> 01:30:06,090 Unë do të thërrasë këtë condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Më lejoni të shkojnë përpara dhe përfshijnë bibliotekën CS50. 1803 01:30:09,350 --> 01:30:12,640 Dhe më lejoni të shkoj përpara dhe të përfshijnë standarde IO.h për funksionet tona, 1804 01:30:12,640 --> 01:30:14,690 dhe printf, dhe më shumë respektivisht. 1805 01:30:14,690 --> 01:30:18,900 Më lejoni të jap vetes se boilerplate e void int main, shpjegimi i të cilit ne do të 1806 01:30:18,900 --> 01:30:20,360 të kthehen në të ardhmen. 1807 01:30:20,360 --> 01:30:23,820 >> Tani më lejoni të shkoj përpara dhe të japë vetë një int via get int. 1808 01:30:23,820 --> 01:30:25,970 Atëherë më lejoni të shkoj përpara dhe të bëjë këtë. 1809 01:30:25,970 --> 01:30:30,150 Dua të them, nëse i është less-- le dallimin në mes pozitive, negative, 1810 01:30:30,150 --> 01:30:31,260 ose zero vlera. 1811 01:30:31,260 --> 01:30:36,630 >> Pra, nëse i është më pak se zero, më lejoni vetëm duhet ky program thjesht të thonë: 1812 01:30:36,630 --> 01:30:42,370 negative, backslash n, tjetër nëse i është më e madhe se zero. 1813 01:30:42,370 --> 01:30:47,030 Tani unë jam, sigurisht, do të thonë printf pozitiv, backslash n. 1814 01:30:47,030 --> 01:30:50,690 Dhe pastaj tjetër if-- unë mund të bëjë këtë. 1815 01:30:50,690 --> 01:30:53,410 >> Unë mund të bëj në qoftë se i barabartë 0. 1816 01:30:53,410 --> 01:30:55,840 Por unë do të jetë bërë në paktën një gabim tashmë. 1817 01:30:55,840 --> 01:30:59,480 Kujtojnë se shenja është i barabartë jo të barabartë, si ne njerëzit e dinë atë. 1818 01:30:59,480 --> 01:31:01,010 >> Por kjo është operatori detyrë. 1819 01:31:01,010 --> 01:31:05,640 Dhe ne nuk do të duan të marrin në anën 0 drejtë dhe e vënë atë në i në të majtë. 1820 01:31:05,640 --> 01:31:11,810 Pra, për të shmangur këtë konfuzion, ose ndoshta keqpërdorimi i të barabartëve të nënshkruar, 1821 01:31:11,810 --> 01:31:14,740 njerëzit vendosur disa vjet më parë që në shumë gjuhë programimi 1822 01:31:14,740 --> 01:31:18,000 kur ju doni të kontrolloni për barazi në mes të majtë dhe të djathtë, 1823 01:31:18,000 --> 01:31:19,635 në të vërtetë ju përdorni është e barabartë me të barabartë. 1824 01:31:19,635 --> 01:31:21,010 Kështu që ju goditi të barabartë të nënshkruar dy herë. 1825 01:31:21,010 --> 01:31:25,600 Kur ju doni të caktojë nga e drejta në të majtë, ju përdorni një shenjë të vetme të barabartë. 1826 01:31:25,600 --> 01:31:29,360 Pra, ne mund të bëjmë this-- tjetër nëse i barabartë është e barabartë me zero. 1827 01:31:29,360 --> 01:31:31,710 >> Unë pastaj mund të shkojnë dhe të hapur formatimin e teksteve kaçurrel e mia, 1828 01:31:31,710 --> 01:31:36,087 dhe thonë: printf 0, backslash n, bërë. 1829 01:31:36,087 --> 01:31:38,170 Por mos harroni se si këto forks në rrugë mund të punojnë. 1830 01:31:38,170 --> 01:31:39,836 Dhe, me të vërtetë, vetëm mendoj për logjikën. 1831 01:31:39,836 --> 01:31:41,510 i është një numër i. 1832 01:31:41,510 --> 01:31:43,320 Kjo është një numër të plotë, në mënyrë specifike. 1833 01:31:43,320 --> 01:31:48,600 Dhe kjo do të thotë se do të jetë më pak se 0 ose më e madhe se 0, ose 0. 1834 01:31:48,600 --> 01:31:51,600 Pra, nuk është lloj i kësaj Rasti nënkuptuar default. 1835 01:31:51,600 --> 01:31:54,920 >> Dhe kështu që ne mund të, ashtu si Scratch, shpërndarë me tjetër, nëse, 1836 01:31:54,920 --> 01:31:55,747 dhe vetëm të thonë të tjerët. 1837 01:31:55,747 --> 01:31:57,830 Logjikisht, nëse ti programues e di se ka vetëm 1838 01:31:57,830 --> 01:32:01,635 tre kova në të cilën një Skenari mund fall-- e parë, 1839 01:32:01,635 --> 01:32:03,510 e dytë, apo i tretë në këtë case-- nuk 1840 01:32:03,510 --> 01:32:07,100 bother duke shtuar saktësi shtesë dhe logjika shtesë atje. 1841 01:32:07,100 --> 01:32:09,690 Vetëm të shkojnë përpara me Rasti parazgjedhur këtu e tjetër. 1842 01:32:09,690 --> 01:32:11,950 >> Tani, le të shkojë përpara pas kursimit të kësaj, të bëjë 1843 01:32:11,950 --> 01:32:15,760 Kushtet dot çaj conditions-- nuk është një ndërfaqe e madhe e përdoruesit, 1844 01:32:15,760 --> 01:32:18,914 sepse unë nuk jam duke nxitur përdorues, siç e përmenda më parë. 1845 01:32:18,914 --> 01:32:19,580 Por kjo është në rregull. 1846 01:32:19,580 --> 01:32:20,454 Ne do të mbani atë të thjeshtë. 1847 01:32:20,454 --> 01:32:21,890 Le të përpiqemi numrin 42. 1848 01:32:21,890 --> 01:32:23,240 Dhe kjo është pozitive. 1849 01:32:23,240 --> 01:32:26,120 Le të përpiqemi numrin negative 42, negative. 1850 01:32:26,120 --> 01:32:28,244 >> Le të përpiqemi vlerën 0. 1851 01:32:28,244 --> 01:32:29,160 Dhe, në të vërtetë, ajo punon. 1852 01:32:29,160 --> 01:32:33,900 Tani, ju do të shihni me probleme të para gjatë, testimi gjëra tri herë, 1853 01:32:33,900 --> 01:32:34,980 ndoshta jo të mjaftueshme. 1854 01:32:34,980 --> 01:32:37,438 Ju ndoshta dëshironi për të provuar disa numra të mëdha, disa të vogla 1855 01:32:37,438 --> 01:32:40,520 numra, disa raste qoshe, si ne do të vijnë për të përshkruar ato. 1856 01:32:40,520 --> 01:32:42,500 >> Por tani për tani, ky është një program shumë e thjeshtë. 1857 01:32:42,500 --> 01:32:45,160 Dhe unë jam goxha i sigurt, logjikisht, se ajo bie në tri raste. 1858 01:32:45,160 --> 01:32:49,360 Dhe, në të vërtetë, edhe pse ne vetëm fokusuar në dobësi e mundshme 1859 01:32:49,360 --> 01:32:53,480 e pasaktësi dhe del nga shtrati, në realiteti ku shumë prej problemeve të CS50-së, 1860 01:32:53,480 --> 01:32:56,000 ne nuk do të shqetësohen rreth, gjithë kohën, 1861 01:32:56,000 --> 01:32:59,050 këto çështje të del nga shtrati dhe pasaktësi, për shkak se, në fakt, në C, 1862 01:32:59,050 --> 01:33:01,889 kjo nuk është në të vërtetë të gjithë që lehtë për të shmangur ato gjëra. 1863 01:33:01,889 --> 01:33:04,180 Nëse ju doni për të numëruar deri më të mëdha dhe më të mëdha dhe më të mëdha, 1864 01:33:04,180 --> 01:33:07,510 del se teknika ju mund të përdorin, shpesh duke përfshirë gjëra të quajtur 1865 01:33:07,510 --> 01:33:11,240 bibliotekat, koleksionet e kodit, që njerëz të tjerë shkruar se ju mund të përdorni, 1866 01:33:11,240 --> 01:33:13,910 dhe gjuhë të tjera si Java dhe të tjerët, në të vërtetë 1867 01:33:13,910 --> 01:33:15,800 e bëjnë atë një shumë më e lehtë për të numëruar edhe më të larta. 1868 01:33:15,800 --> 01:33:19,810 Pra, kjo është me të vërtetë disa nga këto rreziqe një funksion i gjuhës që ju përdorni. 1869 01:33:19,810 --> 01:33:22,710 Dhe në javët e ardhshme, ne do të të parë se sa të rrezikshme C vërtetë 1870 01:33:22,710 --> 01:33:24,950 mund të jetë në qoftë se ju nuk e përdorni atë siç duhet. 1871 01:33:24,950 --> 01:33:27,610 Por nga atje, dhe me Python, dhe JavaScript, do të 1872 01:33:27,610 --> 01:33:32,620 ne shtresa në disa mbrojtje shtesë, dhe të drejtuar më pak nga këto rreziqe. 1873 01:33:32,620 --> 01:33:35,820 >> Pra, le të bëjë pak më shumë Logjika interesante në programin tonë. 1874 01:33:35,820 --> 01:33:39,110 Pra më lejoni të shkoj përpara dhe të krijojë një program të quajtur logjike 1875 01:33:39,110 --> 01:33:43,804 vetëm kështu unë mund të luajnë me disa Logjika aktuale, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Unë vetëm do të kopjoni dhe ngjisni disa Kodi nga kështu që më parë kam marrë përsëri 1877 01:33:46,870 --> 01:33:49,950 në këtë pikë të mirë fillimi. 1878 01:33:49,950 --> 01:33:53,980 >> Le të më bëjë këtë herë C. char Jam duke shkuar për të dhënë atë një emër të C 1879 01:33:53,980 --> 01:33:58,510 vetëm për shkak se është konvencionale, të marrë një karakter nga përdoruesit. 1880 01:33:58,510 --> 01:34:00,730 Dhe le të pretendojë si Unë jam duke zbatuar pjesë 1881 01:34:00,730 --> 01:34:04,130 e atij programi Rm, hiqni Programi i parë që bëri përdoruesit 1882 01:34:04,130 --> 01:34:05,400 për të hequr një fotografi. 1883 01:34:05,400 --> 01:34:06,750 Si mund ta bëjmë këtë? 1884 01:34:06,750 --> 01:34:11,090 >> Dua të them, nëse C është e barabartë me barabartë, quote mbyll thonjëzat, 1885 01:34:11,090 --> 01:34:16,304 y, atëherë unë jam duke shkuar për të marrë që përdoruesi ka zgjedhur po. 1886 01:34:16,304 --> 01:34:17,470 Unë jam vetëm duke shkuar për të shkruar po. 1887 01:34:17,470 --> 01:34:19,440 Nëse do të ishte në fakt shkruar programi heqjen, 1888 01:34:19,440 --> 01:34:21,420 ne mund të hiqni fotografi me më shumë rreshta të kodit. 1889 01:34:21,420 --> 01:34:22,461 Por ne do të mbajtur atë të thjeshtë. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Tjetër në qoftë se c është e barabartë barabartë n-- dhe tani këtu, unë jam duke shkuar për të thënë, 1892 01:34:31,250 --> 01:34:32,980 përdoruesi duhet të ketë për qëllim nr. 1893 01:34:32,980 --> 01:34:34,360 Dhe pastaj tjetër, ju e dini se çfarë? 1894 01:34:34,360 --> 01:34:36,200 Unë nuk e di se çfarë tjetër përdoruesi do të shkruani. 1895 01:34:36,200 --> 01:34:38,533 Kështu që unë jam vetëm duke shkuar për të thënë se kjo është një gabim, çfarëdo 1896 01:34:38,533 --> 01:34:40,070 ai ose ajo në të vërtetë shtypur. 1897 01:34:40,070 --> 01:34:41,180 >> Pra, çfarë po ndodh këtu? 1898 01:34:41,180 --> 01:34:44,530 Ka një ndryshim thelbësor kundrejt ajo që unë kam bërë në të kaluarën. 1899 01:34:44,530 --> 01:34:49,300 Kuotat e dyfishtë, kuotat dyfishtë, të dyfishtë kuotat, dhe, ende, citate të vetme, 1900 01:34:49,300 --> 01:34:50,170 Kuotat e vetme. 1901 01:34:50,170 --> 01:34:52,860 Kjo rezulton në C, se kur ju dëshironi të shkruani një varg, 1902 01:34:52,860 --> 01:34:56,680 ju nuk përdorni kuotat e dyfishtë, ashtu siç ne kemi përdorur të gjithë këtë kohë me printf. 1903 01:34:56,680 --> 01:35:02,030 >> Por në qoftë se ju doni që të merren me vetëm një karakter të vetëm, një të ashtuquajtur char, 1904 01:35:02,030 --> 01:35:03,780 atëherë ju në fakt përdorin këto apostrofa. 1905 01:35:03,780 --> 01:35:05,450 Ata prej jush që kanë programuar para, ju nuk mund të ketë 1906 01:35:05,450 --> 01:35:07,850 kishte për t'u shqetësuar në lidhje me këtë dallim në gjuhë të caktuara. 1907 01:35:07,850 --> 01:35:09,450 Në C, ajo ka rëndësi. 1908 01:35:09,450 --> 01:35:12,560 Dhe kështu që kur unë të marrë një char dhe dua për të krahasuar se char përdorur është e barabartë 1909 01:35:12,560 --> 01:35:18,350 është e barabartë me një letër si y apo n, bëj, në të vërtetë, duhet të ketë këto apostrofa. 1910 01:35:18,350 --> 01:35:19,770 >> Tani, le të shkojnë përpara dhe të bëjë këtë. 1911 01:35:19,770 --> 01:35:26,180 Le të shkojnë përpara dhe të bëjnë dot logjike çaj logjike. 1912 01:35:26,180 --> 01:35:27,305 Dhe tani unë jam duke e shtyrë. 1913 01:35:27,305 --> 01:35:30,638 Pra, me sa duket, një përvojë më të mirë përdorues në fakt do të më tregoni se çfarë të bëjmë këtu. 1914 01:35:30,638 --> 01:35:33,030 Por unë jam duke shkuar për të vetëm verbërisht thonë y për po, OK, e bukur. 1915 01:35:33,030 --> 01:35:35,780 >> Le të drejtuar atë përsëri, n për të nuk ka, e bukur. 1916 01:35:35,780 --> 01:35:39,610 Supozoni se si disa njerëz unë e di, caps lock e mia kryesore është në të gjithë shumë shpesh. 1917 01:35:39,610 --> 01:35:43,740 Kështu që unë bëj kryeqyteti Y, të hyjë, gabim. 1918 01:35:43,740 --> 01:35:46,130 OK, kjo nuk është pikërisht ajo që unë jam duke pritur. 1919 01:35:46,130 --> 01:35:48,170 Në të vërtetë, kompjuteri është duke bërë fjalë për fjalë atë 1920 01:35:48,170 --> 01:35:51,794 Këtë gjë ua tregova do-- kontrolluar për të vogla dhe të vogla y n. 1921 01:35:51,794 --> 01:35:53,960 Kjo nuk do të ndjehen si të mirë user experience, edhe pse. 1922 01:35:53,960 --> 01:35:59,010 Më lejoni të kërkojë dhe të pranojë ose rasti më i ulët apo rasti e sipërme. 1923 01:35:59,010 --> 01:36:02,090 Pra, ajo rezulton, ju mund të dëshironi për të thënë diçka si në Scratch, 1924 01:36:02,090 --> 01:36:08,150 si fjalë për fjalë ose C është e barabartë me është e barabartë me kapitalin y vetme cituar. 1925 01:36:08,150 --> 01:36:11,400 Rezulton se, C nuk ka kjo fjalen literal ose. 1926 01:36:11,400 --> 01:36:12,880 >> Por ajo ka dy bare vertikale. 1927 01:36:12,880 --> 01:36:15,463 Ju keni për të mbajtur Shift zakonisht, në qoftë se ju jeni duke përdorur një tastierë amerikane, 1928 01:36:15,463 --> 01:36:18,910 dhe goditi bar vertikale kryesore mbi tuaj çelës kthimit. 1929 01:36:18,910 --> 01:36:22,410 Por ky bar vertikale bar vertikale do të thotë ose. 1930 01:36:22,410 --> 01:36:26,220 >> Nëse, nga ana tjetër, kemi dashur për të thënë dhe, si në Scratch, 1931 01:36:26,220 --> 01:36:28,180 ne mund të bëjmë simbol të ampersand. 1932 01:36:28,180 --> 01:36:31,330 Kjo nuk ka kuptim logjik këtu, për shkak se një njeri nuk mund të ndoshta 1933 01:36:31,330 --> 01:36:37,110 kanë shtypur dy y dhe y të vogla dhe kapitali Y si të njëjtit karakter. 1934 01:36:37,110 --> 01:36:39,470 Pra, apo është ajo që ne synojmë këtu. 1935 01:36:39,470 --> 01:36:46,280 >> Pra, nëse kam bërë këtë në të dy vendet, apo c barabartë barabartë kryeqyteti N, tani përsëritje, 1936 01:36:46,280 --> 01:36:49,390 bëjnë logjike, përsëritje logjike. 1937 01:36:49,390 --> 01:36:51,200 Tani, unë mund të shtypni y. 1938 01:36:51,200 --> 01:36:53,920 Dhe unë mund ta bëjë këtë përsëri me Kapitali Y, ose N. kapitali 1939 01:36:53,920 --> 01:36:56,630 Dhe unë mund të shtoni në shtesë kombinime ende. 1940 01:36:56,630 --> 01:36:58,810 >> Pra, kjo është logjike program aq sa tani 1941 01:36:58,810 --> 01:37:01,940 Unë jam duke kontrolluar logjikisht për kjo vlerë ose kjo vlerë. 1942 01:37:01,940 --> 01:37:06,420 Dhe unë nuk kam për të, domosdoshmërisht, të dalë me dy ifs më shumë ose tjetër ifs. 1943 01:37:06,420 --> 01:37:09,960 Unë në fakt mund të kombinohen disa nga lidhura logjike bashku ne kete menyre. 1944 01:37:09,960 --> 01:37:11,950 Pra, kjo do të jetë më mirë projektuar se thjesht 1945 01:37:11,950 --> 01:37:17,490 duke i thënë: në qoftë se C është e barabartë me y ulët rast, shtypura po, tjetër në qoftë se c është e barabartë e kapitalit Y, 1946 01:37:17,490 --> 01:37:20,074 shtypura po, tjetër në qoftë se c është e barabartë me lower-- me fjalë të tjera, 1947 01:37:20,074 --> 01:37:21,990 ju nuk duhet të ketë gjithnjë e më shumë degë. 1948 01:37:21,990 --> 01:37:28,840 Ju mund të kombinohen disa ekuivalent degët Logjikisht, si në këtë mënyrë. 1949 01:37:28,840 --> 01:37:34,150 >> Pra, le të marrin një vështrim në vetëm një përbërës final, një konstrukt final, 1950 01:37:34,150 --> 01:37:34,847 se C lejon. 1951 01:37:34,847 --> 01:37:36,930 Dhe ne do të kthehen në të ardhmen për të tjerët ende. 1952 01:37:36,930 --> 01:37:41,400 Dhe pastaj ne do të përfundojmë duke shikuar në jo korrektësinë e code-- 1953 01:37:41,400 --> 01:37:46,070 marrjen e kodit të work-- por dizajni e kodit, dhe të mbjellë ato fara herët. 1954 01:37:46,070 --> 01:37:51,337 >> Pra më lejoni të shkoj përpara dhe të të hapur një skedë të re këtu. 1955 01:37:51,337 --> 01:37:51,920 Ju e dini se çfarë? 1956 01:37:51,920 --> 01:37:54,450 Unë jam duke shkuar për të ri-zbatuar të njëjtin program, 1957 01:37:54,450 --> 01:37:55,940 por duke përdorur një konstrukt të ndryshme. 1958 01:37:55,940 --> 01:38:00,110 >> Pra, le të më shpejt të japë veten qasje për të përfshirë CS50.h 1959 01:38:00,110 --> 01:38:04,150 për bibliotekën CS50, Io.h standard për printf. 1960 01:38:04,150 --> 01:38:06,510 Më jep boshllëkun tim int kryesore. 1961 01:38:06,510 --> 01:38:09,310 Dhe pastaj gjatë këtu, le të shkoj përpara dhe të bëjë këtë. 1962 01:38:09,310 --> 01:38:12,010 >> Char c merr marrë char, ashtu si më parë. 1963 01:38:12,010 --> 01:38:16,770 Dhe unë jam duke shkuar për të përdorur një konstrukt të ri now-- kaloni, në atë karakter? 1964 01:38:16,770 --> 01:38:19,820 Pra, switch është lloj si kalimi një këngë tren. 1965 01:38:19,820 --> 01:38:22,070 Ose, me të vërtetë, kjo është lloj i një rast tjetër, në qoftë tjetër në qoftë se, 1966 01:38:22,070 --> 01:38:23,980 por disi ndryshe me shkrim. 1967 01:38:23,980 --> 01:38:25,490 >> Një kaloni duket si ky. 1968 01:38:25,490 --> 01:38:29,060 Ju keni kaloni, dhe pastaj çfarë karakter ose numri që ju dëshironi të shikoni në, 1969 01:38:29,060 --> 01:38:32,000 pastaj disa formatimin e teksteve kaçurrel si në Scratch, vetëm të thonë se bëjnë këto gjëra. 1970 01:38:32,000 --> 01:38:33,480 Dhe atëherë ju keni raste të ndryshme. 1971 01:38:33,480 --> 01:38:34,830 >> Ju nuk e përdorni nëse dhe tjetër. 1972 01:38:34,830 --> 01:38:37,050 Ju fjalë për fjalë përdorni rastin fjalën. 1973 01:38:37,050 --> 01:38:38,790 Dhe ju do të thoni diçka si kjo. 1974 01:38:38,790 --> 01:38:43,820 >> Pra, në rastin e një y vogle, ose në rastin e një kapital Y, 1975 01:38:43,820 --> 01:38:47,350 të shkojnë përpara dhe të shtypura nga po. 1976 01:38:47,350 --> 01:38:49,020 Dhe pastaj të thyer nga kaloni. 1977 01:38:49,020 --> 01:38:49,580 Kjo eshte. 1978 01:38:49,580 --> 01:38:50,880 Ne jemi duke bërë. 1979 01:38:50,880 --> 01:38:57,270 >> Tjetër në qoftë se, si të thuash, Rasti n më të ulët, ose kapitalin N, 1980 01:38:57,270 --> 01:39:02,560 pastaj të shkojnë përpara dhe të shtypura jashtë jo, dhe pastaj thyer. 1981 01:39:02,560 --> 01:39:08,022 Else-- dhe ky lloj është Rasti parazgjedhur indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 dhe vetëm për masë të mirë, edhe pse logjikisht ky pushim nuk është e nevojshme 1983 01:39:10,980 --> 01:39:12,896 sepse ne jemi në fund e kaloni gjithsesi, 1984 01:39:12,896 --> 01:39:14,520 Unë tani jam duke thyer jashtë kaloni. 1985 01:39:14,520 --> 01:39:16,280 Pra, kjo duket pak më ndryshe. 1986 01:39:16,280 --> 01:39:18,272 >> Por, logjikisht, është e në fakt ekuivalent. 1987 01:39:18,272 --> 01:39:19,980 Dhe pse do të përdorni njëri mbi tjetrin? 1988 01:39:19,980 --> 01:39:23,220 Ndonjëherë, vetëm preferencë personale, nganjëherë estetikë, 1989 01:39:23,220 --> 01:39:25,420 në qoftë se unë shikoj në këtë tani, ka diçka 1990 01:39:25,420 --> 01:39:27,510 për të thënë për lexueshmëria e këtij kodi. 1991 01:39:27,510 --> 01:39:30,690 Unë do të thotë, mos u mërzit për faktin se kjo Kodi është i ri për shumë prej nesh në dhomë. 1992 01:39:30,690 --> 01:39:33,515 >> Por ajo vetëm lloj është shumë. 1993 01:39:33,515 --> 01:39:37,760 Ju shikoni të vogla y, kapitalit Y, Rasti n ulët, kryeqyteti N parazgjedhur, 1994 01:39:37,760 --> 01:39:40,150 ajo vetëm lloj hedhje jashtë në ju në një mënyrë 1995 01:39:40,150 --> 01:39:42,200 që, ndoshta, ndoshta shembulli i mëparshëm 1996 01:39:42,200 --> 01:39:45,780 me ifs dhe bare vertikale, dhe else sikur, nuk mund të ketë. 1997 01:39:45,780 --> 01:39:51,600 Pra, kjo është me të vërtetë një çështje e personale zgjedhje, me të vërtetë, apo lexueshmëri, 1998 01:39:51,600 --> 01:39:52,360 të kodit. 1999 01:39:52,360 --> 01:39:58,230 >> Por në aspektin e funksionalitetit, le të më të shkojnë përpara dhe të bëjë një switch, dot plagë 2000 01:39:58,230 --> 01:40:05,830 switch, dhe tani shkruani y vogle, Kapitali Y, n të vogla, kryeqyteti N, 2001 01:40:05,830 --> 01:40:09,250 David, rigjykuar sepse kjo është jo një karakter të vetëm. 2002 01:40:09,250 --> 01:40:12,050 Le të bëjmë x, gabim, siç pritej. 2003 01:40:12,050 --> 01:40:15,640 Dhe, logically-- dhe kjo është diçka Unë do të inkurajojë në general-- edhe 2004 01:40:15,640 --> 01:40:17,790 edhe pse ne jemi vetëm kruarje Sipërfaqja e disa nga këto karakteristika. 2005 01:40:17,790 --> 01:40:20,560 >> Dhe kjo nuk mund të jetë e qartë kur ju veten ulen në tastierë, 2006 01:40:20,560 --> 01:40:21,370 si e bën këtë punë? 2007 01:40:21,370 --> 01:40:22,240 Çfarë do të bëni këtë? 2008 01:40:22,240 --> 01:40:25,630 Gjë e bukur për të pasur një laptop apo desktop, apo qasje 2009 01:40:25,630 --> 01:40:29,290 në një kompjuter me një përpilues, dhe me një editor kodin si kjo, 2010 01:40:29,290 --> 01:40:32,990 është se ju mund të pothuajse gjithmonë të përgjigjem këto pyetje për veten vetëm duke u përpjekur. 2011 01:40:32,990 --> 01:40:36,570 >> Për shembull, në qoftë se retorike Pyetja në dorë ishin, 2012 01:40:36,570 --> 01:40:39,540 çfarë ndodh në qoftë se ju harroni deklaratat tuaja pushim? 2013 01:40:39,540 --> 01:40:41,400 E cila është në fakt një shumë e zakonshme gjë për të bërë, 2014 01:40:41,400 --> 01:40:43,540 sepse ajo nuk duket si ju me të vërtetë nevojë për ta. 2015 01:40:43,540 --> 01:40:46,790 Ato nuk mund të vërtetë të përfundojë tuaj menduar si një parantezë ose një kaçurrel 2016 01:40:46,790 --> 01:40:47,714 mbajtëse e bën. 2017 01:40:47,714 --> 01:40:49,630 Le të shkojnë përpara dhe të përpiluar kodin dhe të shohim. 2018 01:40:49,630 --> 01:40:53,690 Pra, ti kaloni, kaloni dot plagë. 2019 01:40:53,690 --> 01:40:56,435 Le të shkruani në rastin më të ulët y, rasti i lartë, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Kështu që unë shtypur y. 2022 01:41:00,700 --> 01:41:04,420 >> Programi i tha po, jo, gabim, sikur të ishte ndryshuar mendjen e saj. 2023 01:41:04,420 --> 01:41:09,280 Por kjo lloj ishte, sepse ajo që ndodh me një të kaluar është rasti i parë që 2024 01:41:09,280 --> 01:41:13,899 ndeshje në thelb do të thotë, hej kompjuter, ekzekutuar të gjitha të kodit nën atë. 2025 01:41:13,899 --> 01:41:16,690 Dhe në qoftë se ju nuk thoni pushim, ose mos thoni pushim, ose nuk thonë pushim, 2026 01:41:16,690 --> 01:41:19,540 kompjuteri do të hidhte në erë nëpër të gjitha këto linja 2027 01:41:19,540 --> 01:41:22,779 dhe të ekzekutuar të gjithë ata deri ajo merr në atë mbajtëse kaçurrel. 2028 01:41:22,779 --> 01:41:24,320 Pra, frenat janë, me të vërtetë, është e nevojshme. 2029 01:41:24,320 --> 01:41:27,120 Por një takeaway këtu është, kur në dyshim, provoni diçka. 2030 01:41:27,120 --> 01:41:29,510 Ndoshta të ruajtur kodin tuaj të parë, apo ruani atë në një skedar shtesë 2031 01:41:29,510 --> 01:41:32,930 nëse ju jeni të shqetësuar me të vërtetë në lidhje me messing up dhe të kesh për të rimarrë 2032 01:41:32,930 --> 01:41:34,430 puna që ju e dini se është duke punuar. 2033 01:41:34,430 --> 01:41:35,410 >> Por provoni gjëra. 2034 01:41:35,410 --> 01:41:38,074 Dhe nuk do të jetë aq i frikësuar, ndoshta, e asaj që mund të bëjë kompjuteri, 2035 01:41:38,074 --> 01:41:39,490 ose që ju mund të thyer diçka. 2036 01:41:39,490 --> 01:41:42,790 Ju gjithmonë mund të ktheheni në një version më parë. 2037 01:41:42,790 --> 01:41:45,640 >> Pra, le të përfundojnë duke shikuar në hartimin e kodit. 2038 01:41:45,640 --> 01:41:49,020 Ne kemi këtë aftësi tani për të shkruar kushtet, dhe sythe shkruani, 2039 01:41:49,020 --> 01:41:50,850 dhe variablave, dhe funksionet e thirrjes. 2040 01:41:50,850 --> 01:41:54,590 Pra, sinqerisht, ne jemi lloj i kthyer në ku ishim një javë më parë me Scratch, 2041 01:41:54,590 --> 01:42:00,120 edhe pse me një tekstuale pak bindëse Mjedisi se Scratch lejon. 2042 01:42:00,120 --> 01:42:03,990 >> Por vini re se sa shpejt kemi fituar se fjalori, edhe nëse është e 2043 01:42:03,990 --> 01:42:07,570 do të marrë pak kohë për të zhytet në, kështu që ne tani mund të përdorni këtë fjalor 2044 01:42:07,570 --> 01:42:10,320 për të shkruar programet më interesante. 2045 01:42:10,320 --> 01:42:12,940 Dhe le të marrin një hap fëmijë drejt se, si më poshtë. 2046 01:42:12,940 --> 01:42:14,890 Më lejoni të shkojnë përpara dhe të krijojë një skedar të ri këtu. 2047 01:42:14,890 --> 01:42:17,750 >> Unë jam duke shkuar për të thirrur këtë prototype.c, dhe futjen 2048 01:42:17,750 --> 01:42:20,954 për herë të parë, aftësia për të bërë funksionet tuaja. 2049 01:42:20,954 --> 01:42:22,870 Disa nga ju mund të kenë bërë këtë me Scratch, 2050 01:42:22,870 --> 01:42:25,430 ku ju mund të krijoni tuaj blloqe vet porosi në Scratch, 2051 01:42:25,430 --> 01:42:27,892 dhe pastaj terhiq e tyre në vend kudo që ju dëshironi në C. 2052 01:42:27,892 --> 01:42:30,100 Dhe në programimin më gjuhë, ju mund të bëjë pikërisht 2053 01:42:30,100 --> 01:42:33,580 that-- të funksioneve tuaja, nëse ata nuk ekzistojnë. 2054 01:42:33,580 --> 01:42:38,660 >> Kështu, për shembull, më lejoni të shkoj përpara dhe përfshijnë CS50.h, dhe përfshijnë 2055 01:42:38,660 --> 01:42:43,110 standarde IO.h, i pavlefshëm int main. 2056 01:42:43,110 --> 01:42:46,020 Dhe tani ne kemi një placeholder gati për të shkuar. 2057 01:42:46,020 --> 01:42:48,550 I mbajtur shtypjen gjëra si emrat e njerëzve sot. 2058 01:42:48,550 --> 01:42:51,910 Dhe se ndjehet like-- Nuk do të jetë mirë në qoftë se ka 2059 01:42:51,910 --> 01:42:53,936 ishin një funksion të quajtur emrin print? 2060 01:42:53,936 --> 01:42:55,060 Unë nuk kam për të përdorur printf. 2061 01:42:55,060 --> 01:42:56,976 Unë nuk duhet të mbani mend të gjitha kodet e format. 2062 01:42:56,976 --> 01:43:00,050 Pse nuk kam, apo pse nuk ka dikush para meje, 2063 01:43:00,050 --> 01:43:02,980 të krijuar një të shtypura funksion të quajtur emri, që i është dhënë ndonjë emër, 2064 01:43:02,980 --> 01:43:03,980 thjesht kopje atë? 2065 01:43:03,980 --> 01:43:08,700 >> Me fjalë të tjera, në qoftë se unë them, hej, kompjuter, më jepni një varg 2066 01:43:08,700 --> 01:43:11,870 duke i kërkuar përdoruesit për të tillë, përmes funksionit get string CS50 e. 2067 01:43:11,870 --> 01:43:15,090 Hey, kompjuter, vënë atë varg në variabli në anën e majtë, 2068 01:43:15,090 --> 01:43:16,150 dhe e quajti atë s. 2069 01:43:16,150 --> 01:43:22,150 Dhe pastaj, hej kompjuter, të shkojnë përpara dhe të shtypura se emri i personit, bëhet. 2070 01:43:22,150 --> 01:43:26,240 >> Tani, do të ishte mirë, për shkak se ky program, quajtur me vend, 2071 01:43:26,240 --> 01:43:29,170 më thotë atë që është menduar për të bërë me anë të emrave të atyre, funksioni së. 2072 01:43:29,170 --> 01:43:32,930 Më lejoni të shkoj dhe të bëjë prototip, Enter. 2073 01:43:32,930 --> 01:43:34,930 Dhe, për fat të keq, kjo nuk do të fluturojnë. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, Linja 7, karakteri 5, gabim, deklarata implicit 2075 01:43:39,430 --> 01:43:42,960 e funksionit emrit të shtypura është e pavlefshme në C99, C99 2076 01:43:42,960 --> 01:43:45,130 që do të thotë një version të C që doli në vitin 1999. 2077 01:43:45,130 --> 01:43:45,730 Kjo eshte e gjitha. 2078 01:43:45,730 --> 01:43:48,780 >> Kështu që unë nuk e di se çfarë e gjithë kjo do të thotë ende. 2079 01:43:48,780 --> 01:43:50,810 Por unë njohë gabim në të kuqe. 2080 01:43:50,810 --> 01:43:51,770 Kjo është shumë e qartë. 2081 01:43:51,770 --> 01:43:53,769 >> Dhe duket se me karakteri gjelbër këtu, 2082 01:43:53,769 --> 01:43:57,520 çështja është me emrin e shkruar, e hapur paren s, paren ngushtë, gjysmë-zorrës së trashë. 2083 01:43:57,520 --> 01:44:01,800 Por deklarata e nënkuptuar e funksioni ne e bëmë të shohim shkurtimisht më parë. 2084 01:44:01,800 --> 01:44:04,880 Kjo do të thotë, thjesht, se tingëllimë nuk e di se çfarë dua të them. 2085 01:44:04,880 --> 01:44:09,000 >> Unë e kam përdorur një fjalë fjalorit që është e nuk shihet ose ishte mësuar më parë. 2086 01:44:09,000 --> 01:44:11,950 Dhe kështu që kam nevojë për të mësuar atë çfarë do të thotë ky funksion. 2087 01:44:11,950 --> 01:44:13,590 Kështu që unë jam duke shkuar për të shkuar përpara dhe të bëjë këtë. 2088 01:44:13,590 --> 01:44:17,970 >> Unë jam duke shkuar për të shkuar përpara dhe të zbatojë Funksioni im quhet Print Emri. 2089 01:44:17,970 --> 01:44:24,720 Dhe unë jam duke shkuar për të thënë, si më poshtë, të cilat ajo e bën këtë, printf, Hello, për qind 2090 01:44:24,720 --> 01:44:27,760 s, backslash n, emri, gjysmë-zorrës së trashë. 2091 01:44:27,760 --> 01:44:29,250 Pra, çfarë unë vetëm të bëjë? 2092 01:44:29,250 --> 01:44:31,325 >> Pra, ajo rezulton, të zbatuar funksionin tuaj, 2093 01:44:31,325 --> 01:44:33,845 ne lloj të marrë hua disa nga e njëjta strukturë si kryesore 2094 01:44:33,845 --> 01:44:35,720 se ne kemi qenë vetëm marrë për të dhënë, dhe unë 2095 01:44:35,720 --> 01:44:37,730 di vetëm kopjimi dhe pasting shumë e shumë ajo që 2096 01:44:37,730 --> 01:44:39,170 Unë kam qenë i shkruar në të kaluarën. 2097 01:44:39,170 --> 01:44:40,570 Por vini re model ketu. 2098 01:44:40,570 --> 01:44:43,750 Int, Main, Void, ne do të vë në lojë përveç para se të gjatë ajo që në të vërtetë do të thotë. 2099 01:44:43,750 --> 01:44:46,160 >> Por, për sot, vetëm vini re paralelizmin. 2100 01:44:46,160 --> 01:44:48,210 Void, emri i të shtypura, Emri string, kështu që nuk ka 2101 01:44:48,210 --> 01:44:50,310 një fjalen purple, e cila ne jemi duke shkuar për të filluar 2102 01:44:50,310 --> 01:44:54,067 duke e quajtur një lloj të kthimit, emri i funksioni, dhe pastaj inputi. 2103 01:44:54,067 --> 01:44:56,400 Pra, në fakt, mund të nxjerrim ky lloj i si javën e kaluar 2104 01:44:56,400 --> 01:44:59,030 pasi, ky është emri ose algorithm e kodit ne jemi 2105 01:44:59,030 --> 01:45:00,761 do të write-- algorithm themel 2106 01:45:00,761 --> 01:45:02,010 kodi ne jemi duke shkuar për të shkruar. 2107 01:45:02,010 --> 01:45:03,180 >> Kjo është input saj. 2108 01:45:03,180 --> 01:45:04,670 Kjo është prodhimin e saj. 2109 01:45:04,670 --> 01:45:08,730 Ky funksion, emri i të shtypura, është projektuar për të marrë një varg të quajtur emrin, 2110 01:45:08,730 --> 01:45:11,350 apo çfarëdo, si input, dhe pastaj të pavlefshme. 2111 01:45:11,350 --> 01:45:13,904 Ajo nuk ka kthim asgjë, si të marrë string ose të merrni int bën. 2112 01:45:13,904 --> 01:45:15,570 Kështu ajo do të më dorëzojë diçka mbrapa. 2113 01:45:15,570 --> 01:45:17,960 Është vetëm do të ketë një efekt anësor, kështu që të flasin, 2114 01:45:17,960 --> 01:45:19,570 e shtypjes emrin e një personi. 2115 01:45:19,570 --> 01:45:22,260 Pra vini re, Linja 7, I mund të telefononi emrin e shtypura. 2116 01:45:22,260 --> 01:45:25,920 Line 10, unë mund të përcaktojë ose të zbatojë emrin e shtypura. 2117 01:45:25,920 --> 01:45:28,450 Por, për fat të keq, kjo nuk është e mjaftueshme. 2118 01:45:28,450 --> 01:45:31,230 >> Më lejoni të shkojnë përpara dhe përpiluar këtë pas kursimit. 2119 01:45:31,230 --> 01:45:33,910 Whoa, tani, unë e kam bërë atë keq, kjo do të duket. 2120 01:45:33,910 --> 01:45:37,027 Deklarata Pra implicit i Emri funksion të shtypura është i pavlefshëm. 2121 01:45:37,027 --> 01:45:38,360 Dhe, përsëri, nuk ka më shumë gabime. 2122 01:45:38,360 --> 01:45:41,430 Por, siç e paralajmëroi më parë, edhe në qoftë se ju merrni përshkuar me, 2123 01:45:41,430 --> 01:45:44,850 apo i trishtuar pak për të parë kaq shumë gabime, të përqëndrohet vetëm në ditën e parë 2124 01:45:44,850 --> 01:45:47,500 fillimisht, sepse ajo mund vetëm të kanë pasur një efekt Cascading. 2125 01:45:47,500 --> 01:45:51,970 Pra, C, apo tingëllimë më konkretisht, ende nuk e njeh emrin e shtypura. 2126 01:45:51,970 --> 01:45:54,580 >> Dhe kjo është për shkak se tingëllimë, me dashje, është lloj i heshtur. 2127 01:45:54,580 --> 01:45:56,280 Ajo vetëm që e bën atë që të them atë për të bërë. 2128 01:45:56,280 --> 01:46:00,950 Dhe kjo vetëm e bën këtë në mënyrë në të cilën ju thoni atë për të bërë. 2129 01:46:00,950 --> 01:46:05,270 >> Kështu që unë kam përcaktuar kryesor në linjë katër, si ne kemi qenë bërë mjaft shpesh. 2130 01:46:05,270 --> 01:46:07,980 Unë e kam përcaktuar emrin print on line 10. 2131 01:46:07,980 --> 01:46:11,793 Por unë jam duke u përpjekur për të përdorur Emri print on line shtatë. 2132 01:46:11,793 --> 01:46:13,670 >> Është shumë shpejt, nuk ekziston ende. 2133 01:46:13,670 --> 01:46:19,150 Kështu që unë mund të jetë i mençur, dhe të jetë si, OK, kështu që le të vetëm të luajnë së bashku, 2134 01:46:19,150 --> 01:46:23,680 dhe për të shkuar emrin e shtypura deri këtu, dhe ri-përpiloni. 2135 01:46:23,680 --> 01:46:24,550 Oh Zoti im. 2136 01:46:24,550 --> 01:46:25,260 Funksionoi. 2137 01:46:25,260 --> 01:46:26,670 Ajo ishte aq e thjeshtë sa se. 2138 01:46:26,670 --> 01:46:28,120 >> Por logjika është pikërisht kjo. 2139 01:46:28,120 --> 01:46:30,870 Ju keni për të mësuar se çfarë tingëllimë është duke përcaktuar funksionin e parë. 2140 01:46:30,870 --> 01:46:31,920 Pastaj ju mund ta përdorni atë. 2141 01:46:31,920 --> 01:46:33,940 Por, sinqerisht, kjo ndihet si një shpat rrëshqitshëm. 2142 01:46:33,940 --> 01:46:35,773 >> Kështu që çdo herë që unë të drejtuar në një problem, unë jam vetëm 2143 01:46:35,773 --> 01:46:39,450 do të nxjerrë në pah dhe kopjoni kodin I shkruar, prerë atë dhe ngjitur deri këtu. 2144 01:46:39,450 --> 01:46:41,370 Dhe, sigurisht, ne mund të zbuloj disa skenarë 2145 01:46:41,370 --> 01:46:43,286 ku një funksion fuqi nevojë për të thirrur një tjetër. 2146 01:46:43,286 --> 01:46:46,030 Dhe ju thjesht nuk mund të vënë çdo Funksioni mbi çdo tjetër. 2147 01:46:46,030 --> 01:46:47,930 >> Pra, rezulton se ka një zgjidhje më të mirë. 2148 01:46:47,930 --> 01:46:50,100 Ne mund të lënë këtë jetë. 2149 01:46:50,100 --> 01:46:53,677 Dhe, sinqerisht, është përgjithësisht e bukur, dhe i përshtatshëm, dhe dizajn të mirë 2150 01:46:53,677 --> 01:46:56,760 për të vënë kryesore pari, për shkak se, përsëri, kryesore ashtu si kur flamuri gjelbër klikuar, 2151 01:46:56,760 --> 01:46:59,027 që është funksioni që merr ekzekutuar nga default. 2152 01:46:59,027 --> 01:47:01,110 Kështu që ju mund të vënë edhe ajo në majë të file 2153 01:47:01,110 --> 01:47:03,560 kështu që kur ju ose ndonjë të tjera të njeriut shikon file 2154 01:47:03,560 --> 01:47:06,360 ju e dini se çfarë po ndodh vetëm duke lexuar kryesore të parë. 2155 01:47:06,360 --> 01:47:15,360 Pra, ajo rezulton, ne mund të them tingëllimë në mënyrë proaktive, hey, tingëllimë, on line katër, 2156 01:47:15,360 --> 01:47:17,940 Unë premtoj për të zbatuar një funksion të quajtur Print 2157 01:47:17,940 --> 01:47:22,600 Emri që merr një emër varg të quajtur si input, dhe kthimit asgjë, void. 2158 01:47:22,600 --> 01:47:24,770 Dhe unë do të marrë rreth për të zbatimin e tij më vonë. 2159 01:47:24,770 --> 01:47:25,680 >> Këtu vjen kryesore. 2160 01:47:25,680 --> 01:47:29,130 Main tani on line 9 mund të përdorni Print Emri sepse tingëllimë 2161 01:47:29,130 --> 01:47:32,600 është besuar se, në fund, do të hasë në përkufizimin 2162 01:47:32,600 --> 01:47:34,880 e zbatimit të Print Emri. 2163 01:47:34,880 --> 01:47:37,390 Pra, pas kursimit dosjen time, le të shkoj përpara dhe të bëjë prototip, 2164 01:47:37,390 --> 01:47:38,498 duket e mirë këtë herë. 2165 01:47:38,498 --> 01:47:43,470 Dot çaj, prototip, le të më të shkojnë përpara dhe të shkruani një emër. 2166 01:47:43,470 --> 01:47:48,440 David, përshëndetje David, Zamila, përshëndetje Zamila, dhe, në të vërtetë, tani ajo punon. 2167 01:47:48,440 --> 01:47:52,200 >> Kështu përbërës këtu është se ne kemi bërë një funksion me porosi, si një porosi 2168 01:47:52,200 --> 01:47:54,219 block Scratch ne jemi duke e quajtur atë. 2169 01:47:54,219 --> 01:47:57,010 Por ndryshe nga Scratch ku ju mund të vetëm të krijojë atë dhe të fillojnë duke e përdorur atë, 2170 01:47:57,010 --> 01:47:59,330 tani ne duhet të jetë një pak më shumë pedant, 2171 01:47:59,330 --> 01:48:03,410 dhe në fakt tren tingëllimë për të përdorur, ose të presin atë. 2172 01:48:03,410 --> 01:48:09,140 Tani, si një mënjanë, pse të gjithë këtë kohë kanë ne qenë vetëm verbërisht në besim, duke përfshirë 2173 01:48:09,140 --> 01:48:12,170 CS50.h, dhe duke përfshirë IO.h standarde? 2174 01:48:12,170 --> 01:48:15,190 >> E pra, ajo rezulton, në mesin e disa gjëra të tjera, 2175 01:48:15,190 --> 01:48:18,550 gjithçka që është në ato dot h fotografi, të cilat ndodhin për dosjet. 2176 01:48:18,550 --> 01:48:20,460 Ata janë fotografi header, kështu që të flasin. 2177 01:48:20,460 --> 01:48:23,270 Ata janë ende të shkruar në C. Por, ata janë një lloj tjetër të dosjes. 2178 01:48:23,270 --> 01:48:28,690 >> Tani për tani, ju mund të pretty much të supozojmë që gjithçka që ndodhet në brendësi të CS50.h 2179 01:48:28,690 --> 01:48:33,360 është rreth një Liners si kjo, jo për funksionet e quajtur Print Emri, 2180 01:48:33,360 --> 01:48:36,840 por për Get String, Get Float, dhe disa të tjerë. 2181 01:48:36,840 --> 01:48:41,510 Dhe ka prototipa të ngjashme, një oxhaku, brenda e IO.h standarde 2182 01:48:41,510 --> 01:48:46,241 për printf, e cila tani është në vet Print Emri funksioni im. 2183 01:48:46,241 --> 01:48:49,490 Pra, me fjalë të tjera, këtë herë të gjithë ne kemi sapo është verbërisht kopjimi dhe pasting 2184 01:48:49,490 --> 01:48:51,780 përfshijnë këtë, përfshijnë se çfarë po ndodh? 2185 01:48:51,780 --> 01:48:55,310 Këto janë vetëm lloj të dhëna të tingëllimë për çfarë funksione 2186 01:48:55,310 --> 01:49:00,170 janë, në të vërtetë, zbatohet, vetëm diku tjetër në fotografi të ndryshme 2187 01:49:00,170 --> 01:49:02,440 diku tjetër në sistemin. 2188 01:49:02,440 --> 01:49:05,160 >> Pra, ne kemi zbatuar emrin shtypura. 2189 01:49:05,160 --> 01:49:07,910 Ai e bën këtë efekt anësor i shtypjen diçka në ekran. 2190 01:49:07,910 --> 01:49:10,170 Por kjo nuk ka të vërtetë dorëzojnë mua diçka mbrapa. 2191 01:49:10,170 --> 01:49:12,200 Si mund të shkoni në lidhje me zbatimin e një programi që 2192 01:49:12,200 --> 01:49:14,510 do të dorëzojë mua diçka prapa? 2193 01:49:14,510 --> 01:49:15,580 >> E pra, le të provoni këtë. 2194 01:49:15,580 --> 01:49:21,360 Më lejoni të shkojnë përpara dhe të zbatojë një file i quajtur return.c 2195 01:49:21,360 --> 01:49:24,530 kështu që ne mund të tregojë se si diçka si Get String, ose Get Int, 2196 01:49:24,530 --> 01:49:27,340 në fakt është kthyer diçka mbrapa për përdoruesit. 2197 01:49:27,340 --> 01:49:29,840 Le të shkojnë përpara dhe të përcaktojë pavlefshme int kryesore. 2198 01:49:29,840 --> 01:49:33,230 >> Dhe, përsëri, në të ardhmen, ne do të të shpjegojë se çfarë se int dhe atë boshllëk 2199 01:49:33,230 --> 01:49:34,090 është në të vërtetë duke bërë. 2200 01:49:34,090 --> 01:49:35,840 Por, për sot, ne do të të marrë atë për të dhënë. 2201 01:49:35,840 --> 01:49:39,970 Unë jam duke shkuar për të shkuar përpara dhe të printf, për një përvojë të mirë të përdoruesit, x është. 2202 01:49:39,970 --> 01:49:44,360 Dhe atëherë unë jam duke shkuar për të pritur për përdorues që të jepni x me get int. 2203 01:49:44,360 --> 01:49:48,459 >> Dhe atëherë unë jam duke shkuar për të shkuar përpara dhe të shtypura nga x në shesh. 2204 01:49:48,459 --> 01:49:50,500 Pra, kur ju keni vetëm një tastierë, njerëzit e zakonshëm 2205 01:49:50,500 --> 01:49:52,600 përdorur karrota pak Simboli në tastierë 2206 01:49:52,600 --> 01:49:55,330 të përfaqësojë fuqisë i, apo eksponenti i. 2207 01:49:55,330 --> 01:49:58,960 Kështu x katror është i pranishëm i. 2208 01:49:58,960 --> 01:50:00,660 >> Dhe tani unë jam duke shkuar për të bërë këtë. 2209 01:50:00,660 --> 01:50:03,940 Unë vetëm mund të do-- çfarë është x katror? x katror është x herë x. 2210 01:50:03,940 --> 01:50:06,690 >> Dhe ne e bëmë këtë disa kohë më parë tashmë sot. 2211 01:50:06,690 --> 01:50:08,730 Kjo nuk do të ndjehen si të gjitha që progresi shumë. 2212 01:50:08,730 --> 01:50:09,570 Ju e dini se çfarë? 2213 01:50:09,570 --> 01:50:13,100 Le të levave disa nga këtë ide nga koha e fundit të abstraksionit. 2214 01:50:13,100 --> 01:50:16,080 >> Nuk do të jetë mirë në qoftë se ka një funksion të quajtur 2215 01:50:16,080 --> 01:50:18,460 katrore që bën pikërisht këtë? 2216 01:50:18,460 --> 01:50:20,640 Ajo ende, në fund të ditë, e bën të njëjtën matematikë. 2217 01:50:20,640 --> 01:50:22,410 Por le të abstract larg ideja e marrjes 2218 01:50:22,410 --> 01:50:25,280 një numër i shumëzuar me një tjetër, dhe vetëm t'i jepte një emër, 2219 01:50:25,280 --> 01:50:27,360 si katrore këtë vlerë. 2220 01:50:27,360 --> 01:50:29,560 >> Dhe, me fjalë të tjera, në C, le të krijojnë një funksion 2221 01:50:29,560 --> 01:50:32,660 quajtur katror që bën pikërisht këtë. 2222 01:50:32,660 --> 01:50:34,600 Ajo do të quhet katrore. 2223 01:50:34,600 --> 01:50:35,790 Ajo do të marrë një int. 2224 01:50:35,790 --> 01:50:37,820 Dhe ne do të do të vetëm e quajti atë n, by default. 2225 01:50:37,820 --> 01:50:39,403 >> Por ne mund ta quajmë atë çdo gjë që ne duam. 2226 01:50:39,403 --> 01:50:42,900 Dhe çdo gjë që ajo do të bërë, fjalë për fjalë, është kthimi 2227 01:50:42,900 --> 01:50:45,810 rezultat i herë n n. 2228 01:50:45,810 --> 01:50:48,980 Por për shkak se ajo është e kthyer diçka, e cila 2229 01:50:48,980 --> 01:50:53,690 është fjalen në vjollcë ne kemi kurrë më parë, I, on line 11, 2230 01:50:53,690 --> 01:50:55,410 nuk mund të them vetëm këtë herë pavlefshme. 2231 01:50:55,410 --> 01:51:01,320 >> Void, në shembullin e ne vetëm e pa në vend të emrit të shtypura, thjesht do të thotë, 2232 01:51:01,320 --> 01:51:02,190 bej dicka. 2233 01:51:02,190 --> 01:51:04,170 Por mos dorëzojnë mua diçka mbrapa. 2234 01:51:04,170 --> 01:51:06,790 Në këtë rast, unë dua për t'u kthyer n herë n, 2235 01:51:06,790 --> 01:51:08,460 apo çfarëdo që është, ky numër. 2236 01:51:08,460 --> 01:51:12,460 >> Kështu që unë nuk mund të them, hej, kompjuter, I kthyer asgjë, e pavlefshme. 2237 01:51:12,460 --> 01:51:16,166 Ajo do të kthehen, nga natyra, një int. 2238 01:51:16,166 --> 01:51:17,790 Dhe kështu kjo është e gjitha që po ndodh këtu. 2239 01:51:17,790 --> 01:51:20,070 >> Të dhëna të katror do të jetë një int. 2240 01:51:20,070 --> 01:51:24,760 Dhe kështu që ne mund ta përdorin atë, ajo duhet të të ketë një emër, N. Ajo do të prodhimit 2241 01:51:24,760 --> 01:51:26,240 një int që nuk ka nevojë për një emër. 2242 01:51:26,240 --> 01:51:29,590 Ne mund të lënë atë në kryesore, apo kushdo që është duke përdorur mua për të kujtuar këtë vlerë nëse ne 2243 01:51:29,590 --> 01:51:31,120 doni me ndryshore e vet. 2244 01:51:31,120 --> 01:51:33,230 >> Dhe, përsëri, vetëm e Re fjalen këtu është Kthimi. 2245 01:51:33,230 --> 01:51:34,480 Dhe unë jam vetëm duke bërë disa matematikë. 2246 01:51:34,480 --> 01:51:41,825 Në qoftë se unë me të vërtetë donte të jetë e panevojshme, Unë mund të them produkt int merr n herë n. 2247 01:51:41,825 --> 01:51:44,170 >> Dhe atëherë unë mund të them, produkt kthehen. 2248 01:51:44,170 --> 01:51:47,360 Por, përsëri, në pikën time të parë e kjo jo vetëm duke u design-- mirë 2249 01:51:47,360 --> 01:51:50,060 si, pse të futur një emër, një simbol, si produkt, 2250 01:51:50,060 --> 01:51:51,570 vetëm për të menjëherë të kthejë atë? 2251 01:51:51,570 --> 01:51:53,670 Kjo është një pastruese pak, pak të forta, kështu që 2252 01:51:53,670 --> 01:51:59,380 për të folur, vetëm për të thënë herë Kthimi n n, të hequr qafe këtë linjë krejt. 2253 01:51:59,380 --> 01:52:02,860 >> Dhe kjo është vetëm pak kodi për të lexuar, më pak mundësi për gabime. 2254 01:52:02,860 --> 01:52:05,180 Dhe le të shohim nëse kjo në fakt tani punon. 2255 01:52:05,180 --> 01:52:09,380 Tani, unë jam duke shkuar për të shkuar përpara dhe të bëjë kthimin. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, deklarimi implicit i funksionit. 2257 01:52:11,460 --> 01:52:14,080 Unë e bëra këtë gabim para, ndonjë gjë e madhe. 2258 01:52:14,080 --> 01:52:18,950 Më lejoni vetëm lloji, ose të nxjerrë në pah dhe kopje, saktë të njëjtën funksion prototip, 2259 01:52:18,950 --> 01:52:21,342 ose nënshkrimit, e funksionit deri këtu. 2260 01:52:21,342 --> 01:52:22,800 Ose unë mund të lëvizin të gjithë funksionin. 2261 01:52:22,800 --> 01:52:23,841 >> Por kjo është pak dembel. 2262 01:52:23,841 --> 01:52:24,870 Pra, ne nuk do të bëjë atë. 2263 01:52:24,870 --> 01:52:27,960 Tani, më lejoni të bëjë kthimin e përsëri, dot kthimin slash. 2264 01:52:27,960 --> 01:52:32,790 >> x është 2. x katror është 4. x është 3. x katror është 9. 2265 01:52:32,790 --> 01:52:35,300 Dhe funksioni duket tani për të punuar. 2266 01:52:35,300 --> 01:52:36,550 Pra, çfarë është dallimi këtu? 2267 01:52:36,550 --> 01:52:42,520 Unë kam një funksion që është quajtur katrore, në këtë rast, që kam vënë në një input. 2268 01:52:42,520 --> 01:52:43,830 Dhe unë të kthehet një prodhim. 2269 01:52:43,830 --> 01:52:46,210 E megjithatë, më parë, në qoftë se I hapur shembullin tjetër 2270 01:52:46,210 --> 01:52:51,640 nga parë, të cilat ishte quajtur prototype.c, 2271 01:52:51,640 --> 01:52:54,770 I kishte emrin shtypura, të cilat kthyer pavlefshme, si të thuash, 2272 01:52:54,770 --> 01:52:58,730 Ose kthyer asgjë, dhe thjesht kishte një efekt anësor. 2273 01:52:58,730 --> 01:53:00,230 >> Pra, çfarë po ndodh këtu? 2274 01:53:00,230 --> 01:53:03,520 E pra, të marrë në konsideratë funksionin të marrë varg për vetëm një moment. 2275 01:53:03,520 --> 01:53:06,570 Ne kemi qenë duke përdorur funksionin të marrë varg në mënyrën e mëposhtme. 2276 01:53:06,570 --> 01:53:10,464 >> Ne kemi pasur një funksion të string, si janë CS50.h, 2277 01:53:10,464 --> 01:53:16,624 përfshijnë standarde IO.h, int, kryesor, boshllëk. 2278 01:53:16,624 --> 01:53:18,790 Dhe pastaj çdo herë që unë kam quajtur get string deri tani, 2279 01:53:18,790 --> 01:53:23,260 Unë e kam thënë diçka si, string s merr marrë varg, sepse get string-- 2280 01:53:23,260 --> 01:53:27,880 le ta quajmë këtë varg get.c-- marrë Vetë kthen një varg që unë pastaj mund 2281 01:53:27,880 --> 01:53:32,050 përdorin dhe thoni: hello, presje, përqind s, backslash n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Pra, ky është i njëjti shembull, me të vërtetë, se kemi pasur më herët. 2283 01:53:35,660 --> 01:53:37,920 Pra, të marrë string kthen një vlerë. 2284 01:53:37,920 --> 01:53:41,260 Por një moment më parë, string print nuk e kthen një vlerë. 2285 01:53:41,260 --> 01:53:42,721 Ajo thjesht ka një efekt anësor. 2286 01:53:42,721 --> 01:53:44,220 Pra, ky është një ndryshim thelbësor. 2287 01:53:44,220 --> 01:53:46,710 Ne kemi parë ndryshme llojet e funksioneve tani, 2288 01:53:46,710 --> 01:53:49,490 disa nga të cilat janë kthyer vlera, disa prej të cilave nuk e bëjnë. 2289 01:53:49,490 --> 01:53:51,890 Pra, ndoshta kjo është string apo int, apo noton. 2290 01:53:51,890 --> 01:53:53,480 Apo ndoshta kjo është vetëm e pavlefshme. 2291 01:53:53,480 --> 01:53:55,710 >> Dhe diferenca është se këto funksione që 2292 01:53:55,710 --> 01:53:59,940 të marrë të dhëna dhe të kthehet një vlerë të vërtetë janë sjellë diçka për të kthyer në tryezë, 2293 01:53:59,940 --> 01:54:01,110 mënyrë që të flasin. 2294 01:54:01,110 --> 01:54:03,710 Pra, le të shkojnë përpara dhe të shikoni në një grup të fundit 2295 01:54:03,710 --> 01:54:09,129 e shembujve që i jep një kuptim, tani, i se si ne mund të, në të vërtetë, abstrakte mirë, 2296 01:54:09,129 --> 01:54:11,670 dhe më të mirë, dhe më të mirë, ose më shumë, dhe më shumë, dhe më shumë, në mënyrë që 2297 01:54:11,670 --> 01:54:13,810 për të shkruar, në fund të fundit, kodi më të mirë. 2298 01:54:13,810 --> 01:54:16,860 Le të shkojnë përpara, dhe në frymën i Scratch, të bëjë të mëposhtme. 2299 01:54:16,860 --> 01:54:21,700 >> Më lejoni të shkojnë përpara dhe të përfshijë CS50.h dhe IO.h. standarde 2300 01:54:21,700 --> 01:54:24,010 Më lejoni të shkojnë përpara dhe të japë veten një int, kryesore, e pavlefshme. 2301 01:54:24,010 --> 01:54:27,380 Dhe më lejoni të shkoj përpara, e quajmë këtë cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> Dhe më lejoni të shkoj përpara dhe vetëm si Scratch, të shtypura nga kollë / n. 2303 01:54:35,510 --> 01:54:37,170 Dhe unë dua të bëj këtë tri herë. 2304 01:54:37,170 --> 01:54:39,670 Kështu që unë jam, natyrisht, vetëm do të kopjoni dhe ngjisni tri herë. 2305 01:54:39,670 --> 01:54:46,440 Unë tani jam duke shkuar për të bërë kollë kollë dot slash. 2306 01:54:46,440 --> 01:54:50,120 Le të jap vetes një hapësirë ​​pak më shumë këtu, Enter, kollë, kollë, kollë. 2307 01:54:50,120 --> 01:54:53,970 >> Ka, natyrisht, tashmë një mundësi për përmirësim. 2308 01:54:53,970 --> 01:54:55,679 Unë e kam kopjuar dhe ngjit disa herë sot. 2309 01:54:55,679 --> 01:54:58,261 Por kjo ishte vetëm kështu që unë nuk e bëri duhet të shkruani sa më shumë karaktere. 2310 01:54:58,261 --> 01:55:00,250 Unë ende ndryshuar atë ato rreshta të kodit janë. 2311 01:55:00,250 --> 01:55:04,240 >> Këto tre linja janë të njëjta, i cili ndihet dembel dhe në të vërtetë është, 2312 01:55:04,240 --> 01:55:07,110 dhe ndoshta nuk është qasje e drejtë. 2313 01:55:07,110 --> 01:55:11,029 Pra, me çfarë përbërës mund të përmirësojmë këtë kod? 2314 01:55:11,029 --> 01:55:12,570 Ne nuk duhet të kopjoni dhe kodin paste. 2315 01:55:12,570 --> 01:55:15,070 >> Dhe, me të vërtetë, çdo herë që ndjeheni veten kopjimi dhe pasting, 2316 01:55:15,070 --> 01:55:17,700 dhe jo duke ndryshuar edhe kodin, shanset janë se ka një mënyrë më të mirë. 2317 01:55:17,700 --> 01:55:19,470 Dhe, me të vërtetë, nuk ka. 2318 01:55:19,470 --> 01:55:22,510 Më lejoni të shkojnë përpara dhe të bëjë një për lak, edhe pse mund të mos sintaksa 2319 01:55:22,510 --> 01:55:24,570 të vijë natyrshëm ende. 2320 01:55:24,570 --> 01:55:29,494 >> A këtë tri herë, thjesht duke bërë following-- 2321 01:55:29,494 --> 01:55:31,160 dhe Unë të ndodhë që të dini këtë nga praktika. 2322 01:55:31,160 --> 01:55:32,810 Por ne kemi një numër të shembujve tani. 2323 01:55:32,810 --> 01:55:34,950 Dhe ju do të shihni në internet më shumë referenca ende. 2324 01:55:34,950 --> 01:55:37,790 >> Kjo është sintaksa on line 6, që shumë si Scratch që përsërit 2325 01:55:37,790 --> 01:55:40,090 bllok, të përsëritur tri herë e mëposhtme. 2326 01:55:40,090 --> 01:55:41,340 Kjo është një magjike pak tani për tani. 2327 01:55:41,340 --> 01:55:43,050 Por kjo do të merrni më shumë, dhe më të njohur. 2328 01:55:43,050 --> 01:55:45,050 >> Dhe ajo do të përsërisë Linja tetë tri herë, 2329 01:55:45,050 --> 01:55:52,390 kështu që në qoftë se unë të ri-përpilojnë make kollë, dot çaj kollë, kollë, kollë, kollë. 2330 01:55:52,390 --> 01:55:54,030 Ai ende punon në të njëjtën mënyrë. 2331 01:55:54,030 --> 01:55:55,550 Pra, kjo është e gjitha mirë dhe të mirë. 2332 01:55:55,550 --> 01:55:58,200 Por kjo nuk është shumë i përhumbur. 2333 01:55:58,200 --> 01:55:59,371 >> Kjo është krejtësisht e saktë. 2334 01:55:59,371 --> 01:56:01,370 Por ajo ndjehet si ka mund të jetë një mundësi, 2335 01:56:01,370 --> 01:56:03,750 si në botën e Scratch, për llojin e fillimit 2336 01:56:03,750 --> 01:56:07,530 të shtoni disa semantikë këtu në mënyrë që Unë nuk e vetëm të ketë disa për lak, 2337 01:56:07,530 --> 01:56:09,867 dhe një funksion që thotë se kollë, ose nuk kollë. 2338 01:56:09,867 --> 01:56:10,450 Ju e dini se çfarë? 2339 01:56:10,450 --> 01:56:12,620 Më lejoni të përpiqet të jetë një pak pije freskuese se kaq, 2340 01:56:12,620 --> 01:56:16,090 dhe në fakt të shkruar një funksion që ka disa efekte anësore, e quajti atë kollë. 2341 01:56:16,090 --> 01:56:20,830 >> Dhe kjo nuk merr të dhëna dhe kthen asnjë vlerë si prodhim. 2342 01:56:20,830 --> 01:56:22,680 Por ju e dini atë që bën? 2343 01:56:22,680 --> 01:56:29,370 Ai e bën this-- printf, quote mbyll thonjëzat, kollë. 2344 01:56:29,370 --> 01:56:32,380 >> Dhe tani këtu, unë jam duke shkuar për të shkuar përpara dhe për int, 2345 01:56:32,380 --> 01:56:36,070 i merr zero, i më pak se 3, i plus plus. 2346 01:56:36,070 --> 01:56:39,770 Unë jam duke shkuar për të mos bërë printf, e cila është ndoshta një zbatim i nivelit të ulët 2347 01:56:39,770 --> 01:56:40,270 detaje. 2348 01:56:40,270 --> 01:56:41,353 Unë nuk e kujdesit se si për kollë. 2349 01:56:41,353 --> 01:56:43,240 Unë vetëm dua të përdorni funksionin kollë. 2350 01:56:43,240 --> 01:56:44,840 Dhe unë jam vetëm duke shkuar për të thirrur kollë. 2351 01:56:44,840 --> 01:56:46,204 >> Tani, vini re dikotominë. 2352 01:56:46,204 --> 01:56:49,370 Kur ju telefononi një funksion, në qoftë se ju nuk e bëni dua të jap të inputeve, krejtësisht fine. 2353 01:56:49,370 --> 01:56:51,780 Vetëm të bëjë paren hapur, të ngushtë paren, dhe ju jeni bërë. 2354 01:56:51,780 --> 01:56:56,271 >> Kur ju të përcaktojë një funksion, ose deklarojnë prototip Një funksion së, 2355 01:56:56,271 --> 01:56:58,770 në qoftë se ju e dini paraprakisht se nuk është e do të marrë ndonjë argumente, 2356 01:56:58,770 --> 01:57:01,170 thonë pavlefshme në këto kllapa atje. 2357 01:57:01,170 --> 01:57:05,660 Dhe kjo e bën të sigurt që ju nuk do të aksidentalisht keqpërdorë atë. 2358 01:57:05,660 --> 01:57:07,020 Më lejoni të shkojnë përpara dhe të bëjë kollë. 2359 01:57:07,020 --> 01:57:08,540 Dhe, sigurisht, unë kam bërë një gabim. 2360 01:57:08,540 --> 01:57:10,410 >> Dammit, nuk ka se Deklarata e nënkuptuar. 2361 01:57:10,410 --> 01:57:11,325 Por kjo është në rregull. 2362 01:57:11,325 --> 01:57:12,590 Kjo është një fix lehtë. 2363 01:57:12,590 --> 01:57:18,240 Unë vetëm nevojë për prototip të lartë deri në dosjen time se unë jam në të vërtetë duke e përdorur atë. 2364 01:57:18,240 --> 01:57:20,070 >> Kështu që tani më lejoni të bëjë kollë përsëri, e bukur. 2365 01:57:20,070 --> 01:57:20,790 Tani, ajo punon. 2366 01:57:20,790 --> 01:57:22,930 Bëni kollë, kollë, kollë, kollë. 2367 01:57:22,930 --> 01:57:25,930 Kështu që ju mund të mendoni se ne jemi me të vërtetë pak më shumë se inxhinieri këtë problem. 2368 01:57:25,930 --> 01:57:26,763 Dhe, me të vërtetë, ne jemi. 2369 01:57:26,763 --> 01:57:28,870 Kjo nuk është një e mirë Kandidati i një programi 2370 01:57:28,870 --> 01:57:31,930 në momentin për refactoring, dhe duke bërë atë që është e 2371 01:57:31,930 --> 01:57:35,645 quajtur dekompozimi hierarkike, ku ju merrni një kod, dhe pastaj 2372 01:57:35,645 --> 01:57:38,790 ju lloj i faktor gjëra jashtë, kështu që të përshkruajnë më shumë semantikë për ta, 2373 01:57:38,790 --> 01:57:40,930 dhe ripërdorimin atë afat në fund të fundit më të gjatë. 2374 01:57:40,930 --> 01:57:43,490 Por kjo është një bllok ndërtimi drejt Programet më të sofistikuara 2375 01:57:43,490 --> 01:57:45,600 që ne do të fillojmë shkrim para se të gjatë se 2376 01:57:45,600 --> 01:57:50,090 na lejon të kemi fjalorin me të cilën për të shkruar kodin më të mirë. 2377 01:57:50,090 --> 01:57:52,920 Dhe, në të vërtetë, le të shohim nëse ne nuk mund të përgjithësoj këtë më tej. 2378 01:57:52,920 --> 01:57:57,984 >> Duket një kafshë të çalë ose të vogël se unë, kryesore, duhet të shqetësohen për këtë mallkuar për lak, 2379 01:57:57,984 --> 01:57:59,400 dhe duke bërë thirrje kollë përsëri dhe përsëri. 2380 01:57:59,400 --> 01:58:03,050 Pse nuk mund të them vetëm kollë, ju lutem kollë tri herë? 2381 01:58:03,050 --> 01:58:08,170 Me fjalë të tjera, pse nuk mund të unë vetëm japin të dhëna për kollë dhe të bëjë këtë? 2382 01:58:08,170 --> 01:58:11,270 >> Pse nuk mund të them vetëm, në kollë kryesor tri herë. 2383 01:58:11,270 --> 01:58:13,150 Dhe tani, kjo është lloj i magjike. 2384 01:58:13,150 --> 01:58:14,540 Është shumë përsëritës këtu. 2385 01:58:14,540 --> 01:58:15,940 Dhe kjo është, me të vërtetë, një hap fëmijë. 2386 01:58:15,940 --> 01:58:19,250 >> Por vetëm aftësia për të thënë në Linja e tetë, kollë tri herë, 2387 01:58:19,250 --> 01:58:20,730 kjo është vetëm shumë më shumë i lexueshëm. 2388 01:58:20,730 --> 01:58:24,210 Dhe, plus, unë nuk duhet të dini ose kujdes se si kollë është zbatuar. 2389 01:58:24,210 --> 01:58:26,460 Dhe, me të vërtetë, më vonë në gjatë dhe për projektet përfundimtare, 2390 01:58:26,460 --> 01:58:29,150 në qoftë se ju të trajtuar një projekt me një shok klase ose dy shokët e klasës, 2391 01:58:29,150 --> 01:58:32,370 ju do të kuptojë se ju jeni do të duhet të, ose të dëshironi të, ndarjen e punës. 2392 01:58:32,370 --> 01:58:34,650 >> Dhe ju jeni do të duan për të vendosur më parë, i cili do të bëjë atë, 2393 01:58:34,650 --> 01:58:35,483 dhe në të cilin copa? 2394 01:58:35,483 --> 01:58:37,520 Dhe nuk do të ishte mirë në qoftë se ju, për shembull, 2395 01:58:37,520 --> 01:58:40,100 të marrë përgjegjësinë e shkrimit kryesor, bërë. 2396 01:58:40,100 --> 01:58:43,470 Dhe shokun tuaj, ose tuaj partner në përgjithësi, 2397 01:58:43,470 --> 01:58:45,230 kujdeset për zbatimin e kollë. 2398 01:58:45,230 --> 01:58:49,540 >> Dhe kjo ndarje, këto Muret e abstraksionit, 2399 01:58:49,540 --> 01:58:52,310 ose shtresa e abstraksionit nëse ju do të, janë super të fuqishme, 2400 01:58:52,310 --> 01:58:55,480 sepse sidomos për më të mëdha, më shumë programe komplekse dhe sistemet, 2401 01:58:55,480 --> 01:59:00,070 ai i lejon njerëzit të shumta për të ndërtuar gjëra së bashku, dhe në fund të fundit 2402 01:59:00,070 --> 01:59:02,680 thur punën e tyre së bashku në këtë mënyrë. 2403 01:59:02,680 --> 01:59:05,332 Por, natyrisht, ne nevojë për të tani të rregulluar kollë. 2404 01:59:05,332 --> 01:59:07,290 Ne kemi nevojë për të të treguar kollë që, hej, ju e dini se çfarë? 2405 01:59:07,290 --> 01:59:11,230 Ju jeni do të duhet të merrni një input-- kështu që nuk e pavlefshme, por int dhe tani. 2406 01:59:11,230 --> 01:59:15,170 Le të shkojnë përpara dhe të vënë në kollë int. i merr zero. 2407 01:59:15,170 --> 01:59:16,890 >> i është më pak se sa shumë herë. 2408 01:59:16,890 --> 01:59:18,550 I tha tre më parë. 2409 01:59:18,550 --> 01:59:20,420 Por kjo nuk është ajo që unë dua. 2410 01:59:20,420 --> 01:59:25,520 I duan kollë të përgjithësuar për të mbështetur ndonjë numër të iterations. 2411 01:59:25,520 --> 01:59:28,800 >> Pra, në të vërtetë, kjo është n që unë dua, çfarëdo përdoruesi më thotë. 2412 01:59:28,800 --> 01:59:31,620 Tani, unë mund të shkoni përpara dhe të thonë kollë të shtypura. 2413 01:59:31,620 --> 01:59:34,750 Dhe pa marrë parasysh se çfarë numri përdoruesi kalon, 2414 01:59:34,750 --> 01:59:36,890 Unë do të iterate se shumë herë. 2415 01:59:36,890 --> 01:59:39,160 >> Pra, në fund të ditës, program është identike. 2416 01:59:39,160 --> 01:59:42,820 Por vini re të gjitha të këtij stuff edhe mund të jetë në një tjetër dosje. 2417 01:59:42,820 --> 01:59:45,620 Në të vërtetë, unë nuk e di më së moment si printf është zbatuar. 2418 01:59:45,620 --> 01:59:47,980 >> Unë nuk e di në këtë moment se si të marrë string, ose të merrni int, ose të merrni noton 2419 01:59:47,980 --> 01:59:48,646 janë zbatuar. 2420 01:59:48,646 --> 01:59:50,930 Dhe unë nuk dua të shohin ato në ekran e mia. 2421 01:59:50,930 --> 01:59:55,320 Siç është, unë jam duke filluar të përqëndrohet në programi im, jo ​​ato funksione. 2422 01:59:55,320 --> 01:59:59,070 >> Dhe kështu, në të vërtetë, sa më shpejt që ju fillojnë factoring kodin si kjo jashtë, 2423 01:59:59,070 --> 02:00:01,397 mund të kemi edhe të lëvizë kollë në një skedar të veçantë? 2424 02:00:01,397 --> 02:00:02,730 Dikush tjetër mund të zbatojë atë. 2425 02:00:02,730 --> 02:00:06,810 Dhe ju dhe programi juaj të bëhet shumë e bukur, dhe shumë të lexueshme, 2426 02:00:06,810 --> 02:00:10,830 ndoshta, me të vërtetë katër Linja program të drejtë atje. 2427 02:00:10,830 --> 02:00:13,510 >> Pra, le të shkojë përpara tani dhe të bëjë një ndryshim shumë. 2428 02:00:13,510 --> 02:00:16,180 Vini re se prototip im duhet të ndryshojë deri të lartë. 2429 02:00:16,180 --> 02:00:18,390 Pra më lejoni të rregulluar në mënyrë që Unë nuk do të marrë yelled at. 2430 02:00:18,390 --> 02:00:22,580 >> Bëni kollë, më lejoni të drejtuar kollë herë Për më tepër, ende duke bërë të njëjtën gjë. 2431 02:00:22,580 --> 02:00:26,010 Por tani, vini re ne kemi një përbërës për një version përfundimtar. 2432 02:00:26,010 --> 02:00:26,940 Ju e dini se çfarë? 2433 02:00:26,940 --> 02:00:29,040 Unë nuk dua të vetëm të kollë, domosdoshmërisht. 2434 02:00:29,040 --> 02:00:30,802 Unë dua që të ketë diçka më të përgjithshme. 2435 02:00:30,802 --> 02:00:31,510 Kështu që ju e dini se çfarë? 2436 02:00:31,510 --> 02:00:32,450 Unë dua të bëj këtë. 2437 02:00:32,450 --> 02:00:37,140 Unë dua që të ketë, ashtu si Scratch bën, një bllok të themi, por jo vetëm 2438 02:00:37,140 --> 02:00:38,680 thonë diçka disa disa herë. 2439 02:00:38,680 --> 02:00:41,510 Dua të them një varg shumë të veçantë. 2440 02:00:41,510 --> 02:00:43,850 Dhe, për këtë arsye, unë nuk duan që ajo të them vetëm kollë. 2441 02:00:43,850 --> 02:00:47,660 Unë dua të them gjithçka string është kaluar në. 2442 02:00:47,660 --> 02:00:49,960 >> Pra vini re, unë kam përgjithësuar këtë në mënyrë që tani 2443 02:00:49,960 --> 02:00:53,110 të themi ndjehet si një emër të mirë për këtë, si Scratch, 2444 02:00:53,110 --> 02:00:55,530 merr dy argumente, ndryshe nga Scratch. 2445 02:00:55,530 --> 02:00:56,570 Njëra është një string. 2446 02:00:56,570 --> 02:00:57,300 Njëra është një int. 2447 02:00:57,300 --> 02:00:58,130 >> Dhe unë mund të kaloni ato. 2448 02:00:58,130 --> 02:01:00,713 Unë vetëm lloji i pëlqen ideja e thonë string parë, dhe pastaj 2449 02:01:00,713 --> 02:01:01,940 sa herë më vonë. 2450 02:01:01,940 --> 02:01:03,970 Void do të thotë se ende nuk e kthen asgjë. 2451 02:01:03,970 --> 02:01:06,428 Këto janë vetëm anën vizuale efekte, si me [? Jordan,?] 2452 02:01:06,428 --> 02:01:08,240 një efekt anësor i verbal yelling. 2453 02:01:08,240 --> 02:01:12,630 Ajo ende bën herë diçka n, 0 deri në, por jo i barabartë me n. 2454 02:01:12,630 --> 02:01:14,540 Kjo do të thotë n gjithsej herë. 2455 02:01:14,540 --> 02:01:16,540 Dhe vetëm pastaj të shtypura nga çfarëdo që string është. 2456 02:01:16,540 --> 02:01:19,060 Kështu që unë kam përgjithësuar me të vërtetë kjo linjë e kodit. 2457 02:01:19,060 --> 02:01:22,460 Deri tani, si mund ta zbatojnë funksioni kollë? 2458 02:01:22,460 --> 02:01:25,520 >> Unë mund të bëj kollë pavlefshme. 2459 02:01:25,520 --> 02:01:28,501 Dhe unë ende mund të marrë në atë se si shumë herë ju doni të kollë. 2460 02:01:28,501 --> 02:01:29,250 Por ju e dini se çfarë? 2461 02:01:29,250 --> 02:01:31,240 Unë tani mund të vë bast për të thënë. 2462 02:01:31,240 --> 02:01:36,540 >> Unë mund të telefononi të them me fjala kollë, duke kaluar në n. 2463 02:01:36,540 --> 02:01:40,410 Dhe në qoftë se unë dua të zbatojë gjithashtu, vetëm për argëtim, një funksion teshtij, 2464 02:01:40,410 --> 02:01:42,290 Unë mund të teshtij një numër i herë. 2465 02:01:42,290 --> 02:01:47,300 Dhe unë mund të mbani ripërdorimin n, sepse vini re se m në këtë kontekst apo fushëveprimi 2466 02:01:47,300 --> 02:01:49,470 ekziston vetëm brenda këtij funksioni. 2467 02:01:49,470 --> 02:01:52,767 >> Dhe n në këtë kontekst vetëm ekziston brenda këtij funksioni këtu. 2468 02:01:52,767 --> 02:01:54,600 Pra, ne do të kthehen në këto çështje të fushës. 2469 02:01:54,600 --> 02:02:01,160 Dhe këtu, unë jam vetëm duke shkuar për të thënë, achoo, dhe pastaj n herë, gjysmë-zorrës së trashë. 2470 02:02:01,160 --> 02:02:04,340 >> Dhe tani, unë vetëm nevojë për të marrë hua këto Funksioni firma këtu. 2471 02:02:04,340 --> 02:02:06,290 Pra, kollë është e saktë. 2472 02:02:06,290 --> 02:02:10,090 teshtij Void është e saktë tani. 2473 02:02:10,090 --> 02:02:12,390 >> Dhe unë ende vetëm duhet të them. 2474 02:02:12,390 --> 02:02:18,990 Kështu që unë jam duke shkuar për të thënë, të themi string s, int n, gjysmë-zorrës së trashë. 2475 02:02:18,990 --> 02:02:22,010 Kështu që unë kam mbi-engineered dreq nga ky program. 2476 02:02:22,010 --> 02:02:23,760 >> Dhe kjo nuk ka do të thotë kjo është 2477 02:02:23,760 --> 02:02:26,343 çfarë ju duhet të bëni kur shkruani edhe më të thjeshtë të programeve. 2478 02:02:26,343 --> 02:02:29,280 Të marrë diçka që është e qartë të vërtetë të thjeshtë, të vërtetë të shkurtër, 2479 02:02:29,280 --> 02:02:31,800 dhe ri-zbatuar atë duke përdorur kodin mënyrë shumë. 2480 02:02:31,800 --> 02:02:34,560 Por në fakt ju do të shihni, dhe në Ora të shikojnë prapa në këto shembuj, 2481 02:02:34,560 --> 02:02:38,610 dhe kuptojnë, oh, këto janë hapat ne e mori që në fakt përgjithësuar, 2482 02:02:38,610 --> 02:02:40,797 të faktor diçka, deri ne fund te ditës 2483 02:02:40,797 --> 02:02:42,380 kodi im në fakt është shumë e arsyeshme. 2484 02:02:42,380 --> 02:02:45,960 Sepse në qoftë se unë dua të nxjerr me kollë tre herë pas teshtij tri herë, 2485 02:02:45,960 --> 02:02:50,420 Unë thjesht do të përsëritje këtë, program të kollë, dhe të drejtuar kollë. 2486 02:02:50,420 --> 02:02:53,620 Dhe unë kam tre kollitet dhe tre teshtima. 2487 02:02:53,620 --> 02:02:55,990 >> Dhe kështu që kjo është një bazë paradigmë, në qoftë se ju do të, 2488 02:02:55,990 --> 02:03:00,110 për mënyrën se si ne mund të shkoni në lidhje me në fakt zbatimin e një programi. 2489 02:03:00,110 --> 02:03:03,220 Por, le të vetëm të shohim tani se çfarë është ne kemi bërë të gjithë këtë kohë, 2490 02:03:03,220 --> 02:03:06,940 dhe atë që disa nga pjesët e fundit janë pas kësaj komande të thjeshtë. 2491 02:03:06,940 --> 02:03:09,620 Në fund të ditës, ne kemi qenë duke përdorur tingëllimë si përpilues tonë. 2492 02:03:09,620 --> 02:03:11,494 Ne kemi qenë të shkruar burim Kodi, konvertimin atë 2493 02:03:11,494 --> 02:03:12,820 via tingëllimë në kodin e makinës. 2494 02:03:12,820 --> 02:03:15,540 >> Dhe ne kemi qenë duke përdorur të bëjë vetëm për të lehtësuar tasteve tona në mënyrë 2495 02:03:15,540 --> 02:03:20,740 se ne nuk duhet të mbani mend ato yshtje e vetë tingëllimë. 2496 02:03:20,740 --> 02:03:22,640 Por ajo që është bërë në të vërtetë duke bërë? 2497 02:03:22,640 --> 02:03:24,750 Dhe, nga ana tjetër, ajo që është Tingëllimë të vërtetë duke bërë? 2498 02:03:24,750 --> 02:03:28,790 >> Ajo rezulton, edhe pse ne kemi thjeshtuar Diskutimi i sotëm duke thënë: 2499 02:03:28,790 --> 02:03:33,090 ju merrni kodin burim, të kalojë atë si input për një përpilues që ju jep 2500 02:03:33,090 --> 02:03:35,750 prodhimit të makinës Kodi, rezulton se ka 2501 02:03:35,750 --> 02:03:37,420 disa hapa të ndryshme brenda atje. 2502 02:03:37,420 --> 02:03:41,940 Dhe hartimin ndodh të jetë ombrellë Termi për një bandë e tërë e hapave. 2503 02:03:41,940 --> 02:03:43,970 Por, le të vetëm të vë në lojë këtë, me të vërtetë shpejt. 2504 02:03:43,970 --> 02:03:48,070 >> Ajo rezulton se ne kemi qenë duke bërë shumë gjëra që çdo herë që unë të drejtuar një program, 2505 02:03:48,070 --> 02:03:50,990 ose çdo herë që unë të hartuar një program të sot. 2506 02:03:50,990 --> 02:03:55,020 Pra preprocessing referohet this-- asgjë në një program C, 2507 02:03:55,020 --> 02:03:58,720 si ne do të shohim përsëri dhe përsëri, që fillon me këtë simbol hash, 2508 02:03:58,720 --> 02:04:03,320 ose simboli hashtag këtu, do të thotë kjo është një direktivë preprocessor. 2509 02:04:03,320 --> 02:04:07,330 Kjo do të thotë, në këtë rast, hey kompjuter, të bëjë diçka me këtë skedë 2510 02:04:07,330 --> 02:04:09,430 të vërtetë para se të përpilojnë kodin tim. 2511 02:04:09,430 --> 02:04:15,220 >> Në këtë rast, hash përfshijnë është, në thelb, mënyra C-së e duke thënë: 2512 02:04:15,220 --> 02:04:19,325 hey kompjuter, shkoni merrni përmbajtjen e CS50.h dhe ngjiti ato këtu. 2513 02:04:19,325 --> 02:04:22,170 Hey kompjuter, shkoni merrni Përmbajtja e IO.h standarde, 2514 02:04:22,170 --> 02:04:24,690 kudo që ndodhet mbi hard drive, ngjitur këtu. 2515 02:04:24,690 --> 02:04:27,390 Pra, këto gjëra ndodhin parë gjatë preprocessing. 2516 02:04:27,390 --> 02:04:28,880 >> Dhe tingëllimë e bën të gjithë këtë për ne. 2517 02:04:28,880 --> 02:04:30,510 Dhe kjo e bën atë në mënyrë të mallkuar shpejtë, ju nuk e bëni edhe 2518 02:04:30,510 --> 02:04:32,000 të shihni katër gjëra të veçanta ndodhin. 2519 02:04:32,000 --> 02:04:34,100 Por kjo është hapi i parë i tillë. 2520 02:04:34,100 --> 02:04:35,560 >> Çfarë në të vërtetë ndodh më pas? 2521 02:04:35,560 --> 02:04:38,320 E pra, zyrtari tjetër hap është përpiluar. 2522 02:04:38,320 --> 02:04:40,385 Dhe kjo rezulton se hartimin e një programi 2523 02:04:40,385 --> 02:04:44,060 teknikisht do të thotë duke shkuar nga kodi burim, sende ne kemi 2524 02:04:44,060 --> 02:04:47,890 qenë i shkruar sot, diçka quajtur code kuvendi, diçka 2525 02:04:47,890 --> 02:04:49,260 që duket pak më ndryshe. 2526 02:04:49,260 --> 02:04:51,050 >> Dhe, në fakt, ne mund të shohim këtë të vërtetë të shpejtë. 2527 02:04:51,050 --> 02:04:53,890 Më lejoni në fakt shkojnë në IDE tim. 2528 02:04:53,890 --> 02:04:58,050 Më lejoni të shkojnë përpara dhe të hello.c të hapur, e cila është programi i parë me të cilin ne 2529 02:04:58,050 --> 02:04:59,120 filloi sot. 2530 02:04:59,120 --> 02:05:04,130 Dhe më lejoni të shkoj përpara dhe të drejtuar tingëllimë a pak ndryshe, tingëllimë-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 e cila është në të vërtetë do të më jep një tjetër fotografi hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> Dhe ne me siguri kurrë nuk do të herë të parë këtë lloj të kodit. 2533 02:05:10,330 --> 02:05:13,030 Nëse ju merrni një nivel më të ulët Sistemet e klasës si CS61, 2534 02:05:13,030 --> 02:05:14,920 ju do të shihni shumë më tepër e këtij lloji të kodit. 2535 02:05:14,920 --> 02:05:17,020 Por kjo është gjuha e kuvendit. 2536 02:05:17,020 --> 02:05:22,050 Kjo është x86 gjuha kuvendi që CPU që është në themel 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE fakt e kupton. 2538 02:05:24,460 --> 02:05:27,060 >> Dhe fshehtë si ajo e bën shikoni, kjo është diçka 2539 02:05:27,060 --> 02:05:29,180 kompjuteri e kupton mjaft mirë. 2540 02:05:29,180 --> 02:05:30,790 Nën q, kjo është një zbres. 2541 02:05:30,790 --> 02:05:31,660 Ka lëvizje. 2542 02:05:31,660 --> 02:05:35,730 >> Nuk flet e funksioneve këtu, x Oring, një lëvizje, një shtesë, një pop, 2543 02:05:35,730 --> 02:05:36,430 një kthim. 2544 02:05:36,430 --> 02:05:38,850 Pra, ka disa shumë udhëzime të nivelit të ulët 2545 02:05:38,850 --> 02:05:41,280 se CPUs kuptojnë se I përmendur tërthorazi më parë. 2546 02:05:41,280 --> 02:05:43,100 Kjo është ajo që Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> Ka modelet e zero dhe ato që 2548 02:05:45,030 --> 02:05:51,800 hartë të këtyre formuluara arcanely, por disi i quajtur, udhëzime, 2549 02:05:51,800 --> 02:05:52,780 mënyrë që të flasin. 2550 02:05:52,780 --> 02:05:54,780 Kjo është ajo që ndodh kur të përpilojnë kodin tuaj. 2551 02:05:54,780 --> 02:05:58,560 Ju merrni kuvendi Gjuha nga ajo, e cila 2552 02:05:58,560 --> 02:06:04,680 do të thotë hapi i tretë është për të mbledhur që kodi kuvendi ne, në fund të fundit, 2553 02:06:04,680 --> 02:06:09,080 makinë zero code-- dhe ato, jo Teksti që ne vetëm e pa një moment më parë. 2554 02:06:09,080 --> 02:06:13,370 >> Pra, para-përpunimit të bën që të gjejnë dhe të zëvendësojë, dhe disa gjëra të tjera. 2555 02:06:13,370 --> 02:06:16,430 Hartimi merr burim tuaj Kodi nga C, kod burim 2556 02:06:16,430 --> 02:06:18,980 që kemi shkruar, që të kuvendit kodi që ne vetëm lëshoi ​​në. 2557 02:06:18,980 --> 02:06:22,170 Grumbulluar merr atë asamble Kodi për zero dhe ato 2558 02:06:22,170 --> 02:06:24,680 se CPU me të vërtetë do të kuptuar në fund të ditë. 2559 02:06:24,680 --> 02:06:27,630 Dhe lidh është hapi i fundit kjo ndodh për us-- përsëri, 2560 02:06:27,630 --> 02:06:29,830 në mënyrë të shpejtë, ne nuk bëjmë edhe notice-- që thotë se, 2561 02:06:29,830 --> 02:06:32,460 hey kompjuter, të marrë të gjitha e zero dhe ato që 2562 02:06:32,460 --> 02:06:36,750 rezultuar nga hartimin kodin e Davidit, dhe funksioni i tij kryesor në këtë rast. 2563 02:06:36,750 --> 02:06:39,160 >> Dhe hej kompjuter, shkoni merrni të gjitha zero dhe ato 2564 02:06:39,160 --> 02:06:42,180 se stafi CS50 shkroi brenda bibliotekës CS50. 2565 02:06:42,180 --> 02:06:43,440 Mix ato me David. 2566 02:06:43,440 --> 02:06:46,648 Dhe hej kompjuter, shkoni merrni të gjitha zero dhe ato që dikush tjetër ka shkruar vjet 2567 02:06:46,648 --> 02:06:47,470 parë për printf. 2568 02:06:47,470 --> 02:06:49,880 Dhe shtoni ato në të gjë e tërë, në mënyrë që ne kemi 2569 02:06:49,880 --> 02:06:52,870 mori zero e mia dhe ato, The zero dhe ato të stafit CS50-së, 2570 02:06:52,870 --> 02:06:55,370 të zero printf dhe ato, dhe çdo gjë tjetër ne jemi duke përdorur. 2571 02:06:55,370 --> 02:07:00,410 >> Ata të gjithë të kombinuara së bashku në një program të quajtur, në këtë rast, përshëndetje. 2572 02:07:00,410 --> 02:07:03,141 Kështu tani e tutje, ne do të vetëm përdorin përpilimin fjalën. 2573 02:07:03,141 --> 02:07:06,390 Dhe ne do të marrë për të dhënë se kur themi, hartojnë programin tuaj, kjo do të thotë, 2574 02:07:06,390 --> 02:07:08,849 hey bëjë para-përpunimin, grumbulluar, dhe lidh. 2575 02:07:08,849 --> 02:07:11,890 Por ka në fakt disa sende me lëng ndodh atje nën kapuç. 2576 02:07:11,890 --> 02:07:13,723 Dhe sidomos në qoftë se ju merrni kurioz disa kohë, 2577 02:07:13,723 --> 02:07:15,900 ju mund të filloni poking rreth në këtë nivel të ulët. 2578 02:07:15,900 --> 02:07:19,660 Por tani për tani, të kuptojë se ndër takeaways për sot 2579 02:07:19,660 --> 02:07:23,420 janë mjaft të thjeshtë fillimi i një procesi, 2580 02:07:23,420 --> 02:07:26,700 e duke u kënaqur me diçka si bota përshëndetje. 2581 02:07:26,700 --> 02:07:29,575 Në të vërtetë, shumica e asaj që ne e bëmë sot me siguri nuk do të zhytet në super të shpejtë. 2582 02:07:29,575 --> 02:07:31,491 Dhe ajo do të marrë disa kohë, dhe disa praktika. 2583 02:07:31,491 --> 02:07:33,864 Dhe shanset janë, ju do lloj i duan të goditur tastierën tuaj 2584 02:07:33,864 --> 02:07:34,780 ose bërtas në ekran. 2585 02:07:34,780 --> 02:07:35,880 Dhe e gjithë kjo është në rregull. 2586 02:07:35,880 --> 02:07:38,320 Edhe pse, ndoshta nuk do të përpiqet për të të bëjë atë në bibliotekë aq shumë. 2587 02:07:38,320 --> 02:07:40,820 >> Dhe në fund të fundit, ju do të të aftë edhe pse, për të filluar 2588 02:07:40,820 --> 02:07:44,580 duke parë modele, si në kodin mirë që e keni shkruar dhe në gabime 2589 02:07:44,580 --> 02:07:45,370 që ju keni bërë. 2590 02:07:45,370 --> 02:07:48,965 Dhe ashtu si në procesin e duke u bërë një TF apo CA është si, 2591 02:07:48,965 --> 02:07:51,590 ju do të fillojnë për të merrni më të mirë dhe të më të mirë në duke parë këto modele, 2592 02:07:51,590 --> 02:07:53,774 dhe vetëm zgjidhjen tuaj Problemet e vet në fund të fundit. 2593 02:07:53,774 --> 02:07:56,940 Në ndërkohë, nuk do të jetë mjaft prej nesh të japë ju mbështetje dhe nisuni 2594 02:07:56,940 --> 02:07:57,481 me këtë. 2595 02:07:57,481 --> 02:07:59,450 Dhe në shkruaj-ups për të gjitha problemet 2596 02:07:59,450 --> 02:08:01,366 do të të udhëhiqet përmes të gjitha komandat 2597 02:08:01,366 --> 02:08:05,330 se unë me siguri e di nga një shumë të praktikës deri tani, 2598 02:08:05,330 --> 02:08:07,380 por mund të ketë fluturuar mbi kokën e dikujt për tani. 2599 02:08:07,380 --> 02:08:08,580 Dhe kjo është krejtësisht në rregull. 2600 02:08:08,580 --> 02:08:11,230 >> Por, në fund të fundit, ju do të jeni për të filluar për të parë modele të dalin. 2601 02:08:11,230 --> 02:08:14,260 Dhe një herë ju merrni kaluara të gjitha të Detajet e trashë, si kllapa, 2602 02:08:14,260 --> 02:08:16,710 dhe formatimin e teksteve kaçurrel, dhe gjysmë-colons, dhe sende, sinqerisht, 2603 02:08:16,710 --> 02:08:19,360 që nuk është aspak e intelektualisht interesante. 2604 02:08:19,360 --> 02:08:22,690 Dhe kjo nuk është objektivi i marrë ndonjë klasë hyrës. 2605 02:08:22,690 --> 02:08:24,410 Është ide që janë duke shkuar për të rëndësi. 2606 02:08:24,410 --> 02:08:26,659 >> Është e sythe, dhe kushtet, dhe funksionet, 2607 02:08:26,659 --> 02:08:30,552 dhe më fuqishëm nxjerrjen, dhe factoring e kodit, 2608 02:08:30,552 --> 02:08:33,510 dhe dizajn të mirë, dhe e mira style, dhe në fund të fundit korrektësinë 2609 02:08:33,510 --> 02:08:37,330 e kodit tuaj, kjo është në fund të fundit do të rëndësi më. 2610 02:08:37,330 --> 02:08:40,925 Pra javën e ardhshme, ne do të marrim këto ide që ne së pari e pa në Scratch 2611 02:08:40,925 --> 02:08:42,800 dhe kanë përkthyer tani të C. Dhe ne do të fillojmë 2612 02:08:42,800 --> 02:08:45,740 për të futur e parë e domains botës reale natyrisht së. 2613 02:08:45,740 --> 02:08:50,140 >> Ne do të përqëndrohet në botën e sigurisë, dhe më konkretisht cryptography, 2614 02:08:50,140 --> 02:08:51,980 arti i përpiqen informacion. 2615 02:08:51,980 --> 02:08:54,000 Dhe në mesin e parë Problemet ju vetë 2616 02:08:54,000 --> 02:08:56,840 do të merrni për të shkruar më tej duke luajtur me disa sintaksë 2617 02:08:56,840 --> 02:08:59,880 dhe zgjidhjen e disa logjike probleme, në fund të fundit para se të gjatë, 2618 02:08:59,880 --> 02:09:03,960 është që në fakt të ngjitem, ose të encrypt, dhe në fund të fundit decrypt informacion. 2619 02:09:03,960 --> 02:09:06,470 Dhe çdo gjë që kemi bërë sot, në mënyrë të drejtë do të ulët 2620 02:09:06,470 --> 02:09:09,190 niveli, është vetëm do të lejojë ne për të marrë një të tillë, dhe një, 2621 02:09:09,190 --> 02:09:13,550 dhe një hap më lart drejt shkruar kodin më interesante akoma. 2622 02:09:13,550 --> 02:09:15,050 >> Pra, më shumë në atë javën e ardhshme. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VIDEO rishikim] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Çfarë Mund të më thoni në lidhje me hera e fundit që e panë atë? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Çfarë Mund të them, me të vërtetë? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Unë do të thotë, ajo ishte si çdo tjetër provë para-prodhimit, 2631 02:09:35,340 --> 02:09:40,510 me përjashtim të kishte diçka, tha ai në fund që mbërthyer me mua. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Kjo Ishte CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -Kjo Është një të gjithë të prerë, punë e madhe në provë. 2636 02:09:52,190 --> 02:09:53,070 >> drekë -Kjo-së? 2637 02:09:53,070 --> 02:09:54,986 >> -Yeah, Ju dhe unë mund të kap një sanduiç në një grimë. 2638 02:09:54,986 --> 02:09:58,380 Më lejoni vetëm të informohemi me David të vërtetë shpejt. 2639 02:09:58,380 --> 02:09:59,160 David? 2640 02:09:59,160 --> 02:10:01,260 David? 2641 02:10:01,260 --> 02:10:03,110 >> [END rishikim]