1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [SKAN MŪZIKA] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. Malan: Labi, tas ir CS50. 5 00:00:16,240 --> 00:00:18,010 Un tas ir šonedēļ viens. 6 00:00:18,010 --> 00:00:22,050 Tāpēc atgādina, ka pēdējo reizi nulles nedēļā, mēs vērsta uz skaitļošanas domāšanu. 7 00:00:22,050 --> 00:00:25,440 Un mēs pārgāja no līdz Scratch, grafisks programmēšana 8 00:00:25,440 --> 00:00:27,360 valoda no mūsu draugiem at MIT Media Lab. 9 00:00:27,360 --> 00:00:31,730 >> Un ar nulles, vai mēs izpētīt idejas, piemēram, funkcijām, un nosacījumus, 10 00:00:31,730 --> 00:00:35,210 un cilpas, un mainīgie, un pat notikumi un diegi, un vairāk. 11 00:00:35,210 --> 00:00:37,880 Un šodien, mēs ejam, lai turpināt izmantot šo ideju, 12 00:00:37,880 --> 00:00:40,630 un tiešām ņemot tos par piešķirta, bet tulkot tos 13 00:00:40,630 --> 00:00:44,220 citā valodā sauc par C. Now, C ir vairāk tradicionāls valoda. 14 00:00:44,220 --> 00:00:46,020 Tas ir zemāks līmenis valoda, ja Jums gribas. 15 00:00:46,020 --> 00:00:47,300 >> Tas ir tīri teksta. 16 00:00:47,300 --> 00:00:49,910 Un tā pēc pirmā acu uzmetiena, tas ir visi skatīsies visai noslēpumains 17 00:00:49,910 --> 00:00:51,430 Ja jūs nekad neesmu programmēt agrāk. 18 00:00:51,430 --> 00:00:53,530 Mēs ejam, lai būtu semikoli, un iekavas, 19 00:00:53,530 --> 00:00:55,150 un cirtaini bikšturi, un vairāk. 20 00:00:55,150 --> 00:00:57,240 Bet saprotu, ka pat gan sintakse ir 21 00:00:57,240 --> 00:01:00,600 par to, lai izskatās nedaudz svešs lai lielākā daļa no jums, redzēt pagātni, ka. 22 00:01:00,600 --> 00:01:03,220 Un mēģināt redzēt idejas ka ir, protams, pazīstams, 23 00:01:03,220 --> 00:01:06,750 jo šeit nedēļā viens ko mēs sāksim darīt, ir salīdzināt, 24 00:01:06,750 --> 00:01:08,980 Sākotnēji, Scratch pret C. 25 00:01:08,980 --> 00:01:12,350 >> Tā, piemēram, atceros, ka tad, kad mēs īsteno pirmā no mūsu programmas 26 00:01:12,350 --> 00:01:16,220 pēdējo reizi, mums bija bloks, kas izskatījās mazliet kaut kā this-- kad 27 00:01:16,220 --> 00:01:19,990 zaļš karogs uzklikšķināt, un tad mums bija viens vai vairāki puzzle gabalus zem tā, 28 00:01:19,990 --> 00:01:22,150 šajā gadījumā, teiksim, hello pasaule. 29 00:01:22,150 --> 00:01:24,870 Tātad, protams, ir nulles, kad es noklikšķiniet uz šīs zaļās karogu 30 00:01:24,870 --> 00:01:27,390 palaist savu programmu, lai runāt, tie ir 31 00:01:27,390 --> 00:01:29,520 bloki, kas saņem izpildīts, vai palaist. 32 00:01:29,520 --> 00:01:32,230 Un, konkrēti, Scratch teica, hello, pasaule. 33 00:01:32,230 --> 00:01:35,377 >> Tagad es varētu būt norādīts dažādi vārdi šeit. 34 00:01:35,377 --> 00:01:37,960 Bet mēs redzam, ka, protams, daudzi Šo blocks-- un, protams, 35 00:01:37,960 --> 00:01:41,880 C daudzi functions-- var būt parametrized vai pielāgot 36 00:01:41,880 --> 00:01:43,150 darīt dažādas lietas. 37 00:01:43,150 --> 00:01:45,520 Patiesībā, C, ja mēs vēlaties konvertēt, tagad, 38 00:01:45,520 --> 00:01:47,567 šī Scratch programma šajā citā valodā, 39 00:01:47,567 --> 00:01:49,650 mēs ejam rakstīt mazliet kaut kas līdzīgs šim. 40 00:01:49,650 --> 00:01:52,540 >> Piešķirts, ir daži svešs sintakse tur, visticamāk, int, 41 00:01:52,540 --> 00:01:54,380 un iekavas, un par spēkā neesošu. 42 00:01:54,380 --> 00:01:57,740 Bet printf-- pat ja jūs būtu domāju, ka tas būtu vienkārši izdrukāt. 43 00:01:57,740 --> 00:02:00,120 Bet print nozīmē drukāt formatēti, kā mēs drīz redzēt. 44 00:02:00,120 --> 00:02:02,140 Tas burtiski būs drukāt uz ekrāna neatkarīgi 45 00:02:02,140 --> 00:02:05,990 ir iekšpusē no tiem iekavās, kas Protams, šajā gadījumā ir, hello pasaule. 46 00:02:05,990 --> 00:02:09,290 >> Bet jūs pamanīsiet kādu citu sintakse, daži pēdiņas, 47 00:02:09,290 --> 00:02:11,890 ka iekavas beigās, semi-resnās zarnas un tamlīdzīgi. 48 00:02:11,890 --> 00:02:15,027 Tātad tur ir mazliet virs galvas, tā sakot, gan kognitīvi 49 00:02:15,027 --> 00:02:17,860 un sintaktiski, ka mēs ejam ir jāatceras pirms ilgi. 50 00:02:17,860 --> 00:02:20,720 Bet saprotu, ka ar praksi, tas sāks izlēkt pie jums. 51 00:02:20,720 --> 00:02:24,920 >> Patiesībā, pieņemsim koncentrēties uz šo vienu funkcija specifically-- šajā gadījumā, 52 00:02:24,920 --> 00:02:26,290 sasveicināties pasauli. 53 00:02:26,290 --> 00:02:27,560 Tā teikt, ir funkcija. 54 00:02:27,560 --> 00:02:31,320 Sveiki pasaule ir tās parametrs, vai arguments, tā pielāgošanu. 55 00:02:31,320 --> 00:02:34,320 >> Un ekvivalence C ir tikai būs šo vienu līniju šeit, 56 00:02:34,320 --> 00:02:38,710 kur printf ir līdzvērtīgs, teiksim, dubultā citēts string, hello 57 00:02:38,710 --> 00:02:41,470 pasaule ir līdzvērtīgs, protams, to, kas ir baltā kastē tur. 58 00:02:41,470 --> 00:02:45,680 Un slīpsvītru n, lai gan nedaudz dīvaini un prom no nulles, 59 00:02:45,680 --> 00:02:49,380 vienkārši nāksies sekas mēs redzēt datorā, piemēram, mana Mac vai PC, 60 00:02:49,380 --> 00:02:51,660 no tikai pārvietojot kursoru uz nākamo rindiņu. 61 00:02:51,660 --> 00:02:53,970 Tas ir tāpat kā hitting Enter uz tastatūras. 62 00:02:53,970 --> 00:02:55,580 >> Tātad mēs redzam, ka atkal pirms ilgi. 63 00:02:55,580 --> 00:02:58,640 Bet vispirms, pieņemsim to apskatīt šo cits piemērs gadījumā cilpas. 64 00:02:58,640 --> 00:03:02,830 Mums bija šo forever cilpa pēdējo reizi, kurš bija virkne puzzle gabalus 65 00:03:02,830 --> 00:03:05,490 ka tomēr kaut ko burtiski forever-- šajā gadījumā, 66 00:03:05,490 --> 00:03:08,360 saka, Hello World, hello pasaule, Hello World, hello pasaule. 67 00:03:08,360 --> 00:03:10,350 Tātad, tas ir bezgalīgs cilpa ar dizainu. 68 00:03:10,350 --> 00:03:14,580 >> C, ja mēs vēlamies, lai īstenotu šo pati ideja, mēs varētu vienkārši izdarīt. 69 00:03:14,580 --> 00:03:19,570 Lai gan ir taisnība, printf sveiki world-- tagad savukārt, tikai semantiski, veida 70 00:03:19,570 --> 00:03:23,090 uzbur ideju darīt kaut kas atkal un atkal, un atkal, 71 00:03:23,090 --> 00:03:23,980 un cik ilgi? 72 00:03:23,980 --> 00:03:27,990 Nu, true-- atgādināt, ka taisnība ir tikai vai vienu. 73 00:03:27,990 --> 00:03:30,660 >> Un taisnība, protams, vienmēr ir taisnība. 74 00:03:30,660 --> 00:03:33,060 Tātad, tas ir sava veida jēgu paziņojums vienkārši pateikt taisnība. 75 00:03:33,060 --> 00:03:36,890 Bet tiešām, tas ir apzināta, jo, ja taisnība ir tikai vienmēr ir taisnība, 76 00:03:36,890 --> 00:03:40,850 nekā bet taisnība tikai nozīmē, ja mazliet netieši, 77 00:03:40,850 --> 00:03:44,070 ka šādām līnijām kodu starp šiem cirtaini lencēm 78 00:03:44,070 --> 00:03:48,320 vajadzētu tikai izpildīt atkal, un atkal, un atkal, un patiesībā nekad apstāties. 79 00:03:48,320 --> 00:03:50,230 >> Bet, ja jūs vēlaties, lai jūsu cilpa pārtraukt, kā mēs 80 00:03:50,230 --> 00:03:54,500 darīja pēdējo reizi ar kaut ko līdzīgu tas, atkārtojiet šādus 50 reizes, 81 00:03:54,500 --> 00:03:57,700 C mēs varam darīt to pašu ar to, kas ir sauc par loop-- atslēgvārdu 82 00:03:57,700 --> 00:03:59,330 kas nav, bet, bet. 83 00:03:59,330 --> 00:04:03,290 Un tad mums ir dažas jaunas sintakse šeit, ar int i ir vienāds ar 0, I mazāk nekā 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Un mēs būsim atpakaļ uz to. 86 00:04:05,430 --> 00:04:09,660 Bet tas ir vienkārši, kā mēs būtu tulkot kopumu Scratch blokiem 87 00:04:09,660 --> 00:04:13,079 kopumu C rindas kodu. 88 00:04:13,079 --> 00:04:14,450 >> Tikmēr, uzskata mainīgos. 89 00:04:14,450 --> 00:04:16,540 Un, patiesībā, mēs vienkārši redzēju vienu pirms brīža. 90 00:04:16,540 --> 00:04:21,220 Un gadījumā, ja nulles, ja mēs vēlējās deklarēt mainīgo sauc i 91 00:04:21,220 --> 00:04:24,590 par i ir vesels skaitlis, tikai skaitlis, un mēs gribam, lai uzstādītu to uz kādu vērtību, 92 00:04:24,590 --> 00:04:28,410 mēs varētu izmantot šo apelsīnu bloķēt here-- noteikts i līdz 0. 93 00:04:28,410 --> 00:04:30,800 >> Un mēs redzam šodien, un tālāk, tāpat kā pagājušajā nedēļā, 94 00:04:30,800 --> 00:04:33,850 programmētāji darīt gandrīz vienmēr sāk skaitīt no nulles, tiešām 95 00:04:33,850 --> 00:04:34,950 pēc vienošanās. 96 00:04:34,950 --> 00:04:37,250 Bet arī tāpēc, ka atsaukšana no Mūsu diskusija binārā, 97 00:04:37,250 --> 00:04:39,990 mazākais skaits varat pārstāv ar jebkuru bitu skaitu 98 00:04:39,990 --> 00:04:41,640 ir tikai būs 0. sevi. 99 00:04:41,640 --> 00:04:45,190 Un tāpēc mēs parasti sākas inicializēšana pat mūsu mainīgos līdz 0. 100 00:04:45,190 --> 00:04:47,710 >> Un C darīt to pašu, mēs ejam teikt int 101 00:04:47,710 --> 00:04:50,110 vesels skaitlis, es tikai pēc vienošanās. 102 00:04:50,110 --> 00:04:53,390 Es varētu būt sauc šis mainīgais kaut ko es gribu, tāpat kā nulles. 103 00:04:53,390 --> 00:04:57,770 Un tad ir 0 tikai piešķir vērtība 0 no labās 104 00:04:57,770 --> 00:05:01,319 un nodod to uz mainīgo, vai glabāšanas konteineris tur, pa kreisi. 105 00:05:01,319 --> 00:05:04,360 Un daļēji kols kā mēs see-- un mēs esam redzējuši dažus no šiem already-- 106 00:05:04,360 --> 00:05:06,530 tikai nozīmē beigas domas. 107 00:05:06,530 --> 00:05:09,430 Rīkoties, lai darīt kaut ko citu uz līnijām, kas seko. 108 00:05:09,430 --> 00:05:11,330 >> Tagad, ko par Būla izteiksmes? 109 00:05:11,330 --> 00:05:14,320 Atgādināt, ka nulles, tie bija izteiksmes 110 00:05:14,320 --> 00:05:16,740 kas ir vai nu patiess vai false-- jautājumi, 111 00:05:16,740 --> 00:05:18,910 tiešām, kas ir vai nu patiess vai nepatiess. 112 00:05:18,910 --> 00:05:21,960 Tātad, šajā gadījumā uz nulles, mēs varētu uzdot vienkāršu jautājumu, piemēram, tas, 113 00:05:21,960 --> 00:05:24,586 ir tā, i mazāk nekā 50? 114 00:05:24,586 --> 00:05:25,710 Tāpēc es, atkal, ir vesels skaitlis. 115 00:05:25,710 --> 00:05:27,210 Varbūt mēs to izmanto kādā Scratch programmā 116 00:05:27,210 --> 00:05:29,310 sekot rezultātu vai kaut kas tāds. 117 00:05:29,310 --> 00:05:33,810 Tātad šis sintakse šeit Scratch tikai nozīmē, ir i mazāk nekā 50? 118 00:05:33,810 --> 00:05:37,330 Nu, par laimi, kaut kas ir vienkāršs C. Un tulkot, 119 00:05:37,330 --> 00:05:41,780 tā mēs varētu vienkārši teikt, es mazāk nekā 50, izmantojot pazīstamo atslēgu 120 00:05:41,780 --> 00:05:42,850 uz tastatūras. 121 00:05:42,850 --> 00:05:45,141 >> Tikmēr, ja vēlaties pateikt kaut ko vairāk vispār, 122 00:05:45,141 --> 00:05:49,890 piemēram, labi, ir x mazāks nekā y, kur katra no X un Y ir paši mainīgie? 123 00:05:49,890 --> 00:05:52,280 Mēs varam darīt to pašu C, tik ilgi, kamēr mēs esam 124 00:05:52,280 --> 00:05:53,942 radīja šos mainīgos jau. 125 00:05:53,942 --> 00:05:55,650 Un mēs redzēsim, kā darīt pirms ilgi. 126 00:05:55,650 --> 00:05:58,590 Mēs vienkārši sakām x mazāk nekā y. 127 00:05:58,590 --> 00:06:00,530 >> Tātad jūs, sākot ar redzēt dažas līdzības. 128 00:06:00,530 --> 00:06:03,490 Un tiem ļaudīm, kas izgatavotas Scratch noteikti bija 129 00:06:03,490 --> 00:06:05,250 iedvesmojoties no dažiem no šiem pamata ideju. 130 00:06:05,250 --> 00:06:10,350 Un jūs redzēsiet šāda veida sintakse daudzās languages-- 131 00:06:10,350 --> 00:06:12,160 ne tikai Scratch, nav tikai C, bet Python, 132 00:06:12,160 --> 00:06:14,790 un JavaScript, un citas valodas joprojām. 133 00:06:14,790 --> 00:06:18,270 >> Apskatīsim citu konstrukciju no C, jēdziens nosacījumu, 134 00:06:18,270 --> 00:06:20,370 darot kaut ko nosacīti. 135 00:06:20,370 --> 00:06:22,720 Ja kaut kas ir patiess, to izdarītu. 136 00:06:22,720 --> 00:06:24,457 Ja kaut kas cits ir taisnība, darīt. 137 00:06:24,457 --> 00:06:27,040 Tas ir sava veida plānošanas ekvivalents dakšiņu ceļa. 138 00:06:27,040 --> 00:06:29,730 Varbūt tas ir divvirzienu dakša, trīs-way dakša, vai vairāk. 139 00:06:29,730 --> 00:06:32,800 Un nulles, mums varētu būt redzējis kaut kas līdzīgs šim. 140 00:06:32,800 --> 00:06:34,010 >> Tāpēc šis viens ir liels vienu. 141 00:06:34,010 --> 00:06:36,750 Bet uzskatu, relatīvais vienkāršība loģiku. 142 00:06:36,750 --> 00:06:44,010 Ja x ir mazāks nekā y, tad teikt, ka x ir mazāks nekā y, cits ja x ir lielāks nekā y, 143 00:06:44,010 --> 00:06:46,230 tad teikt x ir lielāks nekā y. 144 00:06:46,230 --> 00:06:48,300 Un tad, loģiski, ja Jūs domājat, ka atpakaļ uz nulles 145 00:06:48,300 --> 00:06:52,610 vai vienkārši savu cilvēka intuīcija, labi, ja x ir ne lielāks par y, un x 146 00:06:52,610 --> 00:06:57,000 ir ne mazāks par y, tad protams x būs vienāds ar y. 147 00:06:57,000 --> 00:06:59,690 Tātad, šajā gadījumā, ar ligzdošanas šie Scratch bloki, 148 00:06:59,690 --> 00:07:02,580 mēs varam sasniegt trīs kā dakša uz ceļa? 149 00:07:02,580 --> 00:07:04,980 >> Tikmēr, ja mēs vēlamies, lai darīt, ka C, tas varbūt 150 00:07:04,980 --> 00:07:08,420 izskatās nedaudz simpler-- vismaz kad jūs iepazīties ar sintaksi. 151 00:07:08,420 --> 00:07:12,050 Ja x ir mazāks nekā y, printf x ir mazāks nekā y. 152 00:07:12,050 --> 00:07:16,140 Cits ja x ir lielāks nekā y, printf x ir lielāks nekā y. 153 00:07:16,140 --> 00:07:21,210 Else printf x ir vienāds ar y-- un, atkal, ar tiem reversā slīpsvītra beidzas tikai 154 00:07:21,210 --> 00:07:24,160 tiem jaunām līnijām tā, ka, ja jūs faktiski bija šāda veida programmas 155 00:07:24,160 --> 00:07:25,940 tas vienkārši pārvietot jūsu kursors galu galā 156 00:07:25,940 --> 00:07:28,100 uz nākamo rindu ekrāna. 157 00:07:28,100 --> 00:07:31,270 >> Tagad, tikmēr Scratch bija cits sarežģītākas funkcijas, tikai 158 00:07:31,270 --> 00:07:34,320 daži no kuriem mēs ejam sākotnēji pāriet uz pasaules C. 159 00:07:34,320 --> 00:07:37,010 Un viens no tiem bija sauc saraksts nulles. 160 00:07:37,010 --> 00:07:39,100 Un tas bija īpašs Mainīgā veids, kas 161 00:07:39,100 --> 00:07:42,840 ļāva jums saglabāt vairākas lietas tajā atpakaļ, atpakaļ, atpakaļ, atpakaļ. 162 00:07:42,840 --> 00:07:45,540 >> C, tas nav saraksti, per se, bet kaut kas 163 00:07:45,540 --> 00:07:48,090 kas ir vispārīgāk sauc bloki, lai gan mēs 164 00:07:48,090 --> 00:07:50,590 atgriezties vēlāk šo semestri lai meklē kaut ko 165 00:07:50,590 --> 00:07:52,780 sauc sarakstu, vai tiešām saistītu sarakstu. 166 00:07:52,780 --> 00:07:55,510 Bet tagad, tuvākais ekvivalents C mums 167 00:07:55,510 --> 00:07:57,345 būs kaut kas sauc masīvs. 168 00:07:57,345 --> 00:07:59,740 Un masīvs ir vienkārši īpaša veida mainīgo 169 00:07:59,740 --> 00:08:03,160 kas ļauj uzglabāt datus atpakaļ, atpakaļ, atpakaļ, uz muguras. 170 00:08:03,160 --> 00:08:05,840 >> Un, protams, ir nulles, ja mēs vēlējāmies, lai piekļūtu 171 00:08:05,840 --> 00:08:09,030 masīva pirmais elements vai list-- un es esmu gatavojas, lai izsauktu to, 172 00:08:09,030 --> 00:08:13,600 Pēc vienošanās, argv, arguments vektors, bet vairāk par to pirms ilgi. 173 00:08:13,600 --> 00:08:17,090 Ja es vēlos saņemt pie pirmā elementa no argv, pasaulē Scratch 174 00:08:17,090 --> 00:08:20,930 jūs faktiski darīt parasti sāk skaitīt no 1. 175 00:08:20,930 --> 00:08:22,850 >> Un tā es varētu saņemt par argv 1.punktā. 176 00:08:22,850 --> 00:08:26,310 Tas ir tikai, cik MIT īstenoti jēdziens sarakstus. 177 00:08:26,310 --> 00:08:29,860 Bet C, es esmu gatavojas vairāk vienkārši tikai teikt, argv, 178 00:08:29,860 --> 00:08:32,758 kas atkal ir nosaukums mana list-- vai lai būtu skaidrs, masīvs. 179 00:08:32,758 --> 00:08:34,549 Un, ja es gribu pirmais elementi, es eju 180 00:08:34,549 --> 00:08:37,890 izmantot kvadrātiekavas, kas jums iespējams, nav bieži izmanto ar klaviatūru. 181 00:08:37,890 --> 00:08:40,150 >> Bet 0 tikai nozīmē, atnesiet man pirmais. 182 00:08:40,150 --> 00:08:42,160 Tātad par godu un kā laiks iet, mēs ejam 183 00:08:42,160 --> 00:08:44,570 lai sāktu, lai redzētu šīs dihotomijas no nulles un C, 184 00:08:44,570 --> 00:08:46,070 kuru Scratch izmanto. 185 00:08:46,070 --> 00:08:47,670 Mēs C izmanto 0 šeit. 186 00:08:47,670 --> 00:08:49,420 Bet jūs ātri redzēt kad jūs saprotat 187 00:08:49,420 --> 00:08:52,920 pamati katrā valodā, ka šīs lietas sāk iegūt vēl vairāk 188 00:08:52,920 --> 00:08:56,860 iepazinušies ar praksi un praksi. 189 00:08:56,860 --> 00:08:59,700 >> Tātad pieņemsim tiešām izskatās tagad programmu. 190 00:08:59,700 --> 00:09:04,031 Šeit ir pirmais no mūsu C pirmkods kompleksajai programmām. 191 00:09:04,031 --> 00:09:06,280 Un programma, mēs ejam piedāvāt izskatīšanai 192 00:09:06,280 --> 00:09:09,340 ir viens, kas ir līdzvērtīgi uz šo agrāko Scratch gabalu. 193 00:09:09,340 --> 00:09:13,210 >> Tātad šeit, mums ir, ko ir varbūt vienkāršākais C programma 194 00:09:13,210 --> 00:09:15,410 jūs varat rakstīt, ka faktiski dara kaut ko. 195 00:09:15,410 --> 00:09:18,250 Tagad mēs apskatīt pagātni, tagad, jau ietver, 196 00:09:18,250 --> 00:09:21,190 standarta io.h, un tie leņķis kronšteini, un int, un par spēkā neesošu, 197 00:09:21,190 --> 00:09:22,840 un cirtaini bikšturi, un tamlīdzīgi. 198 00:09:22,840 --> 00:09:25,390 >> Un pieņemsim tikai koncentrēties uz ko, vismaz intuitīvi, 199 00:09:25,390 --> 00:09:26,860 varētu izlēkt pie jums jau. 200 00:09:26,860 --> 00:09:30,300 Patiesībā, galvenais, man nav vienmēr zina, kas tas ir, 201 00:09:30,300 --> 00:09:34,580 bet daudz, piemēram, nulles bija, ka tad, kad zaļš karogs uzklikšķināt puzzles gabaliņam, 202 00:09:34,580 --> 00:09:39,070 tas pats C kā programmēšanas valodu ir galvenais gabals kodu, kas 203 00:09:39,070 --> 00:09:43,380 izpaužas izpildīts pēc noklusējuma. Un, protams, tas burtiski būs saukt galvenais. 204 00:09:43,380 --> 00:09:44,720 >> Tātad galvenais ir funkcija. 205 00:09:44,720 --> 00:09:48,720 Un tas ir speciāla funkcija, kas pastāv C, ka tad, kad jūs palaist programmu, 206 00:09:48,720 --> 00:09:52,720 tas ir galvenais, kas izpaužas vada noklusējuma. Pasaulē nulles, 207 00:09:52,720 --> 00:09:56,970 Parasti tas bija, kad zaļš karogs uzklikšķināt ka got darboties pēc noklusējuma. 208 00:09:56,970 --> 00:10:01,130 >> Tikmēr mēs esam redzējuši šo pirms, printf vai izdrukāt formatēt, tas ir 209 00:10:01,130 --> 00:10:05,620 būs funkcija, kas nāk ar C, kopā ar visu ķekars citiem, 210 00:10:05,620 --> 00:10:10,140 ka griba laiku un laiku atkal, lai darīt tieši 211 00:10:10,140 --> 00:10:12,450 jo tā nosaukums liecina, drukāt kaut ko. 212 00:10:12,450 --> 00:10:13,500 Ko mēs vēlamies drukāt? 213 00:10:13,500 --> 00:10:15,770 Nu, mēs redzēsim, ka ar pievienojot rakstzīmes 214 00:10:15,770 --> 00:10:18,680 tāpat these-- Hello World, slīpsvītru n pēdiņās, 215 00:10:18,680 --> 00:10:23,040 mēs varam pateikt printf precīzi ko drukāt uz ekrāna. 216 00:10:23,040 --> 00:10:26,430 >> Bet, lai darīt ka mēs diemžēl 217 00:10:26,430 --> 00:10:30,010 ir nepieciešams veikt kaut ko, kas ir jau mistisks uz mums cilvēkiem, 218 00:10:30,010 --> 00:10:34,510 bet vismaz tas ir nedaudz readable-- asas ietver standarta io.h, int, 219 00:10:34,510 --> 00:10:39,340 Galvenais, par spēkā neesošu, printf, visi burvju buramvārdi mēs tikko redzējām uz ekrāna. 220 00:10:39,340 --> 00:10:42,470 Bet mums tiešām ir iet vairāk arcane joprojām. 221 00:10:42,470 --> 00:10:47,140 Mums vispirms ir nepieciešams tulkot kodu ka mēs rakstīt uz mašīnu kodu. 222 00:10:47,140 --> 00:10:51,370 Un atsauktu no pagājušajā nedēļā, ka mašīnas, vismaz tie, mēs zinām šeit, 223 00:10:51,370 --> 00:10:54,450 beigās, dienā tikai izprast nullēm un uzņēmumiem. 224 00:10:54,450 --> 00:10:58,100 >> Un mans Dievs, ja mums bija rakstīt šos nullēm un uzņēmumiem faktiski programmu, 225 00:10:58,100 --> 00:11:01,260 tas būtu ļoti, ļoti ātri veikt fun no neko. 226 00:11:01,260 --> 00:11:05,150 Bet izrādās, par pagājušajā nedēļā, ka šie modeļi nullēm un uzņēmumiem 227 00:11:05,150 --> 00:11:06,400 vienkārši ir īpaša nozīme. 228 00:11:06,400 --> 00:11:08,500 Dažos kontekstos, tie varētu nozīmēt numurus. 229 00:11:08,500 --> 00:11:11,840 >> Dažās situācijās, viņi varētu nozīmēt vēstules, vai krāsas, vai jebkuru numuru 230 00:11:11,840 --> 00:11:14,710 Citu abstrakciju tur pēc. 231 00:11:14,710 --> 00:11:18,450 Bet, tāpat kā jūsu dators ir CPU, Central Processing Unit, 232 00:11:18,450 --> 00:11:20,390 vai smadzenes iekšpusē datora. 233 00:11:20,390 --> 00:11:22,240 Tas parasti Intel iekšā, jo tas ir 234 00:11:22,240 --> 00:11:24,900 viens no lielākajiem uzņēmumiem kas padara CPU datoriem. 235 00:11:24,900 --> 00:11:28,910 >> Nu, Intel CPU un citi vienkārši ir nolēmuši iepriekš 236 00:11:28,910 --> 00:11:33,970 ka daži modeļi nullēm un tiem ir īpašas lietas. 237 00:11:33,970 --> 00:11:37,040 Daži modeļi nullēm un uzņēmumiem nozīmēs, drukāt tas uz ekrāna, 238 00:11:37,040 --> 00:11:39,710 vai pievienot šos divus skaitļus, vai atņemt šos divus skaitļus, 239 00:11:39,710 --> 00:11:43,310 vai pārvietot šo gabalu datus no mana datora atmiņā vairāk nekā šeit, 240 00:11:43,310 --> 00:11:47,870 vai vairākas citas ļoti zemā līmenī, bet galu galā noderīga, operācijas. 241 00:11:47,870 --> 00:11:53,022 Bet, par laimi, mēs cilvēki nenāks uz nepieciešamību zināt šo detalizācijas pakāpi. 242 00:11:53,022 --> 00:11:56,230 Patiešām, tāpat kā pēdējo reizi, kad mēs nošķirts atkal, un atkal, un atkal, 243 00:11:56,230 --> 00:11:58,930 Ēka no ļoti zema līmeņa primitīvi kā nullēm un uzņēmumiem 244 00:11:58,930 --> 00:12:01,160 uz augstāka līmeņa koncepcijām piemēram, skaitļu un burtu, 245 00:12:01,160 --> 00:12:04,330 un krāsas, un vairāk, lai mēs kā programmētāji 246 00:12:04,330 --> 00:12:07,080 stāvēt uz pleciem citi, kas ir ieradušies pirms mums 247 00:12:07,080 --> 00:12:11,260 un lietot programmatūru, kas cita cilvēki ir rakstīts pirms us-- 248 00:12:11,260 --> 00:12:14,340 proti, programmas sauc kompilatoru. 249 00:12:14,340 --> 00:12:17,770 >> C ir valoda, kas parasti apkopoti, 250 00:12:17,770 --> 00:12:22,130 kas nozīmē pārveidots no pirmkods uz mašīnu kodu. 251 00:12:22,130 --> 00:12:25,230 Jo īpaši, ko tas nozīmē ir tas, ka, ja jūs esat ieguvuši savu avotu 252 00:12:25,230 --> 00:12:29,530 kods, kas tu pats rakstīt, kā mēs drīz būs tikai brīdi uz ekrāna, 253 00:12:29,530 --> 00:12:33,140 un jūs vēlaties, lai pārvērstu to galu galā mašīna code-- 254 00:12:33,140 --> 00:12:37,100 šie nullēm un tiem, kas tikai jūsu Mac vai datora 255 00:12:37,100 --> 00:12:41,230 understands-- tev pirmais barību, ka pirmkodu kā 256 00:12:41,230 --> 00:12:46,340 ieguldījums īpašu Programma sauc kompilatoru, 257 00:12:46,340 --> 00:12:48,974 kuras izejas signāls mēs redzēsim ir mašīna kods. 258 00:12:48,974 --> 00:12:51,890 Un, protams, pēdējo reizi mēs runājām apmēram, patiešām, beigās, dienā, 259 00:12:51,890 --> 00:12:52,610 problēmu risināšana. 260 00:12:52,610 --> 00:12:53,360 Jūs esat ieguvuši ieejas. 261 00:12:53,360 --> 00:12:54,318 Un tev izejas. 262 00:12:54,318 --> 00:12:56,560 Un tev kādu algoritma vidū. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmi var, protams, ir īstenoti programmatūru, 264 00:12:59,830 --> 00:13:02,900 kā mēs redzējām ar pseudocode pagājušajā nedēļā un kā mēs redzēsim ar faktisko kodu 265 00:13:02,900 --> 00:13:03,490 šonedēļ. 266 00:13:03,490 --> 00:13:06,430 Un tāpēc kompilators tiešām tikko ir kopums algoritmu iekšpusē 267 00:13:06,430 --> 00:13:10,060 par to, kas zina, kā pārvērst īpašos atslēgvārdus, 268 00:13:10,060 --> 00:13:12,180 piemēram, galveno, un printf, un citiem, ka mēs tikko 269 00:13:12,180 --> 00:13:17,620 redzēja vērā modeļus nullēm un tie, kas Intel iekšpusē un citi CPU 270 00:13:17,620 --> 00:13:20,020 tiešām saprot. 271 00:13:20,020 --> 00:13:22,460 Tātad, kā mēs to darām? 272 00:13:22,460 --> 00:13:24,470 Kur mēs iegūstam kompilatoru? 273 00:13:24,470 --> 00:13:26,400 >> Lielākā daļa no mums šeit ir Mac vai PC. 274 00:13:26,400 --> 00:13:29,152 Un jūs darbojas Mac OS, vai Windows vai Linux vai Solaris, 275 00:13:29,152 --> 00:13:30,860 vai vairākas citas operētājsistēmas. 276 00:13:30,860 --> 00:13:32,568 Un, protams, mēs varētu iziet uz web 277 00:13:32,568 --> 00:13:35,710 un lejupielādēt kompilatoru jūsu Mac vai datora 278 00:13:35,710 --> 00:13:37,360 par jūsu konkrēto operētājsistēmu. 279 00:13:37,360 --> 00:13:39,617 Bet mēs visi būtu uz dažādas lapas, lai runāt. 280 00:13:39,617 --> 00:13:41,450 Mēs ir nedaudz dažādas konfigurācijas. 281 00:13:41,450 --> 00:13:43,210 Un lietas nedarbosies visi vienādi. 282 00:13:43,210 --> 00:13:45,280 Un, protams, šajās dienās daudzi no mums neizmanto 283 00:13:45,280 --> 00:13:47,516 programmatūra, kas darbojas tikai uz mūsu klēpjdatorus. 284 00:13:47,516 --> 00:13:49,390 Tā vietā, mēs izmantot kaut ko kā pārlūku, kas 285 00:13:49,390 --> 00:13:52,930 ļauj mums piekļūt tīmekļa lietojumprogrammas mākonis. 286 00:13:52,930 --> 00:13:55,630 Un vēlāk šajā semestrī, mēs darīsim tieši tā. 287 00:13:55,630 --> 00:13:59,660 Mēs rakstīt pieteikumus vai programmatūru, izmantojot code-- ne C, 288 00:13:59,660 --> 00:14:02,860 bet citās valodās, piemēram, Python un JavaScript-- ka ieskriet mākoni. 289 00:14:02,860 --> 00:14:05,860 >> Un, lai to izdarītu, mēs paši semestra laikā 290 00:14:05,860 --> 00:14:11,890 faktiski izmantot mākonis balstītas vide pazīstams kā CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 Šī ir tīmekļa programmēšana vide, vai integrētā izstrādes 292 00:14:16,030 --> 00:14:20,610 vide, IDE, kas ir būvēts atop daži atvērtā koda programmatūras sauc Cloud 9. 293 00:14:20,610 --> 00:14:22,966 Un mēs esam padarījuši dažus pedagoģiskā vienkāršojumi uz to 294 00:14:22,966 --> 00:14:25,840 lai slēptu noteiktas funkcijas Pirmajās nedēļās, kas mums nav nepieciešams, 295 00:14:25,840 --> 00:14:27,770 pēc kura jūs varat atklāt tos un darīt visvairāk 296 00:14:27,770 --> 00:14:29,400 kaut ko vēlaties ar vidi. 297 00:14:29,400 --> 00:14:32,470 >> Un tas ļauj mums, arī, lai pre-instalēt noteiktu programmatūru. 298 00:14:32,470 --> 00:14:35,330 Lietas, piemēram, tā saukto CS50 bibliotēka, ko mēs drīz redzēt 299 00:14:35,330 --> 00:14:39,210 nodrošina mūs C ar kādu papildu funkcionalitāti. 300 00:14:39,210 --> 00:14:44,392 Tātad, ja jums iet uz galu galā, CS50.io, Jums tiks piedāvāts pieteikties, 301 00:14:44,392 --> 00:14:46,350 un, kad jūs darīt, un izveidot kontu par brīvu, 302 00:14:46,350 --> 00:14:52,150 jums būs iespēja piekļūt vide, kas izskatās gluži kā šis. 303 00:14:52,150 --> 00:14:53,760 >> Tagad tas ir noklusējuma režīmā. 304 00:14:53,760 --> 00:14:55,650 Viss ir jauki un spilgti uz ekrāna. 305 00:14:55,650 --> 00:14:57,941 Daudzi no mums ir ieradums strādā CS50 gabals, kas ir 306 00:14:57,941 --> 00:14:59,150 diezgan vēlai naktij. 307 00:14:59,150 --> 00:15:02,400 Un tāpēc daži no jums varētu labāk pārvērst to nakts režīmu, lai runāt. 308 00:15:02,400 --> 00:15:05,550 >> Bet, galu galā, ko jūs esat gatavojas redzēt ietvaros CS50 IDE 309 00:15:05,550 --> 00:15:08,340 ir trīs atšķirīgas areas-- zona pa kreisi, kur 310 00:15:08,340 --> 00:15:12,604 faili gatavojas tiks sniegta mākonis, platība labajā augšējā stūrī 311 00:15:12,604 --> 00:15:14,270 kur jūsu kods būs rediģējams. 312 00:15:14,270 --> 00:15:16,650 Jūs varēsiet atvērt individuālie cilnes jebkuru programmu 313 00:15:16,650 --> 00:15:19,670 ka jūs rakstīt šo semestri iekšā Minētā augšējā labajā stūrī. 314 00:15:19,670 --> 00:15:23,070 Un tad lielākā arcanely, un tomēr spēcīgi, 315 00:15:23,070 --> 00:15:26,610 būs šī lieta pie apakšējā pazīstams kā termināļa logā. 316 00:15:26,610 --> 00:15:29,450 >> Tas ir vecās skolas Command Line Interface, 317 00:15:29,450 --> 00:15:32,240 vai CLI, kas ļauj jums izpildīt komandas 318 00:15:32,240 --> 00:15:35,260 par computer-- šajā gadījumā, dators In cloud-- 319 00:15:35,260 --> 00:15:39,090 darīt lietas, piemēram, sastādīt savu kodu no avota kodu, lai mašīnu kodu, 320 00:15:39,090 --> 00:15:43,600 palaist savu programmu, vai sākt savu web serveri, vai arī, lai piekļūtu jūsu datu bāzē, 321 00:15:43,600 --> 00:15:47,454 un neierobežotu skaitu citu paņēmienu ka mēs sāksim lietot pirms ilgi. 322 00:15:47,454 --> 00:15:49,370 Bet, lai tur nokļūt, mēs esam būs tiešām ir 323 00:15:49,370 --> 00:15:51,240 doties tiešsaistē un sākt spēlēt. 324 00:15:51,240 --> 00:15:54,399 Un, lai to izdarītu, pieņemsim vispirms sākt tinkering ar galveno, 325 00:15:54,399 --> 00:15:55,940 un rakstīt galveno daļu programmu. 326 00:15:55,940 --> 00:15:59,170 Un pieņemsim izmantot šo funkciju printf, ko mēs izmantojām agrāk, 327 00:15:59,170 --> 00:16:01,050 vienkārši pateikt kaut ko. 328 00:16:01,050 --> 00:16:04,910 >> Tātad, šeit es esmu jau iekšā CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Esmu pieteicies iepriekš. 330 00:16:05,930 --> 00:16:07,360 Un es pilnībā pārmeklēta logu. 331 00:16:07,360 --> 00:16:09,670 Un tā, galu galā, jūs Arī turpmākajos problēmas 332 00:16:09,670 --> 00:16:12,960 sekos līdzīgus pasākumus, kas nodrošinās tiešsaistes dokumentāciju. 333 00:16:12,960 --> 00:16:16,360 Tātad jums nav jāuztraucas par absorbējot ik maz tehnisko soli 334 00:16:16,360 --> 00:16:17,730 ka man šeit šodien. 335 00:16:17,730 --> 00:16:19,222 >> Bet jūs saņemsiet ekrāna kā šis. 336 00:16:19,222 --> 00:16:20,430 Man gadās būt nakts režīmā. 337 00:16:20,430 --> 00:16:22,944 Un jūs varat atdzīvoties visu up ar invaliditāti nakts režīmu. 338 00:16:22,944 --> 00:16:24,860 Un beigās no diena, jūs gatavojas redzēt 339 00:16:24,860 --> 00:16:30,090 šie trīs galvenie areas-- faila pārlūks pa kreisi, kods cilnes augšu augšu, 340 00:16:30,090 --> 00:16:32,430 un termināļa logs apakšā. 341 00:16:32,430 --> 00:16:34,890 >> Ļaujiet man iet uz priekšu un uzrakstīt savu pirmo programmu. 342 00:16:34,890 --> 00:16:42,300 Es esmu gatavojas preemptively doties uz File, Glābt un saglabāt savu failu kā hello.c. 343 00:16:42,300 --> 00:16:46,850 Patiešām, pēc vienošanās, jebkura programma, mēs raksta, ka ir rakstīts C valodā 344 00:16:46,850 --> 00:16:49,739 jānosauc kaut dot c, pēc vienošanās. 345 00:16:49,739 --> 00:16:53,030 Tāpēc es esmu gatavojas nosaukt to hello.c, jo Es tikai gribu teikt hello uz pasauli. 346 00:16:53,030 --> 00:16:54,820 Tagad es esmu gatavojas, lai tuvinātu out un noklikšķiniet uz Saglabāt. 347 00:16:54,820 --> 00:16:58,180 Un viss, kas man ir tagad šeit ir tab kurā es varētu sākt rakstīt kodu. 348 00:16:58,180 --> 00:16:59,490 >> Tas nav gatavojas sastādīt. 349 00:16:59,490 --> 00:17:00,300 Tas neko nenozīmē. 350 00:17:00,300 --> 00:17:02,750 Un pat tad, ja es konvertē tas nullēm un tiem, 351 00:17:02,750 --> 00:17:05,390 CPU ir nāksies nē ideja, kas notiek apkārt. 352 00:17:05,390 --> 00:17:14,170 Bet, ja es rakstītu līnijām, kas atbilst ar C s conventions-- C būtni, 353 00:17:14,170 --> 00:17:20,150 atkal, tas language-- ar sintaksi, piemēram, Tas, printf sveiki world-- un es esmu 354 00:17:20,150 --> 00:17:22,210 gotten apmierināti ar darot laika gaitā. 355 00:17:22,210 --> 00:17:24,510 Tāpēc es nedomāju, ka es jebkuras drukas kļūdas. 356 00:17:24,510 --> 00:17:27,910 >> Bet, vienmēr, ļoti pirmais reizi, kad jūs to izdarītu, jums būs. 357 00:17:27,910 --> 00:17:31,090 Un ko es esmu gatavojas darīt varētu ļoti labi nestrādās jums pirmo reizi. 358 00:17:31,090 --> 00:17:33,610 Un tas ir pilnīgi OK, jo tieši tagad tu 359 00:17:33,610 --> 00:17:37,662 var tikai redzēt visai daudz jaunums, bet laika gaitā, kad jūs iepazīties 360 00:17:37,662 --> 00:17:39,870 ar šo vidi, un šī valoda, un citi, 361 00:17:39,870 --> 00:17:42,370 jūs sākat redzēt lietas, kas ir vai nu pareizi vai nepareizi. 362 00:17:42,370 --> 00:17:44,369 >> Un tas ir tas, ko mācību puiši un protams 363 00:17:44,369 --> 00:17:48,780 palīgi saņemt tik labi laika gaitā, ir smērēšanās kļūdas vai bugs jūsu kodu. 364 00:17:48,780 --> 00:17:52,110 Bet es apgalvo, ka nav bugs šajā kodeksā. 365 00:17:52,110 --> 00:17:53,990 Tāpēc es tagad gribu palaist šo programmu. 366 00:17:53,990 --> 00:17:57,440 >> Tagad uz savu Mac vai PC, es esmu ieradums dubultklikšķi uz ikonas 367 00:17:57,440 --> 00:17:59,350 kad es gribu palaist kādu programmu. 368 00:17:59,350 --> 00:18:01,080 Bet tas nav modelis šeit. 369 00:18:01,080 --> 00:18:04,570 Šajā vidē, kas ir CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Mēs izmantojam pamatdarbības sistēma, ko sauc Linux. 371 00:18:07,192 --> 00:18:09,900 Linux ir atgādina cita operētājsistēma, vispār zināms 372 00:18:09,900 --> 00:18:10,850 kā Unix. 373 00:18:10,850 --> 00:18:16,340 Un Linux ir īpaši pazīstama kam Command Line vides, CLI. 374 00:18:16,340 --> 00:18:20,070 Tagad mēs esam, izmantojot īpašu aromāts Linux sauc Ubuntu. 375 00:18:20,070 --> 00:18:22,770 Un Ubuntu ir vienkārši pārliecināts versija Linux. 376 00:18:22,770 --> 00:18:27,900 >> Bet šie Linux šajās dienās darīt faktiski nāk ar grafisko lietotāja saskarnes. 377 00:18:27,900 --> 00:18:30,360 Un viens mēs gadās izmantojat šeit ir tīmekļa. 378 00:18:30,360 --> 00:18:32,735 Tātad tas varētu izskatīties pat nedaudz atšķiras no kaut ko 379 00:18:32,735 --> 00:18:35,310 jūs pats varētu būt redzējuši vai palaist pagātnē. 380 00:18:35,310 --> 00:18:37,910 >> Tāpēc es esmu gatavojas iet uz priekšu tagad un darīt šādi. 381 00:18:37,910 --> 00:18:40,950 Esmu saglabājis šo failu kā hello.c. 382 00:18:40,950 --> 00:18:47,350 Es iešu uz priekšu un tips clanghello.c Tātad šķindēt 383 00:18:47,350 --> 00:18:49,850 par C valodā ir kompilatoru. 384 00:18:49,850 --> 00:18:51,952 Tas ir iepriekš uzstādīta CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Un jūs varat absolūti lejupielādēt un instalēt šo par savu Mac vai PC. 386 00:18:54,910 --> 00:18:57,910 >> Bet, atkal, jums nebūtu visi iepriekš konfigurācija darīts jums. 387 00:18:57,910 --> 00:19:00,940 Tātad tagad, es esmu tikai gatavojas palaist clanghello.c. 388 00:19:00,940 --> 00:19:03,240 Un tagad paziņojums šo sintaksi šeit būs galā 389 00:19:03,240 --> 00:19:06,930 saprast tikai nozīmē, ka es esmu A mapi vai direktoriju sauc darbvietas. 390 00:19:06,930 --> 00:19:11,030 Tas dolāra zīme ir tikai konvencija jēgu, ierakstiet savu komandas šeit. 391 00:19:11,030 --> 00:19:14,560 >> Tas ir tas, ko sauc ātru, vienkārši pēc vienošanās ir dolāra zīme. 392 00:19:14,560 --> 00:19:19,130 Un, ja es iet uz priekšu tagad un noklikšķiniet Ievadiet, nekas, šķiet, ir noticis. 393 00:19:19,130 --> 00:19:20,930 Bet tas tiešām ir laba lieta. 394 00:19:20,930 --> 00:19:23,650 Jo mazāk, kas notiek uz jūsu ekrāna, jo lielāka iespēja 395 00:19:23,650 --> 00:19:26,710 Jūsu kods ir pareizs, vismaz sintaktiski. 396 00:19:26,710 --> 00:19:29,120 >> Tātad, ja es gribu, lai palaistu šo programma, ko man darīt? 397 00:19:29,120 --> 00:19:33,770 Nu, izrādās, ka noklusējuma nosaukums pēc vienošanās 398 00:19:33,770 --> 00:19:38,854 programmām, ja jums nav jānorāda nosaukt jūsu programma ir tikai a.out. 399 00:19:38,854 --> 00:19:41,270 Un tas sintakse pārāk, jūs iepazīties ar pirms ilgi. 400 00:19:41,270 --> 00:19:47,500 >> Dot slash tikai nozīmē, hey, CS50 IDE, palaist programmu, ko sauc a.out 401 00:19:47,500 --> 00:19:49,400 tas ir manā pašreizējā direktorijā. 402 00:19:49,400 --> 00:19:51,520 Tas dot nozīmē pašreizējā direktorijā. 403 00:19:51,520 --> 00:19:55,040 Un mēs redzēsim, ko citi šādas secības rakstzīmju nozīmē pirms ilgi. 404 00:19:55,040 --> 00:19:58,430 >> Tātad šeit mēs ejam, Enter, hello pasaule. 405 00:19:58,430 --> 00:20:00,080 Un jūs pamanīsiet, ka tas, kas notika? 406 00:20:00,080 --> 00:20:01,580 Tas ne tikai drukāt Hello pasaulē. 407 00:20:01,580 --> 00:20:05,990 Tā arī pārvietots kursoru uz nākamo rindiņu. 408 00:20:05,990 --> 00:20:07,160 >> Un kāpēc tas bija? 409 00:20:07,160 --> 00:20:12,400 Kāds bija kods, kas mēs rakstījām pirms ka jānodrošina, ka kursors būtu 410 00:20:12,400 --> 00:20:14,882 doties uz nākamo rindiņu? 411 00:20:14,882 --> 00:20:16,840 Funny lieta par dators ir tas tikai gatavojas 412 00:20:16,840 --> 00:20:18,570 darīt burtiski to, ko tu pateikt to darīt. 413 00:20:18,570 --> 00:20:26,050 >> Tātad, ja jums pateikt to printf hello, komats, atstarpe, pasaule, tuvu quote, 414 00:20:26,050 --> 00:20:29,090 tas burtiski tikai gatavojas izdrukāt šos rakstzīmes. 415 00:20:29,090 --> 00:20:31,980 Bet man bija šo īpašo raksturu Beigās, atsaukšanu, slīpsvītru n. 416 00:20:31,980 --> 00:20:34,230 Un tas, ko nodrošināja ka raksturs gāja 417 00:20:34,230 --> 00:20:36,570 uz nākamo rindu ekrāna. 418 00:20:36,570 --> 00:20:38,097 >> Patiesībā, ļaujiet man iet un darīt. 419 00:20:38,097 --> 00:20:39,430 Ļaujiet man iet uz priekšu un izdzēst to. 420 00:20:39,430 --> 00:20:41,180 Tagad, paziņojums, ka top par manu ekrānu tur 421 00:20:41,180 --> 00:20:42,890 nedaudz sarkanā gaisma cilni, norādot, 422 00:20:42,890 --> 00:20:45,047 hey, jūs esat ne saglabājis failu. 423 00:20:45,047 --> 00:20:47,880 Tāpēc es esmu gatavojas iet uz priekšu ar kontroli S vai komandu S, saglabājiet failu. 424 00:20:47,880 --> 00:20:51,130 Tagad tas goes-- devās uz moment-- zaļš. 425 00:20:51,130 --> 00:20:53,760 Un tagad tas ir atpakaļ tikai ir cieša ikona. 426 00:20:53,760 --> 00:21:01,860 >> Ja es tagad palaist clanghello.c atkal, Enter, dot slīpsvītra, a.out, Enter, 427 00:21:01,860 --> 00:21:04,110 jūs redzēsiet, ka tas vēl strādāja. 428 00:21:04,110 --> 00:21:06,020 Bet tas varbūt ir nedaudz buggy. 429 00:21:06,020 --> 00:21:08,714 Tieši tagad, mans prompt-- darbvieta, un tad, ka dolāra zīmi, 430 00:21:08,714 --> 00:21:10,880 un tad mans aktuālā prompt-- ir visu uz vienas līnijas. 431 00:21:10,880 --> 00:21:14,540 Tātad šī noteikti ir estētisks bug, pat ja tas nav īsti loģiska kļūda. 432 00:21:14,540 --> 00:21:16,250 >> Tāpēc es esmu gatavojas atsaukt to, ko es tikko darīju. 433 00:21:16,250 --> 00:21:18,560 Es esmu gatavojas atkārto a.out. 434 00:21:18,560 --> 00:21:22,710 Paziņojums Esmu pievienotās newline raksturs atpakaļ. 435 00:21:22,710 --> 00:21:24,280 Esmu saglabājis failu. 436 00:21:24,280 --> 00:21:31,630 >> Tāpēc es esmu gatavojas atkārto a.out, and-- dammit, bug, bug nozīmē kļūda. 437 00:21:31,630 --> 00:21:35,020 Tātad kļūda ir tā, ka, lai gan I pievienotās slīpsvītru n tur, 438 00:21:35,020 --> 00:21:41,180 re-saglabāti, re-skrēja programmu, uzvedību bija tāda pati. 439 00:21:41,180 --> 00:21:42,640 Kāpēc tas var būt? 440 00:21:42,640 --> 00:21:43,910 >> Es esmu trūkst soli, labi? 441 00:21:43,910 --> 00:21:47,620 Ka galvenais solis agrāk bija, ka jums ir kuri paredzēti, ja jūs maināt savu pirmkodu, 442 00:21:47,620 --> 00:21:49,610 izrādās arī palaist tas caur kompilators 443 00:21:49,610 --> 00:21:51,102 atkal, lai jūs iegūtu jaunu mašīnu kodu. 444 00:21:51,102 --> 00:21:52,810 Un mašīnu kodu, nullēm un tiem, 445 00:21:52,810 --> 00:21:56,260 ir būs gandrīz identiski, bet nav pilnīgi tāpēc, ka mums ir nepieciešams, 446 00:21:56,260 --> 00:21:57,510 protams, ka jaunā līnija. 447 00:21:57,510 --> 00:22:02,640 >> Tātad, lai to labotu, es esmu dodas uz nepieciešamību lai atkārto clanghello.c, ievadiet, dot 448 00:22:02,640 --> 00:22:03,800 slīpsvītra, a.out. 449 00:22:03,800 --> 00:22:08,402 Un tagad, sveiki pasaule ir atpakaļ lai kur es gaidīt to, lai būtu. 450 00:22:08,402 --> 00:22:09,610 Tātad tas ir viss labi un labs. 451 00:22:09,610 --> 00:22:13,150 Bet a.out ir diezgan stulba nosaukums programma, pat ja tas notiek, ir, 452 00:22:13,150 --> 00:22:16,530 vēsturisku iemeslu dēļ default-- nozīmē montāžas izejas. 453 00:22:16,530 --> 00:22:20,780 >> Bet ļaujiet man iet uz priekšu šeit un darīt savādāk. 454 00:22:20,780 --> 00:22:24,760 Es gribu savu Sveika, pasaule faktiski sauc sveiki. 455 00:22:24,760 --> 00:22:28,320 Tātad, ja tas būtu ikona par manu desktop, tas nebūtu a.out. 456 00:22:28,320 --> 00:22:29,730 To varētu saukt sveiki. 457 00:22:29,730 --> 00:22:33,660 >> Tātad, lai to izdarītu, izrādās, ka šķindēt, tāpat kā daudzas programmas, 458 00:22:33,660 --> 00:22:37,980 atbalsta komandrindas argumentus, vai karogi, vai slēdži, 459 00:22:37,980 --> 00:22:39,600 kas vienkārši ietekmēt savu uzvedību. 460 00:22:39,600 --> 00:22:45,160 Konkrēti, šķindēt atbalsta domuzīme o karogs, kura tad otru vārdu. 461 00:22:45,160 --> 00:22:48,190 Šajā gadījumā, es ņemšu patvaļīgi, bet saprātīgi, to sauc sveiki. 462 00:22:48,190 --> 00:22:50,710 Bet es varētu to nosaukt kaut kas Es gribu, izņemot a.out, kas 463 00:22:50,710 --> 00:22:52,390 būtu diezgan papildus punktu. 464 00:22:52,390 --> 00:22:55,640 >> Un tad tikai norādiet vārdu faila es vēlos, lai apkopotu. 465 00:22:55,640 --> 00:22:59,190 Tātad, tagad, pat ja sākumā no komandu man vēl ir šķindēt, 466 00:22:59,190 --> 00:23:01,410 beigās komandu Man joprojām ir faila nosaukumu, 467 00:23:01,410 --> 00:23:05,520 Man tagad ir šīs komandrindas argumenti, šie karogi, kas saka, 468 00:23:05,520 --> 00:23:11,180 oh, starp citu, izeja-o, fails sauc hello, nevis noklusējuma a.out. 469 00:23:11,180 --> 00:23:13,810 >> Tātad, ja es hit Enter tagad, nekas šķiet, ir noticis. 470 00:23:13,810 --> 00:23:17,900 Un, tomēr, tagad es varu darīt dot slīpsvītra sveiki. 471 00:23:17,900 --> 00:23:19,089 Tātad, tas ir tā pati programma. 472 00:23:19,089 --> 00:23:21,380 Nullēm un tiem ir identisks beigās, dienā. 473 00:23:21,380 --> 00:23:24,210 >> Bet viņi divās atšķirīgs files-- a.out, 474 00:23:24,210 --> 00:23:26,490 kas ir pirmais variants un vienkārši muļķīgi nosaukts, 475 00:23:26,490 --> 00:23:30,250 un tagad hello, kas ir daudz vairāk pārliecinoši nosaukums programmai. 476 00:23:30,250 --> 00:23:33,195 Bet, godīgi, es esmu nekad gatavojas atcerēties to atkal, 477 00:23:33,195 --> 00:23:34,070 un atkal, un atkal. 478 00:23:34,070 --> 00:23:36,411 Un, patiesībā, kā mēs rakstām sarežģītāka programmas, 479 00:23:36,411 --> 00:23:38,160 komandas jūs esat nāksies rakstīt 480 00:23:38,160 --> 00:23:40,920 gatavojas saņemt pat vairāk sarežģī vēl. 481 00:23:40,920 --> 00:23:41,940 >> Un tāpēc nav jāuztraucas. 482 00:23:41,940 --> 00:23:46,220 Izrādās, ka cilvēki pirms mums ir sapratuši, viņi pārāk 483 00:23:46,220 --> 00:23:47,530 bija šī tieši tādu pašu problēmu. 484 00:23:47,530 --> 00:23:50,900 Arī viņi neguva, kam tips diezgan ilgi, mistiskā komandas, 485 00:23:50,900 --> 00:23:52,200 nemaz nerunājot atcerēties tos. 486 00:23:52,200 --> 00:23:56,070 Un tā cilvēki pirms mums ir devuši citas programmas, kas atvieglo 487 00:23:56,070 --> 00:23:57,670 sastādīt savu programmatūru. 488 00:23:57,670 --> 00:24:01,609 >> Un, protams, viens no šādiem Programma sauc Make. 489 00:24:01,609 --> 00:24:03,150 Tāpēc es esmu gatavojas iet uz priekšu un darīt to. 490 00:24:03,150 --> 00:24:05,691 Es esmu gatavojas atsaukt visu I vienkārši darīja sekojošā veidā. 491 00:24:05,691 --> 00:24:07,690 Ļaujiet man rakstīt LS. 492 00:24:07,690 --> 00:24:10,980 Un jūs pamanīsiet trīs things-- a.out, un zvaigzne, hello 493 00:24:10,980 --> 00:24:12,810 un zvaigzne, un hello.c. 494 00:24:12,810 --> 00:24:14,730 Cerams, tas būtu būt mazliet intuitīva, 495 00:24:14,730 --> 00:24:18,220 ciktāl agrāk nebija nekas šajā darbvietā. 496 00:24:18,220 --> 00:24:21,240 Nebija nekas, ka man bija izveidots kamēr mēs sākām klasē. 497 00:24:21,240 --> 00:24:22,840 >> Un es izveidojis hello.c. 498 00:24:22,840 --> 00:24:24,544 Es pēc tam apkopo to, un nosauca to a.out. 499 00:24:24,544 --> 00:24:27,460 Un tad es apkopo to atkal nedaudz savādāk un nosauca to sveiki. 500 00:24:27,460 --> 00:24:32,830 Tāpēc man ir trīs failus šajā direktorijā, Šajā mapē sauc Workspace. 501 00:24:32,830 --> 00:24:35,005 Tagad es redzu, ka arī ja es attālinātu faktiski. 502 00:24:35,005 --> 00:24:37,530 >> Ja es zoom out šeit un apskatīt šajā augšējā labajā rokā 503 00:24:37,530 --> 00:24:39,940 stūra, kā solīts kreisās labajā pusē no ekrāna 504 00:24:39,940 --> 00:24:42,990 vienmēr gatavojas parādīs kas ir jūsu kontā, kas ir 505 00:24:42,990 --> 00:24:44,790 iekšpusē CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 Un tur ir trīs failus tur. 507 00:24:46,680 --> 00:24:49,070 >> Tāpēc es gribu atbrīvoties no a.out un sveiki. 508 00:24:49,070 --> 00:24:51,275 Un, kā jūs varētu iedomāties intuitīvi, jums 509 00:24:51,275 --> 00:24:53,400 varētu šķirot Kontroles klikšķi vai labo klikšķi uz šīs. 510 00:24:53,400 --> 00:24:54,590 Un tas maz izvēlne. 511 00:24:54,590 --> 00:24:57,170 Jūs varat lejupielādēt failu, palaist tas, priekšskatīt, atsvaidzināt, pārdēvēt, 512 00:24:57,170 --> 00:24:57,700 vai ko ne. 513 00:24:57,700 --> 00:25:00,260 >> Un es varētu vienkārši izdzēst, un tas iet prom. 514 00:25:00,260 --> 00:25:05,260 Bet pieņemsim darīt lietas ar komandu line tagad, lai saņemtu apmierināti 515 00:25:05,260 --> 00:25:07,010 ar šo, un darīt šādi. 516 00:25:07,010 --> 00:25:12,345 Es iešu uz priekšu un izņemiet a.out ierakstot burtiski rma.out. 517 00:25:12,345 --> 00:25:14,890 Izrādās, ka komandu likvidējot vai dzēšot kaut, 518 00:25:14,890 --> 00:25:16,280 nav noņemt vai izdzēst. 519 00:25:16,280 --> 00:25:21,260 >> Tas ir vairāk kodolīgi RM, tikai, lai ietaupītu jūs daži keystrokes, un hit Enter. 520 00:25:21,260 --> 00:25:24,707 Tagad mēs spēsim būt nedaudz cryptically noņemt regulāru failu a.out. 521 00:25:24,707 --> 00:25:27,040 Man nav īsti zināt, ko neregulāra fails būtu vēl. 522 00:25:27,040 --> 00:25:28,660 Bet es gribu, lai to noņemtu. 523 00:25:28,660 --> 00:25:30,150 >> Tāpēc es esmu gatavojas rakstīt y uz Jā. 524 00:25:30,150 --> 00:25:31,940 Vai es varētu ierakstīt to ārā, un hit Enter. 525 00:25:31,940 --> 00:25:33,440 Un atkal, nekas, šķiet, notiek. 526 00:25:33,440 --> 00:25:35,840 Bet tas ir, parasti, ir laba lieta. 527 00:25:35,840 --> 00:25:40,490 >> Ja es tipa LS šoreiz, ko man vajadzētu redzēt? 528 00:25:40,490 --> 00:25:44,930 Cerams, vienkārši sveiki un hello.c. 529 00:25:44,930 --> 00:25:47,286 Tagad, kā malā, jūs pamanīt šo zvaigzni, zvaigznīti, 530 00:25:47,286 --> 00:25:48,660 kas ir beigās manas programmas. 531 00:25:48,660 --> 00:25:50,201 Un viņi arī rāda uz augšu zaļā krāsā. 532 00:25:50,201 --> 00:25:53,970 Tas ir tikai CS50 IDE veids, no cluing tevi faktu 533 00:25:53,970 --> 00:25:55,280 ka tas nav pirmkods. 534 00:25:55,280 --> 00:25:58,880 Tas ir izpildāmā A skrienams programma, ka jūs faktiski var palaist 535 00:25:58,880 --> 00:26:01,020 darot dot slīpsvītra, un tad tas ir nosaukums. 536 00:26:01,020 --> 00:26:05,860 >> Tagad, ļaujiet man iet uz priekšu un izņemiet Tas, rm hello, Enter, noņemt regulāru 537 00:26:05,860 --> 00:26:08,010 failu hello, jā. 538 00:26:08,010 --> 00:26:11,180 Un tagad, ja es tipa LS, mēs esam atpakaļ uz hello.c. 539 00:26:11,180 --> 00:26:13,917 Izmēģiniet nedrīkst izdzēst savu faktiskais pirmkodu. 540 00:26:13,917 --> 00:26:16,250 Pat tad, ja ir pazīmes, iebūvēts CS50 IDE kur 541 00:26:16,250 --> 00:26:19,870 jūs varat iet caur jūsu pārskatīšanas vēsturi un ar laiku attīt ja jūs nejauši 542 00:26:19,870 --> 00:26:23,660 izdzēst kaut ko, esiet piesardzīgs kā uz šiem liek jā vai nē, 543 00:26:23,660 --> 00:26:25,381 par to, ko jūs tiešām vēlaties to darīt. 544 00:26:25,381 --> 00:26:27,380 Un, ja es iet uz augšu uz augšu kreisajā stūrī šeit, 545 00:26:27,380 --> 00:26:30,696 viss, kas paliek, ir hello.c. 546 00:26:30,696 --> 00:26:32,570 Tātad tur ir ķekarus citas komandas, kas jums 547 00:26:32,570 --> 00:26:37,550 var izpildīt pasaulē Linux, viens no tiem ir, atkal, Make. 548 00:26:37,550 --> 00:26:40,180 Un mēs ejam padarīt mana programma tagad šādi. 549 00:26:40,180 --> 00:26:43,270 >> Tā vietā, lai dara šķindēt, nevis uz šķindēt-o, 550 00:26:43,270 --> 00:26:45,860 Es esmu gatavojas vienkārši burtiski tips, veikt Sveiki. 551 00:26:45,860 --> 00:26:49,630 Un tagad paziņojums, es esmu ne rakstīt padarīt hello.c. 552 00:26:49,630 --> 00:26:50,910 Es rakstīt darīt Sveiki. 553 00:26:50,910 --> 00:26:54,840 >> Un šī programma Make ka nāk ar CS50 IDE, un vairāk 554 00:26:54,840 --> 00:26:57,090 parasti ar Linux, ir programma, kas ir 555 00:26:57,090 --> 00:26:59,120 gatavojas veikt programmu, ko sauc Sveiki. 556 00:26:59,120 --> 00:27:03,680 Un tas notiek, lai pieņemt, pēc vienošanās, ka, ja šī programma var tikt veikta, 557 00:27:03,680 --> 00:27:09,030 tas būs jāizdara no avota kods failu beidzas dot c, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Tātad, ja es hit Enter tagad, paziņojis, ka komanda, kas izpaužas izpildīts 559 00:27:12,210 --> 00:27:14,340 faktiski pat ilgāk Pirms nekā agrāk. 560 00:27:14,340 --> 00:27:16,670 Un tas ir tāpēc, ka mēs esam iepriek CS50 IDE ir 561 00:27:16,670 --> 00:27:19,878 dažas papildu funkcijas uzcelta, ka mums nevajag tikai vēl, bet drīz būs. 562 00:27:19,878 --> 00:27:23,470 Bet galvenais lieta saprast tagad man ir Sveiki programmu. 563 00:27:23,470 --> 00:27:27,080 >> Ja es tipa LS atkal, es ir hello programmu. 564 00:27:27,080 --> 00:27:32,070 Un es varu palaist to ar dot slash a.out, nē, 565 00:27:32,070 --> 00:27:35,590 jo viss punkts tas vingrinājums bija dot slash sveiki. 566 00:27:35,590 --> 00:27:38,089 Un tagad man ir mana Sveika, pasaule. 567 00:27:38,089 --> 00:27:39,880 Tātad virzās uz priekšu, mēs esam gandrīz vienmēr ir tikai 568 00:27:39,880 --> 00:27:42,088 gatavojas sastādīt mūsu programmas izmantojot komandu Marka. 569 00:27:42,088 --> 00:27:45,300 Un tad mēs ejam, lai palaistu tos dot slīpsvītra, un programmas nosaukumu. 570 00:27:45,300 --> 00:27:49,610 Bet saprast, kas darīt ir dara tu, ir tas pats nav kompilatoru. 571 00:27:49,610 --> 00:27:53,310 Tas ir tikai ērtības programma kas zina, kā izraisīt kompilators 572 00:27:53,310 --> 00:27:56,470 palaist, lai jūs pats varat to izmantot. 573 00:27:56,470 --> 00:28:00,220 >> Kādas citas komandas pastāv Linux, un, savukārt, CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Mēs drīz redzēt, ka tur ir CD komandu, Mainīt Directory. 575 00:28:03,107 --> 00:28:05,190 Tas ļauj jums laikā Jūsu komandrindas interfeisu 576 00:28:05,190 --> 00:28:07,610 virzīties uz priekšu, un atpakaļ, un atvērt dažādas mapes 577 00:28:07,610 --> 00:28:08,860 neizmantojot peli. 578 00:28:08,860 --> 00:28:12,470 >> LS mēs redzējām, kas apzīmē sarakstu faili pašreizējā direktorijā. 579 00:28:12,470 --> 00:28:14,650 Padarīt Dir, jūs varat iespējams sākt secināt 580 00:28:14,650 --> 00:28:18,150 ko tie nozīmē now-- veikt direktoriju, ja jūs vēlaties, lai izveidotu mapi. 581 00:28:18,150 --> 00:28:21,270 RM par noņemt RM Dir par noņemt directory-- un tie, 582 00:28:21,270 --> 00:28:24,160 atkal, ir komandrindas ekvivalenti, ko jūs 583 00:28:24,160 --> 00:28:26,945 varētu darīt CS50 IDE ar peli. 584 00:28:26,945 --> 00:28:28,820 Bet jūs ātri atrast ka dažreiz tas ir tikai 585 00:28:28,820 --> 00:28:30,610 daudz ātrāk darīt lietas ar klaviatūru, 586 00:28:30,610 --> 00:28:33,690 un galu galā daudz spēcīgāks. 587 00:28:33,690 --> 00:28:36,440 >> Bet tas ir grūti apgalvot, ka kaut ko mēs esam darījuši līdz šim 588 00:28:36,440 --> 00:28:39,990 ir viss, kas spēcīgs, kad visi mēs esam bijuši saku ir, hello pasaule. 589 00:28:39,990 --> 00:28:43,740 Un, patiesībā, es hardcoded vārdi sveiki pasaules manā programmā. 590 00:28:43,740 --> 00:28:45,530 Nav dinamika vēl. 591 00:28:45,530 --> 00:28:49,320 Scratch bija par kārtu interesantāku pagājušajā nedēļā. 592 00:28:49,320 --> 00:28:51,220 >> Un tāpēc pieņemsim tur nokļūt. 593 00:28:51,220 --> 00:28:55,310 Paņemsim solis, ka līdz veids, kā dažas no šīm funkcijām. 594 00:28:55,310 --> 00:28:59,470 Tātad ne tikai C nāk ar printf, un ķekarus citas funkcijas 595 00:28:59,470 --> 00:29:01,850 daži no kuriem mēs redzēsim laika gaitā, tā nav 596 00:29:01,850 --> 00:29:05,760 padara to tik vienkārši labi out no vārtiem iegūt lietotāja ievadi. 597 00:29:05,760 --> 00:29:08,140 >> Patiesībā, viens no trūkumiem Valodu, piemēram, C, 598 00:29:08,140 --> 00:29:10,140 un pat Java un vēl citi, ir tas, ka tā nav 599 00:29:10,140 --> 00:29:15,860 padara to viegli, lai tikai iegūtu lietas, piemēram, veseli skaitļi no lietotājiem, vai virknes, vārdiem, 600 00:29:15,860 --> 00:29:19,970 un frāzes, nemaz nerunājot par lietām, piemēram, peldošā punkta vērtības vai reāliem skaitļiem 601 00:29:19,970 --> 00:29:23,240 ar cipariem aiz komata, un tiešām ilgi numurus, kā mēs drīz redzēt. 602 00:29:23,240 --> 00:29:27,000 Tātad šis saraksts funkcijas šeit, šie ir līdzīgi citiem Scratch puzzle gabalus 603 00:29:27,000 --> 00:29:31,090 ka mēs esam iepriekš uzstādītas CS50 IDE, ka mēs izmantosim uz pāris nedēļām 604 00:29:31,090 --> 00:29:34,010 kā mācību riteņiem veidu, un beidzot ņemt tos off, un izskatās 605 00:29:34,010 --> 00:29:37,210 zem motora pārsega, iespējams, pie kā šīs lietas tiek īstenotas. 606 00:29:37,210 --> 00:29:40,460 >> Bet, lai to izdarītu, pieņemsim faktiski uzrakstīt programmu. 607 00:29:40,460 --> 00:29:41,770 Ļaujiet man iet uz priekšu tagad. 608 00:29:41,770 --> 00:29:44,750 Un es esmu gatavojas, lai izveidotu jaunu failu, noklikšķinot uz šo maz plus, 609 00:29:44,750 --> 00:29:45,970 un noklikšķinot jaunu failu. 610 00:29:45,970 --> 00:29:49,250 >> Es esmu gatavojas, lai saglabātu šo nākamo viens, kā, teiksim, string.c, 611 00:29:49,250 --> 00:29:50,750 jo es gribu spēlēt ar stīgām. 612 00:29:50,750 --> 00:29:53,990 Un stīgu C ir tikai rakstzīmju sekvence. 613 00:29:53,990 --> 00:29:56,090 Tāpēc tagad iesim uz priekšu un darīt šādi. 614 00:29:56,090 --> 00:30:01,204 >> Iekļaut standarta IO.h-- un izrādās standarta IO, 615 00:30:01,204 --> 00:30:03,360 IO nozīmē tikai ieejas un izejas. 616 00:30:03,360 --> 00:30:05,920 Tātad izrādās, ka šī līnija šeit ir tas, ko 617 00:30:05,920 --> 00:30:08,140 ir kaimiņu mums izmantot printf. 618 00:30:08,140 --> 00:30:10,410 Printf, protams, ražo produkciju. 619 00:30:10,410 --> 00:30:15,000 Tātad, lai izmantotu printf, izrādās out jums ir, lai šo rindiņu kodu 620 00:30:15,000 --> 00:30:16,040 augšpusē jūsu failu. 621 00:30:16,040 --> 00:30:18,456 >> Un mēs būsim atpakaļ uz to, ko tas tiešām nozīmē pirms ilgi. 622 00:30:18,456 --> 00:30:20,400 Izrādās, ka jebkurš C programma man rakstīt, 623 00:30:20,400 --> 00:30:23,640 Man, lai sāktu to ar kods, kas izskatās šādi. 624 00:30:23,640 --> 00:30:26,860 Un jūs pamanīsiet CS50 IDE, un cita integrēta attīstība 625 00:30:26,860 --> 00:30:30,050 vidēm, piemēram, to, gatavojas izmēģināt, kā vislabāk 626 00:30:30,050 --> 00:30:31,780 viņi var pabeigt savu domu. 627 00:30:31,780 --> 00:30:35,930 Patiesībā, pirms brīža, ja es atsaukt ko es tikko darīju, es hit Enter. 628 00:30:35,930 --> 00:30:39,160 >> Tad es hit atvērtu cirtaini lencēm, hit Enter vēlreiz. 629 00:30:39,160 --> 00:30:40,430 Un tas gatavo mana doma. 630 00:30:40,430 --> 00:30:45,140 Tas deva man jaunu līniju, izrobota ne mazāk jauku stilistisko iemeslu dēļ mēs redzēsim. 631 00:30:45,140 --> 00:30:48,559 Un tad tas automātiski man iedeva ka cirtaini lencēm, lai pabeigtu manu domu. 632 00:30:48,559 --> 00:30:50,600 Tagad tas ne vienmēr uzminēt, ko jūs vēlaties darīt. 633 00:30:50,600 --> 00:30:53,620 Bet liela daļa, tā dara saglabātu jums dažas keystrokes. 634 00:30:53,620 --> 00:30:59,560 Tātad pirms brīža, mums bija šis program-- hello, pasaule, un pēc tam apkopo to, 635 00:30:59,560 --> 00:31:00,460 un tad skrēja to. 636 00:31:00,460 --> 00:31:01,867 Bet tur nav dinamisms šeit. 637 00:31:01,867 --> 00:31:03,700 Ko darīt, ja mēs vēlējāmies darīt kaut ko citu? 638 00:31:03,700 --> 00:31:07,630 Nu, ko, ja es gribēju, lai faktiski saņemt virkni no lietotāja? 639 00:31:07,630 --> 00:31:11,250 Es esmu gatavojas izmantot puzzles gabaliņam sauc tieši that-- saņemt virkni. 640 00:31:11,250 --> 00:31:15,860 >> Izrādās, C, ka, ja jūs nevēlaties sniegt ieguldījumu puzzle gabals, 641 00:31:15,860 --> 00:31:19,360 vai pareizāk uz funkciju, jums burtiski vienkārši darīt atvērtu iekavu, 642 00:31:19,360 --> 00:31:20,430 close iekavas. 643 00:31:20,430 --> 00:31:25,540 Tātad, tas ir tā, it kā tur ir nav balta kaste ievadīts. 644 00:31:25,540 --> 00:31:27,720 Say bloks pirms bija mazliet balta kaste. 645 00:31:27,720 --> 00:31:29,660 Mums nav, ka balta kaste tagad. 646 00:31:29,660 --> 00:31:33,310 >> Bet, kad es aicinu get virkni, es gribu, lai rezultātu kaut kur. 647 00:31:33,310 --> 00:31:37,680 Tik ļoti bieži paradigma C ir zvanu funkciju, piemēram, get virkni šeit, 648 00:31:37,680 --> 00:31:41,070 un pēc tam uzglabāt savu atgriešanās vērtību. 649 00:31:41,070 --> 00:31:44,450 Tas ir rezultāts tās pūles kaut ko. 650 00:31:44,450 --> 00:31:47,630 >> Un kāda ir būvēt plānošanā, 651 00:31:47,630 --> 00:31:53,450 vai nu nulles vai nu C, ka mēs var izmantot, lai faktiski saglabātu kaut ko? 652 00:31:53,450 --> 00:31:55,990 Sauc to mainīga, vai ne? 653 00:31:55,990 --> 00:32:00,320 Un nulles, mums nav īsti vienalga, kas notiek ar mainīgajiem. 654 00:32:00,320 --> 00:32:02,170 >> Bet šajā gadījumā, mēs faktiski darīt. 655 00:32:02,170 --> 00:32:03,719 Es esmu gatavojas teikt virkni. 656 00:32:03,719 --> 00:32:05,510 Un tad es varētu zvanīt Tas kaut ko es gribu. 657 00:32:05,510 --> 00:32:08,340 Es esmu gatavojas to nosaukt nosaukums, izpaužas saņemt virkni. 658 00:32:08,340 --> 00:32:10,250 >> Un tagad, pat ja tu esi maz jauni, 659 00:32:10,250 --> 00:32:11,984 paziņojums, ka es esmu trūkst dažas detaļas. 660 00:32:11,984 --> 00:32:13,150 Es esmu aizmirstot semikolu. 661 00:32:13,150 --> 00:32:14,400 Man vajag, lai pabeigtu šo domu. 662 00:32:14,400 --> 00:32:17,480 Tāpēc es esmu gatavojas pārvietot savu kursoru, un hit semikolu tur. 663 00:32:17,480 --> 00:32:19,130 Un ko es esmu tikko darījis? 664 00:32:19,130 --> 00:32:21,440 Šajā rindā kodu, numurs 5 brīdī, 665 00:32:21,440 --> 00:32:23,799 Es esmu aicinot get virkne ar bez ieejas. 666 00:32:23,799 --> 00:32:26,090 Tāpēc nav maz balts kaste patīk Save bloks ir. 667 00:32:26,090 --> 00:32:28,590 >> Es tikai saku, hey, dators, atnesiet man virkni. 668 00:32:28,590 --> 00:32:31,390 Vienādības zīme nav īsti vienādības zīmi, per se. 669 00:32:31,390 --> 00:32:33,790 Tas ir uzdevums operators, kas nozīmē, 670 00:32:33,790 --> 00:32:37,860 hey, datoru, pārvietot vērtību no tiesības pār pa kreisi. 671 00:32:37,860 --> 00:32:40,480 Un pa kreisi, man ir šādas. 672 00:32:40,480 --> 00:32:43,580 >> Hey, dators, man string-- rakstzīmju sekvence. 673 00:32:43,580 --> 00:32:45,637 Un aicinu šo String nosaukums. 674 00:32:45,637 --> 00:32:47,220 Un man pat nav, lai izsauktu to nosaukums. 675 00:32:47,220 --> 00:32:49,970 >> Es varētu to nosaukt, parasti, kaut kā S, 676 00:32:49,970 --> 00:32:52,900 līdzīgi mēs izmantojām i, lai zvaniet mainīgais i. 677 00:32:52,900 --> 00:32:54,829 Bet tagad man ir nepieciešams kaut ko darīt ar to. 678 00:32:54,829 --> 00:32:57,370 Tas būtu diezgan stulba izmēģināt šo kodu apkopojot, darbojas 679 00:32:57,370 --> 00:32:59,410 šī programma, lai gan Es saņemu virkni, 680 00:32:59,410 --> 00:33:01,580 jo tas joprojām ir tikai gatavojas teikt sveiki pasauli. 681 00:33:01,580 --> 00:33:06,140 >> Bet ko tad, ja es vēlos to mainīt. 682 00:33:06,140 --> 00:33:07,940 Kāpēc man darīt? 683 00:33:07,940 --> 00:33:11,632 Procenti s, komats s. 684 00:33:11,632 --> 00:33:13,090 Un tas ir nedaudz mistisks joprojām. 685 00:33:13,090 --> 00:33:15,560 >> Tāpēc ļaujiet man manu mainīgie vairāk skaidrs. 686 00:33:15,560 --> 00:33:17,510 Ļaujiet man nosaukt šo mainīgā nosaukums. 687 00:33:17,510 --> 00:33:20,230 Un pieņemsim redzēt, ja mēs nevaram kaitināt izņemot to, kas notiek šeit. 688 00:33:20,230 --> 00:33:22,770 >> Tātad uz līnijas pieci, es saņemu virkni. 689 00:33:22,770 --> 00:33:25,620 Un es esmu glabāšanai šo virkni, kāds lietotājs ir ievadījis 690 00:33:25,620 --> 00:33:28,430 viņa vai viņas klaviatūras, ar mainīgo sauc vārds. 691 00:33:28,430 --> 00:33:30,590 Un izrādās, ka printf nav tikai 692 00:33:30,590 --> 00:33:34,220 veikt vienu argumentu dubultā citātus, viens ievades dubultās pēdiņas. 693 00:33:34,220 --> 00:33:39,100 >> To var veikt divus, vai trīs, vai vairāk, piemēram, ka otrais, vai trešais, vai ceturtais, 694 00:33:39,100 --> 00:33:42,320 ir visi vārdi mainīgajiem, vai konkrēti vērtības, 695 00:33:42,320 --> 00:33:48,610 ka jūs vēlaties, lai kontaktdakšu, dinamiski, ka virkne pēdiņās. 696 00:33:48,610 --> 00:33:52,110 Citiem vārdiem sakot, tas, ko Būtu nepareizi ar šo? 697 00:33:52,110 --> 00:33:57,920 Ja es tikko teicu sveiki nosaukums, reversā slīpsvītra n, izglāba manu failu, apkopoti manu kodu, 698 00:33:57,920 --> 00:34:01,660 un skrēja tas, kas notiktu? 699 00:34:01,660 --> 00:34:05,139 >> Tas ir tikai gatavojas teikt, sveiki nosaukt, burtiski N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 kas ir sava veida stulba, jo tas neatšķiras no pasaules. 701 00:34:07,900 --> 00:34:10,400 Tātad kaut pēdiņās ir ko burtiski tiek drukāts. 702 00:34:10,400 --> 00:34:12,520 Tātad, ja es gribu būt vietturis tur, 703 00:34:12,520 --> 00:34:14,422 Man tiešām ir nepieciešams, lai izmantotu dažas īpašas sintakse. 704 00:34:14,422 --> 00:34:17,380 Un izrādās, ja jūs lasīt dokumentācija printf funkciju, 705 00:34:17,380 --> 00:34:21,320 tas jums pateiks, ka ja jūs izmantojat procentiem s, 706 00:34:21,320 --> 00:34:23,920 Jūs varat aizstāt vērtību šādi. 707 00:34:23,920 --> 00:34:27,190 >> Pēc komats pēc tā dubultā quote, jūs vienkārši 708 00:34:27,190 --> 00:34:29,179 uzrakstīt nosaukumu mainīgais, ka vēlaties 709 00:34:29,179 --> 00:34:33,790 iespraudiet minētajā formātā kodu vai formātā apzīmētājs, 710 00:34:33,790 --> 00:34:35,469 procenti s stīgas. 711 00:34:35,469 --> 00:34:39,190 Un tagad, ja es esmu saglabājis manu failu, Es dodos atpakaļ uz leju, lai manu terminālu. 712 00:34:39,190 --> 00:34:42,870 Un es tipa Make String, jo, atkal, sauc šo 713 00:34:42,870 --> 00:34:45,510 failu, es izvēlējos pirms ir string.c. 714 00:34:45,510 --> 00:34:48,510 >> Tāpēc es esmu gatavojas teikt Make String, ievadiet. 715 00:34:48,510 --> 00:34:51,550 Ak mans Dievs, apskatīt visas kļūdas mēs esam padarījuši jau. 716 00:34:51,550 --> 00:34:55,540 Un tas is-- ko, tas ir patiešām kā sešus, septiņus līnija programma? 717 00:34:55,540 --> 00:34:57,790 Tātad, tas ir, ja tā var ļoti ātri iegūt milzīgs. 718 00:34:57,790 --> 00:35:00,890 >> Šī termināla logs ir tagad tikai regurgitated 719 00:35:00,890 --> 00:35:03,230 milzīgs skaits kļūdu ziņojumus. 720 00:35:03,230 --> 00:35:07,560 Protams, man nav lielāka kļūda ziņas nekā es koda rindiņas. 721 00:35:07,560 --> 00:35:08,680 Tātad, kas notiek? 722 00:35:08,680 --> 00:35:10,920 >> Nu, labākā stratēģija darīt jebkurā laikā jums 723 00:35:10,920 --> 00:35:13,710 do sastopas pārliecinošu saraksts, kļūdas, piemēram, ka, 724 00:35:13,710 --> 00:35:16,690 ir ritināt atpakaļ, meklēt komandu jūs vienkārši skrēja, kas manā gadījumā 725 00:35:16,690 --> 00:35:18,020 ir veikt virkni. 726 00:35:18,020 --> 00:35:21,630 Paskaties, kas padara to darīja, un tas, ka garš šķindēt komandu, nav liels darījumu tur. 727 00:35:21,630 --> 00:35:22,950 >> Bet sarkanā ir slikti. 728 00:35:22,950 --> 00:35:24,750 Zaļā ir cenšas būt maigs un izpalīdzīgi. 729 00:35:24,750 --> 00:35:26,140 Bet tas joprojām ir slikti, šajā gadījumā. 730 00:35:26,140 --> 00:35:27,510 Bet kur tas ir slikti? 731 00:35:27,510 --> 00:35:31,450 >> String.c, līnija pieci, raksturs pieci. 732 00:35:31,450 --> 00:35:32,930 Tātad tas ir tikai kopīgs konvencija. 733 00:35:32,930 --> 00:35:36,060 Kaut kolu kaut nozīmē line skaits un raksturs numurs. 734 00:35:36,060 --> 00:35:41,080 Kļūda, izmantošana nedeklarētu identifikators virkne. 735 00:35:41,080 --> 00:35:42,900 Vai jūs domājāt standartu? 736 00:35:42,900 --> 00:35:45,530 >> Tātad, diemžēl, šķindēt cenšas būt noderīga. 737 00:35:45,530 --> 00:35:46,850 Bet tas ir nepareizi, šajā gadījumā. 738 00:35:46,850 --> 00:35:49,350 Nē, šķindēt, es nenozīmē standarta IO. 739 00:35:49,350 --> 00:35:51,070 Es nozīmēja, ka uz līnijas vienā, jā. 740 00:35:51,070 --> 00:35:53,420 >> Bet līnija pieci tas ir viens šeit. 741 00:35:53,420 --> 00:35:57,040 Un šķindēt nav saprast S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 Tas ir nedeklarētu identifikators A vārds tas vienkārši nekad nav redzējis. 743 00:36:01,490 --> 00:36:05,730 Un tas ir tāpēc, ka C, valoda mēs rakstiski kodu tieši tagad, 744 00:36:05,730 --> 00:36:08,070 nav mainīgos sauc stīgas. 745 00:36:08,070 --> 00:36:11,380 >> Tas nav, pēc noklusējuma, atbalstu kaut ko sauc virkni. 746 00:36:11,380 --> 00:36:16,750 Tas ir CS50 gabals žargons, bet ļoti parasto. 747 00:36:16,750 --> 00:36:18,600 Bet es varu noteikt šo šādi. 748 00:36:18,600 --> 00:36:22,090 >> Ja es pievienot vienu rindiņu kodu uz augšu no šīs programmas, 749 00:36:22,090 --> 00:36:27,890 ietver CS50.h, kas ir vēl viens fails kaut kur iekšpusē CS50 IDE, kaut kur 750 00:36:27,890 --> 00:36:30,820 uz cietā diska, tā sakot, no Ubuntu operētājsistēmas 751 00:36:30,820 --> 00:36:33,590 ka es skrienu, ka ir fails, kas ir 752 00:36:33,590 --> 00:36:38,740 gatavojas mācīt apkalpojošā Sistēma, ko string ir, tikai 753 00:36:38,740 --> 00:36:41,930 piemēram, standarta io.h ir fails operētājsistēmu, kas ir 754 00:36:41,930 --> 00:36:44,430 gatavojas mācīt to, ko printf ir. 755 00:36:44,430 --> 00:36:46,810 >> Patiesi, mēs esam gotten ļoti līdzīga ziņa 756 00:36:46,810 --> 00:36:50,600 ja IO atzina standarts IO.h un centās izmantot printf. 757 00:36:50,600 --> 00:36:53,632 Tāpēc es esmu gatavojas iet uz priekšu un tikai Veikt kontroli L, lai notīrītu manu ekrānu. 758 00:36:53,632 --> 00:36:56,340 Vai arī jūs varat ierakstīt skaidrs, un tas būs vienkārši notīrīt termināļa logu. 759 00:36:56,340 --> 00:36:58,020 Bet jūs joprojām varat ritināt atpakaļ laikā. 760 00:36:58,020 --> 00:37:01,100 >> Un es esmu gatavojas atkārto Make String. 761 00:37:01,100 --> 00:37:03,660 Šķērsot mani pirksti šoreiz, Enter. 762 00:37:03,660 --> 00:37:05,380 Ak mans Dievs, tā strādāja. 763 00:37:05,380 --> 00:37:09,280 tas liecina man ilgu noslēpumains komandu tas ir tas, kas padara radīts caur šķindēt, 764 00:37:09,280 --> 00:37:10,460 bet ne kļūdu ziņojumus. 765 00:37:10,460 --> 00:37:12,460 Tātad realizēt, kaut gan jūs varētu saņemt pilnīgi 766 00:37:12,460 --> 00:37:14,480 nomākti ar skaits kļūdu ziņojumus, 767 00:37:14,480 --> 00:37:17,540 tas tikai varētu būt šo kaitinošas kaskādes efekts, kur šķindēt nesaprot 768 00:37:17,540 --> 00:37:19,620 viena lieta, kas nozīmē, ka pēc tam nesaprot nākamo vārdu, 769 00:37:19,620 --> 00:37:20,560 vai nākamajā rindā. 770 00:37:20,560 --> 00:37:22,850 Un tā tas vienkārši droseles uz jūsu kodu. 771 00:37:22,850 --> 00:37:24,440 Bet fix varētu būt vienkārši. 772 00:37:24,440 --> 00:37:27,822 Un tā vienmēr koncentrēties uz Pati pirmā līnija produkciju. 773 00:37:27,822 --> 00:37:29,530 Un, ja jums nav saprotu, paskatieties 774 00:37:29,530 --> 00:37:32,480 atslēgvārdus, kas varētu būt clues, un līniju skaits, 775 00:37:32,480 --> 00:37:34,650 un raksturs, kur ka kļūda varētu būt. 776 00:37:34,650 --> 00:37:40,328 >> Tagad ļaujiet man iet uz priekšu un ievadiet dot slash, stīgu, ievadiet. 777 00:37:40,328 --> 00:37:44,340 Hm, tas nav saprotams, sveiki neko. 778 00:37:44,340 --> 00:37:46,210 Kāpēc? 779 00:37:46,210 --> 00:37:48,170 Nu, atceros, kur tas darbojas? 780 00:37:48,170 --> 00:37:53,730 >> Tas ir iespējams, iestrēdzis brīdī pa apli, ja jūs, uz sešiem līniju, 781 00:37:53,730 --> 00:37:56,950 jo Saņemt String dizains, raksta CS50 darbinieki, 782 00:37:56,950 --> 00:38:00,350 ir burtiski domāts, lai tikai sēdēt tur gaida, un gaida, 783 00:38:00,350 --> 00:38:01,850 un gaida virkni. 784 00:38:01,850 --> 00:38:03,792 Viss, ko mēs saprotam ar auklu ir cilvēka ieejas. 785 00:38:03,792 --> 00:38:04,500 Tātad, jūs zināt, ko? 786 00:38:04,500 --> 00:38:05,166 Ļaujiet man iet uz priekšu. 787 00:38:05,166 --> 00:38:08,704 Un tikai par kaprīze, ļaujiet man ierakstīt savu vārdu, David, ievadiet. 788 00:38:08,704 --> 00:38:10,120 Tagad man ir daudz dinamisku programmu. 789 00:38:10,120 --> 00:38:11,240 Tā teica, sveiki David. 790 00:38:11,240 --> 00:38:16,280 >> Ja es iet uz priekšu un palaist to atkal, ļaujiet man mēģināt pateikt Zamila vārdu, ievadiet. 791 00:38:16,280 --> 00:38:17,940 Un tagad mums ir dinamiska programma. 792 00:38:17,940 --> 00:38:19,380 Man nav grūti kodēta pasauli. 793 00:38:19,380 --> 00:38:21,760 Man nav grūti kodēta nosaukt, vai David, vai Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Tagad tas ir daudz vairāk, piemēram, programmu mēs zinām, kur, ja tas veic ieguldījumu, 795 00:38:25,350 --> 00:38:27,870 tas rada nedaudz atšķirīgu produkciju. 796 00:38:27,870 --> 00:38:31,020 Tagad tas nav labākais lietotāju pieredzi, vai UX. 797 00:38:31,020 --> 00:38:33,000 Es palaist programmu. 798 00:38:33,000 --> 00:38:35,830 >> Es nezinu, ko es esmu vajadzēja ko darīt, ja es tiešām apskatīt 799 00:38:35,830 --> 00:38:37,290 vai atcerēties pirmkodu. 800 00:38:37,290 --> 00:38:39,640 Tātad, pieņemsim padarīt lietotājam piedzīvot mazliet labāk 801 00:38:39,640 --> 00:38:41,240 ar vienkāršāko lietas. 802 00:38:41,240 --> 00:38:44,782 Ļaujiet man iet atpakaļ uz šo programma, un vienkārši teikt printf. 803 00:38:44,782 --> 00:38:48,870 >> Un ļaujiet man iet uz priekšu un teikt vārdu, kolu, un telpa, un pēc tam daļēji resnās zarnas. 804 00:38:48,870 --> 00:38:51,170 Un tikai sākas, ne negatīvu reakciju n. 805 00:38:51,170 --> 00:38:52,980 Un tas ir apzināta, jo es nevēlos 806 00:38:52,980 --> 00:38:54,590 ātru, lai pārietu uz nākamo rindiņu. 807 00:38:54,590 --> 00:38:58,800 >> Es gribu, tā vietā, to izdarītu, virkni recompile manu kodu jaunās mašīnas 808 00:38:58,800 --> 00:39:00,980 kods dot slīpsvītra virkni. 809 00:39:00,980 --> 00:39:02,460 Ah, tas ir daudz prettier. 810 00:39:02,460 --> 00:39:05,780 Tagad es tiešām zinu, ko dators grib, lai es daru, arī tā nosaukumu. 811 00:39:05,780 --> 00:39:10,020 >> Tāpēc es esmu gatavojas iet uz priekšu un ievadiet in Rob, ievadīt, un sveiki, Rob. 812 00:39:10,020 --> 00:39:13,640 Tātad, jāsaprot,, tas joprojām ir, beigās no dienas, tikai deviņi līnijas programmā. 813 00:39:13,640 --> 00:39:15,090 Bet mēs esam veikuši šīs bērnu pasākumus. 814 00:39:15,090 --> 00:39:18,380 >> Mēs rakstījām vienu līniju, ar kuriem mēs bija pazīstami, printf, hello pasaule. 815 00:39:18,380 --> 00:39:19,980 Tad mēs undid mazliet kas. 816 00:39:19,980 --> 00:39:21,560 Un mēs faktiski izmanto get virkni. 817 00:39:21,560 --> 00:39:23,362 Un mēs tossed šo vērtību mainīgā. 818 00:39:23,362 --> 00:39:26,070 Un tad mēs devāmies uz priekšu un uzlabota tā tālāk ar trešo pozīciju. 819 00:39:26,070 --> 00:39:29,220 Un šis iteratīvs process rakstīšanas programmatūru ir patiesi svarīgs. 820 00:39:29,220 --> 00:39:33,420 In CS50, un dzīvē kopumā, Jums nevajadzētu sēdēt, 821 00:39:33,420 --> 00:39:36,800 ir programma prātā, un mēģināt rakstīšana viss nopelt lieta visu uzreiz. 822 00:39:36,800 --> 00:39:40,810 >> Tas neizbēgami izraisīs veidā vairāk kļūdas nekā mēs paši redzēja šeit. 823 00:39:40,810 --> 00:39:44,070 Pat es, līdz šai dienai, pastāvīgi veikt citas stulba kļūdas, 824 00:39:44,070 --> 00:39:47,480 faktiski grūtāk kļūdas kas ir grūtāk izdomāt. 825 00:39:47,480 --> 00:39:52,095 Bet jums dos vairāk kļūdas vairāk rindas kods rakstīt visu uzreiz. 826 00:39:52,095 --> 00:39:54,220 Un tāpēc šī prakse, uzrakstīt mazliet koda 827 00:39:54,220 --> 00:39:57,930 ka jūs esat apmierināti ar, apkopot tas, palaist to, pārbaudītu to kopumā, 828 00:39:57,930 --> 00:40:01,370 tad pāriet on-- tāpēc, tāpat kā mēs tur layering un layering pagājušajā nedēļā, 829 00:40:01,370 --> 00:40:04,190 ēkas no kaut ko ļoti vienkārši kaut ko sarežģītāku, 830 00:40:04,190 --> 00:40:05,200 darīt to pašu šeit. 831 00:40:05,200 --> 00:40:08,500 Ne apsēsties, un mēģināt uzrakstīt visu problēmu. 832 00:40:08,500 --> 00:40:10,780 Faktiski veikt šos bērnu pasākumus. 833 00:40:10,780 --> 00:40:15,100 >> Tagad, stīgas ir ne visi lietderīgu unto sevi. 834 00:40:15,100 --> 00:40:18,210 Mēs gribētu tiešām, ideāli, tāpat kā ir kaut kas cits mūsu rīkkopa. 835 00:40:18,210 --> 00:40:20,990 Tātad, pieņemsim faktiski darīt tieši to. 836 00:40:20,990 --> 00:40:24,900 >> Ļaujiet man iet uz priekšu tagad un sakult nedaudz atšķirīga programma. 837 00:40:24,900 --> 00:40:28,320 Un mēs saucam par int.c, lai skaitlim. 838 00:40:28,320 --> 00:40:30,870 Es esmu gatavojas, līdzīgi, ietver CS550.h. 839 00:40:30,870 --> 00:40:33,060 Es esmu gatavojas iekļaut standarta IO. 840 00:40:33,060 --> 00:40:36,630 Un tas būs diezgan bieži šajās pirmajās dienās klasē. 841 00:40:36,630 --> 00:40:39,050 >> Un es esmu gatavojas gatavs sevi ar galveno funkciju. 842 00:40:39,050 --> 00:40:43,370 Un tagad tā vietā iegūt virkni, iesim uz priekšu un iegūt int. 843 00:40:43,370 --> 00:40:49,285 Sauksim to es, un sauc to saņemt int, tuvu Parens, semikols. 844 00:40:49,285 --> 00:40:51,410 Un tagad pieņemsim do kaut kas ar to, printf. 845 00:40:51,410 --> 00:40:56,190 >> Pieņemsim, ka kaut ko līdzīgu hello, slīpsvītru n, komats i. 846 00:40:56,190 --> 00:41:00,010 Tāpēc es esmu diezgan daudz atdarinot ko es darīju tikai pirms brīža. 847 00:41:00,010 --> 00:41:01,660 Man ir vietturi šeit. 848 00:41:01,660 --> 00:41:05,150 Esmu Comma esmu šeit, jo es gribu plug i minētajā vietturi. 849 00:41:05,150 --> 00:41:07,250 >> Tātad, pieņemsim iet uz priekšu un mēģināt Sastādot šo programmu. 850 00:41:07,250 --> 00:41:10,060 Fails sauc int.c. 851 00:41:10,060 --> 00:41:12,920 Tāpēc es esmu gatavojas teikt, padarīt int, ievadiet. 852 00:41:12,920 --> 00:41:16,420 Ak mans Dievs, bet nav liels galā, vai ne? 853 00:41:16,420 --> 00:41:17,230 Tur ir kļūda. 854 00:41:17,230 --> 00:41:19,810 >> Tur ir sintakses kļūda šeit tāds, ka programma nevar 855 00:41:19,810 --> 00:41:25,460 jāapkopo iekšpusē int.c, līniju septiņi, raksturs 27, kļūda formāts 856 00:41:25,460 --> 00:41:28,400 precizēts tipa char zvaigzne, kāds tas ir. 857 00:41:28,400 --> 00:41:30,020 Bet arguments tips ir int. 858 00:41:30,020 --> 00:41:33,110 >> Tātad arī šeit, mēs nebrauksim kuri paredzēti, lai gan šodien ir daudz materiāla, 859 00:41:33,110 --> 00:41:35,710 mēs spēsim apbērt jums ar absolūti katrs iezīme C, 860 00:41:35,710 --> 00:41:38,070 un programmēšana kopumā, tikai šajās pirmajās nedēļās. 861 00:41:38,070 --> 00:41:40,400 Tātad tur ir bieži būs žargons ar kuru jūs neesat pazīstami. 862 00:41:40,400 --> 00:41:43,350 Un, patiesībā, char zvaigzne ir kaut kas mēs spēsim atgriezties 863 00:41:43,350 --> 00:41:44,830 pēc nedēļas vai divām laikā. 864 00:41:44,830 --> 00:41:47,530 >> Bet tagad, pieņemsim redzēt, ja mēs varam apstrādāt vārdus, kas ir pazīstami. 865 00:41:47,530 --> 00:41:50,750 Formats-- tāpēc mēs dzirdējām formātā apzīmētājs, formāta kods pirms. 866 00:41:50,750 --> 00:41:51,840 Tas ir pazīstams. 867 00:41:51,840 --> 00:41:53,840 Type-- bet arguments ir tipa int. 868 00:41:53,840 --> 00:41:55,980 Pagaidiet minūti, man ir int. 869 00:41:55,980 --> 00:41:59,230 >> Varbūt procenti s faktiski ir dažas definētā nozīmē. 870 00:41:59,230 --> 00:42:00,230 Un, protams, tā dara. 871 00:42:00,230 --> 00:42:03,101 Vesels skaitlis, ja vēlaties printf aizstāt to, 872 00:42:03,101 --> 00:42:05,350 Jums tiešām ir izmantot atšķirīga formāta noteicēju. 873 00:42:05,350 --> 00:42:06,890 Un jūs nezināt ja vien kāds teicis, 874 00:42:06,890 --> 00:42:07,973 vai jums bija darījuši līdz šim. 875 00:42:07,973 --> 00:42:10,490 Bet procenti i ir tas, ko var parasti izmanto 876 00:42:10,490 --> 00:42:12,240 in printf par tapām veselam skaitlim. 877 00:42:12,240 --> 00:42:14,920 Jūs varat arī izmantot procentiem d par decimālo skaitlim. 878 00:42:14,920 --> 00:42:16,490 Bet es ir jauka un vienkārši šeit. 879 00:42:16,490 --> 00:42:17,590 Tātad mēs iet ar to. 880 00:42:17,590 --> 00:42:21,160 >> Tagad ļaujiet man iet uz priekšu un atkārto make int, Enter. 881 00:42:21,160 --> 00:42:23,328 Tas ir labi, nav kļūdu. 882 00:42:23,328 --> 00:42:27,260 Dot slash int-- OK, slikta lietotāja pieredzi, jo es neesmu sev teicu 883 00:42:27,260 --> 00:42:27,760 ko darīt. 884 00:42:27,760 --> 00:42:28,426 Bet tas ir jauki. 885 00:42:28,426 --> 00:42:29,480 Es esmu iepatikusies ātri. 886 00:42:29,480 --> 00:42:36,260 >> Un tagad ļaujiet man iet uz priekšu un ierakstiet Dāvidu, OK, Zamila, Robs. 887 00:42:36,260 --> 00:42:37,820 Labi, tāpēc šī ir laba lieta. 888 00:42:37,820 --> 00:42:41,710 Šoreiz, es esmu, izmantojot funkciju, puzzle gabals, ko sauc get int. 889 00:42:41,710 --> 00:42:44,230 Un izrādās out-- un mēs redzēt šo vēlāk term-- 890 00:42:44,230 --> 00:42:47,730 CS50 darbinieki ir īstenojusi saņemt string tādā veidā, 891 00:42:47,730 --> 00:42:50,350 ka tas būs tikai fiziski iegūt virkni jums. 892 00:42:50,350 --> 00:42:54,340 >> Tā ir īstenojusi get int in tādā veidā, ka tas būs tikai 893 00:42:54,340 --> 00:42:55,590 iegūt skaitlis jums. 894 00:42:55,590 --> 00:42:57,830 Un, ja jūs, cilvēka, nesadarbojas, tas ir 895 00:42:57,830 --> 00:43:00,590 burtiski tikai gatavojas saka vēlreiz, vēlreiz, vēlreiz, 896 00:43:00,590 --> 00:43:05,200 burtiski sēdēja tur looping, līdz tu liktu ar kādu burvju numuru, 897 00:43:05,200 --> 00:43:07,670 piemēram, 50, un sveiki 50. 898 00:43:07,670 --> 00:43:11,440 >> Vai, ja mēs palaist šo atkal un ierakstiet 42, hello 42. 899 00:43:11,440 --> 00:43:15,750 Un tā get int funkcija iekšpusē šo puzzle gabals 900 00:43:15,750 --> 00:43:19,050 ir pietiekami loģika, pietiekami doma, izdomāt, kas ir vārds? 901 00:43:19,050 --> 00:43:20,330 Un kas ir numurs? 902 00:43:20,330 --> 00:43:23,165 Tikai pieņemot, galu galā, skaitļi. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Tātad izrādās, ka šis nav tik izteiksmīga. 905 00:43:30,230 --> 00:43:30,910 tik tālu. 906 00:43:30,910 --> 00:43:33,690 Tātad, Yay, pēdējo reizi mēs gāja diezgan ātri 907 00:43:33,690 --> 00:43:38,320 jāiekļauj īstenošanas spēles, un animācijas, un mākslas darbi nulles. 908 00:43:38,320 --> 00:43:42,260 Un šeit, mums tiek saturs ar Hello World, un sveiki 50. 909 00:43:42,260 --> 00:43:43,696 >> Tas vēl nav viss, kas iedvesmo. 910 00:43:43,696 --> 00:43:46,070 Un, protams, tie vispirms maz piemēri prasīs kādu laiku 911 00:43:46,070 --> 00:43:47,510 rampas līdz uztraukums. 912 00:43:47,510 --> 00:43:49,854 Bet mums ir tik daudz vairāk kontrolēt tagad, patiesībā. 913 00:43:49,854 --> 00:43:51,770 Un mēs ejam uz ļoti ātri sākt izkārtojums 914 00:43:51,770 --> 00:43:53,870 virsū šiem pamata primitīvi. 915 00:43:53,870 --> 00:43:56,370 >> Bet vispirms, pieņemsim saprast kādi ierobežojumi. 916 00:43:56,370 --> 00:43:58,620 Patiesībā, viena no lietām, Scratch nav viegli 917 00:43:58,620 --> 00:44:00,990 darīsim tiešām izskatās zem motora pārsega, 918 00:44:00,990 --> 00:44:03,740 un saprast, ko dators ir, ko tā var darīt, 919 00:44:03,740 --> 00:44:05,250 un kādi ir tās ierobežojumi. 920 00:44:05,250 --> 00:44:08,580 Un, protams, ka trūkums izpratne, iespējams, ilgtermiņa 921 00:44:08,580 --> 00:44:12,520 var novest pie mūsu pašu mistakes-- rakstiski bugs, rakstot nedroši programmatūru, kas 922 00:44:12,520 --> 00:44:13,880 izpaužas ielauzies kādā veidā. 923 00:44:13,880 --> 00:44:17,130 >> Tātad pieņemsim veikt dažus soļus Saprotot to mazliet labāk, 924 00:44:17,130 --> 00:44:19,710 veids, teiksim, šādu piemēru. 925 00:44:19,710 --> 00:44:23,550 Es iešu uz priekšu un īstenot nekustamo ātri programma, ko sauc papildinātājs. 926 00:44:23,550 --> 00:44:25,134 Tāpat kā, pieņemsim pievienot dažus numurus kopā. 927 00:44:25,134 --> 00:44:27,800 Un es esmu gatavojas kodu dažas stūriem šeit, un vienkārši kopēt un ielīmēt 928 00:44:27,800 --> 00:44:30,270 kur es biju agrāk, tikai lai mēs varētu iegūt notiek ātrāk. 929 00:44:30,270 --> 00:44:33,090 Tāpēc tagad es esam ieguvuši pamata sākumu par programmu, ko sauc papildinātājs. 930 00:44:33,090 --> 00:44:34,670 >> Un iesim uz priekšu un darīt to. 931 00:44:34,670 --> 00:44:38,680 Es iešu uz priekšu un teiksim, intx izpaužas saņemt int. 932 00:44:38,680 --> 00:44:39,430 Un jūs zināt, ko? 933 00:44:39,430 --> 00:44:40,990 Veidosim labāku lietotāja pieredzi. 934 00:44:40,990 --> 00:44:45,740 >> Tāpēc pieņemsim tikai teikt x ir, un efektīvi nekavējoties lietotājam, lai dotu mums x. 935 00:44:45,740 --> 00:44:50,600 Un tad ļaujiet man iet uz priekšu un saka, printf Kā par y ir, šoreiz cerot 936 00:44:50,600 --> 00:44:53,140 divas vērtības no lietotāja. 937 00:44:53,140 --> 00:44:59,759 Un tad pieņemsim tikai iet uz priekšu un teiksim, printf, tad par x un y summa ir. 938 00:44:59,759 --> 00:45:01,300 Un tagad es nevēlos darīt procentiem s. 939 00:45:01,300 --> 00:45:09,080 Es gribu darīt procentiem i, reversā slīpsvītra n, un pēc tam plug summas vērtības. 940 00:45:09,080 --> 00:45:10,620 >> Tātad, kā es varu iet par to izdarīt? 941 00:45:10,620 --> 00:45:11,270 Tu zini ko? 942 00:45:11,270 --> 00:45:12,840 Es zinu, kā izmantot mainīgos. 943 00:45:12,840 --> 00:45:15,140 Ļaujiet man tikai pasludināt jaunu, int z. 944 00:45:15,140 --> 00:45:16,770 >> Un es esmu gatavojas veikt minējums šeit. 945 00:45:16,770 --> 00:45:21,470 Ja ir vienādas zīmes šis valoda, varbūt es vienkārši varu darīt x plus y, 946 00:45:21,470 --> 00:45:23,660 tik ilgi, kamēr es galu mana domāju ar semikolu? 947 00:45:23,660 --> 00:45:28,170 Tagad es varu iet atpakaļ uz leju šeit, pievienojiet z, pabeigt šo domu ar semikolu. 948 00:45:28,170 --> 00:45:33,160 Un pieņemsim redzēt tagad, ja tie sekvences lines-- x ir iegūt int. 949 00:45:33,160 --> 00:45:34,770 Y ir iegūt int. 950 00:45:34,770 --> 00:45:37,980 >> Pievieno x un y, uzglabāt vērtību z-- tā, atkal, atcerieties vienādības zīmi 951 00:45:37,980 --> 00:45:38,560 nav vienāds. 952 00:45:38,560 --> 00:45:41,100 Tas ir uzdevums no labās uz kreiso. 953 00:45:41,100 --> 00:45:45,180 Un pieņemsim izdrukāt ka summa no X un Y nav burtiski Z, 954 00:45:45,180 --> 00:45:46,830 bet to, kas ir iekšā z. 955 00:45:46,830 --> 00:45:50,090 Tātad, pieņemsim padarīt papildinātāja - jauki, nav kļūdu šoreiz. 956 00:45:50,090 --> 00:45:53,030 Dot slash papildinātāja, ievadiet, x būs 1. 957 00:45:53,030 --> 00:45:55,380 >> Y būs 2. 958 00:45:55,380 --> 00:45:58,964 Un pie tam x un y summa ir 3. 959 00:45:58,964 --> 00:46:00,130 Tā ka viss ir labi un labs. 960 00:46:00,130 --> 00:46:03,260 >> Tātad jūs varētu iedomāties, ka matemātiku jāstrādā programmu, kā šis. 961 00:46:03,260 --> 00:46:04,040 Bet jūs zināt, ko? 962 00:46:04,040 --> 00:46:06,904 Vai tas ir mainīgs, līnija 12, pat nepieciešams? 963 00:46:06,904 --> 00:46:09,820 Jums nav nepieciešams, lai nokļūt ieradumos no vienkārši uzglabātu lietas mainīgajiem 964 00:46:09,820 --> 00:46:10,980 tikai tāpēc, ka tas ir iespējams. 965 00:46:10,980 --> 00:46:13,550 Un, patiesībā, tas ir vispār uzskatīts par sliktu dizains 966 00:46:13,550 --> 00:46:18,100 ja jūs veidojat mainīgais, ko sauc z šajā gadījumā, uzglabājot kaut ko tā, 967 00:46:18,100 --> 00:46:21,390 un tad uzreiz to izmanto, bet nekad atkal. 968 00:46:21,390 --> 00:46:24,700 Kāpēc dot kaut vārdu tāpat z ja jūs burtiski 969 00:46:24,700 --> 00:46:26,770 gatavojas izmantot ka lieta tikai vienu reizi, un tā 970 00:46:26,770 --> 00:46:29,380 proksimāls kur jūs izveidojāt tas, pirmkārt, 971 00:46:29,380 --> 00:46:31,052 tik tuvu ziņā koda rindiņas? 972 00:46:31,052 --> 00:46:31,760 Tātad, jūs zināt, ko? 973 00:46:31,760 --> 00:46:34,480 Izrādās, ka C ir diezgan elastīgs. 974 00:46:34,480 --> 00:46:36,586 Ja es tiešām gribu plug-in vērtībām šeit, 975 00:46:36,586 --> 00:46:38,210 Man nav nepieciešams deklarēt jaunu mainīgo. 976 00:46:38,210 --> 00:46:41,680 Es varētu tikai plug-in x plus y, jo C saprot 977 00:46:41,680 --> 00:46:43,390 aritmētika, un matemātiskās uzņēmēji. 978 00:46:43,390 --> 00:46:47,140 >> Tāpēc es varu vienkārši pateikt, darīt math, x plus y, kāds šīs vērtības ir, 979 00:46:47,140 --> 00:46:50,780 plug rezultātā skaitlis vērā, ka virknē. 980 00:46:50,780 --> 00:46:53,730 Tātad tas varētu būt, lai gan tikai viena līnija īsāks, 981 00:46:53,730 --> 00:46:58,480 labāks dizains, labāka programma, jo tur ir mazāk kodu, tāpēc 982 00:46:58,480 --> 00:46:59,921 mazāk man saprast. 983 00:46:59,921 --> 00:47:01,920 Un tas ir arī tikai tīrāku, ciktāl mēs neesam 984 00:47:01,920 --> 00:47:04,620 ieviešot jaunus vārdus, jauni simboli, piemēram, z, 985 00:47:04,620 --> 00:47:07,510 pat ja tie nav īsti kalpot daudz mērķiem. 986 00:47:07,510 --> 00:47:12,890 >> Diemžēl, matemātika nav viss, kas uzticami dažreiz. 987 00:47:12,890 --> 00:47:15,270 Iesim uz priekšu un darīt to. 988 00:47:15,270 --> 00:47:18,200 Es iešu uz priekšu tagad un darīt šādi. 989 00:47:18,200 --> 00:47:27,650 >> Darīsim printf, procenti i, plus procenti i, jābūt procenti i, reversā slīpsvītra n. 990 00:47:27,650 --> 00:47:32,240 Un es esmu gatavojas darīt this-- xyx plus vec. 991 00:47:32,240 --> 00:47:34,821 Tāpēc es esmu tikai gatavojas pārrakstīt Tas nedaudz atšķirīgi šeit. 992 00:47:34,821 --> 00:47:36,320 Ļaujiet man tikai darīt ātri veselība pārbaudītu. 993 00:47:36,320 --> 00:47:37,986 Atkal, pieņemsim nav get priekšā sevi. 994 00:47:37,986 --> 00:47:41,420 Padarīt papildinātājs, dot slash papildinātājs. 995 00:47:41,420 --> 00:47:44,950 x ir 1, y ir 2, 1 plus 2 ir 3. 996 00:47:44,950 --> 00:47:45,870 Tātad tas ir labi. 997 00:47:45,870 --> 00:47:49,060 Bet pieņemsim sarežģīt šo tagad mazliet, un izveidot jaunu failu. 998 00:47:49,060 --> 00:47:53,350 >> Es esmu gatavojas, lai izsauktu šo vienu, saka, Ints, daudzskaitļa par veseliem skaitļiem. 999 00:47:53,350 --> 00:47:55,980 Ļaujiet man sākt, kur es biju pirms brīža. 1000 00:47:55,980 --> 00:47:57,770 Bet tagad pieņemsim darīt dažas citas līnijas. 1001 00:47:57,770 --> 00:48:03,430 Ļaujiet man iet uz priekšu un darīt šādu, printf, procenti i, mīnus procenti i, 1002 00:48:03,430 --> 00:48:08,959 ir procenti i, komats x, komats YX mīnus y. 1003 00:48:08,959 --> 00:48:10,750 Tāpēc es esmu dara nedaudz atšķirīgs math tur. 1004 00:48:10,750 --> 00:48:11,624 Darīsim vēl vienu. 1005 00:48:11,624 --> 00:48:16,610 Tātad procenti i reizes procentiem i ir procenti i, reversā slīpsvītra n. 1006 00:48:16,610 --> 00:48:21,430 Let 'plug-in x, un y, un ar x reizes y. 1007 00:48:21,430 --> 00:48:24,530 Mēs izmantosim zvaigznīti uz Jūsu dators reizes. 1008 00:48:24,530 --> 00:48:26,390 >> Jūs neizmantojat x. x ir mainīgā vārds šeit. 1009 00:48:26,390 --> 00:48:28,270 Jūs izmantojat zvaigzni uz vairošanos. 1010 00:48:28,270 --> 00:48:29,020 Darīsim vienu vairāk. 1011 00:48:29,020 --> 00:48:34,580 Printf Es procenti, sadalīta ar procentiem i, ir procenti i, 1012 00:48:34,580 --> 00:48:40,460 reversā slīpsvītra n. xy dalīts ar y-- lai jūs izmantojat slīpsvītra C 1013 00:48:40,460 --> 00:48:41,502 darīt sadalījumu. 1014 00:48:41,502 --> 00:48:42,460 Un pieņemsim do vienu citu. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Atlikušo procentiem i, sadalīta ar procentiem i, ir procenti i. 1017 00:48:55,240 --> 00:48:59,550 xy-- un tagad atlikušo ir tas, kas ir palicis pāri. 1018 00:48:59,550 --> 00:49:02,980 Kad jūs mēģināt dalot saucējs uz skaitītāju, 1019 00:49:02,980 --> 00:49:05,570 cik daudz ir palicis pāri, ka jūs nevarētu sadalīt ārā? 1020 00:49:05,570 --> 00:49:07,910 >> Tāpēc nav īsti, obligāti, simbols 1021 00:49:07,910 --> 00:49:09,470 mēs esam izmanto pakāpē skolā par to. 1022 00:49:09,470 --> 00:49:13,830 Bet tur C. Jūs varat teikt x modulo y, kur 1023 00:49:13,830 --> 00:49:18,000 Šī procentu zīme šajā context-- sajaucami kad tu esi iekšā 1024 00:49:18,000 --> 00:49:20,170 no dubultās pēdiņas, iekšpusē printf, procenti 1025 00:49:20,170 --> 00:49:21,830 tiek izmantots kā formāta noteicēju. 1026 00:49:21,830 --> 00:49:25,420 >> Kad jūs izmantot procentiem ārpus kas ar matemātisku izteiksmi, 1027 00:49:25,420 --> 00:49:29,910 tas ir Modulo operators modulārās arithmetic-- par mūsu mērķiem 1028 00:49:29,910 --> 00:49:33,650 šeit, tikai nozīmē, kāda ir atlikušo x dalot ar y? 1029 00:49:33,650 --> 00:49:36,130 Tātad x dalot ar y ir x slīpsvītra y. 1030 00:49:36,130 --> 00:49:38,220 Kas atlikušo x dalot ar y? 1031 00:49:38,220 --> 00:49:41,780 Tas ir x mod y, kā programmētājs teiktu. 1032 00:49:41,780 --> 00:49:48,300 >> Tātad, ja es nekādas kļūdas šeit, ļaujiet man iet uz priekšu un darīt Ints, daudzskaitlī, jauki, 1033 00:49:48,300 --> 00:49:50,010 un dot Slīpsvītra Ints. 1034 00:49:50,010 --> 00:49:55,270 Un iesim uz priekšu un darīt, teiksim, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Labi, 1 plus 10 ir 11, pārbaude. 1036 00:49:58,390 --> 00:50:01,240 1 mīnus 10 ir negatīvs 9, pārbaudiet. 1037 00:50:01,240 --> 00:50:03,420 >> 1 reizes 10 ir 10, pārbaude. 1038 00:50:03,420 --> 00:50:07,090 1 dalīts ar 10 is-- Labi, mēs izlaist, ka viens. 1039 00:50:07,090 --> 00:50:09,480 Atlikušo 1 dalīts ar 10 ir 1. 1040 00:50:09,480 --> 00:50:10,680 Tas ir pareizi. 1041 00:50:10,680 --> 00:50:12,630 Bet tur ir kļūda šeit. 1042 00:50:12,630 --> 00:50:15,390 >> Tātad man manu nodot, nav pareizs. 1043 00:50:15,390 --> 00:50:16,670 Es domāju, tas ir tuvu 0. 1044 00:50:16,670 --> 00:50:20,670 1 dalīts ar 10, jūs zināt, ja mēs esam griešana dažas stūriem, protams, tas ir nulle. 1045 00:50:20,670 --> 00:50:28,050 Bet tas tiešām būtu 1/10, 0.1, vai 0.10, 0,1000, vai tā tālāk. 1046 00:50:28,050 --> 00:50:30,600 >> Tas nav īsti būt nulle. 1047 00:50:30,600 --> 00:50:35,990 Nu, izrādās, ka dators ir darot burtiski to, ko mēs teicis to darīt. 1048 00:50:35,990 --> 00:50:39,460 Mēs darām math kā ​​x, dalot ar y. 1049 00:50:39,460 --> 00:50:44,680 Un abi x un y, per līnijām kodu iepriekš, ir veseli skaitļi. 1050 00:50:44,680 --> 00:50:50,440 >> Turklāt, on line 15, mēs esam stāsta printf, hey, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 vesels skaitlis, plug-in veselam skaitlim, plug-in ar integer-- īpaši 1052 00:50:54,230 --> 00:50:57,580 x, un pēc tam y, un pēc tam x dalot ar y. x un y neatkarīgi ir Inta. 1053 00:50:57,580 --> 00:50:59,060 Mēs esam labi tur. 1054 00:50:59,060 --> 00:51:01,250 >> Bet kas ir x dala ar x? 1055 00:51:01,250 --> 00:51:06,790 x dala ar y būtu, matemātiski, 1/10, vai 0.1, 1056 00:51:06,790 --> 00:51:11,600 kas ir reāls skaitlis, reāls skaitlis kam, iespējams, komatu. 1057 00:51:11,600 --> 00:51:13,230 Tas nav vesels skaitlis. 1058 00:51:13,230 --> 00:51:18,290 >> Bet to, kas ir vistuvāk skaitlis 1/10 vai 0,1? 1059 00:51:18,290 --> 00:51:21,114 Jā, tā veida ir nulle. 1060 00:51:21,114 --> 00:51:22,030 0.1 ir līdzīgs šim daudz. 1061 00:51:22,030 --> 00:51:22,890 Un 1 tas ir daudz. 1062 00:51:22,890 --> 00:51:25,870 Tātad 1/10 ir tuvāk 0, nekā tas ir viens. 1063 00:51:25,870 --> 00:51:30,800 >> Un tā, kādi C dara par us-- veida jo mums pastāstīja kuri paredzēti, 1064 00:51:30,800 --> 00:51:32,600 ir truncating šo skaitli. 1065 00:51:32,600 --> 00:51:40,540 Tas ir ņemot vērtību, kas atkal ir vajadzēja būt kaut kas līdzīgs 0,1000, 1066 00:51:40,540 --> 00:51:41,800 0 un tā tālāk. 1067 00:51:41,800 --> 00:51:45,320 Un tas ir viss truncating aiz komata 1068 00:51:45,320 --> 00:51:47,510 tā, ka tas viss stuff, jo tas nav 1069 00:51:47,510 --> 00:51:51,910 ietilptu jēdzienā veselam skaitlim, kas ir tikai skaitlis, piemēram, negatīvs 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 augšu un uz leju, tas met prom visu aiz komata, jo jums 1071 00:51:55,830 --> 00:51:59,020 nevar fit komatu in veselam skaitlim pēc definīcijas. 1072 00:51:59,020 --> 00:52:01,290 >> Tātad šeit atbilde ir nulle. 1073 00:52:01,290 --> 00:52:02,600 Tātad, kā mēs varam noteikt šo? 1074 00:52:02,600 --> 00:52:04,400 Mums ir nepieciešams cits risinājums visiem kopā. 1075 00:52:04,400 --> 00:52:06,880 Un mēs varam darīt, ir šāda. 1076 00:52:06,880 --> 00:52:12,820 >> Ļaujiet man iet uz priekšu un izveidot jaunu fails, šis viens sauc floats.c. 1077 00:52:12,820 --> 00:52:16,500 Un saglabājiet to šeit pats katalogs, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Un ļaujiet man iet uz priekšu un kopēt daži no šī kodeksa no agrāk. 1080 00:52:23,260 --> 00:52:27,690 >> Bet tā vietā, kā iegūt int, pieņemsim darīt. 1081 00:52:27,690 --> 00:52:31,037 Dodiet man peldošā komata vērtība sauc x. kur peldošā komata 1082 00:52:31,037 --> 00:52:33,370 vērtība ir tikai burtiski kaut kas ar peldošo punktu. 1083 00:52:33,370 --> 00:52:34,410 To var pārvietot pa kreisi, pa labi. 1084 00:52:34,410 --> 00:52:35,530 Tas ir reāls skaitlis. 1085 00:52:35,530 --> 00:52:38,050 >> Un ļaujiet man zvanu nav get int, bet saņemt peldēt, 1086 00:52:38,050 --> 00:52:41,420 kas arī bija starp izvēlni no opcijām C250 bibliotēkā. 1087 00:52:41,420 --> 00:52:43,220 Mainīsim y apgrozāmos līdzekļus. 1088 00:52:43,220 --> 00:52:45,000 Tātad tas kļūst nokļūt peldēt. 1089 00:52:45,000 --> 00:52:47,620 >> Un tagad, mēs negribam, lai kontaktdakšu ints. 1090 00:52:47,620 --> 00:52:53,130 Izrādās, mums ir jāizmanto procentiem f par peldēt, procenti f uz peldēt, 1091 00:52:53,130 --> 00:52:54,560 un tagad to saglabāt. 1092 00:52:54,560 --> 00:53:01,220 Un tagad, īkšķus, padarīt pludiņiem, Nica, dot Slash pludiņi. 1093 00:53:01,220 --> 00:53:04,280 x būs viens 1. y Būs 10 vēlreiz. 1094 00:53:04,280 --> 00:53:08,240 >> Un, jauks, OK mans papildinājums ir pareizs. 1095 00:53:08,240 --> 00:53:10,240 Es cerēju vairāk, bet es aizmirsu uzrakstīt to. 1096 00:53:10,240 --> 00:53:13,250 So iesim un noteikt šo loģisko kļūdu. 1097 00:53:13,250 --> 00:53:16,280 >> Iesim uz priekšu un paķert sekojošo. 1098 00:53:16,280 --> 00:53:18,080 Mēs vienkārši darīt nedaudz kopēt un ielīmēt. 1099 00:53:18,080 --> 00:53:20,080 Un es esmu gatavojas teikt mīnuss. 1100 00:53:20,080 --> 00:53:21,890 >> Un es esmu gatavojas teikt reizes. 1101 00:53:21,890 --> 00:53:24,060 Un es esmu gatavojas teikt dalās. 1102 00:53:24,060 --> 00:53:28,240 Un es neesmu gatavojas darīt modulo, kas nav tik piederīgs šeit, 1103 00:53:28,240 --> 00:53:33,690 dalot ar F, un reizes plus-- Labi, pieņemsim darīt atkal. 1104 00:53:33,690 --> 00:53:44,210 >> Make pludiņiem, dot Slash pludiņiem, un 1, 10, and-- jauki, nē, OK. 1105 00:53:44,210 --> 00:53:45,250 Tāpēc es esmu idiots. 1106 00:53:45,250 --> 00:53:47,000 Tātad tas ir ļoti bieži datorzinātnēs 1107 00:53:47,000 --> 00:53:49,780 padarīt stulba kļūdas, kā šis. 1108 00:53:49,780 --> 00:53:53,100 >> Par pedagoģisko nolūkos, ko es patiešām gribēju darīt 1109 00:53:53,100 --> 00:53:57,410 tika mainīt zinātni šeit līdz plus, mīnuss, pie reizes, 1110 00:53:57,410 --> 00:54:01,140 un sadalīt, kā jūs cerams pamanīju šo uzdevumu laikā. 1111 00:54:01,140 --> 00:54:04,700 Tāpēc tagad pieņemsim atkārtoti sastādīt šo programma, do DOT Slash pludiņi. 1112 00:54:04,700 --> 00:54:07,950 >> Un trešo reizi, pieņemsim redzētu, vai tas atbilst manas cerības. 1113 00:54:07,950 --> 00:54:21,480 1, 10, ievadiet, jā, OK, 1000, dalīts ar 10.000, ir 0,100000. 1114 00:54:21,480 --> 00:54:24,952 Un izrādās, mēs varam kontrolēt, cik daudz skaitļi ir pēc šiem cipariem aiz komata. 1115 00:54:24,952 --> 00:54:25,660 Mēs tiešām būs. 1116 00:54:25,660 --> 00:54:26,790 Mēs atgriezties pie tā. 1117 00:54:26,790 --> 00:54:28,440 >> Bet tagad, patiesībā, math ir pareiza. 1118 00:54:28,440 --> 00:54:30,090 Tātad, atkal, kāda ir takeaway šeit? 1119 00:54:30,090 --> 00:54:33,050 Izrādās, ka C, ir ne tikai tikko strings-- un, patiesībā, 1120 00:54:33,050 --> 00:54:36,120 tur nav īsti, jo mēs pievienot tos ar CS50 bibliotēku. 1121 00:54:36,120 --> 00:54:37,710 Bet ir ne tikai Ints. 1122 00:54:37,710 --> 00:54:38,990 >> Ir arī pludiņi. 1123 00:54:38,990 --> 00:54:42,810 Un izrādās, ķekars citiem datiem veidi arī, ka mēs izmantosim pirms ilgi. 1124 00:54:42,810 --> 00:54:46,270 Izrādās, ja jūs vēlaties viens raksturs, nevis rakstzīmju virkne, 1125 00:54:46,270 --> 00:54:47,610 Jūs varat izmantot tikai char. 1126 00:54:47,610 --> 00:54:52,350 >> Izrādās, ka, ja jūs vēlaties Bool, Būla vērtība, patiess vai nepatiess tikai, 1127 00:54:52,350 --> 00:54:56,840 pateicoties CS50 bibliotēkā, mēs esam pievienots C ar bool datu tipu, kā arī. 1128 00:54:56,840 --> 00:54:59,180 Bet tas ir arī klāt daudzas citas valodas, kā arī. 1129 00:54:59,180 --> 00:55:04,130 Un izrādās, ka dažkārt jums vajag lielākus skaitļus, tad nāk pēc noklusējuma 1130 00:55:04,130 --> 00:55:05,210 ar ints un pludiņiem. 1131 00:55:05,210 --> 00:55:10,590 >> Un, patiesībā, dubultā ir skaitlis kas izmanto ne 32 biti, bet 64 biti. 1132 00:55:10,590 --> 00:55:14,990 Un ilgi ilgi ir skaitlis, kas izmanto ne 32, biti bet 64 biti, 1133 00:55:14,990 --> 00:55:19,190 attiecīgi, uz peldošo punktu vērtības un veseli skaitļi, attiecīgi. 1134 00:55:19,190 --> 00:55:22,780 Tātad pieņemsim faktiski tagad redzēt šo darbībā. 1135 00:55:22,780 --> 00:55:26,150 >> Es iešu uz priekšu šeit un sakult vienu citu programmu. 1136 00:55:26,150 --> 00:55:32,020 Lūk, es esmu gatavojas iet uz priekšu un tie ietver CS50.h. 1137 00:55:32,020 --> 00:55:34,910 Un ļaujiet man iet, iekļauj standartinformāciju IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> Un jūs pamanīsiet kaut ko funky notiek šeit. 1139 00:55:37,320 --> 00:55:40,592 Tas nav krāsu kodēšanas lietas tāpat, kā tas bija agrāk. 1140 00:55:40,592 --> 00:55:43,550 Un izrādās, tas ir tāpēc, I nav dota lieta faila nosaukumu. 1141 00:55:43,550 --> 00:55:47,270 >> Es esmu dodas uz zvanu šo vienu sizeof.c, un hit Saglabāt. 1142 00:55:47,270 --> 00:55:51,039 Un paziņojums, kas notiek ar manu ļoti balts kods pret šo melno fona. 1143 00:55:51,039 --> 00:55:52,830 Tagad, vismaz tur ir daži violeta tur. 1144 00:55:52,830 --> 00:55:54,490 Un tas ir sintakse iezīmēts. 1145 00:55:54,490 --> 00:55:57,700 >> Tas ir tāpēc, ka, gluži vienkārši, es esmu pastāstīja IDE kāda veida failu 1146 00:55:57,700 --> 00:56:01,060 tas ir, dodot tai nosaukumu, un īpaši faila paplašinājums. 1147 00:56:01,060 --> 00:56:03,620 Tagad iesim uz priekšu un darīt to. 1148 00:56:03,620 --> 00:56:08,910 Es iešu uz priekšu un ļoti vienkārši izdrukāt following-- Bool 1149 00:56:08,910 --> 00:56:11,080 ir procenti LU. 1150 00:56:11,080 --> 00:56:12,950 >> Mēs atgriezties ka tikai brīdi. 1151 00:56:12,950 --> 00:56:15,840 Un tad es esmu gatavojas drukas izmērs Bool. 1152 00:56:15,840 --> 00:56:18,170 Un tagad, tikai, lai ietaupītu pats kādu laiku, es esmu 1153 00:56:18,170 --> 00:56:20,280 gatavojas darīt visu ķekars no tiem uzreiz. 1154 00:56:20,280 --> 00:56:24,620 Un, konkrēti, es esmu gatavojas mainīt uz char un char. 1155 00:56:24,620 --> 00:56:27,760 Tas viens, es esmu gatavojas mainīt lai dubultā un dubultā. 1156 00:56:27,760 --> 00:56:31,440 >> Tas viens, es esmu gatavojas mainīt ar pludiņu un apgrozāmos līdzekļus. 1157 00:56:31,440 --> 00:56:35,670 Tas viens, es esmu gatavojas pāriet uz int un int. 1158 00:56:35,670 --> 00:56:38,660 Un tas viens, es esmu gatavojas jāmaina, lai ilgi ilgi. 1159 00:56:38,660 --> 00:56:40,840 Un tas joprojām ņemot ilgu laiku, sen sen. 1160 00:56:40,840 --> 00:56:44,572 >> Un tad, visbeidzot, es deva sevi par daudz, auklas. 1161 00:56:44,572 --> 00:56:47,030 Izrādās, ka C, tur ir īpašais operators sauc 1162 00:56:47,030 --> 00:56:50,260 lielums, kas ir burtiski gatavojas, kad skrien, 1163 00:56:50,260 --> 00:56:52,099 pastāstiet mums par izmēru katrs no šiem mainīgajiem. 1164 00:56:52,099 --> 00:56:53,890 Un tas ir veids, tagad, mēs varam savienot atpakaļ 1165 00:56:53,890 --> 00:56:57,140 uz pagājušās nedēļas diskusiju Datu un pārstāvību. 1166 00:56:57,140 --> 00:57:00,330 >> Ļaujiet man iet uz priekšu un apkopo lielums dot slīpsvītra lieluma. 1167 00:57:00,330 --> 00:57:01,210 Un paskatīsimies. 1168 00:57:01,210 --> 00:57:05,210 Izrādās, ka C, konkrēti par CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 īpaši par operētājsistēma Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 kas ir 64-bit darba sistēma, šajā gadījumā, 1171 00:57:11,100 --> 00:57:14,189 bool gatavojas izmantot vienu baitu telpu. 1172 00:57:14,189 --> 00:57:16,480 Tas, kā tiek mērīta izmērs, ne bitos, bet bytes. 1173 00:57:16,480 --> 00:57:18,690 Un atcerēties, ka viens baits ir astoņi biti. 1174 00:57:18,690 --> 00:57:22,030 Tātad bool, pat ja jums tehniski tikai need a ir 0 vai 1, 1175 00:57:22,030 --> 00:57:24,092 tas ir nedaudz izšķērdīgs kā mēs esam to īstenoja. 1176 00:57:24,092 --> 00:57:26,800 Tas faktiski gatavojas izmantot visu byte-- lai visi nulles, ir iespējams 1177 00:57:26,800 --> 00:57:31,050 visi tie, vai kaut kas tamlīdzīgs, vai tikai vienu 1 starp astoņiem bitiem. 1178 00:57:31,050 --> 00:57:34,962 >> Char, tikmēr izmantota raksturs tāpat ASCII raksturs vienu pagājušajā nedēļā, 1179 00:57:34,962 --> 00:57:36,170 būs viena rakstzīme. 1180 00:57:36,170 --> 00:57:42,340 Un kas synchs līdzi mūsu jēdzienam tas ir ne vairāk kā 256 bits-- drīzāk, 1181 00:57:42,340 --> 00:57:45,360 synchs līdz ar to ir ne ilgāk nekā 8 biti, kas 1182 00:57:45,360 --> 00:57:47,450 dod mums tik daudz kā 256 vērtībām. 1183 00:57:47,450 --> 00:57:49,680 Dubultā gatavojas ir 8 biti vai 64 bitiem. 1184 00:57:49,680 --> 00:57:50,510 >> Pluds ir 4. 1185 00:57:50,510 --> 00:57:51,690 Int ir 4. 1186 00:57:51,690 --> 00:57:52,980 Ilgi, ilgi ir 8. 1187 00:57:52,980 --> 00:57:54,716 Un virkne ir 8. 1188 00:57:54,716 --> 00:57:55,840 Bet nav jāuztraucas par to. 1189 00:57:55,840 --> 00:57:57,340 Mēs ejam, lai mizu atpakaļ šo slāni. 1190 00:57:57,340 --> 00:57:59,940 Izrādās, stīgas var būt garāks par 8 baitiem. 1191 00:57:59,940 --> 00:58:02,310 >> Un, protams, mēs esam rakstīts stīgas jau, hello pasaule, 1192 00:58:02,310 --> 00:58:03,700 ilgāk nekā 8 baitiem. 1193 00:58:03,700 --> 00:58:06,270 Bet mēs atgriezties ka tikai brīdi. 1194 00:58:06,270 --> 00:58:09,690 Bet atņemt šeit ir šāds. 1195 00:58:09,690 --> 00:58:15,320 >> Jebkurš dators ir tikai ierobežots summa atmiņas un telpā. 1196 00:58:15,320 --> 00:58:17,860 Jūs varat tikai uzglabāt tik daudz failus uz jūsu Mac vai PC. 1197 00:58:17,860 --> 00:58:23,030 Jūs varat uzglabāt tikai tik daudz programmas RAM darbojas uzreiz, vienmēr, pat 1198 00:58:23,030 --> 00:58:26,360 ar virtuālo atmiņu, jo Jums ir ierobežots daudzums RAM. 1199 00:58:26,360 --> 00:58:28,990 >> Un tikai, lai picture-- ja jūs nekad neesmu atvēra portatīvo datoru 1200 00:58:28,990 --> 00:58:31,300 vai pasūtīt papildus atmiņu par datoru, jūs 1201 00:58:31,300 --> 00:58:33,670 varētu nezināt, ka iekšpusē datora 1202 00:58:33,670 --> 00:58:36,590 ir kaut kas izskatās mazliet kā šis. 1203 00:58:36,590 --> 00:58:40,540 Tātad tas ir tikai kopīga uzņēmuma nosaukumu Crucial kas padara RAM datoriem. 1204 00:58:40,540 --> 00:58:43,620 Un RAM ir, ja programmas dzīvot kamēr viņi darbojas. 1205 00:58:43,620 --> 00:58:46,630 >> Tātad par katru Mac vai PC, ja jūs dubultā noklikšķiniet uz programmu, un tas paver, 1206 00:58:46,630 --> 00:58:48,921 un tas paver kādu Word dokumentu vai kaut kas tāds, 1207 00:58:48,921 --> 00:58:51,764 to uzglabā īslaicīgi RAM, jo RAM ir ātrāks 1208 00:58:51,764 --> 00:58:53,680 nekā jūsu cietā diska, vai Jūsu cietvielu disks. 1209 00:58:53,680 --> 00:58:56,600 Tātad, tas ir tieši tur, kur programmas iet dzīvot, kad viņi darbojas, 1210 00:58:56,600 --> 00:58:58,060 vai ja faili tiek izmantoti. 1211 00:58:58,060 --> 00:59:00,890 >> Tātad jums ir lietas, kas izskatās patīk šī iekšpusē jūsu klēpjdators, 1212 00:59:00,890 --> 00:59:03,320 vai nedaudz lielākas lietas iekšpusē darbvirsmas. 1213 00:59:03,320 --> 00:59:07,440 Bet galvenais ir jums ir tikai ierobežots skaits no šīm lietām. 1214 00:59:07,440 --> 00:59:11,230 Un tur ir tikai ierobežots daudzums aparatūras sēž uz šī galda tiesības 1215 00:59:11,230 --> 00:59:11,730 šeit. 1216 00:59:11,730 --> 00:59:15,920 >> Tātad, protams, mēs nevaram uzglabāt bezgalīgi ilgi numuri. 1217 00:59:15,920 --> 00:59:19,030 Un, tomēr, ja jūs domājat atpakaļ Skolas, cik cipari var 1218 00:59:19,030 --> 00:59:21,400 jums ir labi no komata? 1219 00:59:21,400 --> 00:59:24,680 Attiecībā uz šo jautājumu, cik cipari var Jums ir pa kreisi no komata? 1220 00:59:24,680 --> 00:59:26,300 Tiešām, bezgalīgi daudz. 1221 00:59:26,300 --> 00:59:30,840 >> Tagad mēs cilvēkiem varētu tikai zināt, kā izrunāt miljonus, 1222 00:59:30,840 --> 00:59:34,990 un miljardi, triljoni, un quadrillion, un quintillion. 1223 00:59:34,990 --> 00:59:39,370 Un es esmu stumšanas robežas mana understanding-- vai my-- es saprotu 1224 00:59:39,370 --> 00:59:41,110 skaitļi, bet mans izruna numuriem. 1225 00:59:41,110 --> 00:59:44,720 Bet viņi var saņemt bezgalīgi liels ar bezgala daudz cipariem pa kreisi 1226 00:59:44,720 --> 00:59:47,050 vai pa labi no komata. 1227 00:59:47,050 --> 00:59:50,040 >> Bet datori ir tikai ierobežots atmiņas apjoms, 1228 00:59:50,040 --> 00:59:53,510 ierobežots skaits tranzistori A ierobežots skaits spuldžu iekšpusē. 1229 00:59:53,510 --> 00:59:57,350 Tātad, kas notiek, kad jūs darbināt no vietas? 1230 00:59:57,350 --> 00:59:59,620 Citiem vārdiem sakot, ja jums domāju, ka atpakaļ uz pagājušajā nedēļā 1231 00:59:59,620 --> 01:00:03,160 kad mēs runājām par numuru paši attēlot binārā, 1232 01:00:03,160 --> 01:00:05,480 pieņemsim, ka mēs esam ieguvuši tas 8-bit vērtība šeit. 1233 01:00:05,480 --> 01:00:08,290 >> Un mums ir septiņi 1 s un vienu 0. 1234 01:00:08,290 --> 01:00:10,827 Un domāju, ka mēs gribam pievienot 1 līdz šai vērtībai. 1235 01:00:10,827 --> 01:00:12,410 Tas ir patiešām liels skaits tieši tagad. 1236 01:00:12,410 --> 01:00:16,610 >> Tas ir 254, ja es atceros math no pagājušajā nedēļā labās. 1237 01:00:16,610 --> 01:00:19,480 Bet ko tad, ja es mainu ka rightmost 0 līdz 1? 1238 01:00:19,480 --> 01:00:22,800 Visa skaits, par Protams, kļūst astoņi 1 s. 1239 01:00:22,800 --> 01:00:24,050 Tāpēc mēs joprojām esam labi. 1240 01:00:24,050 --> 01:00:27,204 >> Un tas, iespējams, ir 255, lai gan atkarībā no konteksta 1241 01:00:27,204 --> 01:00:29,120 tas patiešām varētu pārstāvēt negatīvs skaitlis. 1242 01:00:29,120 --> 01:00:31,240 Taču vairāk par šo citā laikā. 1243 01:00:31,240 --> 01:00:34,220 Tas uzskata, tāpat kā tas ir par augsta kā es varu paļauties. 1244 01:00:34,220 --> 01:00:35,290 >> Tagad tas ir tikai 8 biti. 1245 01:00:35,290 --> 01:00:38,170 Un mans Mac, protams, ir veids, kā vairāk nekā 8 biti atmiņā. 1246 01:00:38,170 --> 01:00:39,170 Bet tas ir ierobežots. 1247 01:00:39,170 --> 01:00:43,230 Tātad tas pats arguments attiecas, pat ja mēs būt vairāk no šīm tiem uz ekrāna. 1248 01:00:43,230 --> 01:00:47,020 >> Bet kas notiek, ja tu esi glabāšanai šo numuru, 255., 1249 01:00:47,020 --> 01:00:49,290 un jūs vēlaties saskaitīt 1 nedaudz lielāks? 1250 01:00:49,290 --> 01:00:51,600 Jūs vēlaties, lai iet no 255 līdz 256. 1251 01:00:51,600 --> 01:00:55,800 Problēma, protams, ir tas, ka, ja jums sākas skaitīšana nulles līmenī, piemēram, pagājušajā nedēļā, 1252 01:00:55,800 --> 01:00:59,670 jūs nevarat rēķināties tik augsts kā 256, nemaz nerunājot par 257, 1253 01:00:59,670 --> 01:01:02,584 nemaz nerunājot par 258, m jo tas, ko notiek, ja jūs pievienojat 1? 1254 01:01:02,584 --> 01:01:05,000 Ja jūs veco pakāpē skolā pieeju, jūs varat ievietot 1 šeit, 1255 01:01:05,000 --> 01:01:08,150 un tad 1 plus 1 ir 2, bet tas ir tiešām nulles, jūs veikt ar 1, 1256 01:01:08,150 --> 01:01:09,695 veikt 1, veikt 1. 1257 01:01:09,695 --> 01:01:12,620 Visas šīs lietas, šie 1 s, dodieties uz nulli. 1258 01:01:12,620 --> 01:01:17,820 Un jūs likvidēt, jā, kā kāds norādīja, a 1 kreisajā pusē. 1259 01:01:17,820 --> 01:01:22,540 Bet viss, jūs varat faktiski redzēt un fit atmiņā 1260 01:01:22,540 --> 01:01:27,960 ir tikai astoņi 0 s, kas ir teikt, kādā brīdī, ja jūs, dators, 1261 01:01:27,960 --> 01:01:32,490 mēģināju skaitot pietiekami augsts augšu, tu esi gatavojas aptīšanas, šķiet, 1262 01:01:32,490 --> 01:01:35,850 nullei, vai varbūt pat negatīva numurus, kas ir pat mazāks par nulli. 1263 01:01:35,850 --> 01:01:37,260 >> Un mēs varam veida redzēt šo. 1264 01:01:37,260 --> 01:01:39,900 Ļaujiet man iet uz priekšu un rakstīt īsts ātri programma šeit. 1265 01:01:39,900 --> 01:01:43,690 Ļaujiet man iet uz priekšu un rakstīt programma, ko sauc pārpildes. 1266 01:01:43,690 --> 01:01:49,980 Iekļaut CS50.h, ietver standarta IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Es tiešām neatbildētos manu sintakse izceļot. 1268 01:01:51,730 --> 01:01:54,440 Tātad, pieņemsim saglabājiet to kā overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> Un tagad int galvenais void-- un pirms ilgi, mēs 1270 01:01:57,084 --> 01:01:59,500 atgriezties, lai izskaidrotu, kāpēc mēs turpinām rakstot int galvenais tukšumu. 1271 01:01:59,500 --> 01:02:02,080 Bet tagad, pieņemsim tikai do tas, ņemot to par pašsaprotamu. 1272 01:02:02,080 --> 01:02:06,200 Pieņemsim dot sev int, un sāktu to 0. 1273 01:02:06,200 --> 01:02:11,716 >> Let 's tad darīt int i get zero-- patiesībā, pieņemsim do bezgalīgu cilpu 1274 01:02:11,716 --> 01:02:12,590 un redzēt, kas notiek. 1275 01:02:12,590 --> 01:02:22,440 Lai gan ir taisnība, tad pieņemsim izdrukāt n ir procenti i, slīpsvītru n, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Bet, tagad, pieņemsim do n izpaužas n plus 1. 1277 01:02:27,200 --> 01:02:29,660 >> Tātad, citiem vārdiem sakot, uz katru atkārtojuma šīs bezgalīga cilpa, 1278 01:02:29,660 --> 01:02:32,550 pieņemsim n vērtību, un pievieno 1 līdz tam, un pēc tam 1279 01:02:32,550 --> 01:02:34,350 uzglabāt rezultātu atpakaļ n pa kreisi. 1280 01:02:34,350 --> 01:02:37,150 Un, patiesībā, mēs esam redzējuši sintakse nedaudz, piemēram, tas, īsumā. 1281 01:02:37,150 --> 01:02:39,730 Cool triks ir vietā rakstot šo visu ārā, 1282 01:02:39,730 --> 01:02:42,770 jūs faktiski var teikt par n plus ir vienāds ar 1. 1283 01:02:42,770 --> 01:02:47,480 >> Vai, ja jūs patiešām vēlaties būt iedomātā, Jūs varat teikt n plus plus semikols. 1284 01:02:47,480 --> 01:02:50,130 Bet šie pēdējie divi ir tikai ko mēs gribētu saucam sintakses cukurs 1285 01:02:50,130 --> 01:02:50,790 Pirmo lieta. 1286 01:02:50,790 --> 01:02:53,456 >> Pirmā lieta ir skaidrāk, pilnīgi naudas sodu, pilnīgi pareizs. 1287 01:02:53,456 --> 01:02:55,470 Bet tas ir biežāk, es saku. 1288 01:02:55,470 --> 01:02:57,210 Tāpēc mēs to izdarīt tikai brīdi. 1289 01:02:57,210 --> 01:03:01,685 >> Pieņemsim tagad veikt pārplūdes, kas izklausās diezgan draudošs, dot slīpsvītra pārplūdes. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Paskatīsimies, n kļūst diezgan liels. 1292 01:03:09,852 --> 01:03:11,310 Bet Padomāsim, cik liels var n nokļūt? 1293 01:03:11,310 --> 01:03:12,870 >> n ir vesels int. 1294 01:03:12,870 --> 01:03:16,400 Mēs redzējām pirms brīža ar izmēru piemērs, ka int ir četri baiti. 1295 01:03:16,400 --> 01:03:22,070 Mēs zinām no pagājušajā nedēļā, četri baiti ir 32 biti, jo 8 reizes 4, tas ir 32. 1296 01:03:22,070 --> 01:03:23,460 Tas būs 4 miljardi. 1297 01:03:23,460 --> 01:03:25,802 >> Un mēs esam līdz 800,000. 1298 01:03:25,802 --> 01:03:28,510 Tas ir gatavojas veikt uz visiem laikiem, lai skaitīt tikpat augsta kā es, iespējams, var. 1299 01:03:28,510 --> 01:03:30,635 Tāpēc es esmu gatavojas iet uz priekšu, Kā jūs varētu pirms ilgi, 1300 01:03:30,635 --> 01:03:34,910 un hit Control C- atklāti, Control C, daudz, kur Control C parasti 1301 01:03:34,910 --> 01:03:36,034 līdzekļi atcelt. 1302 01:03:36,034 --> 01:03:38,200 Diemžēl, jo šis darbojas mākonis, 1303 01:03:38,200 --> 01:03:41,190 dažreiz mākonis ir spitting veic tik daudz sīkumi, 1304 01:03:41,190 --> 01:03:44,180 tik daudz produkcijas, tas notiek, lai aizņemt nedaudz, bet par manu ieguldījumu 1305 01:03:44,180 --> 01:03:45,630 nokļūt uz mākoni. 1306 01:03:45,630 --> 01:03:49,240 Tātad, pat ja es hit Control C dažas sekundes pirms, 1307 01:03:49,240 --> 01:03:53,110 tas noteikti ir puse efekts bezgalīgu cilpu. 1308 01:03:53,110 --> 01:03:56,070 >> Un tāpēc šādos gadījumos mēs esam gatavojas atstāt, ka būtu. 1309 01:03:56,070 --> 01:03:59,050 Un mēs ejam, lai pievienotu citu termināla logu nekā šeit 1310 01:03:59,050 --> 01:04:03,186 ar plus, kas, protams, dara ne piemēram, ka, tā kā tas joprojām domāšana. 1311 01:04:03,186 --> 01:04:05,310 Un iesim uz priekšu un būt nedaudz vairāk saprātīgi. 1312 01:04:05,310 --> 01:04:07,768 >> Es iešu uz priekšu un darīt Tas tikai finitely daudzas reizes. 1313 01:04:07,768 --> 01:04:10,047 Pieņemsim izmantot cilpas, ko es norādīja uz agrāk. 1314 01:04:10,047 --> 01:04:10,630 Izdarīsim to. 1315 01:04:10,630 --> 01:04:13,430 Dodiet man citu mainīgo int i izpaužas 0. 1316 01:04:13,430 --> 01:04:17,430 i ir mazāk nekā, teiksim, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 Un tagad ļaujiet man iet uz priekšu un izdrukāt out n ir procenti i, komats n. 1318 01:04:24,010 --> 01:04:27,547 Un tad N- tas joprojām ir gatavojas veikt uz visiem laikiem. 1319 01:04:27,547 --> 01:04:28,130 Izdarīsim to. 1320 01:04:28,130 --> 01:04:30,620 >> n izpaužas n reizes 2. 1321 01:04:30,620 --> 01:04:34,140 Vai mēs varētu būt fancy un darīt laiki atbilst 2. 1322 01:04:34,140 --> 01:04:37,120 Bet pieņemsim tikai teikt n vienāds pati, reizes 2. 1323 01:04:37,120 --> 01:04:39,321 Citiem vārdiem sakot, šis Jaunā programmas versija, 1324 01:04:39,321 --> 01:04:41,820 Es negribu gaidīt mūžīgi no, piemēram, 800000 līdz 4 miljardiem. 1325 01:04:41,820 --> 01:04:43,070 Pieņemsim tikai iegūt šo pāri ar. 1326 01:04:43,070 --> 01:04:44,920 >> Pieņemsim faktiski dubultā n katru reizi. 1327 01:04:44,920 --> 01:04:47,660 Kurš, atgādināt, dubultošana ir pretī, kam, protams. 1328 01:04:47,660 --> 01:04:50,035 Un tā kā pagājušajā nedēļā mums kaut kas atkal un atkal, 1329 01:04:50,035 --> 01:04:52,200 un atkal, super ātri, dubultošana, protams, 1330 01:04:52,200 --> 01:04:58,080 mūs no 1 līdz lielākais iespējamais vērtība, ka mēs varam paļauties uz ar int. 1331 01:04:58,080 --> 01:04:59,750 >> Tātad, pieņemsim darīt tieši to. 1332 01:04:59,750 --> 01:05:01,720 Un mēs būsim atpakaļ uz šo pirms ilgi. 1333 01:05:01,720 --> 01:05:04,180 Bet tas, atkal, ir tāpat kā atkārtošanas bloks Scratch. 1334 01:05:04,180 --> 01:05:05,600 Un jūs izmantot šo pirms ilgi. 1335 01:05:05,600 --> 01:05:10,170 >> Tas tikai nozīmē, skaits no nulles līdz, bet ne vienāds, līdz 64. 1336 01:05:10,170 --> 01:05:14,285 Un par katru atkārtojuma šīs cilpa, tikai glabāt palielināšanai i. 1337 01:05:14,285 --> 01:05:18,990 Tāpēc es ++ - un tas vispār konstrukcija on line 7 ir tikai super kopīgs veids 1338 01:05:18,990 --> 01:05:22,290 atkārtot dažas rindiņas kods, daži vairākas reizes. 1339 01:05:22,290 --> 01:05:23,362 Kuras rindas kodu? 1340 01:05:23,362 --> 01:05:25,570 Šie cirtaini bikšturi, kā jūs var būt gūta no tagad, 1341 01:05:25,570 --> 01:05:26,780 nozīmē, rīkojieties šādi. 1342 01:05:26,780 --> 01:05:29,510 >> Tas ir, piemēram, nulles, kad tas ir dzeltenās bloki 1343 01:05:29,510 --> 01:05:32,680 un citas krāsas, kas veida apskāviens vai ķēriens citus blokus. 1344 01:05:32,680 --> 01:05:34,750 Tas, ko šie curly bikšturi šeit darām. 1345 01:05:34,750 --> 01:05:40,200 Tātad, ja es saņēmu savu sintaksi right-- tevi var redzēt burkānu simbolu C līdzekļiem 1346 01:05:40,200 --> 01:05:42,706 tas, cik reizes es biju mēģina atrisināt šo problēmu. 1347 01:05:42,706 --> 01:05:45,330 Tātad, pieņemsim atbrīvoties no ka viens vispār, un aizvērt šo logu. 1348 01:05:45,330 --> 01:05:46,520 Un mēs izmantosim jaunu. 1349 01:05:46,520 --> 01:05:51,980 Padarīt pārplūdes, dot slīpsvītru pārplūdes, Enter, labi, 1350 01:05:51,980 --> 01:05:53,090 tas izskatās slikti sākumā. 1351 01:05:53,090 --> 01:05:56,200 Bet pieņemsim ritināt atpakaļ laikā, jo man bija šo 64 reizes. 1352 01:05:56,200 --> 01:05:58,700 >> Un paziņojums pirmo reizi, n ir 1. 1353 01:05:58,700 --> 01:06:03,110 Otro reizi, n ir 2, tad 4, tad 8, tad 16. 1354 01:06:03,110 --> 01:06:09,450 Un šķiet, ka, tiklīdz Es nokļūt aptuveni 1000000000, 1355 01:06:09,450 --> 01:06:12,800 ja es dubultā to vēlreiz, ka būtu man 2 miljardus. 1356 01:06:12,800 --> 01:06:14,980 Bet izrādās, tas ir tiesības uz smaile. 1357 01:06:14,980 --> 01:06:18,930 >> Un tā tas tiešām pārplūšanas int no 1 miljardu 1358 01:06:18,930 --> 01:06:23,514 līdz aptuveni negatīvs 2 miljardi, jo veselam skaitlim, 1359 01:06:23,514 --> 01:06:25,430 atšķirībā no numuriem mēs Tika pieņemot pagājušajā nedēļā, 1360 01:06:25,430 --> 01:06:28,397 var būt gan pozitīva, gan negatīva patiesībā un datorā. 1361 01:06:28,397 --> 01:06:30,730 Un tā ir vismaz viens no tiem, biti efektīvi nozagts. 1362 01:06:30,730 --> 01:06:34,190 Tātad mums tiešām ir tikai 31 biti, vai 2 miljardi iespējamās vērtības. 1363 01:06:34,190 --> 01:06:38,220 >> Bet tagad, takeaway ir diezgan vienkārši, neatkarīgi šie skaitļi ir 1364 01:06:38,220 --> 01:06:42,280 un neatkarīgi no math ir, kaut kas slikts notiek ar laiku, 1365 01:06:42,280 --> 01:06:46,980 jo galu galā jūs mēģināt apmainīt bitiem viens pārāk daudz reižu. 1366 01:06:46,980 --> 01:06:51,060 Un jūs faktiski iet no visiem 1 s līdz varbūt visi 0 s, vai varbūt 1367 01:06:51,060 --> 01:06:54,260 tikai daži citi modelis, kas to skaidri, atkarībā no konteksta, 1368 01:06:54,260 --> 01:06:56,342 var interpretēt kā negatīvu skaitli. 1369 01:06:56,342 --> 01:06:59,300 Un tā tas varētu šķist augstāko I var rēķināties šajā konkrētajā programmā 1370 01:06:59,300 --> 01:07:01,210 ir tikai aptuveni 1000000000. 1371 01:07:01,210 --> 01:07:02,760 Bet tur ir daļējs risinājums šeit. 1372 01:07:02,760 --> 01:07:03,480 Tu zini ko? 1373 01:07:03,480 --> 01:07:07,600 >> Ļaujiet man mainīt no int lai ilgi ilgi. 1374 01:07:07,600 --> 01:07:10,633 Un ļaujiet man iet uz priekšu šeit un say-- es esmu nāksies 1375 01:07:10,633 --> 01:07:12,290 lai mainītu to neparakstīts garš. 1376 01:07:12,290 --> 01:07:16,860 Vai arī, pieņemsim redzēt, es nekad sevi atceros. 1377 01:07:16,860 --> 01:07:19,920 >> Iesim uz priekšu un veikt pārplūdes. 1378 01:07:19,920 --> 01:07:21,860 Nē, tas nav tas, LLD, paldies. 1379 01:07:21,860 --> 01:07:23,430 Tātad, dažreiz šķindēt var būt noderīgi. 1380 01:07:23,430 --> 01:07:27,550 Man nav atcerēties, ko formātu Specifier bija ilgi ilgi. 1381 01:07:27,550 --> 01:07:28,950 >> Bet, protams, šķindēt man teica. 1382 01:07:28,950 --> 01:07:31,570 Zaļā ir sava veida labas, tomēr nozīmē, ka jūs kļūdījies. 1383 01:07:31,570 --> 01:07:33,190 Tas ir guessing, ka es gribēju LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Tāpēc ļaujiet man izmantot, tas ir padoms, garš garš decimālskaitlis, saglabājiet to. 1385 01:07:38,750 --> 01:07:43,190 Un ļaujiet man atkārto to, dot slash pārplūst, Enter. 1386 01:07:43,190 --> 01:07:45,020 Un tagad to, kas ir cool tas ir. 1387 01:07:45,020 --> 01:07:49,140 >> Ja es ritiniet atpakaļ laikā, mēs joprojām sākas skaitot tajā pašā place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Paziņojums, mēs visi ceļu līdz pat 1 miljardam. 1390 01:07:54,860 --> 01:07:57,070 Bet tad mēs droši nokļūt līdz 2 miljardiem. 1391 01:07:57,070 --> 01:08:01,300 >> Tad mēs līdz 4 miljardiem, tad 8000000000, 17000000000. 1392 01:08:01,300 --> 01:08:03,340 Un mēs ejam augstāk, un augstāk, un augstāk. 1393 01:08:03,340 --> 01:08:05,740 Galu galā, arī tas, pārtraukumiem. 1394 01:08:05,740 --> 01:08:09,350 >> Galu galā, ar ilgi ilgi, kas ir 64-bit vērtība, kas nav 1395 01:08:09,350 --> 01:08:13,660 32 bitu vērtība, ja jūs skaits pārāk liels, jūs wrap ap 0. 1396 01:08:13,660 --> 01:08:16,410 Un šajā gadījumā mēs gadās galu galā ar negatīvu skaitli. 1397 01:08:16,410 --> 01:08:17,550 >> Tātad tā ir problēma. 1398 01:08:17,550 --> 01:08:20,439 Un izrādās, ka šis Problēma nav tik arcane. 1399 01:08:20,439 --> 01:08:23,060 Pat ja es esmu apzināti izraisīta to ar šīm kļūdām, 1400 01:08:23,060 --> 01:08:26,149 izrādās, mēs to redzam veida visu mums apkārt, vai vismaz daži no mums darīt. 1401 01:08:26,149 --> 01:08:28,939 >> Tātad Lego Star Wars, ja esat kādreiz spēlējis spēli, 1402 01:08:28,939 --> 01:08:33,830 izrādās, jūs varat iet apkārt sadalīšana lietas pat LEGO pasaulē, 1403 01:08:33,830 --> 01:08:36,640 un vācot monētas, būtībā. 1404 01:08:36,640 --> 01:08:39,200 Un, ja jūs esat kādreiz spēlējis šī spēle pārāk daudz laika, 1405 01:08:39,200 --> 01:08:42,630 kā šo nenosaukts indivīds šeit darīja, kopējo skaitu 1406 01:08:42,630 --> 01:08:46,700 Monētu ka jūs varat savākt ir, šķiet, 4 miljardi. 1407 01:08:46,700 --> 01:08:48,240 >> Tagad, līdz ar to patiesībā noapaļoti. 1408 01:08:48,240 --> 01:08:50,239 Tātad LEGO centās saglabātu lietas lietotājam draudzīgi. 1409 01:08:50,239 --> 01:08:53,779 Tie nav darīt to tieši no 2 līdz 32 jauda, ​​par pagājušajā nedēļā. 1410 01:08:53,779 --> 01:08:55,310 Bet 4000000000 ir iemesls. 1411 01:08:55,310 --> 01:08:58,979 Šķiet, balstoties uz šo informāciju, ka LEGO, un uzņēmums, kas 1412 01:08:58,979 --> 01:09:02,624 padarījusi šo faktisko programmatūru, nolēma ka maksimālais skaits monētu 1413 01:09:02,624 --> 01:09:04,540 lietotājs var uzkrāties ir, protams, 4000000000, 1414 01:09:04,540 --> 01:09:12,069 jo viņi izvēlējās savā kodā izmantot ne ilgi ilgi, acīmredzot, 1415 01:09:12,069 --> 01:09:16,140 bet tikai skaitlis, neparakstīts vesels skaitlis, tikai pozitīvs vesels skaitlis, kura 1416 01:09:16,140 --> 01:09:18,089 max vērtība ir aptuveni ka. 1417 01:09:18,089 --> 01:09:19,380 Nu, šeit ir vēl viens funny vienu. 1418 01:09:19,380 --> 01:09:23,500 Tātad spēle Civilizācija, kas daži no jums varētu būt pazīstams, ar 1419 01:09:23,500 --> 01:09:26,660 izrādās, ka pirms gadiem bija kļūda šajā spēlē, kurā 1420 01:09:26,660 --> 01:09:28,750 ja tu spēlē lomu no Gandija spēlē, 1421 01:09:28,750 --> 01:09:34,020 viņa vietā ir ļoti pacifists, vietā bija neticami, neticami 1422 01:09:34,020 --> 01:09:36,399 agresīvs, dažos gadījumos. 1423 01:09:36,399 --> 01:09:40,529 Jo īpaši, tā, ka Civilization darbi ir tas, ka, ja jūs, spēlētājs, 1424 01:09:40,529 --> 01:09:44,680 pieņemt demokrātiju, jūsu agresivitāte rezultāts izpaužas 1425 01:09:44,680 --> 01:09:48,130 decremented ar divi, tāpēc mīnus mīnus, un pēc tam mīnus mīnus. 1426 01:09:48,130 --> 01:09:50,569 >> Tātad jūs atņemt 2 no jūsu faktisko atkārtojot. 1427 01:09:50,569 --> 01:09:56,650 Diemžēl, ja jūsu atkārtojot ir Sākotnēji 1, un jūs atņemt 2 no tā 1428 01:09:56,650 --> 01:09:59,050 pēc demokrātijas pieņemot kā Gandhi šeit varētu 1429 01:09:59,050 --> 01:10:02,200 ir darīts, jo viņš bija ļoti passive-- 1 uz skalas agresivitātes. 1430 01:10:02,200 --> 01:10:04,830 Bet, ja viņš pieņems demokrātiju, tad viņš iet no 1 līdz negatīva 1. 1431 01:10:04,830 --> 01:10:11,470 >> Diemžēl, tie bija izmantojot neparakstītu numurus, 1432 01:10:11,470 --> 01:10:15,400 kas nozīmē, ka tie apstrādāti pat negatīvs numuriem, it kā tie bija pozitīvas. 1433 01:10:15,400 --> 01:10:19,780 Un izrādās, ka pozitīvs ekvivalents 1 negatīvs, 1434 01:10:19,780 --> 01:10:23,480 tipisks datorprogrammām, ir 255. 1435 01:10:23,480 --> 01:10:27,250 Tātad, ja Gandhi pieņem , Un tāpēc ir demokrātija 1436 01:10:27,250 --> 01:10:32,470 viņa agresivitāte rezultāts samazinājās, tas faktiski ruļļos apkārt 255 1437 01:10:32,470 --> 01:10:35,470 un padara viņu visvairāk agresīvs raksturs spēlē. 1438 01:10:35,470 --> 01:10:36,930 Tātad jūs varat Google līdzi šo. 1439 01:10:36,930 --> 01:10:39,380 Un tas bija patiešām uzskata, nejauša programmēšana bug, 1440 01:10:39,380 --> 01:10:43,010 bet tas ir ievadīts diezgan mācība kopš. 1441 01:10:43,010 --> 01:10:44,360 >> Tas ir viss jautri un gudrs. 1442 01:10:44,360 --> 01:10:47,760 Vairāk biedējoši ir, kad faktiskais reālās pasaules ierīces, un ne spēles, 1443 01:10:47,760 --> 01:10:48,820 ir šīs pašas kļūdas. 1444 01:10:48,820 --> 01:10:54,500 Patiesībā, tikai pirms gada raksts nāca out par Boeing 787 Dreamliner. 1445 01:10:54,500 --> 01:10:56,850 >> Un raksts sākumā skatiens skan nedaudz mistisks. 1446 01:10:56,850 --> 01:11:01,480 Bet tas teica, programmatūras ievainojamība Boeing s 1447 01:11:01,480 --> 01:11:04,790 jauns 787 Dreamliner jet ir potenciāls radīt pilotus 1448 01:11:04,790 --> 01:11:07,220 zaudēt kontroli pār lidaparāts, iespējams, 1449 01:11:07,220 --> 01:11:11,750 in vidū lidojuma, FAA amatpersonas brīdināja aviokompānijas nesen. 1450 01:11:11,750 --> 01:11:14,520 Tas bija noteikšana ka modelis 787 1451 01:11:14,520 --> 01:11:19,770 lidmašīna, kas ir darbināms nepārtraukti 248 dienas 1452 01:11:19,770 --> 01:11:24,880 var zaudēt visu maiņstrāva, AC, elektriskās strāvas saistīts ar ģeneratoru 1453 01:11:24,880 --> 01:11:28,892 vadības ierīces, GCUs, vienlaicīgi nonākšana neizdoties drošais režīms. 1454 01:11:28,892 --> 01:11:29,850 Tas ir sava veida zaudēt mani. 1455 01:11:29,850 --> 01:11:35,390 Bet paziņojumā tas norādīja, OK, tagad es saņēmu, ka, nosacījums izraisīja programmatūru 1456 01:11:35,390 --> 01:11:38,590 counter iekšēja ģenerators kontrole 1457 01:11:38,590 --> 01:11:44,860 vienības, kas būs pārplūdes pēc 248 dienas nepārtrauktas jaudas. 1458 01:11:44,860 --> 01:11:47,070 Mēs izsniedzot šo paziņojums, lai novērstu zaudējumus 1459 01:11:47,070 --> 01:11:49,300 no visiem maiņstrāvas spēks, kas varētu rasties 1460 01:11:49,300 --> 01:11:50,980 in kontroles lidmašīnas zaudēšanu. 1461 01:11:50,980 --> 01:11:55,380 >> Tātad, burtiski, ir daži skaitlis, vai kādu līdzvērtīgu datu tipu, 1462 01:11:55,380 --> 01:11:57,960 tiek izmantota programmatūra kādā īstā lidmašīnā 1463 01:11:57,960 --> 01:12:00,756 ka, ja jūs saglabāt savu lidmašīnu par pietiekami ilgi, kas acīmredzot 1464 01:12:00,756 --> 01:12:03,880 var būt gadījumā, ja jūs vienkārši darbojas viņiem pastāvīgi un nekad atvienošanas 1465 01:12:03,880 --> 01:12:06,810 Jūsu lidmašīna, šķiet, vai ļaujot tās baterijas mirst, 1466 01:12:06,810 --> 01:12:09,840 būs iespējams saskaitīt, un uz augšu, un uz augšu, un uz augšu, un uz augšu, un uz augšu. 1467 01:12:09,840 --> 01:12:12,150 >> Un, pēc dabas, ierobežots atmiņas apjoms 1468 01:12:12,150 --> 01:12:15,880 pārplūdes, ritošā atpakaļ nulle vai kādu negatīva vērtība, 1469 01:12:15,880 --> 01:12:19,920 blakusparādība, kas ir biedējoši reāls realitāte 1470 01:12:19,920 --> 01:12:23,970 ka lidmašīna varētu būt vajadzīga kas rebooted, efektīvi, 1471 01:12:23,970 --> 01:12:27,290 vai varētu samazināties, sliktāk, jo tas lido. 1472 01:12:27,290 --> 01:12:29,230 Tātad šie jautājumi veidi joprojām ir kopā ar mums, 1473 01:12:29,230 --> 01:12:33,130 even-- tas bija 2015 rakstu, vēl jo vairāk biedējoši 1474 01:12:33,130 --> 01:12:36,100 ja jums nav obligāti izprast, novērtēt, vai paredzēt 1475 01:12:36,100 --> 01:12:38,640 šie veidu kļūdas. 1476 01:12:38,640 --> 01:12:42,030 >> Tātad izrādās, tur ir viens cits slikta lieta par datu attēlojumā. 1477 01:12:42,030 --> 01:12:47,080 Izrādās, ka pat pludiņi ir veida kļūdains, jo pludiņiem, pārāk, 1478 01:12:47,080 --> 01:12:51,440 Es ierosināju ir 32 biti, vai varbūt 64, ja jūs izmantojat dubultā. 1479 01:12:51,440 --> 01:12:53,070 Bet tas joprojām ir ierobežots. 1480 01:12:53,070 --> 01:12:57,070 >> Un loms ir, ka, ja jūs varat likts neskaitāmas numuru 1481 01:12:57,070 --> 01:12:59,460 aiz komata, nav tā, kā jūs 1482 01:12:59,460 --> 01:13:02,690 var pārstāvēt visu iespējamo skaitļi, kas mums mācīja 1483 01:13:02,690 --> 01:13:04,990 pakāpē skola var pastāvēt pasaulē. 1484 01:13:04,990 --> 01:13:08,870 Dators, būtībā, ir izvēlēties apakškopu šiem numuriem 1485 01:13:08,870 --> 01:13:10,200 pārstāvēt precīzi. 1486 01:13:10,200 --> 01:13:12,450 >> Tagad, dators var apaļa varbūt mazliet, 1487 01:13:12,450 --> 01:13:17,900 un var ļaut jums aptuveni veikalu jebkurš skaits jūs, iespējams, vēlaties. 1488 01:13:17,900 --> 01:13:20,940 Bet tikai intuitīvi, ja jums ir ierobežots bitu skaits, 1489 01:13:20,940 --> 01:13:24,560 jūs varat tikai apmainīt tos tik daudz ierobežotos veidos. 1490 01:13:24,560 --> 01:13:26,570 Tātad jūs nav iespējams izmanto ierobežots skaits 1491 01:13:26,570 --> 01:13:29,880 par permutation bitiem, modeļi nullēm un tiem, 1492 01:13:29,880 --> 01:13:32,940 pārstāvēt bezgalīgs skaits skaitļiem, 1493 01:13:32,940 --> 01:13:37,370 kas liecina, ka datori varētu ļoti labi būt guļus mums reizēm. 1494 01:13:37,370 --> 01:13:38,770 >> Patiesībā, pieņemsim darīt. 1495 01:13:38,770 --> 01:13:41,239 Ļaujiet man iet atpakaļ CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Ļaujiet man iet uz priekšu un izveidot nelielu programmu 1497 01:13:43,030 --> 01:13:47,940 sauc neprecizitāte, lai pierādītu, ka datori ir, patiešām, neprecīzs. 1498 01:13:47,940 --> 01:13:51,910 >> Un ļaujiet man iet uz priekšu un sākt ar daži no šī kodeksa no pirms, 1499 01:13:51,910 --> 01:13:53,830 un tagad vienkārši darīt šādi. 1500 01:13:53,830 --> 01:14:03,640 Ļaujiet man iet uz priekšu un darīt printf, procenti f, slīpsvītru n, 1 dalīts ar 10. 1501 01:14:03,640 --> 01:14:07,430 Citiem vārdiem sakot, pieņemsim nirt dziļāk 1/10, piemēram, 1 un dalīts ar 10. 1502 01:14:07,430 --> 01:14:09,760 Protams, dators var pārstāvēt 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Tātad, pieņemsim iet uz priekšu un darīt neprecizitātes. 1504 01:14:13,620 --> 01:14:14,390 Paskatīsimies. 1505 01:14:14,390 --> 01:14:16,210 Formāts precizē dubultā rakstīt. 1506 01:14:16,210 --> 01:14:18,160 Bet arguments tipa int. 1507 01:14:18,160 --> 01:14:19,040 Kas notiek? 1508 01:14:19,040 --> 01:14:21,970 >> Ak, interesanti, tāpēc tas ir mācoties no iepriekš. 1509 01:14:21,970 --> 01:14:26,050 Es saku, hey, dators parādīt me pludiņš ar procentiem f. 1510 01:14:26,050 --> 01:14:28,200 Bet es esmu, kas 2 Ints. 1511 01:14:28,200 --> 01:14:31,120 Tātad izrādās, es varu noteikt šis pāris veidos. 1512 01:14:31,120 --> 01:14:38,430 >> Es varētu tikai savukārt viens par 1,0, un 10 uz 10,0, kas, protams, 1513 01:14:38,430 --> 01:14:42,390 būt tāda iedarbība, pārvēršot tos floats-- vēl cerams 1514 01:14:42,390 --> 01:14:43,180 tas pats numurs. 1515 01:14:43,180 --> 01:14:45,880 Vai izrādās, tur ir kaut kas mēs redzēsim atkal pirms ilgi. 1516 01:14:45,880 --> 01:14:47,170 Jūs varētu nodot numurus. 1517 01:14:47,170 --> 01:14:49,880 >> Jūs varat, izmantojot šo Parenthetical izteiksme, jūs varat teikt, 1518 01:14:49,880 --> 01:14:52,560 hey, dators, ņemt to 10, ko es zinu, ir int. 1519 01:14:52,560 --> 01:14:54,660 Bet pret to, lūdzu, it kā tas ir pludiņš. 1520 01:14:54,660 --> 01:14:56,680 Bet tas jūtas nevajadzīgi sarežģīti. 1521 01:14:56,680 --> 01:14:59,040 >> Par mūsu mērķiem šodien, pieņemsim tikai burtiski 1522 01:14:59,040 --> 01:15:02,700 padara tos peldošā punkta vērtības ar komata, kā šis. 1523 01:15:02,700 --> 01:15:07,060 Ļaujiet man iet uz priekšu un atkārto, padarīt neprecizitāte, labi, dot slīpsvītra 1524 01:15:07,060 --> 01:15:08,870 neprecizitāte, ievadiet. 1525 01:15:08,870 --> 01:15:10,990 Labi, mēs meklējam labu. 1526 01:15:10,990 --> 01:15:18,194 >> 1 dalīts ar 10, saskaņā ar manu Mac šeit, ir, protams, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Tagad, man mācīja pakāpē skolā tur vajadzētu būt bezgalīgs skaits 0 gados. 1528 01:15:21,360 --> 01:15:23,151 Tātad, pieņemsim vismaz mēģināt redzēt dažus no tiem. 1529 01:15:23,151 --> 01:15:26,770 Izrādās, ka printf ir nedaudz mīļotājs joprojām nekā mēs esam izmantojuši. 1530 01:15:26,770 --> 01:15:30,890 Izrādās, jums nav jānorāda vienkārši procenti f, vai vienkārši procenti i. 1531 01:15:30,890 --> 01:15:33,830 Jūs faktiski var norādīt daži kontroles iespējas šeit. 1532 01:15:33,830 --> 01:15:36,470 >> Konkrēti, es eju teikt, hey, printf, 1533 01:15:36,470 --> 01:15:39,660 faktiski parādiet man 10 decimāldaļu punktus. 1534 01:15:39,660 --> 01:15:40,820 Tātad, tas izskatās mazliet dīvaini. 1535 01:15:40,820 --> 01:15:42,845 Bet jūs sakāt procentiem, dot, cik daudz skaitļu 1536 01:15:42,845 --> 01:15:44,970 Jūs vēlaties redzēt pēc komatu, un tad f 1537 01:15:44,970 --> 01:15:48,340 vienotas, tikai tāpēc, ka tas ir kāda dokumentācija saka. 1538 01:15:48,340 --> 01:15:50,080 Ļaujiet man iet uz priekšu un saglabājiet to. 1539 01:15:50,080 --> 01:15:52,460 >> Un paziņojums pārāk, es saņemu noguris pārrakstīšana lietas. 1540 01:15:52,460 --> 01:15:55,900 Tāpēc es esmu tikai nosakot up un leju arrow par manu taustiņiem šeit. 1541 01:15:55,900 --> 01:15:58,710 Un, ja es turpinu hitting augšu, var redzēt visas komandas 1542 01:15:58,710 --> 01:16:01,090 ka es, vai nepareizi veikts. 1543 01:16:01,090 --> 01:16:04,630 >> Un es iešu uz priekšu tagad faktiski neizmanto, ka, acīmredzot. 1544 01:16:04,630 --> 01:16:11,416 Padarīt neprecizitāte, dot slash imprecision-- tik 1545 01:16:11,416 --> 01:16:13,290 kas man bija mācīts Skolas pārbaudes veic. 1546 01:16:13,290 --> 01:16:19,010 Pat ja es to izdrukāt uz 10 aiz komata izvieto tā, protams, ir 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Bet jūs zināt, ko? 1548 01:16:19,840 --> 01:16:21,150 >> Iesim mazliet mantkārīgs. 1549 01:16:21,150 --> 01:16:23,990 Teiksim, piemēram, parādiet man 55 norāda aiz. 1550 01:16:23,990 --> 01:16:26,160 Pieņemsim tiešām ņemt to programmu, kas par spin. 1551 01:16:26,160 --> 01:16:31,170 Ļaujiet man pārtaisīt to ar marku neprecizitāte, dot slīpsvītra, neprecizitāte. 1552 01:16:31,170 --> 01:16:32,390 >> Un šeit mēs ejam. 1553 01:16:32,390 --> 01:16:34,420 Tava bērnība bija meli. 1554 01:16:34,420 --> 01:16:48,410 Acīmredzot, 1 dalīts ar 10 ir patiešām 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Kas notiek? 1556 01:16:49,740 --> 01:16:53,360 Nu, izrādās, ja jūs veida izskatīties pietiekami tālu in bāzes 1557 01:16:53,360 --> 01:16:55,950 pārstāvība šo skaits, tā faktiski 1558 01:16:55,950 --> 01:17:00,400 nav precīzi 1/10, vai 0.1 un bezgalīgi daudz nullēm. 1559 01:17:00,400 --> 01:17:01,630 Tagad, kāpēc tā? 1560 01:17:01,630 --> 01:17:06,250 >> Nu, pat ja tas ir vienkāršs numuru, lai mums cilvēkiem, 1 dalīts ar 10, 1561 01:17:06,250 --> 01:17:10,910 tas joprojām ir viens no bezgala daudziem skaitļi, kas mēs varētu izdomāt. 1562 01:17:10,910 --> 01:17:14,490 Bet dators var tikai pārstāvēt finitely daudz tā numuri. 1563 01:17:14,490 --> 01:17:18,710 Un tā, efektīvi, ko dators rāda mums ir tās tuvākais 1564 01:17:18,710 --> 01:17:22,940 tuvināšana uz numuru mēs gribam ticēt, ir 1/10, 1565 01:17:22,940 --> 01:17:27,760 vai tiešām 0,10000 bezgalīgi. 1566 01:17:27,760 --> 01:17:30,425 >> Drīzāk, lai gan, tas ir tik tuvu, jo tā var iegūt. 1567 01:17:30,425 --> 01:17:32,300 Un, protams, ja paskatās zem motora pārsega, 1568 01:17:32,300 --> 01:17:37,050 jo mēs esam šeit, apskatot 55 zīmēm aiz, 1569 01:17:37,050 --> 01:17:39,990 mēs faktiski redzēt šo realitāti. 1570 01:17:39,990 --> 01:17:42,610 Tagad kā malā, ja esat kādreiz redzējuši movie-- 1571 01:17:42,610 --> 01:17:45,780 lielākā daļa no jums droši vien haven't-- bet pirms Superman 3 dažiem gadiem, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor būtībā parādi šis realitāte savā uzņēmumā nozagt daudz 1573 01:17:49,500 --> 01:17:53,500 frakciju un frakciju pennies, jo company-- kā es atceros, 1574 01:17:53,500 --> 01:17:57,210 tas ir bijis while-- būtībā bija throwing prom kaut kas nav piemērots 1575 01:17:57,210 --> 01:17:58,790 uz jēdzienu centiem. 1576 01:17:58,790 --> 01:18:01,480 >> Bet, ja jūs saskaitīt visus šos tiny, tiny, tiny skaitļi atkal, 1577 01:18:01,480 --> 01:18:04,960 un atkal, un atkal, jūs varat, kā viņa lieta, darīt labu naudas summu. 1578 01:18:04,960 --> 01:18:08,010 >> Ka pati ideja tika ripped off ar vēl nesen, bet tomēr tagad vecāki 1579 01:18:08,010 --> 01:18:10,500 filma, ko sauc par Office Space, kur puiši šajā filmā, 1580 01:18:10,500 --> 01:18:13,501 bija tas pats, ieskrūvē to pilnīgi, beidzās ar pārāk daudz 1581 01:18:13,501 --> 01:18:14,666 naudu savā bankas kontā. 1582 01:18:14,666 --> 01:18:15,800 Tas viss bija ļoti aizdomīgs. 1583 01:18:15,800 --> 01:18:19,290 Bet beigās, dienā, neprecizitāte ir mums visapkārt. 1584 01:18:19,290 --> 01:18:22,240 >> Un tas arī var būt biedējoši lietu. 1585 01:18:22,240 --> 01:18:25,590 Izrādās, ka Supermens 3 un Office Space malā, tur 1586 01:18:25,590 --> 01:18:28,460 var būt daži ļoti reāls pasaules atzari 1587 01:18:28,460 --> 01:18:32,290 realitāti neprecīzu pārstāvība datu 1588 01:18:32,290 --> 01:18:34,770 ka pat mēs cilvēki uz Šajā dienā ne vienmēr 1589 01:18:34,770 --> 01:18:38,230 izprast, kā arī mums ir, vai atcerēties, cik bieži mums vajadzētu. 1590 01:18:38,230 --> 01:18:42,950 Un, protams, šādi klips ir no apskatīt dažas ļoti reālajā pasaulē 1591 01:18:42,950 --> 01:18:47,730 atzari, kas notiek, ja jūs neapzinās neprecizitāti, ka 1592 01:18:47,730 --> 01:18:50,065 var notikt skaitļos pārstāvību. 1593 01:18:50,065 --> 01:18:51,300 >> [VIDEO PLAYBACK] 1594 01:18:51,300 --> 01:18:55,620 >> -datori, Mēs visi esam ieradušies pieņemt tad bieži nomākta problēmas, 1595 01:18:55,620 --> 01:19:00,310 iet ar them-- bugs, vīrusi, un programmatūras glitches, 1596 01:19:00,310 --> 01:19:03,130 mazajiem cenas maksāt par ērtībām. 1597 01:19:03,130 --> 01:19:07,800 Bet augsto tehnoloģiju un lielu ātrumu militāro un kosmosa programmu pieteikumus, 1598 01:19:07,800 --> 01:19:12,800 mazākais problēma var tikt palielināts par katastrofu. 1599 01:19:12,800 --> 01:19:18,900 >> Jūnijā 4, 1996, zinātnieki sagatavoja uzsākt bezpilota Ariane 5 raķeti. 1600 01:19:18,900 --> 01:19:21,220 Tas nesa zinātnisko satelīti izstrādātas 1601 01:19:21,220 --> 01:19:24,600 noteikt precīzi, kā Zemes magnētiskais lauks mijiedarbojas 1602 01:19:24,600 --> 01:19:27,410 ar saules vēju. 1603 01:19:27,410 --> 01:19:30,800 Raķete tika uzbūvēta Eiropas Kosmosa aģentūra, 1604 01:19:30,800 --> 01:19:34,370 un pacēla off no objekta krastā Franču Gviānā. 1605 01:19:34,370 --> 01:19:37,540 >> -at Aptuveni 37 sekundes ievešanu lidojums, viņi vispirms 1606 01:19:37,540 --> 01:19:39,270 pamanīju kaut kas notiek nepareizi. 1607 01:19:39,270 --> 01:19:42,250 Sprauslas tika grozot in veids, kā viņi tiešām nevajadzētu. 1608 01:19:42,250 --> 01:19:46,580 Ap 40. lidojuma sekundē, skaidri, transportlīdzeklis bija nepatikšanas. 1609 01:19:46,580 --> 01:19:48,850 >> Un tas ir tad, kad viņi lēmums to iznīcināt. 1610 01:19:48,850 --> 01:19:52,780 Diapazons drošības virsnieks, ar milzīgs iekšām, nospiedis pogu, 1611 01:19:52,780 --> 01:19:58,150 uzspridzināja raķešu, pirms tas varētu kļūt par apdraudējumu sabiedrības drošībai. 1612 01:19:58,150 --> 01:20:01,060 >> -Tas Bija jaunava reiss no Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 Un tās iznīcināšana paņēma vieta, jo plaisāt 1614 01:20:03,960 --> 01:20:05,822 iestrādāta raķešu programmatūras. 1615 01:20:05,822 --> 01:20:08,280 -The Problēma uz Ariane bija ka tur bija vairāki, kas 1616 01:20:08,280 --> 01:20:10,600 nepieciešami 64 biti izteikt. 1617 01:20:10,600 --> 01:20:13,590 Un viņi gribēja, lai pārvērstu tā uz 16-bitu skaitu. 1618 01:20:13,590 --> 01:20:15,610 Viņi pieņem, ka numurs bija nekad 1619 01:20:15,610 --> 01:20:20,980 būt ļoti liels, ka lielākā daļa no tiem cipariem 64 bitu skaits bija nulles. 1620 01:20:20,980 --> 01:20:22,440 Viņi bija nepareizi. 1621 01:20:22,440 --> 01:20:25,060 >> -The Nespēja viens programmatūru pieņemt 1622 01:20:25,060 --> 01:20:29,510 veida numuru, ko ģenerē vēl bija pie saknes neveiksmi. 1623 01:20:29,510 --> 01:20:34,350 Programmatūras izstrāde bija kļuvusi ļoti dārgi daļa no jaunās tehnoloģijas. 1624 01:20:34,350 --> 01:20:38,140 Ariane raķete bijuši ļoti veiksmīgs, tik daudz programmatūras 1625 01:20:38,140 --> 01:20:41,550 izveidots tā bija arī izmanto Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Pamata problēma bija tā, ka Ariane 5 bija ātrāks, paātrināta ātrāk. 1627 01:20:47,940 --> 01:20:51,450 Un programmatūras nebija veidoja to. 1628 01:20:51,450 --> 01:20:55,060 >> -The Iznīcināšana raķete bija milzīgs finanšu katastrofa, 1629 01:20:55,060 --> 01:20:58,790 viss dēļ minūti programmatūras kļūdu. 1630 01:20:58,790 --> 01:21:01,210 Bet tas nebija pirmais laika datu pārveides problēmas 1631 01:21:01,210 --> 01:21:04,820 bija cieš modernas raķešu tehnoloģijas. 1632 01:21:04,820 --> 01:21:08,050 >> -In 1991 ar sākuma pirmā Persijas līča kara, 1633 01:21:08,050 --> 01:21:10,570 Patriot raķešu piedzīvoja līdzīga veida 1634 01:21:10,570 --> 01:21:12,800 no skaits konversijas problēmu. 1635 01:21:12,800 --> 01:21:16,090 Un kā rezultātā, 28 cilvēki, 28 amerikāņu karavīri, 1636 01:21:16,090 --> 01:21:19,080 tika nogalināti, un par 100 citi ievainoti, 1637 01:21:19,080 --> 01:21:22,780 kad Patriot, kas bija paredzēts aizsardzībai pret ienākošo scuds, 1638 01:21:22,780 --> 01:21:25,830 neizdevās uguns raķeti. 1639 01:21:25,830 --> 01:21:31,670 >> -Kad Irāka iebruka Kuveitā un Amerikā uzsāka Desert Storm 1991 sākumā, 1640 01:21:31,670 --> 01:21:35,780 Patriot raķešu baterijas tika izvietoti aizsargāt Saūda Arābiju un Izraēlu 1641 01:21:35,780 --> 01:21:39,230 no Irākas dzīšanās raķešu uzbrukumiem. 1642 01:21:39,230 --> 01:21:43,810 Patriot ir ASV vidēja darbības rādiusa virsmas gaisa sistēmas, izgatavoti 1643 01:21:43,810 --> 01:21:45,770 ar Raytheon kompānija. 1644 01:21:45,770 --> 01:21:52,340 >> -The Lielums Patriot kolektoru pati par sevi ir apmēram apmēram 20 pēdu garš. 1645 01:21:52,340 --> 01:21:55,230 Un tas sver aptuveni 2000 mārciņas. 1646 01:21:55,230 --> 01:21:59,320 Un tā veic kaujas galviņu apmēram, Es domāju, ka tas ir aptuveni 150 mārciņas. 1647 01:21:59,320 --> 01:22:03,930 Un kaujas galviņu pats par sevi ir augsts sprāgstviela, kuru 1648 01:22:03,930 --> 01:22:07,330 ir fragmenti ap to. 1649 01:22:07,330 --> 01:22:11,680 No Warhead apvalks paredzēti rīkoties kā rupja skrots. 1650 01:22:11,680 --> 01:22:14,110 >> -Mikroshēmas Raķetes tiek veiktas četri vienu konteineru, 1651 01:22:14,110 --> 01:22:17,130 un tiek transportēti ar puspiekabi piekabi. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot pretraķešu sistēma iet atpakaļ vismaz 20 gadus. 1653 01:22:24,930 --> 01:22:28,420 Tā sākotnēji tika izstrādāta kā gaisa aizsardzības raķete 1654 01:22:28,420 --> 01:22:30,720 atvašu nosaka ienaidnieka lidmašīnas. 1655 01:22:30,720 --> 01:22:34,500 Pirmajā Līča kara, kad tas karš nāca kopā, 1656 01:22:34,500 --> 01:22:39,745 armija vēlējās izmantot, lai atvašu nosaka scuds, nevis lidmašīnas. 1657 01:22:39,745 --> 01:22:43,620 >> Irākas Gaisa spēki bija ne tik daudz problēmu. 1658 01:22:43,620 --> 01:22:46,670 Bet armija bija noraizējies par scuds. 1659 01:22:46,670 --> 01:22:50,170 Un tā viņi centās uzlabot Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Ienaidnieks raķešu ceļo pie Mach 5 1661 01:22:52,800 --> 01:22:55,830 bija būs izaicinājums pietiekami. 1662 01:22:55,830 --> 01:22:58,490 Bet, kad Patriot tika steidzās ekspluatācijā, 1663 01:22:58,490 --> 01:23:02,860 armija nebija zināms par Irākas modifikācija, kas padarīja 1664 01:23:02,860 --> 01:23:05,930 viņu scuds gandrīz neiespējami, lai sasniegtu. 1665 01:23:05,930 --> 01:23:10,740 >> -Kas Noticis ir scuds ka tika nāk bija nestabila. 1666 01:23:10,740 --> 01:23:11,692 Viņi bija wobbling. 1667 01:23:11,692 --> 01:23:14,910 Iemesls tam bija irākiešiem, lai 1668 01:23:14,910 --> 01:23:18,280 lai saņemtu 600 kilometrus no 300 kilometru 1669 01:23:18,280 --> 01:23:21,700 diapazons raķešu, paņēma svaru no priekšējās Warhead. 1670 01:23:21,700 --> 01:23:23,390 Viņi padarīja kaujas galviņu vieglāks. 1671 01:23:23,390 --> 01:23:27,330 >> Tātad tagad Patriot ir mēģina nākt pie dzīšanās. 1672 01:23:27,330 --> 01:23:30,230 Un lielāko daļu no laika, Lielākā daļa no laika, 1673 01:23:30,230 --> 01:23:32,940 tas tikai lidot ar dzīšanās. 1674 01:23:32,940 --> 01:23:37,260 Kad Patriot sistēmu operatoriem sapratu Patriot garām savu mērķi, 1675 01:23:37,260 --> 01:23:41,690 tie uzsprāgt Patriot ir kaujas galviņu lai izvairītos no iespējamiem nelaimes gadījumiem, ja to 1676 01:23:41,690 --> 01:23:44,570 bija atļauts krist uz zemes. 1677 01:23:44,570 --> 01:23:48,790 >> -That Bija tas, ko lielākā daļa cilvēku redzēja, šie lielie fireballs debesīs, 1678 01:23:48,790 --> 01:23:54,550 un pārprot kā pārtver no dzīšanās kaujas galviņām. 1679 01:23:54,550 --> 01:23:56,630 >> -Although Naktī debesis, Patriots parādījās 1680 01:23:56,630 --> 01:24:00,370 būt veiksmīgi iznīcinot Scuds, pie Dhahran, 1681 01:24:00,370 --> 01:24:03,360 tur varētu būt kļūda par savu sniegumu. 1682 01:24:03,360 --> 01:24:07,970 Tur, Patriot ir radaru sistēma zaudējis dziesmu par ienākošu dzīšanās, 1683 01:24:07,970 --> 01:24:10,721 un nekad uzsāka dēļ ar programmatūras plaisāt. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Tas bija izraēliešiem kurš pirmais atklāja ka vairs sistēma bija, 1686 01:24:18,940 --> 01:24:22,690 jo lielāks laiks neatbilstība kļuva, pateicoties pulksteņa iegulto 1687 01:24:22,690 --> 01:24:24,810 Sistēmā datorā. 1688 01:24:24,810 --> 01:24:28,210 >> -Par Divas nedēļas pirms traģēdija in Dhahran, 1689 01:24:28,210 --> 01:24:30,770 izraēlieši ziņoja Aizsardzības departaments 1690 01:24:30,770 --> 01:24:32,590 ka sistēma tika zaudēt laiku. 1691 01:24:32,590 --> 01:24:35,360 Pēc apmēram astoņas stundas vai skriešanu, viņi pamanīja, ka sistēmā 1692 01:24:35,360 --> 01:24:37,720 kļuva ievērojami mazāk precīzi. 1693 01:24:37,720 --> 01:24:41,900 Aizsardzības departaments atbildēja, stāsta visi Patriot baterijas 1694 01:24:41,900 --> 01:24:44,950 lai neatstāj sistēmas uz ilgu laiku. 1695 01:24:44,950 --> 01:24:49,160 Viņi nekad nav teicis, ko sen was-- astoņas stundas, 10 stundas, 1000 stundas. 1696 01:24:49,160 --> 01:24:51,360 Neviens nezināja. 1697 01:24:51,360 --> 01:24:53,380 >> -The Patriot baterijas izvietoti pie kazarmām 1698 01:24:53,380 --> 01:24:58,350 pie Dhahran un tās trūkumi iekšējā pulkstenis bija vairāk nekā 100 stundas 1699 01:24:58,350 --> 01:25:01,670 naktī no 25. februāra. 1700 01:25:01,670 --> 01:25:05,917 >> -Tas Kāpurķēžu laiku ar precizitāti no aptuveni desmito daļu sekundes. 1701 01:25:05,917 --> 01:25:08,000 Tagad, desmitā daļa otrā ir interesants skaitlis, 1702 01:25:08,000 --> 01:25:11,920 jo tas nevar tikt izteikta binārā precīzi, kas 1703 01:25:11,920 --> 01:25:16,820 nozīmē to nevar izteikt precīzi jebkurā mūsdienu digitālā datora. 1704 01:25:16,820 --> 01:25:18,540 Tas ir grūti noticēt. 1705 01:25:18,540 --> 01:25:21,210 >> Bet izmantot to kā piemēru. 1706 01:25:21,210 --> 01:25:23,540 Paņemsim numurs vienu trešdaļu. 1707 01:25:23,540 --> 01:25:27,350 Viena trešdaļa nevar būt izteikta komata precīzi. 1708 01:25:27,350 --> 01:25:32,080 Viena trešdaļa ir 0,333 notiek uz bezgalību. 1709 01:25:32,080 --> 01:25:36,480 >> Nav veids, kā to darīt, ka ar absolūtā precizitāte aiz komata. 1710 01:25:36,480 --> 01:25:39,560 Tas ir tieši veida problēmas kas notika Patriot. 1711 01:25:39,560 --> 01:25:44,100 Jo ilgāk sistēma skrēja, tad sliktāk kļuva par laika kļūda. 1712 01:25:44,100 --> 01:25:48,890 >> -Pēc 100 ekspluatācijas stundām, tad kļūda laikā bija tikai aptuveni viena trešdaļa 1713 01:25:48,890 --> 01:25:50,600 par sekundi. 1714 01:25:50,600 --> 01:25:54,210 Bet attiecībā uz mērķauditorijas raķešu ceļo pie Mach 5, 1715 01:25:54,210 --> 01:25:58,710 tas izraisīja izsekošanu kļūda vairāk nekā 600 metri. 1716 01:25:58,710 --> 01:26:02,120 Tas būtu fatāla kļūda par karavīriem par to, ko 1717 01:26:02,120 --> 01:26:08,940 noticis ir dzīšanās uzsākšana bija atklāj agrīnās brīdināšanas satelītiem 1718 01:26:08,940 --> 01:26:12,860 un viņi zināja, ka dzīšanās bija nāk viņu vispārējo virzību. 1719 01:26:12,860 --> 01:26:15,320 Viņi nezināja, kur tā nāk. 1720 01:26:15,320 --> 01:26:18,250 >> -Tas Bija tagad līdz radara komponents no Patriota sistēmas 1721 01:26:18,250 --> 01:26:23,190 aizstāvot Dhahran, lai atrastu un saglabātu dziesmu no ienākošo ienaidnieka raķešu. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radara bija ļoti gudrs. 1723 01:26:24,609 --> 01:26:26,650 Tas faktiski izsekot nostāja dzīšanās, 1724 01:26:26,650 --> 01:26:30,350 un tad prognozēt, kur tas iespējams, būtu nākamreiz radara nosūtīts 1725 01:26:30,350 --> 01:26:31,420 pulsa out. 1726 01:26:31,420 --> 01:26:33,110 Ka sauca diapazons vārtiem. 1727 01:26:33,110 --> 01:26:37,660 >> -Tad, Kad Patriot nolemj pietiekami daudz laika ir 1728 01:26:37,660 --> 01:26:42,450 nodots, lai dotos atpakaļ un pārbaudiet nākamo vieta šim atklāto objektu, 1729 01:26:42,450 --> 01:26:43,600 tas iet atpakaļ. 1730 01:26:43,600 --> 01:26:48,650 Tad, kad tā devās atpakaļ uz nepareizu vieta, tad tas nesaskata objektu. 1731 01:26:48,650 --> 01:26:52,160 Un tā nolemj, ka nav objekts, tas bija viltus atklāšanu, 1732 01:26:52,160 --> 01:26:53,930 un pilieni dziesmu. 1733 01:26:53,930 --> 01:26:57,030 >> -The Ienākošo dzīšanās pazuda no radara ekrāna. 1734 01:26:57,030 --> 01:27:00,260 Un sekundes vēlāk, to ietriecās kazarmās. 1735 01:27:00,260 --> 01:27:06,150 Dzīšanās nogalināti 28, un bija pēdējais viens kurināti pirmā Persijas līča kara laikā. 1736 01:27:06,150 --> 01:27:11,960 >> Traģiski, atjaunināto programmatūru ieradās Dhahran nākamajā dienā. 1737 01:27:11,960 --> 01:27:14,930 Programmatūra plaisāt bija ir fiksēts, slēdzot 1738 01:27:14,930 --> 01:27:19,806 viens nodaļu nemierīgajā vēsture Patriot raķešu. 1739 01:27:19,806 --> 01:27:20,729 >> [VIDEO PLAYBACK] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. Malan: Tātad tas ir viss, lai teikt, ka šajos jautājumos pārplūdi 1741 01:27:23,520 --> 01:27:25,860 un neprecizitāte ir pārāk reāls. 1742 01:27:25,860 --> 01:27:26,920 Tātad, kā mēs šeit? 1743 01:27:26,920 --> 01:27:28,895 Mēs sākām ar tikai runā par printf. 1744 01:27:28,895 --> 01:27:31,270 Arī šī funkcija, izdrukā kaut ko uz ekrāna, 1745 01:27:31,270 --> 01:27:33,450 un mēs iepazīstinājām tam dažas citas funkcijas 1746 01:27:33,450 --> 01:27:34,945 No tā sauktās CS50 bibliotēkā. 1747 01:27:34,945 --> 01:27:36,910 Un mēs turpināsim redzēt tos savlaicīgi. 1748 01:27:36,910 --> 01:27:40,760 Un mēs, jo īpaši, izmanto get virkni, un saņemt int, un tagad arī saņemt peldēt, 1749 01:27:40,760 --> 01:27:44,410 un vēl citi, joprojām mēs saskaramies un izmantot sevi pirms ilgi. 1750 01:27:44,410 --> 01:27:47,220 >> Bet reizēm, ir mēs jau redzējuši vajadzību 1751 01:27:47,220 --> 01:27:50,520 uzglabāt to, kas šīs funkcijas roku atpakaļ? 1752 01:27:50,520 --> 01:27:52,920 Tie rokas mūs atpakaļ string, vai int, vai pludiņš. 1753 01:27:52,920 --> 01:27:56,070 Un dažkārt mums ir nepieciešams, lai tas string, vai int vai peldēt, kaut kur. 1754 01:27:56,070 --> 01:28:00,100 >> Un uzglabāt tās lietas, atgādināt tikai tāpat kā nulles, mums ir mainīgie. 1755 01:28:00,100 --> 01:28:03,260 Bet atšķirībā no nulles, C mums ir faktiskie veidi 1756 01:28:03,260 --> 01:28:05,530 no variables-- datu veidi, vairāk generally-- 1757 01:28:05,530 --> 01:28:08,640 Starp tiem, string, int A peldēt, un šie citi vēl. 1758 01:28:08,640 --> 01:28:12,321 >> Un tad, kad mēs deklarēt mainīgos C, mums nāksies atzīt mūsu datu tipu. 1759 01:28:12,321 --> 01:28:14,820 Tas nav kaut kas, mēs ņemšu jādara vēlāk semestra 1760 01:28:14,820 --> 01:28:16,810 kā mēs pāriet uz citām valodām. 1761 01:28:16,810 --> 01:28:19,610 Bet tagad mums ir nepieciešams uz a priori iepriekš, 1762 01:28:19,610 --> 01:28:24,370 izskaidrot ar datoru, kas tipa Mainīgā mēs gribam, lai dotu mums. 1763 01:28:24,370 --> 01:28:27,290 >> Tagad, tikmēr, lai drukātu šie veida datu tipu, 1764 01:28:27,290 --> 01:28:29,570 mums ir pateikt printf, ko gaidīt. 1765 01:28:29,570 --> 01:28:32,450 Un mēs redzējām procentiem S stīgas, un procenti i par veseliem skaitļiem, 1766 01:28:32,450 --> 01:28:33,790 un daži citi jau. 1767 01:28:33,790 --> 01:28:37,237 Un tie ir vienkārši prasības par vizuālo noformējumu 1768 01:28:37,237 --> 01:28:38,070 Šīs informācijas. 1769 01:28:38,070 --> 01:28:42,080 >> Un katrs no tiem patiesībā var būt parametrized vai tweaked kaut kādā veidā, 1770 01:28:42,080 --> 01:28:45,370 ja jūs vēlaties, lai turpinātu kontroli Par produkcijas veidu, kas jums. 1771 01:28:45,370 --> 01:28:49,604 Un, patiesībā, izrādās, ka ne tikai ir tur slīpsvītru n jaunu līniju. 1772 01:28:49,604 --> 01:28:52,520 Tur ir kaut kas cits sauc reversā slīpsvītra R rakstatgriezi, kas 1773 01:28:52,520 --> 01:28:54,360 vairāk līdzinās vecās skolas rakstāmmašīnas, 1774 01:28:54,360 --> 01:28:57,690 un arī Windows izmantoti jau daudzus gadus. 1775 01:28:57,690 --> 01:28:59,690 >> Tur slīpsvītru t cilnēm. 1776 01:28:59,690 --> 01:29:03,170 Izrādās, ka, ja jūs vēlaties, lai dubultā quote iekšpusē virknes, 1777 01:29:03,170 --> 01:29:05,000 atgādināt, ka mēs esam izmantojuši double double quote 1778 01:29:05,000 --> 01:29:07,900 citāts pa kreisi un pa labi beidzas mūsu stīgām līdz šim. 1779 01:29:07,900 --> 01:29:09,420 Tas, šķiet, jauc lietas. 1780 01:29:09,420 --> 01:29:12,503 >> Ja jūs vēlaties, lai divkāršu citātu vidū string-- un, protams, 1781 01:29:12,503 --> 01:29:13,670 tas ir mulsinoši redzēt. 1782 01:29:13,670 --> 01:29:17,120 Un tāpēc jums ir izvairīties, tāpēc, lai runā, dubultu citātu ar kaut ko 1783 01:29:17,120 --> 01:29:18,860 piemēram, burtiski, slīpsvītru dubultu cenas. 1784 01:29:18,860 --> 01:29:20,230 Un tur ir dažas citas vēl. 1785 01:29:20,230 --> 01:29:24,540 Un mēs redzēsim vairāk no tiem, faktisko izmantošanu pirms ilgi. 1786 01:29:24,540 --> 01:29:27,930 >> Tātad, pieņemsim tagad pāreja no dati, un pārstāvība, 1787 01:29:27,930 --> 01:29:30,820 un aritmētiskās uzņēmējiem, visiem kura deva mums kādu ēku 1788 01:29:30,820 --> 01:29:32,070 bloki ar ko spēlēt. 1789 01:29:32,070 --> 01:29:34,481 Bet tagad pieņemsim faktiski dod mums pārējā leksikas 1790 01:29:34,481 --> 01:29:36,230 ka mums jau bija pagājušajā nedēļā ar nulles 1791 01:29:36,230 --> 01:29:39,350 ņemot apskatīt kādu citu konstrukcijas, kas C- ne visi no tiem. 1792 01:29:39,350 --> 01:29:41,680 Bet idejas mēs esam par to, lai redzētu, tiešām tikai 1793 01:29:41,680 --> 01:29:45,610 uzsvērt tulkojumu no viena valoda, Scratch, uz citu, C. 1794 01:29:45,610 --> 01:29:48,470 >> Un laika gaitā, mēs uzņemt vairāk instrumenti mūsu rīkkopa, 1795 01:29:48,470 --> 01:29:49,820 tā sakot, sintaktiski. 1796 01:29:49,820 --> 01:29:54,190 Un, protams, jūs redzēsiet, ka idejām tagad ir diezgan pazīstams no pagājušajā nedēļā. 1797 01:29:54,190 --> 01:29:55,200 Tātad, pieņemsim darīt. 1798 01:29:55,200 --> 01:29:58,870 >> Iesim uz priekšu un pātagu up programmu kas faktiski izmanto dažas izteiksmes, 1799 01:29:58,870 --> 01:30:00,720 Būla izteiksme. 1800 01:30:00,720 --> 01:30:02,810 Ļaujiet man iet uz priekšu šeit un izveidotu jaunu failu. 1801 01:30:02,810 --> 01:30:06,090 Es aicinu šo condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Ļaujiet man iet uz priekšu un ietver CS50 bibliotēka. 1803 01:30:09,350 --> 01:30:12,640 Un ļaujiet man iet uz priekšu un ietver standarts IO.h mūsu funkcijām, 1804 01:30:12,640 --> 01:30:14,690 un printf, un vairāk attiecīgi. 1805 01:30:14,690 --> 01:30:18,900 Ļaujiet man sniegt sev, ka tekstveidnes no int galvenais neesošu, kuru skaidrojums mēs ņemšu 1806 01:30:18,900 --> 01:30:20,360 atgriezties nākotnē. 1807 01:30:20,360 --> 01:30:23,820 >> Tagad ļaujiet man iet uz priekšu un dot myself int caur get int. 1808 01:30:23,820 --> 01:30:25,970 Tad ļaujiet man iet uz priekšu un darīt to. 1809 01:30:25,970 --> 01:30:30,150 Es gribu teikt, ja man ir less-- pieņemsim atšķirt pozitīva, negatīva, 1810 01:30:30,150 --> 01:30:31,260 vai nulles vērtības. 1811 01:30:31,260 --> 01:30:36,630 >> Tātad, ja es ir mazāks par nulli, ļaujiet man vienkārši ir šī programma vienkārši pateikt, 1812 01:30:36,630 --> 01:30:42,370 negatīvs, slīpsvītru n, cits ja i ir lielāka par nulli. 1813 01:30:42,370 --> 01:30:47,030 Tagad es esmu, protams, gatavojas teikt printf pozitīvu, reversā slīpsvītra n. 1814 01:30:47,030 --> 01:30:50,690 Un tad vēl if-- es varētu darīt. 1815 01:30:50,690 --> 01:30:53,410 >> Es varētu darīt, ja man ir vienāds ar 0. 1816 01:30:53,410 --> 01:30:55,840 Bet es gribētu būt pieņemšanā vismaz viena kļūda jau. 1817 01:30:55,840 --> 01:30:59,480 Atgādināt, ka vienādības zīme ir nav vienāds, jo mēs cilvēki zina. 1818 01:30:59,480 --> 01:31:01,010 >> Bet tas ir uzdevums operators. 1819 01:31:01,010 --> 01:31:05,640 Un mēs negribam uzņemties 0 Uz tiesības un nodot to i pa kreisi. 1820 01:31:05,640 --> 01:31:11,810 Tātad, lai izvairītos no šīs neskaidrības, vai varbūt no vienādības nepareiza paraksta, 1821 01:31:11,810 --> 01:31:14,740 cilvēki nolēma pirms dažiem gadiem ka daudzās programmēšanas valodās 1822 01:31:14,740 --> 01:31:18,000 ja jūs vēlaties, lai pārbaudītu vienlīdzību starp kreisās un labās puses, 1823 01:31:18,000 --> 01:31:19,635 jūs faktiski izmantot vienāds vienāds. 1824 01:31:19,635 --> 01:31:21,010 Tātad jūs hit vienādības zīmes divreiz. 1825 01:31:21,010 --> 01:31:25,600 Ja jūs vēlaties piešķirt no labās pa kreisi, jūs izmantojat vienu vienādības zīmi. 1826 01:31:25,600 --> 01:31:29,360 Lai mēs varētu darīt this-- cits ja es vienāds vienāds ar nulli. 1827 01:31:29,360 --> 01:31:31,710 >> Tad es varētu iet un atvērt manas cirtaini bikšturi, 1828 01:31:31,710 --> 01:31:36,087 un teikt, printf 0, slīpsvītru n, darīts. 1829 01:31:36,087 --> 01:31:38,170 Bet atceries, kā šie dakšas uz ceļa var strādāt. 1830 01:31:38,170 --> 01:31:39,836 Un, patiesi, tikai domāju par loģiku. 1831 01:31:39,836 --> 01:31:41,510 i ir skaitlis. 1832 01:31:41,510 --> 01:31:43,320 Tas ir vesels skaitlis, īpaši. 1833 01:31:43,320 --> 01:31:48,600 Un tas nozīmē, ka tas būs mazāks par 0, vai lielāks par 0, vai 0. 1834 01:31:48,600 --> 01:31:51,600 Tātad ir sava veida šī netiešā neatmaksāšanas gadījumā. 1835 01:31:51,600 --> 01:31:54,920 >> Un tā mēs varētu, tāpat kā Scratch, iztikt ar cits, ja, 1836 01:31:54,920 --> 01:31:55,747 un tikai teikt cits. 1837 01:31:55,747 --> 01:31:57,830 Loģiski, ja Jums programmētājs zināt, tur ir tikai 1838 01:31:57,830 --> 01:32:01,635 trīs spaiņi uz kurām scenārijs var fall-- pirmais, 1839 01:32:01,635 --> 01:32:03,510 otrais, vai trešais šajā case-- nav 1840 01:32:03,510 --> 01:32:07,100 apnikt pievienojot papildu precizitāti un papildus loģika tur. 1841 01:32:07,100 --> 01:32:09,690 Tikai iet uz priekšu ar noklusējuma gadījums no cits. 1842 01:32:09,690 --> 01:32:11,950 >> Tagad iesim uz priekšu pēc glābšanas tas, padarīt 1843 01:32:11,950 --> 01:32:15,760 apstākļi dot slash conditions-- nav lieliska lietotāja saskarne, 1844 01:32:15,760 --> 01:32:18,914 jo es neesmu pamudinot lietotāju, kā jau iepriekš minēju. 1845 01:32:18,914 --> 01:32:19,580 Bet tas ir jauki. 1846 01:32:19,580 --> 01:32:20,454 Mēs saglabātu tā vienkārši. 1847 01:32:20,454 --> 01:32:21,890 Pamēģināsim numuru 42. 1848 01:32:21,890 --> 01:32:23,240 Un tas ir pozitīvi. 1849 01:32:23,240 --> 01:32:26,120 Pamēģināsim numuru negatīvs 42, negatīvs. 1850 01:32:26,120 --> 01:32:28,244 >> Pamēģināsim vērtību 0. 1851 01:32:28,244 --> 01:32:29,160 Un, protams, tas darbojas. 1852 01:32:29,160 --> 01:32:33,900 Tagad, jūs redzēsiet ar problēmām pirms garš, testēšanas lietas trīs reizes, 1853 01:32:33,900 --> 01:32:34,980 iespējams, nav pietiekami. 1854 01:32:34,980 --> 01:32:37,438 Jūs, iespējams, vēlaties, lai pārbaudītu kādu lielāks skaits, daži mazāki 1855 01:32:37,438 --> 01:32:40,520 numuri, daži stūra gadījumos, kā mēs būsim tās aprakstīt. 1856 01:32:40,520 --> 01:32:42,500 >> Bet tagad, tas ir diezgan vienkārša programma. 1857 01:32:42,500 --> 01:32:45,160 Un es esmu diezgan pārliecināts, loģiski, ka tas iekrīt trīs gadījumos. 1858 01:32:45,160 --> 01:32:49,360 Un, protams, kaut arī mēs tikko vērsta uz potenciālajiem ēnas 1859 01:32:49,360 --> 01:32:53,480 par neprecizitāti un pārplūdes, jo realitāti, kur daudzi no CS50 problēmām, 1860 01:32:53,480 --> 01:32:56,000 mēs neesam gatavojas jāuztraucas par, visu laiku, 1861 01:32:56,000 --> 01:32:59,050 šie jautājumi pārpildes un neprecizitāte, jo, patiesībā, C, 1862 01:32:59,050 --> 01:33:01,889 tas tiešām nav viss, kas viegli izvairīties no šīs lietas. 1863 01:33:01,889 --> 01:33:04,180 Ja vēlaties saskaitīt lielāks, un lielāks, un lielāks, 1864 01:33:04,180 --> 01:33:07,510 izrādās, ka ir metodes, jūs var izmantot, bieži iesaistot lietas sauc 1865 01:33:07,510 --> 01:33:11,240 bibliotēkas, kolekcijas koda, ka citi cilvēki rakstīja, ka jūs varat izmantot, 1866 01:33:11,240 --> 01:33:13,910 un citas valodas, piemēram, Java un citi, faktiski 1867 01:33:13,910 --> 01:33:15,800 padara to daudz vieglāk skaitīt vēl lielāks. 1868 01:33:15,800 --> 01:33:19,810 Tātad, tas tiešām ir dažas no šīm briesmām funkcija valodas jūs izmantojat. 1869 01:33:19,810 --> 01:33:22,710 Un tuvākajās nedēļās mēs redzētu, cik bīstama C patiešām 1870 01:33:22,710 --> 01:33:24,950 var būt, ja jums nav to izmantot pareizi. 1871 01:33:24,950 --> 01:33:27,610 Bet no turienes, un ar Python, un JavaScript, būs 1872 01:33:27,610 --> 01:33:32,620 mēs slānis dažas papildu aizsardzība, un palaist mazāk no šiem riskiem. 1873 01:33:32,620 --> 01:33:35,820 >> Tātad, pieņemsim padarīt nedaudz vairāk interesanta loģika mūsu programmā. 1874 01:33:35,820 --> 01:33:39,110 Tāpēc ļaujiet man iet uz priekšu un izveidot programma, ko sauc Loģiskā 1875 01:33:39,110 --> 01:33:43,804 tikai, lai es varētu spēlēt ar kādu Faktiskais loģika, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Es ņemšu tikai kopēt un ielīmēt dažas kodu no agrāk, lai es saņemtu atpakaļ 1877 01:33:46,870 --> 01:33:49,950 uz šo jauku sākumpunktu. 1878 01:33:49,950 --> 01:33:53,980 >> Ļaujiet man šoreiz darīt char C. es esmu gatavojas arī tā nosaukumu C 1879 01:33:53,980 --> 01:33:58,510 tikai tāpēc, ka tas ir parasto, iegūt rakstzīmi no lietotāja. 1880 01:33:58,510 --> 01:34:00,730 Un pieņemsim izlikties, piemēram, Es esmu īstenojot daļu 1881 01:34:00,730 --> 01:34:04,130 Minētās Rm programmas noņemt programma pirms tam lika lietotājam 1882 01:34:04,130 --> 01:34:05,400 izņemt failu. 1883 01:34:05,400 --> 01:34:06,750 Kā mēs varētu darīt? 1884 01:34:06,750 --> 01:34:11,090 >> Es gribu teikt, ja C ir vienāds vienāds, quote likt pēdiņas beigās, 1885 01:34:11,090 --> 01:34:16,304 y, tad es esmu gatavojas pieņemt ka lietotājs ir izvēlējies jā. 1886 01:34:16,304 --> 01:34:17,470 Es esmu tikai gatavojas drukāt jā. 1887 01:34:17,470 --> 01:34:19,440 Ja tas tiešām ir rakstiski pārcelšanās programmu, 1888 01:34:19,440 --> 01:34:21,420 mēs varētu noņemt failu ar vairākām līnijām kodu. 1889 01:34:21,420 --> 01:34:22,461 Bet mēs saglabāt to vienkārši. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Cits, ja c vienāds vienāds N- un tagad šeit, es esmu gatavojas teikt, 1892 01:34:31,250 --> 01:34:32,980 lietotājam ir nozīmēja nē. 1893 01:34:32,980 --> 01:34:34,360 Un tad vēl, jūs zināt, ko? 1894 01:34:34,360 --> 01:34:36,200 Es nezinu, ko vēl lietotājs gatavojas rakstīt. 1895 01:34:36,200 --> 01:34:38,533 Tāpēc es esmu tikai gatavojas teikt, ka ka ir kļūda, neatkarīgi 1896 01:34:38,533 --> 01:34:40,070 viņš vai viņa faktiski drukāti. 1897 01:34:40,070 --> 01:34:41,180 >> Tātad, kas notiek šeit? 1898 01:34:41,180 --> 01:34:44,530 Ir būtiska atšķirība pret to, ko es esmu darījusi agrāk. 1899 01:34:44,530 --> 01:34:49,300 Pēdiņas, pēdiņas, dubultā citātus, un, tomēr, vienu pēdiņām, 1900 01:34:49,300 --> 01:34:50,170 vienu pēdiņām. 1901 01:34:50,170 --> 01:34:52,860 Izrādās C, ka tad, kad jūs vēlaties rakstīt virkni, 1902 01:34:52,860 --> 01:34:56,680 jūs izmantot dubultās pēdiņas, tāpat kā mēs esam bijis, izmantojot visu šo laiku ar printf. 1903 01:34:56,680 --> 01:35:02,030 >> Bet, ja jūs vēlaties, lai tiktu galā ar tikai vienots raksturs, ts char, 1904 01:35:02,030 --> 01:35:03,780 tad jūs faktiski izmantot vienu pēdiņas. 1905 01:35:03,780 --> 01:35:05,450 Tiem no jums, kas esam ieprogrammēts pirms, jums, iespējams, nav 1906 01:35:05,450 --> 01:35:07,850 bija jāuztraucas par to atšķirība dažās valodās. 1907 01:35:07,850 --> 01:35:09,450 C, tas nav jautājums. 1908 01:35:09,450 --> 01:35:12,560 Un tad, kad man char un es gribu salīdzināt, ka char izmantojot vienāds 1909 01:35:12,560 --> 01:35:18,350 vienāds ar kādu vēstuli, piemēram, y vai n, man, Patiešām, ir nepieciešams, lai būtu vienu pēdiņām. 1910 01:35:18,350 --> 01:35:19,770 >> Tagad iesim uz priekšu un darīt to. 1911 01:35:19,770 --> 01:35:26,180 Iesim uz priekšu un darīsim loģiskās dot slīpsvītra loģiski. 1912 01:35:26,180 --> 01:35:27,305 Un tagad es esmu to pamudināja. 1913 01:35:27,305 --> 01:35:30,638 Tātad, iespējams, labāku lietotāju pieredzi tiešām man pateikt, ko darīt šeit. 1914 01:35:30,638 --> 01:35:33,030 Bet es esmu gatavojas tikai akli teikt y par jā, OK, jauki. 1915 01:35:33,030 --> 01:35:35,780 >> Pieņemsim palaist vēlreiz, n ne, jauki. 1916 01:35:35,780 --> 01:35:39,610 Pieņemsim, piemēram, dažiem cilvēkiem, es zinu, mana Caps Lock taustiņš ir ieslēgts pārāk bieži. 1917 01:35:39,610 --> 01:35:43,740 Tāpēc man galvaspilsēta Y, ievadiet, kļūda. 1918 01:35:43,740 --> 01:35:46,130 Labi, tas nav tieši tas, ko es esmu gaidījis. 1919 01:35:46,130 --> 01:35:48,170 Patiešām, dators dara burtiski ko 1920 01:35:48,170 --> 01:35:51,794 Teicu to do-- pārbaudīt mazie y un mazie burti n. 1921 01:35:51,794 --> 01:35:53,960 Tas nav justies kā labi lietotāju pieredzi, lai gan. 1922 01:35:53,960 --> 01:35:59,010 Ļaujiet man lūgt un pieņemt nu mazie burti vai lielie burti. 1923 01:35:59,010 --> 01:36:02,090 Tātad izrādās, jūs varētu vēlēties pateikt kaut ko tāpat kā nulles, 1924 01:36:02,090 --> 01:36:08,150 piemēram, burtiski vai C vienāds vienāds kapitāla vienu kotētas vec. 1925 01:36:08,150 --> 01:36:11,400 Izrādās, C nav Tas burtisks atslēgvārdu vai. 1926 01:36:11,400 --> 01:36:12,880 >> Bet tas ir divas vertikālas joslas. 1927 01:36:12,880 --> 01:36:15,463 Jums ir turēt Shift parasti, ja jūs izmantojat ASV tastatūru, 1928 01:36:15,463 --> 01:36:18,910 un hit vertikālo pārliktni Galvenais virs jūsu atgriešanās taustiņu. 1929 01:36:18,910 --> 01:36:22,410 Bet tas vertikāla josla vertikāla josla nozīmē vai. 1930 01:36:22,410 --> 01:36:26,220 >> Ja, savukārt, mēs vēlējāmies teikt un, līdzīgi kā nulles, 1931 01:36:26,220 --> 01:36:28,180 mēs varētu darīt aizvieto & zīmes aizvieto & zīmes. 1932 01:36:28,180 --> 01:36:31,330 Ka nav nekādas loģiskas jēgas šeit, jo cilvēks nevarēja iespējams 1933 01:36:31,330 --> 01:36:37,110 ir drukāti gan y un mazie burti y un kapitāla Y kā paša rakstura. 1934 01:36:37,110 --> 01:36:39,470 Tātad, vai ir tas, ko mēs plānojam šeit. 1935 01:36:39,470 --> 01:36:46,280 >> Tātad, ja es to izdarītu abās vietās, vai c vienāds vienāds kapitāls N, tagad atkārto, 1936 01:36:46,280 --> 01:36:49,390 padara loģiski, atkārto loģiski. 1937 01:36:49,390 --> 01:36:51,200 Tagad es varu rakstīt y. 1938 01:36:51,200 --> 01:36:53,920 Un es varu darīt to vēlreiz ar kapitāls Y, vai kapitāla N. 1939 01:36:53,920 --> 01:36:56,630 Un es varētu pievienot papildu kombinācijas joprojām. 1940 01:36:56,630 --> 01:36:58,810 >> Tātad tas ir loģisks Programma ciktāl tagad 1941 01:36:58,810 --> 01:37:01,940 Es pārbaudīt loģiski par šī vērtība vai šī vērtība. 1942 01:37:01,940 --> 01:37:06,420 Un man nav, obligāti, nākt klajā ar vēl diviem IF vai cits IFS. 1943 01:37:06,420 --> 01:37:09,960 Es patiesībā var apvienot dažus no kas saistītas loģikas kopā šādā veidā. 1944 01:37:09,960 --> 01:37:11,950 Tātad tas būtu labāk izstrādātas nekā vienkārši 1945 01:37:11,950 --> 01:37:17,490 sakot, ja C vienāds mazais y, drukāt jā, cits, ja c ir vienāds kapitāla Y, 1946 01:37:17,490 --> 01:37:20,074 drukāt jā, cits, ja c ir vienāds lower-- citiem vārdiem sakot, 1947 01:37:20,074 --> 01:37:21,990 jums nav jābūt arvien vairāk filiāles. 1948 01:37:21,990 --> 01:37:28,840 Jūs varat apvienot dažus ekvivalenta Nozares Loģiski, kā šādā veidā. 1949 01:37:28,840 --> 01:37:34,150 >> Tātad, pieņemsim to apskatīt tikai vienu final sastāvdaļa, viena gala konstrukcija, 1950 01:37:34,150 --> 01:37:34,847 ka C atļauj. 1951 01:37:34,847 --> 01:37:36,930 Un mēs būsim atpakaļ Nākotne citiem vēl. 1952 01:37:36,930 --> 01:37:41,400 Un tad mēs secināt, aplūkojot pie ne pareizību code-- 1953 01:37:41,400 --> 01:37:46,070 iegūt kodu work-- bet dizains kodu, un augu tos sēklas sākumā. 1954 01:37:46,070 --> 01:37:51,337 >> Tāpēc ļaujiet man iet uz priekšu un atvērt jaunu failu šeit. 1955 01:37:51,337 --> 01:37:51,920 Tu zini ko? 1956 01:37:51,920 --> 01:37:54,450 Es esmu gatavojas atkārtoti ieviest ka pati programma, 1957 01:37:54,450 --> 01:37:55,940 bet, izmantojot citu konstrukciju. 1958 01:37:55,940 --> 01:38:00,110 >> Tāpēc ļaujiet man ātri dot sevi piekļuve iekļaut CS50.h 1959 01:38:00,110 --> 01:38:04,150 par CS50 bibliotēkā, standarts Io.h par printf. 1960 01:38:04,150 --> 01:38:06,510 Dodiet man manu int galvenais tukšumu. 1961 01:38:06,510 --> 01:38:09,310 Un tad vairāk nekā šeit, ļaujiet man iet uz priekšu un darīt to. 1962 01:38:09,310 --> 01:38:12,010 >> Char c izpaužas saņemt char, tāpat kā līdz šim. 1963 01:38:12,010 --> 01:38:16,770 Un es esmu gatavojas izmantot jaunu būvēt now-- slēdzis, uz kāda raksturu? 1964 01:38:16,770 --> 01:38:19,820 Tātad slēdzis ir veids kā komutācijas vilciena dziesmas. 1965 01:38:19,820 --> 01:38:22,070 Vai, patiešām, tas ir sava veida IF cits, ja cits, ja, 1966 01:38:22,070 --> 01:38:23,980 bet rakstīts nedaudz savādāk. 1967 01:38:23,980 --> 01:38:25,490 >> Slēdzis izskatās šādi. 1968 01:38:25,490 --> 01:38:29,060 Jums ir slēdzis, un tad kāda raksturs vai numuru, kuru vēlaties apskatīt, 1969 01:38:29,060 --> 01:38:32,000 tad daži cirtaini bikšturi patīk Scratch, tikai teikt šo stuff. 1970 01:38:32,000 --> 01:38:33,480 Un tad jums ir dažādas lietas. 1971 01:38:33,480 --> 01:38:34,830 >> Jūs neizmantojat ja un cits. 1972 01:38:34,830 --> 01:38:37,050 Jūs burtiski izmantot vārdu lietu. 1973 01:38:37,050 --> 01:38:38,790 Un tu teiktu kaut kas līdzīgs šim. 1974 01:38:38,790 --> 01:38:43,820 >> Tātad, šajā gadījumā uz mazo y, vai gadījumā, ja kapitālu Y, 1975 01:38:43,820 --> 01:38:47,350 iet uz priekšu un izdrukāt jā. 1976 01:38:47,350 --> 01:38:49,020 Un tad izkļūt no slēdža. 1977 01:38:49,020 --> 01:38:49,580 Tieši tā. 1978 01:38:49,580 --> 01:38:50,880 Mēs esam darīts. 1979 01:38:50,880 --> 01:38:57,270 >> Cits, ja, tā sakot, mazie burti n, vai kapitāla N, 1980 01:38:57,270 --> 01:39:02,560 tad iet uz priekšu un izdrukāt veic ne, un tad pārtraukums. 1981 01:39:02,560 --> 01:39:08,022 Else-- un šāda veida ir neatmaksāšanas gadījumā indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 un tikai labu pasākumu, lai gan loģiski šis pārtraukums nav nepieciešams 1983 01:39:10,980 --> 01:39:12,896 jo mēs esam beigās slēdzi anyway, 1984 01:39:12,896 --> 01:39:14,520 Es tagad izkļūt no slēdzi. 1985 01:39:14,520 --> 01:39:16,280 Tātad tas izskatās nedaudz atšķiras. 1986 01:39:16,280 --> 01:39:18,272 >> Bet, loģiski, tas ir faktiski līdzvērtīgs. 1987 01:39:18,272 --> 01:39:19,980 Un kāpēc jūs izmantojat viens virs otra? 1988 01:39:19,980 --> 01:39:23,220 Dažreiz vienkārši personīgās vēlmes, dažreiz estētika, 1989 01:39:23,220 --> 01:39:25,420 ja es skatienu šis tagad, tur ir kaut kas 1990 01:39:25,420 --> 01:39:27,510 ko teikt par salasāmība šo kodu. 1991 01:39:27,510 --> 01:39:30,690 Es domāju, nekad prātā faktu, ka šis kods ir jauns, lai daudziem no mums šajā telpā. 1992 01:39:30,690 --> 01:39:33,515 >> Bet tas tikai veida ir diezgan. 1993 01:39:33,515 --> 01:39:37,760 Redzi mazie y, kapitāla Y, mazie burti n, kapitāla N noklusējuma, 1994 01:39:37,760 --> 01:39:40,150 tas tikai veida lec out pie jums tādā veidā 1995 01:39:40,150 --> 01:39:42,200 ka, varbūt, varbūt iepriekšējais piemērs 1996 01:39:42,200 --> 01:39:45,780 ar IF un vertikāliem stieņiem, un cits IFS, iespējams, nav. 1997 01:39:45,780 --> 01:39:51,600 Tātad šī ir patiešām jautājums par personas izvēle, tiešām, vai lasāmību, 1998 01:39:51,600 --> 01:39:52,360 no koda. 1999 01:39:52,360 --> 01:39:58,230 >> Bet attiecībā uz funkcionalitāti, ļaujiet man iet uz priekšu un veikt slēdzis, dot slīpsvītru 2000 01:39:58,230 --> 01:40:05,830 slēdzis, un tagad ierakstiet mazo y, kapitāls Y, mazie n, kapitāla N, 2001 01:40:05,830 --> 01:40:09,250 David, mēģiniet vēlreiz, jo tas ir ne vienu rakstzīmi. 2002 01:40:09,250 --> 01:40:12,050 Darīsim x, kļūdu, kā gaidīts. 2003 01:40:12,050 --> 01:40:15,640 Un, logically-- un tas ir kaut kas Es aicinu in general-- pat 2004 01:40:15,640 --> 01:40:17,790 lai gan mēs esam tikai nesaskrāpē virsma dažas no šīm funkcijām. 2005 01:40:17,790 --> 01:40:20,560 >> Un tas var nebūt skaidrs, kad jūs pats sēsties pie klaviatūras, 2006 01:40:20,560 --> 01:40:21,370 Kā tas darbojas? 2007 01:40:21,370 --> 01:40:22,240 Kas būtu tas jādara? 2008 01:40:22,240 --> 01:40:25,630 Skaista lieta, par kuru klēpjdatoru vai galda, vai piekļuves 2009 01:40:25,630 --> 01:40:29,290 datoram ar kompilatoru, un ar koda redaktoru, piemēram, tas, 2010 01:40:29,290 --> 01:40:32,990 ir jūs gandrīz vienmēr varat atbildēt uz šiem jautājumi sev, vienkārši mēģina. 2011 01:40:32,990 --> 01:40:36,570 >> Piemēram, ja retorisks jautājums pie rokas bija, 2012 01:40:36,570 --> 01:40:39,540 kas notiek, ja esat aizmirsis Jūsu pārtraukums paziņojumi? 2013 01:40:39,540 --> 01:40:41,400 Kas ir faktiski ļoti bieži lieta, ko darīt, 2014 01:40:41,400 --> 01:40:43,540 jo tas neizskatās kā jums tiešām ir nepieciešams. 2015 01:40:43,540 --> 01:40:46,790 Tie nav īsti pabeigt savu domāju, piemēram, iekavās vai cirtaini 2016 01:40:46,790 --> 01:40:47,714 lencēm dara. 2017 01:40:47,714 --> 01:40:49,630 Iesim uz priekšu un recompile kodu un redzēt. 2018 01:40:49,630 --> 01:40:53,690 Tātad, lai slēdzis, dot slash slēdzis. 2019 01:40:53,690 --> 01:40:56,435 Pieņemsim rakstīt ar mazajiem burtiem y, top lieta, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Tāpēc es drukāti vec. 2022 01:41:00,700 --> 01:41:04,420 >> Programma teica jā, nē, kļūda, it kā tā maina savu prātu. 2023 01:41:04,420 --> 01:41:09,280 Bet tas veids bija, jo tas, kas notiek ar slēdzi ir pirmais gadījums, 2024 01:41:09,280 --> 01:41:13,899 spēles būtībā nozīmē, hey dators, izpildīt visi no koda zem tā. 2025 01:41:13,899 --> 01:41:16,690 Un, ja jums nav teikt pauze, vai nesaku pārtraukuma, vai nav teikt pārtraukuma, 2026 01:41:16,690 --> 01:41:19,540 dators gatavojas pūst cauri visām šīm līnijām 2027 01:41:19,540 --> 01:41:22,779 un izpildīt visas no tām līdz tas izpaužas uz šo cirtaini lencēm. 2028 01:41:22,779 --> 01:41:24,320 Tātad bremzes ir patiešām nepieciešams. 2029 01:41:24,320 --> 01:41:27,120 Bet takeaway šeit ir, kad šaubāties, izmēģināt kaut ko. 2030 01:41:27,120 --> 01:41:29,510 Varbūt saglabāt savu kodu, pirmkārt, vai saglabāt to papildu failā 2031 01:41:29,510 --> 01:41:32,930 ja jūs patiešām uztrauc messing up un kam, lai atgūtu 2032 01:41:32,930 --> 01:41:34,430 darbs, ka jūs zināt, strādā. 2033 01:41:34,430 --> 01:41:35,410 >> Bet mēģināt lietas. 2034 01:41:35,410 --> 01:41:38,074 Un nevajag tik bail, varbūt, par to, ko dators varētu darīt, 2035 01:41:38,074 --> 01:41:39,490 vai jūs varētu pauze kaut ko. 2036 01:41:39,490 --> 01:41:42,790 Jūs vienmēr varat atgriezties uz kādu iepriekšējo versiju. 2037 01:41:42,790 --> 01:41:45,640 >> Tātad, pieņemsim beigt skatoties pie dizaina kodu. 2038 01:41:45,640 --> 01:41:49,020 Mums ir šī iespēja tagad rakstīt nosacījumiem, un rakstīt cilpas, 2039 01:41:49,020 --> 01:41:50,850 un mainīgie, un zvanu funkcijas. 2040 01:41:50,850 --> 01:41:54,590 Tātad, atklāti sakot, mēs esam sava veida atpakaļ kur mēs bijām pirms nedēļas ar nulles, 2041 01:41:54,590 --> 01:42:00,120 kaut arī ar mazāk pārliecinošu tekstuālu vide nekā Scratch atļauj. 2042 01:42:00,120 --> 01:42:03,990 >> Bet paziņojums cik ātri mēs esam ieguvuši ka vārdu krājums, pat ja tas ir 2043 01:42:03,990 --> 01:42:07,570 gatavojas pieņemt nedaudz, bet izlietne, tā ka tagad mēs varam izmantot šo vārdnīcu 2044 01:42:07,570 --> 01:42:10,320 rakstīt vairāk interesantu programmu. 2045 01:42:10,320 --> 01:42:12,940 Un pieņemsim bērnu soli pret, ka šādi. 2046 01:42:12,940 --> 01:42:14,890 Ļaujiet man iet uz priekšu un izveidot jaunu failu šeit. 2047 01:42:14,890 --> 01:42:17,750 >> Es esmu dodas uz zvanu šis prototype.c, un ieviest 2048 01:42:17,750 --> 01:42:20,954 pirmo reizi, spēja padarīt savu funkciju. 2049 01:42:20,954 --> 01:42:22,870 Daži no jums varētu būt izdarīts ar nulles, 2050 01:42:22,870 --> 01:42:25,430 ar kuru jūs varat izveidot savu pašu pasūtījuma bloki nulles, 2051 01:42:25,430 --> 01:42:27,892 un pēc tam velciet tās vietā kur vien vēlaties C 2052 01:42:27,892 --> 01:42:30,100 Un lielākajā daļā programmēšanas valodas, jūs varat darīt tieši 2053 01:42:30,100 --> 01:42:33,580 that-- veikt savas funkcijas, ja tie nav jau pastāv. 2054 01:42:33,580 --> 01:42:38,660 >> Tā, piemēram, ļaujiet man iet uz priekšu un ietver CS50.h, un ietver 2055 01:42:38,660 --> 01:42:43,110 standarta IO.h, int galvenais spēkā neesošu. 2056 01:42:43,110 --> 01:42:46,020 Un tagad mums ir viettura gatavi iet. 2057 01:42:46,020 --> 01:42:48,550 Es turpinu drukāšanas lietas tāpat cilvēku vārdiem šodien. 2058 01:42:48,550 --> 01:42:51,910 Un kas jūtas like-- nebūtu jauki, ja tur 2059 01:42:51,910 --> 01:42:53,936 bija funkciju sauc print nosaukums? 2060 01:42:53,936 --> 01:42:55,060 Man nav izmantot printf. 2061 01:42:55,060 --> 01:42:56,976 Man nav jāatceras visi formāta kodi. 2062 01:42:56,976 --> 01:43:00,050 Kāpēc ne es, vai kāpēc nebija kāds pirms manis, 2063 01:43:00,050 --> 01:43:02,980 izveidot funkciju sauc drukāt nosaukums, kas dots kādu vārdu, 2064 01:43:02,980 --> 01:43:03,980 vienkārši izdrukā to ārā? 2065 01:43:03,980 --> 01:43:08,700 >> Citiem vārdiem sakot, ja es saku, hey, dators, man virkni 2066 01:43:08,700 --> 01:43:11,870 lūdzot lietotājam par, piemēram, izmantojot CS50 nokļūt string funkciju. 2067 01:43:11,870 --> 01:43:15,090 Hey, dators, nodot, ka string mainīgais kreisajā pusē, 2068 01:43:15,090 --> 01:43:16,150 un zvanu tas s. 2069 01:43:16,150 --> 01:43:22,150 Un tad, hey dators, iet uz priekšu un izdrukāt, ka personas vārds, darīts. 2070 01:43:22,150 --> 01:43:26,240 >> Tagad, tas būtu jauki, jo šo programmu, trāpīgi nosaukts, 2071 01:43:26,240 --> 01:43:29,170 man saka, kas tas ir vajadzēja darīt veidā šie funkcija s nosaukumiem. 2072 01:43:29,170 --> 01:43:32,930 Ļaujiet man iet un veikt prototipu, Enter. 2073 01:43:32,930 --> 01:43:34,930 Un, diemžēl, tas nav gatavojas lidot. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, līnija 7, raksturs 5, kļūda, netieši deklarācija 2075 01:43:39,430 --> 01:43:42,960 no funkcijas drukas nosaukuma nav spēkā C99, C99 2076 01:43:42,960 --> 01:43:45,130 nozīmē versiju C kas iznāca 1999. gadā. 2077 01:43:45,130 --> 01:43:45,730 Tas ir viss. 2078 01:43:45,730 --> 01:43:48,780 >> Tāpēc es nezinu, kas tas viss nozīmē vēl. 2079 01:43:48,780 --> 01:43:50,810 Bet man jāatzīst kļūda sarkanā krāsā. 2080 01:43:50,810 --> 01:43:51,770 Tas ir diezgan skaidrs. 2081 01:43:51,770 --> 01:43:53,769 >> Un šķiet, ka ar zaļā raksturs šeit, 2082 01:43:53,769 --> 01:43:57,520 problēma ir ar drukas vārdu, atveriet paren s, tuvu paren, semikols. 2083 01:43:57,520 --> 01:44:01,800 Bet netieši deklarācija funkcija mēs redzēt īsumā agrāk. 2084 01:44:01,800 --> 01:44:04,880 Tas nozīmē, vienkārši, ka šķindēt nezina, ko es domāju. 2085 01:44:04,880 --> 01:44:09,000 >> Esmu izmantojis vārdu krājums vārdu, ka tas ir nekad redzējis vai mācīts iepriekš. 2086 01:44:09,000 --> 01:44:11,950 Un tāpēc man ir nepieciešams, lai mācītu to ko šī funkcija nozīmē. 2087 01:44:11,950 --> 01:44:13,590 Tāpēc es esmu gatavojas iet uz priekšu un darīt. 2088 01:44:13,590 --> 01:44:17,970 >> Es iešu uz priekšu un īstenot mana funkcija sauc Print vārds. 2089 01:44:17,970 --> 01:44:24,720 Un es esmu gatavojas teikt, kā izriet, ka tas šo, printf, Labdien, procenti 2090 01:44:24,720 --> 01:44:27,760 s, slīpsvītru n, nosaukums, semikols. 2091 01:44:27,760 --> 01:44:29,250 Tātad, ko es vienkārši darīt? 2092 01:44:29,250 --> 01:44:31,325 >> Tātad izrādās, lai īstenot savu funkciju, 2093 01:44:31,325 --> 01:44:33,845 mēs veida aizņemties dažus tāda pati struktūra kā galvenais 2094 01:44:33,845 --> 01:44:35,720 ka mēs esam tikko par pašsaprotamu, un es 2095 01:44:35,720 --> 01:44:37,730 zinu tikai kopēšanu un līmēšana diezgan daudz, ko 2096 01:44:37,730 --> 01:44:39,170 Esmu bijis rakstot pagātnē. 2097 01:44:39,170 --> 01:44:40,570 Bet paziņojums modelis šeit. 2098 01:44:40,570 --> 01:44:43,750 Int, Main, Void, mēs kaitināt intervālu pirms ilgi, ko tas patiesībā nozīmē. 2099 01:44:43,750 --> 01:44:46,160 >> Bet šodien, tikai paziņojums paralēlisms. 2100 01:44:46,160 --> 01:44:48,210 Void, drukāt nosaukums, string vārdu, tāpēc tur ir 2101 01:44:48,210 --> 01:44:50,310 purpura atslēgvārds, kas mēs esam gatavojas sākt 2102 01:44:50,310 --> 01:44:54,067 aicinot atgriešanās veidu, nosaukums funkciju, un pēc tam ievadi. 2103 01:44:54,067 --> 01:44:56,400 Tātad, patiesībā, mēs varam destilēt šāda veida, piemēram, pagājušajā nedēļā 2104 01:44:56,400 --> 01:44:59,030 jo tas ir vārds vai algoritms kodu mēs esi 2105 01:44:59,030 --> 01:45:00,761 gatavojas write-- algoritmu pamatā 2106 01:45:00,761 --> 01:45:02,010 kodu, mēs ejam, lai rakstītu. 2107 01:45:02,010 --> 01:45:03,180 >> Tas ir tās ieguldījums. 2108 01:45:03,180 --> 01:45:04,670 Tas ir tā izeja. 2109 01:45:04,670 --> 01:45:08,730 Šī funkcija, print nosaukums, ir paredzēts veikt virkni sauc nosaukums, 2110 01:45:08,730 --> 01:45:11,350 vai kāds, kā ievade, un tad spēkā neesošu. 2111 01:45:11,350 --> 01:45:13,904 Tas neatgriežas neko, piemēram, saņemt virkni vai saņemt int dara. 2112 01:45:13,904 --> 01:45:15,570 Tātad, tas notiek, lai roku man kaut ko atpakaļ. 2113 01:45:15,570 --> 01:45:17,960 Tas ir tikai nāksies blakusparādība, tā sakot, 2114 01:45:17,960 --> 01:45:19,570 izdrukāt personas vārdu. 2115 01:45:19,570 --> 01:45:22,260 Tātad paziņojums, līnija 7, es var zvanīt drukas nosaukumu. 2116 01:45:22,260 --> 01:45:25,920 10 Line, es varu definēt vai īstenot drukas nosaukumu. 2117 01:45:25,920 --> 01:45:28,450 Bet, diemžēl, tas nav pietiekami. 2118 01:45:28,450 --> 01:45:31,230 >> Ļaujiet man iet uz priekšu un recompile tas pēc glābšanas. 2119 01:45:31,230 --> 01:45:33,910 Paga, tagad, es esmu, kas to sliktāk, šķiet. 2120 01:45:33,910 --> 01:45:37,027 Tātad netieši deklarācija funkcija print nosaukums nav derīgs. 2121 01:45:37,027 --> 01:45:38,360 Un atkal, tur ir vairāk kļūdas. 2122 01:45:38,360 --> 01:45:41,430 Bet kā es brīdināja iepriekš, pat ja jums overwhelmed ar, 2123 01:45:41,430 --> 01:45:44,850 vai mazliet skumji redzēt tik daudz kļūdas, koncentrēties tikai uz pirmo 2124 01:45:44,850 --> 01:45:47,500 sākumā, jo tas var tikai ir bijusi lavīnveida efekts. 2125 01:45:47,500 --> 01:45:51,970 Tātad C, vai šķindēt precīzāk, joprojām neatzīst drukas nosaukumu. 2126 01:45:51,970 --> 01:45:54,580 >> Un tas ir tāpēc, šķindēt, dizains, ir sava veida mēms. 2127 01:45:54,580 --> 01:45:56,280 Tas tikai tas, ko tu pateikt to darīt. 2128 01:45:56,280 --> 01:46:00,950 Un tas tikai tā rīkojas, lai kurā jums pateikt to darīt. 2129 01:46:00,950 --> 01:46:05,270 >> Tāpēc man ir definētas galvenās tiešsaistē četriem, kā mēs esam bijuši dara diezgan bieži. 2130 01:46:05,270 --> 01:46:07,980 Esmu definēts drukas vārdu uz līnijas 10. 2131 01:46:07,980 --> 01:46:11,793 Bet es cenšos izmantot print vārds tiešsaistē septiņi. 2132 01:46:11,793 --> 01:46:13,670 >> Tas ir par agru, nav vēl. 2133 01:46:13,670 --> 01:46:19,150 Lai es varētu būt gudrs, un būt, piemēram, Labi, tāpēc pieņemsim tikai spēlēt kopā, 2134 01:46:19,150 --> 01:46:23,680 un pārvietot drukas vārdu augšu šeit, un atkārtoti sastādīt. 2135 01:46:23,680 --> 01:46:24,550 Ak mans Dievs. 2136 01:46:24,550 --> 01:46:25,260 Tā strādāja. 2137 01:46:25,260 --> 01:46:26,670 Tas bija tik vienkārši. 2138 01:46:26,670 --> 01:46:28,120 >> Bet loģika ir tieši tā. 2139 01:46:28,120 --> 01:46:30,870 Jums ir iemācīt šķindēt kas tas ir definējot funkciju pirmās. 2140 01:46:30,870 --> 01:46:31,920 Tad jūs varat izmantot to. 2141 01:46:31,920 --> 01:46:33,940 Bet, atklāti sakot, tas jūtas kā slidenas nogāzes. 2142 01:46:33,940 --> 01:46:35,773 >> Tāpēc katru reizi, kad es palaist par problēmu, es esmu tikai 2143 01:46:35,773 --> 01:46:39,450 dodas, lai izceltu un nokopējiet kodu Es uzrakstīju, sagriež to un ielīmējiet to šeit. 2144 01:46:39,450 --> 01:46:41,370 Un, protams, mēs varētu pamanīties dažus scenārijus 2145 01:46:41,370 --> 01:46:43,286 kur viena funkcija varētu jāpiezvana citu. 2146 01:46:43,286 --> 01:46:46,030 Un jūs vienkārši nevar likt katru funkcija iepriekš katru otro. 2147 01:46:46,030 --> 01:46:47,930 >> Tātad izrādās, tur ir labāks risinājums. 2148 01:46:47,930 --> 01:46:50,100 Mēs varam atstāt šo būt. 2149 01:46:50,100 --> 01:46:53,677 Un, godīgi sakot, tas ir vispār jauki, un ērts, un labs dizains 2150 01:46:53,677 --> 01:46:56,760 likt galvenais, pirmkārt, tāpēc, ka, atkal, Galvenais, tāpat kā tad, kad zaļo karogu uzklikšķināt, 2151 01:46:56,760 --> 01:46:59,027 ka ir funkcija, kas izpaužas izpildīts pēc noklusējuma. 2152 01:46:59,027 --> 01:47:01,110 Tātad, jūs varētu arī nodot tā augšpusē faila 2153 01:47:01,110 --> 01:47:03,560 lai tad, kad jūs vai kāds cits cilvēks skatās uz failu 2154 01:47:03,560 --> 01:47:06,360 jūs zināt, kas notiek vienkārši izlasot galvenais pirmās. 2155 01:47:06,360 --> 01:47:15,360 Tātad izrādās, mēs varam pateikt šķindēt proaktīvi, hey, šķindēt, tiešsaistē četriem, 2156 01:47:15,360 --> 01:47:17,940 Es apsolu, lai īstenotu funkcija sauc Print 2157 01:47:17,940 --> 01:47:22,600 Nosaukums, kas ņem string sauc vārdu kā ievade, un atgriež neko, tukšumu. 2158 01:47:22,600 --> 01:47:24,770 Un es nopirkšu ap to īsteno vēlāk. 2159 01:47:24,770 --> 01:47:25,680 >> Šeit nāk Main. 2160 01:47:25,680 --> 01:47:29,130 Galvenais tagad uz līnijas 9 var izmantot Print Name jo šķindēt 2161 01:47:29,130 --> 01:47:32,600 ir uzticoties, ka, galu galā, tas sastapsies definīciju 2162 01:47:32,600 --> 01:47:34,880 īstenošanas Print Vārds. 2163 01:47:34,880 --> 01:47:37,390 Tātad, pēc glābšanas manu failu, ļaujiet man iet uz priekšu un veikt prototipu, 2164 01:47:37,390 --> 01:47:38,498 izskatās labi šoreiz. 2165 01:47:38,498 --> 01:47:43,470 Dot slash, prototips, ļaujiet man iet uz priekšu un ierakstiet vārdu. 2166 01:47:43,470 --> 01:47:48,440 David, hello David, Zamila, hello Zamila, un, protams, tagad tas strādā. 2167 01:47:48,440 --> 01:47:52,200 >> Tātad sastāvdaļa šeit ir tas, ka mēs esam izgatavoti pielāgotu funkciju, piemēram, pasūtījuma 2168 01:47:52,200 --> 01:47:54,219 Scratch bloks mēs aicinot to. 2169 01:47:54,219 --> 01:47:57,010 Bet atšķirībā no nulles, kur var vienkārši izveidot to un sākt to lietot, 2170 01:47:57,010 --> 01:47:59,330 Tagad mēs jābūt nedaudz vairāk pedantiska, 2171 01:47:59,330 --> 01:48:03,410 un faktiski apmācīt šķindēt izmantot, vai gaidīt to. 2172 01:48:03,410 --> 01:48:09,140 Tagad, kā malā, kāpēc visu šo laiku ir mēs bijuši tikai akli uz ticību, tostarp 2173 01:48:09,140 --> 01:48:12,170 CS50.h, ieskaitot standarta IO.h? 2174 01:48:12,170 --> 01:48:15,190 >> Nu, izrādās, starp dažām citām lietām, 2175 01:48:15,190 --> 01:48:18,550 visu, kas ir tajās dot h failus, kas gadās būt failus. 2176 01:48:18,550 --> 01:48:20,460 Viņi header failus, lai runāt. 2177 01:48:20,460 --> 01:48:23,270 Viņi joprojām rakstīti C. Bet viņi cita veida failu. 2178 01:48:23,270 --> 01:48:28,690 >> Tagad, jūs varat diezgan daudz uzņemties ka viss, kas ir iekšpusē CS50.h 2179 01:48:28,690 --> 01:48:33,360 ir daži viena oderējumi, piemēram, tas, kas nav to funkciju sauc Print Vārds, 2180 01:48:33,360 --> 01:48:36,840 bet Saņemt String, Get Float, un daži citi. 2181 01:48:36,840 --> 01:48:41,510 Un tur ir līdzīgi prototipi, vienu oderējumi, iekšpusē standarta IO.h 2182 01:48:41,510 --> 01:48:46,241 par printf, kura tagad mana Print vārds funkcija. 2183 01:48:46,241 --> 01:48:49,490 Tātad citiem vārdiem sakot, viss šoreiz mēs esam tikko akli kopējot un ielīmējot 2184 01:48:49,490 --> 01:48:51,780 ietver šo, ietver tas, kas notiek? 2185 01:48:51,780 --> 01:48:55,310 Tie ir tikai sava veida clues lai šķindēt par to, kādas funkcijas 2186 01:48:55,310 --> 01:49:00,170 ir, protams, īsteno, tikai citur dažādiem failiem 2187 01:49:00,170 --> 01:49:02,440 kaut kur citur uz sistēmu. 2188 01:49:02,440 --> 01:49:05,160 >> Tāpēc mēs esam jāīsteno drukas nosaukumu. 2189 01:49:05,160 --> 01:49:07,910 Tas ir šī blakusparādība drukāšanas kaut uz ekrāna. 2190 01:49:07,910 --> 01:49:10,170 Bet tas nav reāli roku man kaut ko atpakaļ. 2191 01:49:10,170 --> 01:49:12,200 Kā mēs iet par programmas īstenošanas, kas 2192 01:49:12,200 --> 01:49:14,510 tas roku man kaut ko atpakaļ? 2193 01:49:14,510 --> 01:49:15,580 >> Nu, pieņemsim mēģināt šo. 2194 01:49:15,580 --> 01:49:21,360 Ļaujiet man iet uz priekšu un īstenot fails sauc return.c 2195 01:49:21,360 --> 01:49:24,530 lai mēs varētu parādīt, kā kaut ko tāpat Saņemt String, vai Get Int, 2196 01:49:24,530 --> 01:49:27,340 faktiski atgriežas kaut atpakaļ lietotājam. 2197 01:49:27,340 --> 01:49:29,840 Iesim uz priekšu un noteikt int galvenais tukšumu. 2198 01:49:29,840 --> 01:49:33,230 >> Un, atkal, ka nākotnē, mēs paskaidrot, kas tas int un ka par spēkā neesošu 2199 01:49:33,230 --> 01:49:34,090 ir faktiski dara. 2200 01:49:34,090 --> 01:49:35,840 Bet šodien, mēs ņemt to par pašsaprotamu. 2201 01:49:35,840 --> 01:49:39,970 Es iešu uz priekšu un printf, par labu lietotāju pieredzi, x ir. 2202 01:49:39,970 --> 01:49:44,360 Un tad es esmu gatavojas gaidīt lietotājam dod man x ar get int. 2203 01:49:44,360 --> 01:49:48,459 >> Un tad es iešu uz priekšu un izdrukāt x uz laukuma. 2204 01:49:48,459 --> 01:49:50,500 Tātad, ja jums ir tikai tastatūras, cilvēki sastopamās 2205 01:49:50,500 --> 01:49:52,600 izmantot maz burkānu simbols uz klaviatūras 2206 01:49:52,600 --> 01:49:55,330 pārstāvēt pie varas par vai eksponents. 2207 01:49:55,330 --> 01:49:58,960 Tātad x kvadrātā ir klāt i. 2208 01:49:58,960 --> 01:50:00,660 >> Un tagad es esmu gatavojas darīt. 2209 01:50:00,660 --> 01:50:03,940 Es varētu tikai do-- kas ir x kvadrātā? x kvadrātā ir x reizes x. 2210 01:50:03,940 --> 01:50:06,690 >> Un mēs to darījām daži laiku atpakaļ jau šodien. 2211 01:50:06,690 --> 01:50:08,730 Tas nav justies kā viss, kas liels progress. 2212 01:50:08,730 --> 01:50:09,570 Tu zini ko? 2213 01:50:09,570 --> 01:50:13,100 Pieņemsim sviras dažas šīs idejas No pēdējo reizi abstrakcijas. 2214 01:50:13,100 --> 01:50:16,080 >> Vai tas nebūtu jauki, ja tur ir funkcija sauc 2215 01:50:16,080 --> 01:50:18,460 kvadrātveida, kas dara tieši to? 2216 01:50:18,460 --> 01:50:20,640 Tas joprojām, beigās no diena, vai to pašu math. 2217 01:50:20,640 --> 01:50:22,410 Bet pieņemsim abstrakts prom ideja ņemšanas 2218 01:50:22,410 --> 01:50:25,280 viens numurs reizināts ar vēl viens, un tikai dod tai nosaukumu, 2219 01:50:25,280 --> 01:50:27,360 tāpat kvadrātveida šo vērtību. 2220 01:50:27,360 --> 01:50:29,560 >> Un, citiem vārdiem sakot, C, pieņemsim izveidot funkciju 2221 01:50:29,560 --> 01:50:32,660 sauc laukums, kas dara tieši tā. 2222 01:50:32,660 --> 01:50:34,600 Tas notiek, lai varētu saukt square. 2223 01:50:34,600 --> 01:50:35,790 Tas notiek, lai int. 2224 01:50:35,790 --> 01:50:37,820 Un mēs būs tikai sauc to n, pēc noklusējuma. 2225 01:50:37,820 --> 01:50:39,403 >> Bet mēs varētu to saucam par kaut ko mēs gribam. 2226 01:50:39,403 --> 01:50:42,900 Un viss, ka tas notiek, lai do, burtiski, ir atgriešanās 2227 01:50:42,900 --> 01:50:45,810 rezultāts n reizes n. 2228 01:50:45,810 --> 01:50:48,980 Bet tāpēc, ka tas ir atgriežoties kaut, kas 2229 01:50:48,980 --> 01:50:53,690 ir atslēgvārds purpura mēs esam nekad redzējis, es, on line 11, 2230 01:50:53,690 --> 01:50:55,410 nevar vienkārši pateikt neesošu šoreiz. 2231 01:50:55,410 --> 01:51:01,320 >> Void, piemērā mēs tikko redzējām drīzāk drukas vārda, tikai nozīmē, 2232 01:51:01,320 --> 01:51:02,190 dari kaut ko. 2233 01:51:02,190 --> 01:51:04,170 Bet nav roku man kaut ko atpakaļ. 2234 01:51:04,170 --> 01:51:06,790 Šajā gadījumā, es gribu atgriezties n reizes n, 2235 01:51:06,790 --> 01:51:08,460 vai kāds tas ir, ka numurs. 2236 01:51:08,460 --> 01:51:12,460 >> Tāpēc es nevaru teikt, hey, dators, Es atgriešanās nekas, par spēkā neesošu. 2237 01:51:12,460 --> 01:51:16,166 Tas notiek, lai atgrieztos, pēc būtības, int. 2238 01:51:16,166 --> 01:51:17,790 Un tā tas ir viss, kas notiek šeit. 2239 01:51:17,790 --> 01:51:20,070 >> Ieguldījums kvadrātveida būs int. 2240 01:51:20,070 --> 01:51:24,760 Un tā, ka mēs varam izmantot, tas ir ir nosaukums, N. Tas būs produkciju 2241 01:51:24,760 --> 01:51:26,240 int, ka nav nepieciešams nosaukumu. 2242 01:51:26,240 --> 01:51:29,590 Mēs varam atstāt to galvenais, vai kurš ir izmantojot man atcerēties šo vērtību, ja mēs 2243 01:51:29,590 --> 01:51:31,120 gribu ar savu mainīgo. 2244 01:51:31,120 --> 01:51:33,230 >> Un atkal, vienīgais jaunais atslēgvārds šeit ir atgriešanās. 2245 01:51:33,230 --> 01:51:34,480 Un es esmu tikai darot daži math. 2246 01:51:34,480 --> 01:51:41,825 Ja es patiešām gribēju būt lieka, Es varētu teikt int produkts saņem n reizes n. 2247 01:51:41,825 --> 01:51:44,170 >> Un tad es varētu teikt, atgriezt produktu. 2248 01:51:44,170 --> 01:51:47,360 Bet, atkal, lai manām agrāk par tas vienkārši nav ir labi design-- 2249 01:51:47,360 --> 01:51:50,060 piemēram, kāpēc ieviest vārdu, simbols, piemēram, produktu, 2250 01:51:50,060 --> 01:51:51,570 tikai, lai uzreiz atdod to? 2251 01:51:51,570 --> 01:51:53,670 Tas ir nedaudz tīrāku, nedaudz stingrāka, tāpēc 2252 01:51:53,670 --> 01:51:59,380 runāt, vienkārši pateikt atgriešanās n reizes n, atbrīvoties no šīs līnijas vispār. 2253 01:51:59,380 --> 01:52:02,860 >> Un tas ir tikai mazāk kodu, lai lasītu, mazāk iespēju kļūdām. 2254 01:52:02,860 --> 01:52:05,180 Un pieņemsim redzēt, ja tas faktiski tagad strādā. 2255 01:52:05,180 --> 01:52:09,380 Tagad es iešu priekšu un veikt peļņu. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, netieši deklarācija funkciju. 2257 01:52:11,460 --> 01:52:14,080 Es šo kļūdu pirms, nav liels darījumu. 2258 01:52:14,080 --> 01:52:18,950 Ļaujiet man vienkārši ierakstiet, vai iezīmējiet un kopēt, tieši tādu pašu funkciju prototips, 2259 01:52:18,950 --> 01:52:21,342 vai paraksts, no funkcijas šeit. 2260 01:52:21,342 --> 01:52:22,800 Vai es varētu pārvietot visu funkciju. 2261 01:52:22,800 --> 01:52:23,841 >> Bet tas ir mazliet slinks. 2262 01:52:23,841 --> 01:52:24,870 Tātad mums nebūs darīt. 2263 01:52:24,870 --> 01:52:27,960 Tagad, ļaujiet man atgriezties atkal dot slash atdevi. 2264 01:52:27,960 --> 01:52:32,790 >> x ir 2 x kvadrātā ir 4. x ir 3. x kvadrātā ir 9. 2265 01:52:32,790 --> 01:52:35,300 Un funkcija, šķiet, tagad strādā. 2266 01:52:35,300 --> 01:52:36,550 Tātad, kāda ir atšķirība šeit? 2267 01:52:36,550 --> 01:52:42,520 Man ir funkcija, kas ir sauc kvadrāts, šajā gadījumā, ko es likts uz ieejas. 2268 01:52:42,520 --> 01:52:43,830 Un es nokļūt atpakaļ izejas. 2269 01:52:43,830 --> 01:52:46,210 Un tomēr, agrāk, ja Es atvērt otru piemēru 2270 01:52:46,210 --> 01:52:51,640 no agrāk, kura sauca prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Man bija drukas nosaukumu, kas atgriezās spēkā neesošu, tā sakot, 2272 01:52:54,770 --> 01:52:58,730 Vai tas atgriezās neko, un vienkārši bija blakusparādība. 2273 01:52:58,730 --> 01:53:00,230 >> Tātad, kas notiek šeit? 2274 01:53:00,230 --> 01:53:03,520 Nu, apsvērt funkciju saņemt virkni tikai brīdi. 2275 01:53:03,520 --> 01:53:06,570 Mēs esam, izmantojot funkciju saņemt virkni šādā veidā. 2276 01:53:06,570 --> 01:53:10,464 >> Mēs esam bija funkcija nokļūt stīgu, tāpat ietver CS50.h, 2277 01:53:10,464 --> 01:53:16,624 ietver standarta IO.h, INT, galvenais, par spēkā neesošu. 2278 01:53:16,624 --> 01:53:18,790 Un tad katru reizi, kad es esmu sauc get string līdz šim, 2279 01:53:18,790 --> 01:53:23,260 Es esmu teica kaut ko līdzīgu, stīgu s izpaužas saņemt virkni, jo get string-- 2280 01:53:23,260 --> 01:53:27,880 sauksim šo get.c-- get virknes pati atgriež virkni, kas es varu tad 2281 01:53:27,880 --> 01:53:32,050 izmantot, un teikt, hello, komats, procenti s, slīpsvītru n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Tātad, tas ir tas pats piemērs, tiešām, ka mums bija agrāk. 2283 01:53:35,660 --> 01:53:37,920 Tātad iegūt string atgriež vērtību. 2284 01:53:37,920 --> 01:53:41,260 Bet pirms brīža, print stīgu neatgriež vērtību. 2285 01:53:41,260 --> 01:53:42,721 Tā vienkārši ir blakusparādība. 2286 01:53:42,721 --> 01:53:44,220 Tātad šī ir būtiska atšķirība. 2287 01:53:44,220 --> 01:53:46,710 Mēs esam redzējuši atšķirīgs veidu funkcijas tagad, 2288 01:53:46,710 --> 01:53:49,490 no kuriem daži ir atgriezušies vērtības, no kuriem daži nav. 2289 01:53:49,490 --> 01:53:51,890 Tātad, varbūt tas ir string, vai int vai peldēt. 2290 01:53:51,890 --> 01:53:53,480 Vai varbūt tas ir tikai par spēkā neesošu. 2291 01:53:53,480 --> 01:53:55,710 >> Un atšķirība ir ka šīs funkcijas, kas 2292 01:53:55,710 --> 01:53:59,940 iegūtu datus un atgriež vērtību, ir faktiski celt kaut ko atpakaļ uz galda, 2293 01:53:59,940 --> 01:54:01,110 tā sakot. 2294 01:54:01,110 --> 01:54:03,710 So iesim uz priekšu un apskatīt vienu gala komplektu 2295 01:54:03,710 --> 01:54:09,129 piemēri, kas rada sajūtu, tagad, no kā mēs varētu, protams, abstrakts labāk, 2296 01:54:09,129 --> 01:54:11,670 un labāk, un labāk, vai vairāk, un vairāk, un vairāk, lai 2297 01:54:11,670 --> 01:54:13,810 rakstīt, visbeidzot, labāku kodu. 2298 01:54:13,810 --> 01:54:16,860 Iesim uz priekšu, un garā no nulles, rīkojieties šādi. 2299 01:54:16,860 --> 01:54:21,700 >> Ļaujiet man iet uz priekšu un ietver CS50.h un standarta IO.h. 2300 01:54:21,700 --> 01:54:24,010 Ļaujiet man iet uz priekšu un dot pats int, galvenais, par spēkā neesošu. 2301 01:54:24,010 --> 01:54:27,380 Un ļaujiet man iet uz priekšu, nosaukt šo cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> Un ļaujiet man iet uz priekšu un tikai piemēram, nulles, izdrukāt klepus / n. 2303 01:54:35,510 --> 01:54:37,170 Un es gribu to darīt trīs reizes. 2304 01:54:37,170 --> 01:54:39,670 Tāpēc es esmu, protams, tikai iet kopēt un ielīmēt trīs reizes. 2305 01:54:39,670 --> 01:54:46,440 Es tagad gatavojas darīt klepus dot slash klepus. 2306 01:54:46,440 --> 01:54:50,120 Pieņemsim dot sev nedaudz vairāk vietas šeit, Enter, klepus, klepus, klepus. 2307 01:54:50,120 --> 01:54:53,970 >> Ir, protams, jau ir iespēja uzlabojumi. 2308 01:54:53,970 --> 01:54:55,679 Es esmu kopēt un ielīmēt dažas reizes jau šodien. 2309 01:54:55,679 --> 01:54:58,261 Bet tas bija tikai tāpēc man nav ir rakstīt tik daudz rakstzīmes. 2310 01:54:58,261 --> 01:55:00,250 Es joprojām mainīts ko šie rindas kods ir. 2311 01:55:00,250 --> 01:55:04,240 >> Šie trīs līnijas ir vienādas, kas jūtas slinks un tiešām ir, 2312 01:55:04,240 --> 01:55:07,110 un, iespējams, nav pareizā pieeja. 2313 01:55:07,110 --> 01:55:11,029 Tātad, ar ko sastāvdaļa mēs varētu uzlabot šo kodu? 2314 01:55:11,029 --> 01:55:12,570 Mums nav kopēt un ielīmēt kodu. 2315 01:55:12,570 --> 01:55:15,070 >> Un, protams, jebkurā laikā jūs jūtaties yourself kopējot un ielīmējot, 2316 01:55:15,070 --> 01:55:17,700 un nav pat mainīt kodu, izredzes ir tur ir labāks veids. 2317 01:55:17,700 --> 01:55:19,470 Un, protams, tur ir. 2318 01:55:19,470 --> 01:55:22,510 Ļaujiet man iet uz priekšu un darīt uz cilpas, pat ja sintakse var nebūt 2319 01:55:22,510 --> 01:55:24,570 nāk dabiski vēl. 2320 01:55:24,570 --> 01:55:29,494 >> Vai šo trīs reizes, vienkārši darot to following-- 2321 01:55:29,494 --> 01:55:31,160 un es zinu, tas no prakses. 2322 01:55:31,160 --> 01:55:32,810 Bet mums ir vairāki piemēri tagad. 2323 01:55:32,810 --> 01:55:34,950 Un jūs redzēsiet online vairāk norādes joprojām. 2324 01:55:34,950 --> 01:55:37,790 >> Tas ir sintakse par 6 līniju, kas līdzīgi nulles, kas atkārtojas 2325 01:55:37,790 --> 01:55:40,090 bloks, atkārtot šādas trīs reizes. 2326 01:55:40,090 --> 01:55:41,340 Tas ir mazliet burvju tagad. 2327 01:55:41,340 --> 01:55:43,050 Bet tas iegūs vairāk, un vairāk pazīstams. 2328 01:55:43,050 --> 01:55:45,050 >> Un tas notiek atkārtot line astoņas trīs reizes, 2329 01:55:45,050 --> 01:55:52,390 tā ka, ja es atkārtoti sastādīt make klepus, dot slash klepus, klepus, klepus, klepus. 2330 01:55:52,390 --> 01:55:54,030 Tas joprojām darbojas tāpat. 2331 01:55:54,030 --> 01:55:55,550 Tā ka viss ir labi un labs. 2332 01:55:55,550 --> 01:55:58,200 Bet tas nav ļoti nošķirts. 2333 01:55:58,200 --> 01:55:59,371 >> Tas ir pilnīgi pareizi. 2334 01:55:59,371 --> 01:56:01,370 Bet, tā uzskata, tāpat tur varētu būt iespēja, 2335 01:56:01,370 --> 01:56:03,750 kā pasaulē Scratch, lai veida sākuma 2336 01:56:03,750 --> 01:56:07,530 pievienot dažas semantiku šeit, lai Man nav vienkārši ir daži cilpa, 2337 01:56:07,530 --> 01:56:09,867 un funkcija, kas saka klepus, vai arī klepus. 2338 01:56:09,867 --> 01:56:10,450 Tu zini ko? 2339 01:56:10,450 --> 01:56:12,620 Ļaujiet man mēģināt būt nedaudz vēsāks, nekā, 2340 01:56:12,620 --> 01:56:16,090 un faktiski uzrakstīt funkciju, kas ir dažas blakusparādības, sauc to klepus. 2341 01:56:16,090 --> 01:56:20,830 >> Un tas notiek ne ievadi, un atgriež nekādas vērtības kā produkciju. 2342 01:56:20,830 --> 01:56:22,680 Bet jūs zināt, ko tā dara? 2343 01:56:22,680 --> 01:56:29,370 Tas this-- printf, quote likt pēdiņas beigās, klepus. 2344 01:56:29,370 --> 01:56:32,380 >> Un tagad šeit, es esmu gatavojas iet uz priekšu un uz int, 2345 01:56:32,380 --> 01:56:36,070 i saņem nulli, i mazāk nekā 3, i plus plus. 2346 01:56:36,070 --> 01:56:39,770 Es esmu gatavojas nedara printf, kas ir varbūt zems īstenošana 2347 01:56:39,770 --> 01:56:40,270 detaļa. 2348 01:56:40,270 --> 01:56:41,353 Man vienalga, kā klepus. 2349 01:56:41,353 --> 01:56:43,240 Es tikai vēlos, lai izmantotu klepus funkciju. 2350 01:56:43,240 --> 01:56:44,840 Un es esmu tikai gatavojas zvanīt klepus. 2351 01:56:44,840 --> 01:56:46,204 >> Tagad paziņojums dihotomiju. 2352 01:56:46,204 --> 01:56:49,370 Kad zvanāt funkciju, ja jums nav vēlas, lai dotu to izejvielas, pilnīgi naudas sodu. 2353 01:56:49,370 --> 01:56:51,780 Just do atvērt iekava, close paren, un jūs darīts. 2354 01:56:51,780 --> 01:56:56,271 >> Kad jūs noteikt funkciju, vai pasludināt funkcija ir prototips, 2355 01:56:56,271 --> 01:56:58,770 ja jūs jau iepriekš zināt, ka tas nav gatavojas veikt nekādus argumentus, 2356 01:56:58,770 --> 01:57:01,170 teikt neesošu šajās iekavās tur. 2357 01:57:01,170 --> 01:57:05,660 Un kas padara pārliecināts, ka jums nebūs nejauši nepareizi to. 2358 01:57:05,660 --> 01:57:07,020 Ļaujiet man iet uz priekšu un darīt klepus. 2359 01:57:07,020 --> 01:57:08,540 Un, protams, es esmu kļūdījies. 2360 01:57:08,540 --> 01:57:10,410 >> Nolāpīts, tur ir, ka netiešs deklarācija. 2361 01:57:10,410 --> 01:57:11,325 Bet tas ir jauki. 2362 01:57:11,325 --> 01:57:12,590 Tas ir viegli noteikt. 2363 01:57:12,590 --> 01:57:18,240 Man tikai vajag prototips augstāk manā failā, nekā es esmu faktiski izmanto. 2364 01:57:18,240 --> 01:57:20,070 >> Tāpēc tagad ļaujiet man klepus atkal, jauki. 2365 01:57:20,070 --> 01:57:20,790 Tagad tā darbojas. 2366 01:57:20,790 --> 01:57:22,930 Padarīt klepus, klepus, klepus, klepus. 2367 01:57:22,930 --> 01:57:25,930 Tātad jūs varētu domāt, ka mēs esam patiesi tikai nedaudz vairāk engineering šo problēmu. 2368 01:57:25,930 --> 01:57:26,763 Un, protams, mēs esam. 2369 01:57:26,763 --> 01:57:28,870 Tas nav labi kandidāts programmu 2370 01:57:28,870 --> 01:57:31,930 šobrīd par refactoring, un dara to, kas ir 2371 01:57:31,930 --> 01:57:35,645 sauc hierarhiska sadalīšanās, kur jūs lietojat kādu kodu, un pēc tam 2372 01:57:35,645 --> 01:57:38,790 jūs veida faktors lietas, tāpēc kā piedēvēt vairāk semantika tiem, 2373 01:57:38,790 --> 01:57:40,930 un atkārtoti to galu galā ilgtermiņā. 2374 01:57:40,930 --> 01:57:43,490 Bet tas ir pamatelements virzienā sarežģītākus programmas 2375 01:57:43,490 --> 01:57:45,600 ka mēs sāksim rakstiski pirms ilgi, ka 2376 01:57:45,600 --> 01:57:50,090 ļauj mums būt vārdu krājumu ar ko rakstīt labāk kodu. 2377 01:57:50,090 --> 01:57:52,920 Un, protams, pieņemsim redzēt, ja mēs nevar vispārināt šo tālāk. 2378 01:57:52,920 --> 01:57:57,984 >> Šķiet mazliet klibs, kas man, galvenais, jāuztraucas par šo darn uz cilpas, 2379 01:57:57,984 --> 01:57:59,400 un aicinot klepus atkal un atkal. 2380 01:57:59,400 --> 01:58:03,050 Kāpēc es nevaru vienkārši pateikt klepus, lūdzu klepus trīs reizes? 2381 01:58:03,050 --> 01:58:08,170 Citiem vārdiem sakot, kāpēc es nevaru vienkārši dot ieguldījumu klepus un darīt? 2382 01:58:08,170 --> 01:58:11,270 >> Kāpēc es nevaru vienkārši pateikt, jo Galvenais klepus trīs reizes. 2383 01:58:11,270 --> 01:58:13,150 Un tagad, tas ir sava veida burvju. 2384 01:58:13,150 --> 01:58:14,540 Tas ir ļoti iteratīvs šeit. 2385 01:58:14,540 --> 01:58:15,940 Un tas, protams, bērnu soli. 2386 01:58:15,940 --> 01:58:19,250 >> Bet tikai spēja pateikt par line astoņi, klepus trīs reizes, 2387 01:58:19,250 --> 01:58:20,730 tas ir tikai tik daudz vieglāk lasāmu. 2388 01:58:20,730 --> 01:58:24,210 Un, plus, man nav jāzina vai aprūpi, kā klepus tiek īstenota. 2389 01:58:24,210 --> 01:58:26,460 Un, protams, vēlāk ilgtermiņa un gala projektiem, 2390 01:58:26,460 --> 01:58:29,150 ja jūs risināt projektu ar klasesbiedrs vai divi klasesbiedru, 2391 01:58:29,150 --> 01:58:32,370 jūs apzināties, ka jūs gatavojas ir, vai vēlaties, sadalīt darbus. 2392 01:58:32,370 --> 01:58:34,650 >> Un jūs gatavojas vēlaties, lai izlemtu iepriekš, kurš gatavojas darīt to, ko, 2393 01:58:34,650 --> 01:58:35,483 un kurā gabali? 2394 01:58:35,483 --> 01:58:37,520 Un vai tas nebūtu jauki ja jūs, piemēram, 2395 01:58:37,520 --> 01:58:40,100 uzņemties atbildību par rakstīšanas Main, darīts. 2396 01:58:40,100 --> 01:58:43,470 Un jūsu kaimiņiem, vai jūsu partneris vispārīgāk, 2397 01:58:43,470 --> 01:58:45,230 rūpējas par īstenošanas klepus. 2398 01:58:45,230 --> 01:58:49,540 >> Un šī nodaļa, šie sienas abstrakcijas, 2399 01:58:49,540 --> 01:58:52,310 vai slāņi abstrakcijas ja Jums ir super spēcīga, 2400 01:58:52,310 --> 01:58:55,480 jo īpaši lielāks, sarežģītākas programmas un sistēmas, 2401 01:58:55,480 --> 01:59:00,070 tas ļauj vairākiem cilvēkiem veidot lietas kopā, un galu galā 2402 01:59:00,070 --> 01:59:02,680 valdziņš savu darbu kopā šādā veidā. 2403 01:59:02,680 --> 01:59:05,332 Bet, protams, mēs vajag tagad noteikt klepus. 2404 01:59:05,332 --> 01:59:07,290 Mums ir nepieciešams, lai pastāstītu klepus ka, hey, jūs zināt, ko? 2405 01:59:07,290 --> 01:59:11,230 Jūs esat dodas uz nepieciešamību veikt input-- tāpēc ne par spēkā neesošu, bet int un tagad. 2406 01:59:11,230 --> 01:59:15,170 Iesim uz priekšu un nodot klepus int. i izpaužas nulli. 2407 01:59:15,170 --> 01:59:16,890 >> i ir mazāks nekā, cik reižu. 2408 01:59:16,890 --> 01:59:18,550 Es teicu trīs iepriekš. 2409 01:59:18,550 --> 01:59:20,420 Bet tas nav tas, ko es gribu. 2410 01:59:20,420 --> 01:59:25,520 Es gribu klepus tikt vispārināti uz atbalstītu jebkuru iterāciju. 2411 01:59:25,520 --> 01:59:28,800 >> Tātad, protams, tas ir n, ka es gribu, kāds lietotājs man saka. 2412 01:59:28,800 --> 01:59:31,620 Tagad es varu iet uz priekšu un teikt drukas klepus. 2413 01:59:31,620 --> 01:59:34,750 Un nav svarīgi, ko numurs lietotājs caurlaides, 2414 01:59:34,750 --> 01:59:36,890 Es atkārtot, ka daudzas reizes. 2415 01:59:36,890 --> 01:59:39,160 >> Tātad beigās, dienā, Programma ir identisks. 2416 01:59:39,160 --> 01:59:42,820 Bet paziņojums visu šo stuff pat varētu būt citā failā. 2417 01:59:42,820 --> 01:59:45,620 Patiesi, es nezinu, pie moments kā printf tiek īstenota. 2418 01:59:45,620 --> 01:59:47,980 >> Es nezinu, brīdī, kā nokļūt string, vai saņemt int, vai iegūt peldēt 2419 01:59:47,980 --> 01:59:48,646 tiek īstenoti. 2420 01:59:48,646 --> 01:59:50,930 Un es negribu redzēt tos uz mana ekrāna. 2421 01:59:50,930 --> 01:59:55,320 Kā tas ir, es esmu sāk pievērsties mana programma, nav šīs funkcijas. 2422 01:59:55,320 --> 01:59:59,070 >> Un tā, protams, tiklīdz jūs sākt faktoringa kodu, piemēram, šo, 2423 01:59:59,070 --> 02:00:01,397 mēs pat varētu virzīties klepus atsevišķā failā? 2424 02:00:01,397 --> 02:00:02,730 Kāds cits varētu īstenot. 2425 02:00:02,730 --> 02:00:06,810 Un jūs un jūsu programma kļuvusi ļoti skaisti, un viegli uztverams, 2426 02:00:06,810 --> 02:00:10,830 varbūt, tiešām četri line programma turpat. 2427 02:00:10,830 --> 02:00:13,510 >> So iesim uz priekšu tagad un veikt vēl vienu maiņu. 2428 02:00:13,510 --> 02:00:16,180 Ievērojiet, ka mans prototips ir jāmaina uz augšu top. 2429 02:00:16,180 --> 02:00:18,390 Tāpēc ļaujiet man noteikt, ka tā Man nav get kliedza uz. 2430 02:00:18,390 --> 02:00:22,580 >> Padarīt klepus, ļaujiet man palaist klepus reizi vairāk, tomēr dara to pašu. 2431 02:00:22,580 --> 02:00:26,010 Bet tagad, ievērosiet, mums ir sastāvdaļa vienu galīgo versiju. 2432 02:00:26,010 --> 02:00:26,940 Tu zini ko? 2433 02:00:26,940 --> 02:00:29,040 Es nevēlos, lai tikai klepus, obligāti. 2434 02:00:29,040 --> 02:00:30,802 Es gribu, lai būtu kaut ko vispārīgu. 2435 02:00:30,802 --> 02:00:31,510 Tātad, jūs zināt, ko? 2436 02:00:31,510 --> 02:00:32,450 Es gribu to darīt. 2437 02:00:32,450 --> 02:00:37,140 Es gribu būt, līdzīgi Scratch tas, paust viedokli bloks, bet ne tikai 2438 02:00:37,140 --> 02:00:38,680 pateikt kaut kādu skaitu reižu. 2439 02:00:38,680 --> 02:00:41,510 Es gribu to pateikt ļoti konkrētu virkni. 2440 02:00:41,510 --> 02:00:43,850 Un tāpēc man nav vēlaties, lai vienkārši pateikt klepus. 2441 02:00:43,850 --> 02:00:47,660 Es gribu to teikt visu virkne ir pieņemts. 2442 02:00:47,660 --> 02:00:49,960 >> Tātad paziņojums, es esmu ģeneralizētas tas tā, ka tagad 2443 02:00:49,960 --> 02:00:53,110 teiksim jūtas kā labā slava par šo, piemēram, nulles, 2444 02:00:53,110 --> 02:00:55,530 aizņem divus argumentus, atšķirībā no nulles. 2445 02:00:55,530 --> 02:00:56,570 Viens no tiem ir virkne. 2446 02:00:56,570 --> 02:00:57,300 Viens ir int. 2447 02:00:57,300 --> 02:00:58,130 >> Un es varētu ieslēgt tās. 2448 02:00:58,130 --> 02:01:00,713 Es tikko veida, piemēram, ideju saka stīgu vispirms, un pēc tam 2449 02:01:00,713 --> 02:01:01,940 cik reizes vēlāk. 2450 02:01:01,940 --> 02:01:03,970 Void nozīmē to joprojām neatgriežas neko. 2451 02:01:03,970 --> 02:01:06,428 Šie ir tikai vizuāla side efekti, piemēram, ar [? Jordan,?] 2452 02:01:06,428 --> 02:01:08,240 mutiski blakusparādība kliegt. 2453 02:01:08,240 --> 02:01:12,630 Tas joprojām nav kaut kas n reizes, 0 līdz, bet ne vienāds ar n. 2454 02:01:12,630 --> 02:01:14,540 Tas nozīmē, n kopējais reizes. 2455 02:01:14,540 --> 02:01:16,540 Un tad tikai izdrukāt lai kas virkne ir. 2456 02:01:16,540 --> 02:01:19,060 Tāpēc es esmu patiešām vispārināt šī līnija kodu. 2457 02:01:19,060 --> 02:01:22,460 Tāpēc tagad, kā es varu īstenot klepus funkcija? 2458 02:01:22,460 --> 02:01:25,520 >> Es varu darīt spēkā neesošu klepus. 2459 02:01:25,520 --> 02:01:28,501 Un es vēl joprojām var uzņemt kā daudzas reizes jūs vēlaties klepus. 2460 02:01:28,501 --> 02:01:29,250 Bet jūs zināt, ko? 2461 02:01:29,250 --> 02:01:31,240 Es tagad var punt teikt. 2462 02:01:31,240 --> 02:01:36,540 >> Es varu zvanīt teikt ar vārds klepus, kas iet n. 2463 02:01:36,540 --> 02:01:40,410 Un, ja es gribu arī īstenot, tikai par jautru, šķaudīt funkcija, 2464 02:01:40,410 --> 02:01:42,290 Es varu šķaudīt kādu vairākas reizes. 2465 02:01:42,290 --> 02:01:47,300 Un es varu paturēt atkārtoti N, jo paziņojums, ka m šajā kontekstā vai darbības jomu 2466 02:01:47,300 --> 02:01:49,470 eksistē tikai šo funkciju. 2467 02:01:49,470 --> 02:01:52,767 >> Un n šajā kontekstā tikai pastāv šajā funkciju šeit. 2468 02:01:52,767 --> 02:01:54,600 Tātad mēs būsim atpakaļ uz šie jautājumi jomu. 2469 02:01:54,600 --> 02:02:01,160 Un šeit, es esmu tikai gatavojas teikt, achoo, un pēc tam n reizes, semikols. 2470 02:02:01,160 --> 02:02:04,340 >> Un tagad, man ir nepieciešams aizņemties šie funkcija paraksti šeit. 2471 02:02:04,340 --> 02:02:06,290 Tātad klepus ir pareiza. 2472 02:02:06,290 --> 02:02:10,090 Void šķaudīt ir pareiza tagad. 2473 02:02:10,090 --> 02:02:12,390 >> Un es vēl tikai vajag teikt. 2474 02:02:12,390 --> 02:02:18,990 Tāpēc es esmu gatavojas teikt, teiksim string s, int n, semikols. 2475 02:02:18,990 --> 02:02:22,010 Tāpēc es esmu pār-inženierijas heck no šīs programmas. 2476 02:02:22,010 --> 02:02:23,760 >> Un tas nav nenozīmē tas ir 2477 02:02:23,760 --> 02:02:26,343 ko jums vajadzētu darīt, rakstot pat visvienkāršāko programmu. 2478 02:02:26,343 --> 02:02:29,280 Ņem kaut kas acīmredzot patiešām vienkārša, ļoti īss, 2479 02:02:29,280 --> 02:02:31,800 un atkārtoti īstenot izmantojot pārāk daudz kodu. 2480 02:02:31,800 --> 02:02:34,560 Bet jūs faktiski redzēt, un laiks atskatīties uz šiem piemēriem, 2481 02:02:34,560 --> 02:02:38,610 un realizēt, ak, tie ir soļi mēs ņēmām faktiski vispārināt, 2482 02:02:38,610 --> 02:02:40,797 faktors kaut ko, līdz beigās, dienā 2483 02:02:40,797 --> 02:02:42,380 mans kods ir faktiski diezgan saprātīgs. 2484 02:02:42,380 --> 02:02:45,960 Jo, ja es gribu klepus trīs reizes, tad šķaudīt trīs reizes, 2485 02:02:45,960 --> 02:02:50,420 Es esmu vienkārši gatavojas atkārto šo, programma padarīt klepus, un palaist klepus. 2486 02:02:50,420 --> 02:02:53,620 Un man ir trīs klepus un trīs klepojot. 2487 02:02:53,620 --> 02:02:55,990 >> Un tā tas ir pamata paradigma, ja jūs, 2488 02:02:55,990 --> 02:03:00,110 par to, kā mēs varētu iet par faktiski īsteno programmu. 2489 02:03:00,110 --> 02:03:03,220 Bet pieņemsim tikai redzēt, tagad to, kas tas ir mēs esam bijuši dara visu šo laiku, 2490 02:03:03,220 --> 02:03:06,940 un ko daži no gala gabalu ir aiz šo vienkāršo komandu. 2491 02:03:06,940 --> 02:03:09,620 Beigās, dienā, mēs esam bijis, izmantojot šķindēt kā mūsu kompilatoru. 2492 02:03:09,620 --> 02:03:11,494 Mēs esam rakstiski avots kods, pārvēršot to 2493 02:03:11,494 --> 02:03:12,820 via šķindēt mašīnu kodu. 2494 02:03:12,820 --> 02:03:15,540 >> Un mēs esam izmantojuši Make tikko atvieglot mūsu keystrokes tik 2495 02:03:15,540 --> 02:03:20,740 ka mums nav jāatceras šie buramvārdi no pašas šķindēt. 2496 02:03:20,740 --> 02:03:22,640 Bet kas ir Make patiesībā dara? 2497 02:03:22,640 --> 02:03:24,750 Un, savukārt, kas ir Šķindēt faktiski dara? 2498 02:03:24,750 --> 02:03:28,790 >> Izrādās, lai gan mēs esam vienkāršoti šodienas diskusija, sakot, 2499 02:03:28,790 --> 02:03:33,090 Jūs lietojat pirmkodu, nodot to kā ieeja ar kompilatoru, kas dod jums 2500 02:03:33,090 --> 02:03:35,750 izlaide mašīna kods, izrādās tur ir 2501 02:03:35,750 --> 02:03:37,420 daži dažādu soļi iekšā tur. 2502 02:03:37,420 --> 02:03:41,940 Un apkopojot notiek, ir jumta termins visu ķekars soļiem. 2503 02:03:41,940 --> 02:03:43,970 Bet pieņemsim tikai kaitināt šo, tiešām ātri. 2504 02:03:43,970 --> 02:03:48,070 >> Izrādās, ka mēs esam bijuši dara vairāk lietas katru reizi, kad es palaist programmu, 2505 02:03:48,070 --> 02:03:50,990 vai katru reizi, kad es sastādīt programmu šodien. 2506 02:03:50,990 --> 02:03:55,020 Tātad preprocessing attiecas uz this-- kaut kādā C programmu, 2507 02:03:55,020 --> 02:03:58,720 kā mēs redzēsim atkal un atkal, kas sākas ar šo hash simbolu, 2508 02:03:58,720 --> 02:04:03,320 vai hashtag simbols šeit, nozīmē tas ir apstrādātāju direktīva. 2509 02:04:03,320 --> 02:04:07,330 Tas nozīmē, ka šajā gadījumā, hey dators, kaut ko darīt ar šo failu 2510 02:04:07,330 --> 02:04:09,430 Pirms jūs faktiski sastādīt savu kodu. 2511 02:04:09,430 --> 02:04:15,220 >> Šajā gadījumā, hash ietver ir, būtībā, C veids, kā pateikt, 2512 02:04:15,220 --> 02:04:19,325 hey dators, iet saņemt saturu no CS50.h un ielīmēt tos šeit. 2513 02:04:19,325 --> 02:04:22,170 Hey dators, iet saņemt saturs standarta IO.h, 2514 02:04:22,170 --> 02:04:24,690 kur tas ir par cietais disks, ielīmējiet to šeit. 2515 02:04:24,690 --> 02:04:27,390 Tātad šīs lietas notiek Pirmais preprocessing laikā. 2516 02:04:27,390 --> 02:04:28,880 >> Un šķindēt dara visu par mums. 2517 02:04:28,880 --> 02:04:30,510 Un tas tiek darīts tik darn ātri, jums nav pat 2518 02:04:30,510 --> 02:04:32,000 redzēt četras atšķirīgas lietas notiek. 2519 02:04:32,000 --> 02:04:34,100 Bet tas ir pirmais šāds solis. 2520 02:04:34,100 --> 02:04:35,560 >> Kas patiesībā notiek tālāk? 2521 02:04:35,560 --> 02:04:38,320 Nu, nākamais amatpersona solis ir apkopošanai. 2522 02:04:38,320 --> 02:04:40,385 Un izrādās, ka apkopojot programmu 2523 02:04:40,385 --> 02:04:44,060 tehniski nozīmē iet no pirmkodu, sīkumi mēs esam 2524 02:04:44,060 --> 02:04:47,890 rakstot šodien, lai kaut ko sauc montāža kods, kaut 2525 02:04:47,890 --> 02:04:49,260 kas izskatās nedaudz atšķiras. 2526 02:04:49,260 --> 02:04:51,050 >> Un, patiesībā, mēs varam redzēt šo nekustamo ātri. 2527 02:04:51,050 --> 02:04:53,890 Ļaujiet man tiešām iet manā IDE. 2528 02:04:53,890 --> 02:04:58,050 Ļaujiet man iet uz priekšu un atvērta hello.c, kas ir pirmā programma, ar kuru mēs 2529 02:04:58,050 --> 02:04:59,120 sākās šodien. 2530 02:04:59,120 --> 02:05:04,130 Un ļaujiet man iet uz priekšu un palaist šķindēt A nedaudz savādāk, šķindēt-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 kas ir patiešām gatavojas dod man citu failu hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> Un mēs, iespējams, nekad atkal redzēt šāda veida kodu. 2533 02:05:10,330 --> 02:05:13,030 Ja esat lietojis zemāka līmeņa sistēmas klases, piemēram, CS61, 2534 02:05:13,030 --> 02:05:14,920 jūs redzēsiet daudz vairāk no šāda veida koda. 2535 02:05:14,920 --> 02:05:17,020 Bet tas ir montāža valoda. 2536 02:05:17,020 --> 02:05:22,050 Tas ir X86 montāža valoda ka CPU, kas ir pamatā 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE tiešām saprot. 2538 02:05:24,460 --> 02:05:27,060 >> Un noslēpumains kā tas izskatās, tas ir kaut kas 2539 02:05:27,060 --> 02:05:29,180 dators saprot diezgan labi. 2540 02:05:29,180 --> 02:05:30,790 Sub q, tas ir atņemt. 2541 02:05:30,790 --> 02:05:31,660 Tur ir kustības. 2542 02:05:31,660 --> 02:05:35,730 >> Tur zvana funkciju šeit, x oring, kustība, add, pop, 2543 02:05:35,730 --> 02:05:36,430 atgriešanās. 2544 02:05:36,430 --> 02:05:38,850 Tātad tur ir daži ļoti zema līmeņa norādījumi 2545 02:05:38,850 --> 02:05:41,280 ka CPU saprast, ka Man norādīja uz agrāk. 2546 02:05:41,280 --> 02:05:43,100 Tas ir tas, ko Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> Ir modeļi nullēm un tiem, kas 2548 02:05:45,030 --> 02:05:51,800 karti šiem arcanely formulēts, bet nedaudz labi nosaukts, instrukcijas, 2549 02:05:51,800 --> 02:05:52,780 tā sakot. 2550 02:05:52,780 --> 02:05:54,780 Tas ir tas, kas notiek, kad jūs sastādīt savu kodu. 2551 02:05:54,780 --> 02:05:58,560 Jūs saņemsiet montāža valoda no tā, kas 2552 02:05:58,560 --> 02:06:04,680 nozīmē, trešais solis ir apkopot ka montāža kodu, galu galā, 2553 02:06:04,680 --> 02:06:09,080 mašīna code-- nullēm un uzņēmumiem, nevis teksts, mēs tikko redzējām pirms brīža. 2554 02:06:09,080 --> 02:06:13,370 >> Tātad pirmapstrāde tas, ka atrast un aizstāt, un dažas citas lietas. 2555 02:06:13,370 --> 02:06:16,430 Apkopojot ņem savu avotu kodu no C, kods 2556 02:06:16,430 --> 02:06:18,980 ka mēs rakstījām, lai montāža kods, kas mēs vienkārši paskatījās. 2557 02:06:18,980 --> 02:06:22,170 Montāža aizņem ka montāža kods uz nulles un vieninieku 2558 02:06:22,170 --> 02:06:24,680 ka CPU tiešām būs saprast beigās, dienā. 2559 02:06:24,680 --> 02:06:27,630 Un saistot ir pēdējais solis kas notiek uz us-- atkal, 2560 02:06:27,630 --> 02:06:29,830 tik ātri mums nav pat notice-- kas saka, 2561 02:06:29,830 --> 02:06:32,460 hey dators, veikt visus nullēm un tiem, kas 2562 02:06:32,460 --> 02:06:36,750 radies apkopojot Dāvida kodu, un viņa galvenā funkcija šajā gadījumā. 2563 02:06:36,750 --> 02:06:39,160 >> Un hey dators, iet saņemt visi no nullēm un tiem 2564 02:06:39,160 --> 02:06:42,180 ka CS50 darbinieki uzrakstīja iekšpusē CS50 bibliotēkā. 2565 02:06:42,180 --> 02:06:43,440 Sajauc tos ar David s. 2566 02:06:43,440 --> 02:06:46,648 Un hey dators, iet saņemt visus nullēm un tie, kas kāds cits rakstīja gadi 2567 02:06:46,648 --> 02:06:47,470 atpakaļ uz printf. 2568 02:06:47,470 --> 02:06:49,880 Un pievienot tiem Into viss, lai mēs esam 2569 02:06:49,880 --> 02:06:52,870 got manu nullēm un tiem, tad CS50 personāla nullēm un tiem, 2570 02:06:52,870 --> 02:06:55,370 printf nullēm un tiem, un kaut kas cits, mēs esam, izmantojot. 2571 02:06:55,370 --> 02:07:00,410 >> Viņi visi iegūt apvieno vienā programmu, ko sauc, šajā gadījumā, hello. 2572 02:07:00,410 --> 02:07:03,141 Tātad turpmāk, mēs vienkārši izmantot vārdu sagatavošanā. 2573 02:07:03,141 --> 02:07:06,390 Un mēs uzskatām par pašsaprotamu, ka tad, kad mēs sakām, sastādīt savu programmu, tas nozīmē, 2574 02:07:06,390 --> 02:07:08,849 hey darīt priekšapstrādi, montāža, un savieno. 2575 02:07:08,849 --> 02:07:11,890 Bet tur tiešām daži sulīgs sīkumi notiek tur zem motora pārsega. 2576 02:07:11,890 --> 02:07:13,723 Un jo īpaši, ja jums saņemt ziņkārīgs kādu laiku, 2577 02:07:13,723 --> 02:07:15,900 Jūs varat sākt poking ap šo zemāko līmeni. 2578 02:07:15,900 --> 02:07:19,660 Bet tagad, saproti, ka starp takeaways par šodienu 2579 02:07:19,660 --> 02:07:23,420 ir diezgan vienkārši sākot no procesa, 2580 02:07:23,420 --> 02:07:26,700 iegūt apmierināti ar kaut kā Hello pasaulē. 2581 02:07:26,700 --> 02:07:29,575 Patiešām, lielākā daļa no tā, ko mēs darījām šodien noteikti nebūs izlietne super ātri. 2582 02:07:29,575 --> 02:07:31,491 Un tas prasīs kādu laiks, un daži prakse. 2583 02:07:31,491 --> 02:07:33,864 Un izredzes ir, jums būs kārtot no vēlas, lai sasniegtu jūsu tastatūru 2584 02:07:33,864 --> 02:07:34,780 vai kliegt uz ekrānu. 2585 02:07:34,780 --> 02:07:35,880 Un visi, kas ir OK. 2586 02:07:35,880 --> 02:07:38,320 Lai gan, iespējams, mēģiniet nav darīt to bibliotēkā tik daudz. 2587 02:07:38,320 --> 02:07:40,820 >> Un galu galā, jūs ir iespēja, lai gan, lai sāktu 2588 02:07:40,820 --> 02:07:44,580 redzot modeļus, gan labā kodu ka jūs esat rakstiski un kļūdām 2589 02:07:44,580 --> 02:07:45,370 ka jūs esat veikuši. 2590 02:07:45,370 --> 02:07:48,965 Un līdzīgi procesā kļūstot TF vai CA ir līdzīgs, 2591 02:07:48,965 --> 02:07:51,590 jūs sākat iegūt labāku un labāk redzot šos modeļus, 2592 02:07:51,590 --> 02:07:53,774 un vienkārši atrisināt jūsu pašu problēmas galu galā. 2593 02:07:53,774 --> 02:07:56,940 Pa to laiku, būs daudz no mums aizdot jums atbalstu, un saņemt jūs 2594 02:07:56,940 --> 02:07:57,481 caur šo. 2595 02:07:57,481 --> 02:07:59,450 Un rakstīt-ups lai visas problēmas 2596 02:07:59,450 --> 02:08:01,366 jūs vadīties caur visi no komandas 2597 02:08:01,366 --> 02:08:05,330 ka es noteikti zinu no daudz prakses, ko tagad, 2598 02:08:05,330 --> 02:08:07,380 bet, iespējams, ir lidojuši virs galvas tagad. 2599 02:08:07,380 --> 02:08:08,580 Un tas ir pilnīgi naudas sodu. 2600 02:08:08,580 --> 02:08:11,230 >> Bet, galu galā, jūs gatavojas lai sāktu redzēt modeļus parādīties. 2601 02:08:11,230 --> 02:08:14,260 Un, kad jums pēdējo visi stulbie detaļas, piemēram, iekavās, 2602 02:08:14,260 --> 02:08:16,710 un cirtaini bikšturi, un semikoli, un sīkumi, atklāti sakot, 2603 02:08:16,710 --> 02:08:19,360 ka nav vispār intelektuāli interesanti. 2604 02:08:19,360 --> 02:08:22,690 Un tas nav mērķis jebkāda ievada klasi. 2605 02:08:22,690 --> 02:08:24,410 Ir idejas, kas gatavojas jautājums. 2606 02:08:24,410 --> 02:08:26,659 >> Tas ir cilpas, un nosacījumiem, un funkcijas, 2607 02:08:26,659 --> 02:08:30,552 un vēl spēcīgi ieguve, un faktoringa kodu, 2608 02:08:30,552 --> 02:08:33,510 un labs dizains, un labi stils, un galu galā pareizību 2609 02:08:33,510 --> 02:08:37,330 par savu kodu, tas galu galā gatavojas jautājums visvairāk. 2610 02:08:37,330 --> 02:08:40,925 Tātad nākamnedēļ, mēs veiksim šos idejas, ka mēs pirmo reizi ieraudzīja uz nulles 2611 02:08:40,925 --> 02:08:42,800 un tagad tulkoti ar C Un mēs sāksim 2612 02:08:42,800 --> 02:08:45,740 iepazīstināt pirmo no Protams patiesais pasaules domēni. 2613 02:08:45,740 --> 02:08:50,140 >> Mēs koncentrējamies uz pasaules drošībai, un precīzāk kriptogrāfija, 2614 02:08:50,140 --> 02:08:51,980 māksla kodēšanas informāciju. 2615 02:08:51,980 --> 02:08:54,000 Un viens no pirmajiem problēmas tu pats 2616 02:08:54,000 --> 02:08:56,840 būs iespēja rakstīt tālāk spēlē ar dažiem sintakse 2617 02:08:56,840 --> 02:08:59,880 un risinot daži loģiski problēmas, galu galā pirms ilgi, 2618 02:08:59,880 --> 02:09:03,960 ir faktiski motokross, vai šifrētu, un galu galā atšifrēt informāciju. 2619 02:09:03,960 --> 02:09:06,470 Un viss, ko mēs esam darījuši šodien, būs diezgan zems 2620 02:09:06,470 --> 02:09:09,190 līmenis, ir tikai gatavojas, lai ļautu mums veikt vienu, un viens, 2621 02:09:09,190 --> 02:09:13,550 un vēl viens solis pretī iepriekš rakstiski interesantāko kodu vēl. 2622 02:09:13,550 --> 02:09:15,050 >> Tik daudz par šo nākamnedēļ. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VIDEO PLAYBACK] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Ko Jūs varat man pastāstīt par pēdējo reizi redzējāt viņu? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Ko Es varu teikt, tiešām? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Es domāju, tas bija kā jebkura cita pre-production mēģinājumu, 2631 02:09:35,340 --> 02:09:40,510 izņemot tur bija kaut viņš teica pašās beigās, kas iestrēdzis ar mani. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Tas Bija CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -That Ir samazināt ikvienam, liels darbs uz mēģinājumu. 2636 02:09:52,190 --> 02:09:53,070 >> -That S pusdienas? 2637 02:09:53,070 --> 02:09:54,986 >> -Yeah, Tu un es varu paķert sviestmaizi mazliet. 2638 02:09:54,986 --> 02:09:58,380 Ļaujiet man tikai debrief ar David tiešām ātri. 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 PLAYBACK]