1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [Video speel] 3 00:00:16,626 --> 00:00:19,410 >> -A Triomf van wiskundige en meganiese vaardigheid 4 00:00:19,410 --> 00:00:23,270 is hierdie groot nuwe outomatiese sakrekenaar by Harvard Universiteit. 5 00:00:23,270 --> 00:00:27,140 Ingewikkelde probleme in wiskunde sit deur die masjien in gekodeerde vorm 6 00:00:27,140 --> 00:00:31,710 op band akkuraat opgelos in 'n minuut fraksie van die tyd wat nodig is 7 00:00:31,710 --> 00:00:32,819 vir menslike berekening. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Ontwerp om alle vorms van bespoedig wiskundige en wetenskaplike navorsing, 10 00:00:48,220 --> 00:00:53,840 die reuse meganiese brein sal werk vir die Verenigde State Vloot tot einde oorlog. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [Einde afspeel] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. MALAN: Dit is CS50. 14 00:01:08,590 --> 00:01:10,590 Die verlede was 'n magiese plek, maar as jy ooit 15 00:01:10,590 --> 00:01:13,366 gewonder wat dit toestel in Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 dit is inderdaad deel van die Harvard Mark I, en dit is 17 00:01:16,150 --> 00:01:18,710 op mekaar nou daar vir die afgelope jare. 18 00:01:18,710 --> 00:01:20,590 En wat jy sal sien ingebed in die probleem stel 19 00:01:20,590 --> 00:01:24,416 een is 'n kykie agter die skerms na wat daardie toestel het, en doen, 20 00:01:24,416 --> 00:01:27,540 van professor Harry Lewis, wat in die Departement Rekenaarwetenskap hier. 21 00:01:27,540 --> 00:01:29,440 Sodat meer oor wat in net 'n bietjie. 22 00:01:29,440 --> 00:01:33,990 >> Maar vandag het ons begin om die oorgang van verlede week om hierdie, 23 00:01:33,990 --> 00:01:37,290 en ons sal noem bring van een foto hier 24 00:01:37,290 --> 00:01:38,630 dit is eintlik baie bekende. 25 00:01:38,630 --> 00:01:42,270 Is daar iemand wat weet hier op die skerm? 26 00:01:42,270 --> 00:01:43,880 Ten minste volgens die mite. 27 00:01:43,880 --> 00:01:44,837 Ja. 28 00:01:44,837 --> 00:01:45,920 GEHOOR: Die eerste virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: So dit was vermoedelik die heel eerste werklike fout in 'n rekenaar. 30 00:01:49,570 --> 00:01:52,490 Nou in werklikheid die woord fout, vir 'n fout in 'n program, 31 00:01:52,490 --> 00:01:55,250 saam met ons vir 'n paar keer in die fisiese wêreld, 32 00:01:55,250 --> 00:01:58,190 en dit was een van die eerste gedokumenteer keer waar iemand eintlik 33 00:01:58,190 --> 00:02:02,280 uitgeruk 'n groot mot uit die Mark II rekenaar, sit dit in die band, 34 00:02:02,280 --> 00:02:05,006 en dan is dit aangeteken as die eerste bekende fout 35 00:02:05,006 --> 00:02:06,630 het eintlik fisies gevind. 36 00:02:06,630 --> 00:02:10,104 So dus aangegaan wat in leersaamhede vandag se. 37 00:02:10,104 --> 00:02:12,020 Alles van die laaste week is aanlyn beskikbaar. 38 00:02:12,020 --> 00:02:14,840 In die besonder hulpbronne wat jy dalk nie noodwendig sien, veral 39 00:02:14,840 --> 00:02:15,881 As hier kom in die persoon. 40 00:02:15,881 --> 00:02:20,230 So een van die onderrig genote elke jaar maak 'n kanoniese stel notas, 41 00:02:20,230 --> 00:02:22,010 sodat jy hoef nie te hou jou kop af, probeer 42 00:02:22,010 --> 00:02:24,410 die meeste enigiets skryf wat kan hier gebeur in die klas. 43 00:02:24,410 --> 00:02:25,940 So besef dat diegene sogenaamde [? Scribd?] Notas 44 00:02:25,940 --> 00:02:29,350 aanlyn, seker die skyfies en bronkode wat ons gebruik in die klas. 45 00:02:29,350 --> 00:02:31,436 Ons maak volledige teks transkripsies sowel beskikbaar. 46 00:02:31,436 --> 00:02:34,310 So as jy vaagweg onthou sommige termyn, en wil om dit 'n bietjie kyk 47 00:02:34,310 --> 00:02:37,280 meer geredelik besef dat alle van daardie is soekbare aanlyn. 48 00:02:37,280 --> 00:02:38,930 Sowel as ipv sowel. 49 00:02:38,930 --> 00:02:42,710 Inderdaad, vandag begin ons om te kyk na 'n laer vlak programmeertaal, 50 00:02:42,710 --> 00:02:45,290 binnekort aan ons bekend as C, en dit is baie maklik 51 00:02:45,290 --> 00:02:48,820 om soort van verlore raak na 'n paar oomblikke tyd, en dan soort van wonder 52 00:02:48,820 --> 00:02:52,370 hoe ons eintlik het om 'n paar meer komplekse voorbeeld van die eenvoudigste. 53 00:02:52,370 --> 00:02:54,975 En so het ons besef sal kersie haal tydens die klas paar 54 00:02:54,975 --> 00:02:57,850 van die verteenwoordigende voorbeelde, maar besef dat soveel meer is ook 55 00:02:57,850 --> 00:03:01,140 aanlyn beskikbaar sodat jy kan werk deur dit in jou eie tempo, 56 00:03:01,140 --> 00:03:02,950 maar jy is baie gemaklik. 57 00:03:02,950 --> 00:03:05,200 >> Maar ons opgehou het met programme wat net hierdie was. 58 00:03:05,200 --> 00:03:09,690 So ek op die groen vlag, en wat beteken hierdie program doen? 59 00:03:09,690 --> 00:03:10,710 Sê hello, wêreld. 60 00:03:10,710 --> 00:03:13,180 Dit maak die kat sê hallo in sy klein wêreld 61 00:03:13,180 --> 00:03:15,990 op die top linkerkant van die gebruikerskoppelvlak Scratch se. 62 00:03:15,990 --> 00:03:18,810 Maar ons begin om in te voer terminologie verlede week. 63 00:03:18,810 --> 00:03:23,614 En so, dinge soos hierdie ons wat genoem word? 64 00:03:23,614 --> 00:03:25,280 Wat kan die generiese term vir dit wees? 65 00:03:25,280 --> 00:03:26,266 Ja. 66 00:03:26,266 --> 00:03:28,210 'N metode of 'n verklaring. 67 00:03:28,210 --> 00:03:29,280 Natuurlik, dit is 'n aksie. 68 00:03:29,280 --> 00:03:30,140 Doen dit. 69 00:03:30,140 --> 00:03:32,400 En tog was daar ander vorms te krap, 70 00:03:32,400 --> 00:03:35,360 Behalwe hierdie sogenaamde verklaring, was hulle ook 71 00:03:35,360 --> 00:03:38,221 dinge soos hierdie, wat ons wat genoem word? 72 00:03:38,221 --> 00:03:38,720 Ja. 73 00:03:38,720 --> 00:03:39,634 So 'n lus. 74 00:03:39,634 --> 00:03:42,050 En in hierdie geval, hierdie ding herhaal, natuurlik, 10 keer. 75 00:03:42,050 --> 00:03:43,040 Daar is 'n ewig blok. 76 00:03:43,040 --> 00:03:44,164 Daar is 'n paar van die ander. 77 00:03:44,164 --> 00:03:48,309 En vandag gaan ons om te sien hoe om vertaal na 'n meer moderne wêreld, 78 00:03:48,309 --> 00:03:50,850 as jy wil, selfs al is dit gaan verskyn op die eerste oogopslag 79 00:03:50,850 --> 00:03:52,024 veel meer arcane wees. 80 00:03:52,024 --> 00:03:53,190 Maar dit was inderdaad lusse. 81 00:03:53,190 --> 00:03:56,182 En dan het ons dinge soos hierdie, wat hierdie vorm gehad het, 82 00:03:56,182 --> 00:03:57,515 en wese vrae. 83 00:03:57,515 --> 00:03:58,890 En ons verwys na hierdie as wat? 84 00:03:58,890 --> 00:03:59,762 >> GEHOOR: Boole-uitdrukking. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Ja. 86 00:04:00,320 --> 00:04:01,340 Boole-uitdrukking. 87 00:04:01,340 --> 00:04:04,502 Iets wat waar of valse, ja of nee, een of nul, 88 00:04:04,502 --> 00:04:05,960 maar jy wil om die wêreld te sien. 89 00:04:05,960 --> 00:04:08,335 Maar ons genoem diegene Boole uitdrukkings, en ons hulle prop 90 00:04:08,335 --> 00:04:09,900 in omstandighede, of takke. 91 00:04:09,900 --> 00:04:12,170 En in die wêreld van die Nuuts af, alles mooi 92 00:04:12,170 --> 00:04:15,460 gespreek in terme van sy vorm, as dit maak logies sin om dit te doen, 93 00:04:15,460 --> 00:04:18,490 maar jy hoef nie te stop by net doen een ding voorwaardelik, 94 00:04:18,490 --> 00:04:20,450 jy kan 'n spreekwoordelike het Vurk in die pad 95 00:04:20,450 --> 00:04:24,040 en doen nie dit of dat, indien die toestand waar is of nie. 96 00:04:24,040 --> 00:04:26,040 En dan, soos jy sal sien, as jy nog nie het nie, 97 00:04:26,040 --> 00:04:27,480 jy kan nes selfs hierdie blokke. 98 00:04:27,480 --> 00:04:32,110 So Scratch groei om die vorms in te vul wat jy dalk wil om te voeg in dit, 99 00:04:32,110 --> 00:04:35,330 sodat jy kan eintlik druk mees enige logika wat jy dalk wil om te doen. 100 00:04:35,330 --> 00:04:38,220 >> Nou 'n paar woorde van aankondiging vir beide hier en New Haven. 101 00:04:38,220 --> 00:04:39,370 So seksie begin vandag. 102 00:04:39,370 --> 00:04:42,120 Die URL vir hierdie is op die kursus se webwerf, vir diegene wat nie vertroud. 103 00:04:42,120 --> 00:04:43,970 Artikels sal 'n geleentheid om bymekaar te kry 104 00:04:43,970 --> 00:04:46,553 in 'n baie meer intieme omgewing as [? Sanders?] Toelaat, 105 00:04:46,553 --> 00:04:50,347 met 10 tot 20 klasmaats met 'n onderrig fellow by verskillende spore, 106 00:04:50,347 --> 00:04:51,930 en verskillende treë, as jy so verkies. 107 00:04:51,930 --> 00:04:54,080 Inderdaad die kursus bied verskillende afdelings 108 00:04:54,080 --> 00:04:57,340 vir diegene minder gemaklik, meer gemaklik en iewers tussen, 109 00:04:57,340 --> 00:04:59,860 en die rol van die duim hier, is daar is geen formele definisie, 110 00:04:59,860 --> 00:05:04,600 maar as jy minder gemaklike, jy soort van weet nie. 111 00:05:04,600 --> 00:05:07,470 Jy is 'n bietjie oor die onverskrokke idee van 'n sterker voet, miskien, terug 112 00:05:07,470 --> 00:05:10,130 in die klaskamer, of wat tot 'n in tussen artikel. 113 00:05:10,130 --> 00:05:12,770 As jy programmering het sedert jy was ses jaar oud, meer gemaklik, 114 00:05:12,770 --> 00:05:13,400 dalk aan u. 115 00:05:13,400 --> 00:05:16,150 En as dit is soort van 'n loot-up, dit is presies wat die tussen 116 00:05:16,150 --> 00:05:17,190 is bedoel om te wees. 117 00:05:17,190 --> 00:05:18,410 >> Nou, in die tussentyd, vir 'n klas van hierdie grootte, 118 00:05:18,410 --> 00:05:21,326 dit neem ons 'n geruime tyd aan artikel almal, so ons het die sogenaamde, 119 00:05:21,326 --> 00:05:24,030 super afdelings, kom hierdie naweek en vroeg volgende week, 120 00:05:24,030 --> 00:05:26,570 so neem 'n blik op die webwerf die kursus se vir diegene wat natuurlik wyd, 121 00:05:26,570 --> 00:05:28,610 en ook verfilm vir diegene wat dit nie kan maak nie. 122 00:05:28,610 --> 00:05:33,470 En artikels self sal begin in week drie van CS50 nul indeks. 123 00:05:33,470 --> 00:05:35,880 Probleem gestel 0 reeds op die webwerf die kursus se. 124 00:05:35,880 --> 00:05:40,010 En besef dat jy het nie nege dae laat hierdie semester. 125 00:05:40,010 --> 00:05:43,240 So, dit is 'n opgradering van verlede jaar, toe ons moes vyf laat dae. 126 00:05:43,240 --> 00:05:46,210 >> So as jy wonder, Ons het nege probleem stelle. 127 00:05:46,210 --> 00:05:53,200 Jy het nege dae laat, wat elk jy kan net een keer per week spandeer op. 128 00:05:53,200 --> 00:05:56,089 Dat al maak effektief die probleem sit as gevolg van Vrydag, 129 00:05:56,089 --> 00:05:58,630 maar die doel is om 'n bietjie te sit bietjie van sielkundige druk 130 00:05:58,630 --> 00:06:01,100 op jou om te probeer om te kry dinge op Donderdag 131 00:06:01,100 --> 00:06:03,960 want soos jy sal vinnig ontdek, vir 'n beter of vir slegter, die meeste 132 00:06:03,960 --> 00:06:07,820 alles in die sagteware wêreld eindig neem baie langer as wat jy verwag. 133 00:06:07,820 --> 00:06:10,620 So dit oorweeg 'n soort geleentheid om te help 134 00:06:10,620 --> 00:06:13,880 jouself te rig Donderdag, maar troos in dat, ja, 135 00:06:13,880 --> 00:06:14,950 alles is te danke Vrydag. 136 00:06:14,950 --> 00:06:17,590 En as jy hulle dien op Donderdag, dit is wonderlik. 137 00:06:17,590 --> 00:06:21,020 Daar is geen bonus punte of ekstra krediet vir die vergadering dat die sperdatum. 138 00:06:21,020 --> 00:06:23,250 Dit is bedoel om net 'n kruk wees. 139 00:06:23,250 --> 00:06:25,810 >> En kantoorure, beide hier en in New Haven, 140 00:06:25,810 --> 00:06:28,840 in die persoon, as jy wil ontmoet met enige van ons kursusse 141 00:06:28,840 --> 00:06:31,060 onderrig genote en GR'e vir hulp. 142 00:06:31,060 --> 00:06:31,640 >> Alle regte. 143 00:06:31,640 --> 00:06:33,110 So nou, laat ons dit meer real. 144 00:06:33,110 --> 00:06:35,470 En vir 'n oomblik dit gaan om te begin om 'n bietjie meer arcane te kry, maar baie 145 00:06:35,470 --> 00:06:37,310 vinnig op Vrydag en volgende week sal ons 146 00:06:37,310 --> 00:06:41,230 in staat om soveel meer te doen as ons kon tot dusver in Scratch. 147 00:06:41,230 --> 00:06:44,350 Sodat ons kode laaste bekendgestel week, hoewel pictoral. 148 00:06:44,350 --> 00:06:45,620 Dit was stukke van die legkaart. 149 00:06:45,620 --> 00:06:48,800 En ons geformaliseer dat dit iets genoem bronkode, 150 00:06:48,800 --> 00:06:50,330 maar sou wou lyk? 151 00:06:50,330 --> 00:06:52,550 Wel, dit lyk 'n bietjie iets soos hierdie. 152 00:06:52,550 --> 00:06:55,410 En, in werklikheid, net soort terg waar ons kan gaan met hierdie. 153 00:06:55,410 --> 00:06:57,800 Ek gaan om voort te gaan en oop 'n venster hier 154 00:06:57,800 --> 00:06:59,810 en Ek gaan net na New File kies. 155 00:06:59,810 --> 00:07:03,200 En ek gaan na hierdie lêer te stoor as iets soos hallo dot c. 156 00:07:03,200 --> 00:07:05,700 Meer oor die keuse van woorde in net 'n oomblik. 157 00:07:05,700 --> 00:07:08,630 En dit is hoe iemand dalk gaan oor die skryf van 'n program. 158 00:07:08,630 --> 00:07:13,990 Sluit in standaard I / O dot h, int main leemte, en dan oop krullerige brace, naby 159 00:07:13,990 --> 00:07:19,430 krullerige brace, printf hallo komma wêreld, backslash n, kommapunt, Save, gedoen. 160 00:07:19,430 --> 00:07:19,930 OK. 161 00:07:19,930 --> 00:07:21,670 Ek het my eerste geskryf program, maar dit gaan 162 00:07:21,670 --> 00:07:23,878 ongelooflik underwhelmed te wees want toe ek eintlik 163 00:07:23,878 --> 00:07:27,352 hardloop hierdie program, natuurlik, deur eerste skrif te maak hello, 164 00:07:27,352 --> 00:07:30,310 en dan dot streep hello, en ons sal gaan deur dit in baie meer detail 165 00:07:30,310 --> 00:07:31,730 in 'n oomblik, dit is al wat hy doen nie. 166 00:07:31,730 --> 00:07:33,270 Nie pop oop enige vensters. 167 00:07:33,270 --> 00:07:35,070 Dit hoef nie iets te doen veral fancy. 168 00:07:35,070 --> 00:07:38,830 Al wat dit doen is wat ek het dit aan doen nie, maar hoe kry ons om dit? 169 00:07:38,830 --> 00:07:40,560 En hoe kan ons bou op dit? 170 00:07:40,560 --> 00:07:43,430 Wel, laat ons stel 'n paar verskillende konsepte hier. 171 00:07:43,430 --> 00:07:47,170 >> So een, ons is op die punt om te begin met behulp van 'n program genaamd 'n samesteller. 172 00:07:47,170 --> 00:07:51,470 A samesteller bestaan ​​vir Mac OS, Windows, Linux, 'n aantal van bedryfstelsels, 173 00:07:51,470 --> 00:07:54,540 en ons sal jou gou bekend te stel aan die omgewing wat ons sal gebruik word, 174 00:07:54,540 --> 00:07:57,410 maar 'n vertaler is net 'n algemene term vir 'n stukkie van die sagteware 175 00:07:57,410 --> 00:08:01,940 wat neem bronkode en produseer voorwerp kode van dit. 176 00:08:01,940 --> 00:08:03,940 Met ander woorde, as jy het as insette jou bron 177 00:08:03,940 --> 00:08:08,250 kode, iets soos wat ek nou net getik, dit uiteindelik produseer voorwerp kode. 178 00:08:08,250 --> 00:08:11,780 En voorwerp kode is regtig net 'n fancy manier om te sê wat dit uitset 179 00:08:11,780 --> 00:08:12,926 nul en 'n mens se. 180 00:08:12,926 --> 00:08:14,800 Met ander woorde, die bron kode, selfs al is dit 181 00:08:14,800 --> 00:08:17,240 gaan 'n bietjie arcane kyk, en 'n bietjie minder vriendelik 182 00:08:17,240 --> 00:08:19,590 as Scratch met die eerste oogopslag, dit is ten minste iets 183 00:08:19,590 --> 00:08:21,120 dat ons mense kan verstaan. 184 00:08:21,120 --> 00:08:24,360 Dit lyk soort en klink soos Engels, selfs al is dit baie bondige. 185 00:08:24,360 --> 00:08:28,040 AANGESIEN programmering in nul en 'n mens se, as ons voorgangers het om te doen, 186 00:08:28,040 --> 00:08:30,920 'n paar jaar gelede, was nie 'n veral pret uitdaging. 187 00:08:30,920 --> 00:08:33,710 En tog, dit is wat die rekenaar nog steeds verstaan. 188 00:08:33,710 --> 00:08:37,010 So samesteller kry ons van bronkode kode beswaar. 189 00:08:37,010 --> 00:08:39,860 Dit is soos die opening van 'n lêer met die samesteller, en wanneer jy dit stoor, 190 00:08:39,860 --> 00:08:41,419 jy daardie nulle en ene. 191 00:08:41,419 --> 00:08:43,419 So ons sal sien hoe om te doen wat in net 'n oomblik. 192 00:08:43,419 --> 00:08:47,400 >> Maar laat ons nou probeer om 'n voorsien brug tussen laaste week en dit, 193 00:08:47,400 --> 00:08:50,660 sodat selfs as ons hang oor dinge soos krulhakies, 194 00:08:50,660 --> 00:08:54,100 en kommapunte en hakies, en al hierdie intellektueel interessante 195 00:08:54,100 --> 00:08:57,620 aspekte van programmering, wat baie verstaanbaar reis mense vroeg, 196 00:08:57,620 --> 00:09:00,930 besef dat al die idees vandag is dieselfde as verlede. 197 00:09:00,930 --> 00:09:03,975 So laaste, hierdie voorbeeld het ons gesien hier, Hello World program. 198 00:09:03,975 --> 00:09:07,500 Wel, begin vandag, as ons wil te implementeer wat dieselfde program, 199 00:09:07,500 --> 00:09:10,800 dit gaan om 'n blik bietjie iets soos hierdie. 200 00:09:10,800 --> 00:09:14,040 En ons sal verduidelik voor lank wat int, en die belangrikste, en leeg, en al wat 201 00:09:14,040 --> 00:09:18,770 is nie, maar ten minste het ek hier sien reeds die bekende Hello World. 202 00:09:18,770 --> 00:09:20,860 >> Intussen dinge soos funksie, sê hello, 203 00:09:20,860 --> 00:09:23,570 is baie eenvoudig gaan 'n wees baie eenvoudige stelling soos hierdie. 204 00:09:23,570 --> 00:09:26,930 Printf hello world, met 'n paar haal, met 'n backslash, 205 00:09:26,930 --> 00:09:29,780 met 'n kommapunt, maar meer oor dit te kom. 206 00:09:29,780 --> 00:09:34,066 Loops, intussen, is dit 'n lus wat, natuurlik, sê hallo wêreld vir ewig, 207 00:09:34,066 --> 00:09:36,690 en hierdie een gaan 'n kyk bietjie Weirder as in die laaste, 208 00:09:36,690 --> 00:09:39,530 maar as ek iets sê soos, terwyl ware, ek 209 00:09:39,530 --> 00:09:44,050 kan dan druk Hello world weer en weer en weer en weer. 210 00:09:44,050 --> 00:09:46,660 En dan as jy kan soort van begin tot hier aflei, 211 00:09:46,660 --> 00:09:49,070 hierdie konvensie van die gebruik van krulhakies is 'n soort 212 00:09:49,070 --> 00:09:52,050 van soos die aanvaarding van die ingekeep lyn van die kode is daar. 213 00:09:52,050 --> 00:09:55,840 Die printf reël van die kode veel soos die geel legkaart stuk bo. 214 00:09:55,840 --> 00:09:58,740 So ons gaan nie om vir ewig te sê, ons gaan om te sê, terwyl ware, 215 00:09:58,740 --> 00:10:01,020 maar ons sal sien waarom dit in net 'n bietjie. 216 00:10:01,020 --> 00:10:04,210 >> Intussen, as ons 'n lus soos hierdie, waar jy iets 'n eindige herhaal 217 00:10:04,210 --> 00:10:07,730 aantal kere, hierdie een ook dit is gaan 'n bietjie te neem om gewoond 218 00:10:07,730 --> 00:10:12,820 nie, maar dit gaan om te sê vir int i kry nul, i minder as 10, i ++, 219 00:10:12,820 --> 00:10:14,056 en dan printf weer. 220 00:10:14,056 --> 00:10:15,430 Maar daar gaan wees patrone. 221 00:10:15,430 --> 00:10:18,434 En vir dié van julle vertroud met AP Rekenaarwetenskap, of Java, 222 00:10:18,434 --> 00:10:21,100 of enige aantal ander tale, byna almal van hierdie konstrukte 223 00:10:21,100 --> 00:10:23,820 dusver moet meestal bekende lyk. 224 00:10:23,820 --> 00:10:24,680 >> So veranderlike. 225 00:10:24,680 --> 00:10:29,270 So hier is 'n eenvoudige Scratch uittreksel wat stel 'n veranderlike genoem toonbank tot nul, 226 00:10:29,270 --> 00:10:33,150 en dan vir ewig, sê die toonbank, en dan is dit verander die toonbank vir een. 227 00:10:33,150 --> 00:10:37,030 So dit begin met 'n nul, en dan een, twee, drie. 228 00:10:37,030 --> 00:10:42,560 Wel, hoe kan ons stel dat in hierdie nuwe taal 'n bietjie soortgelyk? 229 00:10:42,560 --> 00:10:45,460 Int counter gelyk nul, terwyl ware, wat 230 00:10:45,460 --> 00:10:48,100 is dat dieselfde idee voor om iets te doen vir ewig, 231 00:10:48,100 --> 00:10:49,530 en ek is net gaan om te printf. 232 00:10:49,530 --> 00:10:53,310 En nou is dit 'n bietjie vreemd, persent i, maar meer oor dit te kom, 233 00:10:53,310 --> 00:10:55,140 maar hierdie idees is presies dieselfde. 234 00:10:55,140 --> 00:10:58,820 Ons het nou net moet voldoen aan die sintaksis wat die rekenaar 235 00:10:58,820 --> 00:11:00,010 gaan om te eis van ons. 236 00:11:00,010 --> 00:11:04,620 >> Boole-uitdrukking, iets soos sx minder as y, of x minder as y, 237 00:11:04,620 --> 00:11:06,354 en y minder as z. 238 00:11:06,354 --> 00:11:09,270 Dit gaan 'n bietjie iets sien soos hierdie, met hakies net 239 00:11:09,270 --> 00:11:13,020 soos in wiskunde vir 'n goeie maatreël om net verseker dat die volgorde van bewerkings 240 00:11:13,020 --> 00:11:14,750 is as wat ons beplan. 241 00:11:14,750 --> 00:11:15,600 En nou, voorwaardes. 242 00:11:15,600 --> 00:11:21,220 So as x minder as y, sê x is minder as y, anders as x groter as y, 243 00:11:21,220 --> 00:11:26,020 sê x is groter as y, andersins logies, moet x gelyk aan y wees. 244 00:11:26,020 --> 00:11:28,710 So jy kan implementeer iets soos hierdie in Scratch, 245 00:11:28,710 --> 00:11:31,230 of jy kan implementeer dit in hierdie sintaksis. 246 00:11:31,230 --> 00:11:35,090 En weer, die krulhakies is soort van gee ons die dieselfde vorm as die legkaart 247 00:11:35,090 --> 00:11:40,750 stukke, maar die sintaksis, nou, is dalk begin om 'n paar patrone volg. 248 00:11:40,750 --> 00:11:42,910 >> So, wat beteken dit vir ons hier? 249 00:11:42,910 --> 00:11:45,260 So ons is terug dan op ons hoof program. 250 00:11:45,260 --> 00:11:47,930 Kom ons eintlik, nou, iets te doen met dit. 251 00:11:47,930 --> 00:11:50,660 So in hierdie heel eerste lyn sien ons skerp sluit, 252 00:11:50,660 --> 00:11:53,160 standaard I / O, dot h, en dan 'n paar weird hoek 253 00:11:53,160 --> 00:11:57,330 hakies onder dit. int main leemte, en dan printf hello world. 254 00:11:57,330 --> 00:11:58,200 Dus net 'n stap. 255 00:11:58,200 --> 00:12:02,440 Iemand wat nog nooit tevore is geprogrammeer, ten minste verduidelik een van hierdie lyne. 256 00:12:02,440 --> 00:12:04,490 Met behulp van 'n paar van miskien die jargon van verlede week. 257 00:12:04,490 --> 00:12:06,942 Wat is printf, byvoorbeeld? 258 00:12:06,942 --> 00:12:07,442 Ja. 259 00:12:07,442 --> 00:12:08,410 >> GEHOOR: [onhoorbaar] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Ja. 261 00:12:08,610 --> 00:12:11,380 Dit is 'n funksie, of 'n verklaring, van terminologie verlede week se. 262 00:12:11,380 --> 00:12:13,470 En dit is 'n aksie dat iets doen. 263 00:12:13,470 --> 00:12:15,855 Nou is hierdie funksie, of hierdie stelling, doen 264 00:12:15,855 --> 00:12:17,550 Dit blyk 'n soort van insette te neem? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 En in watter sin dit doen lyk insette te neem, indien wel? 267 00:12:24,380 --> 00:12:26,180 Insette, wat moet ek daarmee? 268 00:12:26,180 --> 00:12:26,720 Ja. 269 00:12:26,720 --> 00:12:27,595 >> GEHOOR: [onhoorbaar] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. MALAN: Ja. 272 00:12:31,440 --> 00:12:34,890 So Krap uit paar stukke van die legkaart waar jy kan dit parametrize. 273 00:12:34,890 --> 00:12:37,980 Jy kan die herhaling vertel blok hoeveel keer te herhaal, 274 00:12:37,980 --> 00:12:40,320 so dit was 'n inset van soorte, en net soos Scratch 275 00:12:40,320 --> 00:12:43,060 het 'n klein wit plekhouer vir die nommer wat jy wil tik in, 276 00:12:43,060 --> 00:12:45,810 doen wat ons gebruik in hierdie teks wêreld hakies 277 00:12:45,810 --> 00:12:49,910 aan ons te gee dat ronde vorm waarin ons kan ons insette te prop. 278 00:12:49,910 --> 00:12:53,180 Na alles, tien jaar gelede wanneer hierdie taal, die sogenaamde C, 279 00:12:53,180 --> 00:12:55,950 is uitgevind niemand verwagte dit is een van ons, 280 00:12:55,950 --> 00:12:59,420 hierdie paar jaar later, sou ons wil 'n funksie wat hallo sê. 281 00:12:59,420 --> 00:12:59,920 Reg? 282 00:12:59,920 --> 00:13:02,880 Dit sou lekker wees as daar 'n legkaart stuk, of 'n sleutel woorde, 283 00:13:02,880 --> 00:13:05,502 Dit is genoem hello, wat letterlik net sê hallo. 284 00:13:05,502 --> 00:13:06,460 Maar ons hoef nie daardie. 285 00:13:06,460 --> 00:13:09,320 Ons kan iets baie laer het vlak, soos 'n generiese druk 286 00:13:09,320 --> 00:13:12,760 opdrag, wat insette neem, en afdrukke wat ons wil. 287 00:13:12,760 --> 00:13:14,960 So kyk nou die patroon wat sal begin te voorskyn kom. 288 00:13:14,960 --> 00:13:19,310 Open paren, naby hakie is blykbaar die aanvaarding van die insette, 289 00:13:19,310 --> 00:13:21,770 en dan sien ek dubbel haal aan beide kante. 290 00:13:21,770 --> 00:13:25,110 Daar is nog vreemd backslash n, maar hopelik nou is jy 291 00:13:25,110 --> 00:13:29,900 kan begin om ten minste wat visualiseer printf neem in 'n vorm van insette. 292 00:13:29,900 --> 00:13:31,850 Nie so gebruikersvriendelik as Krap, maar dit is net 293 00:13:31,850 --> 00:13:34,920 soos om ingeprop in 'n bietjie waarde daar. 294 00:13:34,920 --> 00:13:38,306 >> Alle reg, laat ons nou eintlik iets met dit te doen. 295 00:13:38,306 --> 00:13:40,930 So 'n paar van julle dalk weet van met inkopies die klas voor, 296 00:13:40,930 --> 00:13:42,638 gesels met vriende, wat vir baie jare 297 00:13:42,638 --> 00:13:44,590 ons iets gebruik genoem die CS50 toestel. 298 00:13:44,590 --> 00:13:49,160 Dit was 'n term wat 'n tegnologie genoem die virtuele masjien, wat 299 00:13:49,160 --> 00:13:51,870 is 'n stuk sagteware wat jou voorgangers sou af te laai 300 00:13:51,870 --> 00:13:53,360 webwerf die kursus se gratis. 301 00:13:53,360 --> 00:13:56,550 Hulle sal ook 'n gratis stukkie sagteware genoem hypervisor, 302 00:13:56,550 --> 00:14:00,590 iets genoem soos VMware, of VirtualBox, of enige aantal 303 00:14:00,590 --> 00:14:04,450 van ander instrumente en op hul Mac of PC of wat ook al rekenaar wat hulle verlede jaar het 304 00:14:04,450 --> 00:14:06,620 en in die afgelope jare, het hulle sou dubbel kliek 'n ikoon 305 00:14:06,620 --> 00:14:08,860 om hierdie sagteware te loop genoem die hypervisor. 306 00:14:08,860 --> 00:14:12,220 En dan binnekant van die program hulle sou die CS50 toestel oopmaak. 307 00:14:12,220 --> 00:14:14,710 En die effek was dat of 'n voorganger van jou 308 00:14:14,710 --> 00:14:17,780 hardloop Mac OS of Windows, kan hy of sy dan 309 00:14:17,780 --> 00:14:22,910 Daarna het 'n nuwe venster op hul skerm hardloop CS50 se omgewing. 310 00:14:22,910 --> 00:14:27,370 So 'n virtuele masjien kan jy een hardloop bedryfstelsel binnekant van 'n ander, 311 00:14:27,370 --> 00:14:28,785 en dit is presies wat ons gedoen het. 312 00:14:28,785 --> 00:14:31,410 Regdeur die meeste van die kursus het ons gebruik 'n bedryfstelsel genoem 313 00:14:31,410 --> 00:14:34,070 Linux, spesifiek Ubuntu Linux, en dit 314 00:14:34,070 --> 00:14:37,590 is 'n baie mooi manier in die afgelope jare van om seker te maak dat almal in die loop 315 00:14:37,590 --> 00:14:38,840 net het dieselfde omgewing. 316 00:14:38,840 --> 00:14:41,339 En jy kan enige soort gebruik rekenaar wat jy eintlik wil hê. 317 00:14:41,339 --> 00:14:43,930 Onder die nadele, al is, was dit was soos twee gigagrepe 318 00:14:43,930 --> 00:14:45,480 om hierdie saak te laai. 319 00:14:45,480 --> 00:14:50,310 Dit het nie noodwendig werk super goed op mense wie se rekenaars wat dalk net 320 00:14:50,310 --> 00:14:54,570 het 'n gig of so RAM, of nie te veel gigahertz van CPU spoed, 321 00:14:54,570 --> 00:14:56,750 en so hierdie jaar, vir hierdie en ander redes, 322 00:14:56,750 --> 00:14:59,140 het ons die oorgang hierdie omgewing. 323 00:14:59,140 --> 00:15:03,730 Die sogenaamde CS50 IDE, wat is gebaseer op open source sagteware, 324 00:15:03,730 --> 00:15:07,380 en 'n platform ondersteun dat 'n maatskappy genaamd Cloud9 325 00:15:07,380 --> 00:15:11,110 ondersteun in Europa, wat kan ons wese het 326 00:15:11,110 --> 00:15:15,770 wat presies dieselfde omgewing as in die afgelope jare, maar in die sogenaamde wolk. 327 00:15:15,770 --> 00:15:17,532 >> So, wat is die wolk? 328 00:15:17,532 --> 00:15:20,480 Jy het waarskynlik gekliek die ikoon op jou Mac of PC. 329 00:15:20,480 --> 00:15:22,210 Wat is die wolk? 330 00:15:22,210 --> 00:15:22,709 Ja? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 'N bietjie harder. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Ja. 335 00:15:31,010 --> 00:15:33,770 Dit is net 'n klomp van rekenaars elders die winkel data en hardloop 336 00:15:33,770 --> 00:15:34,880 sagteware en dies meer. 337 00:15:34,880 --> 00:15:39,390 So dit is regtig net om die woord de jure beskryf [? verhuurbare?] 338 00:15:39,390 --> 00:15:40,930 rekenaars wat elders woon. 339 00:15:40,930 --> 00:15:42,810 Dat jy, jouself, nie noodwendig besit. 340 00:15:42,810 --> 00:15:45,256 So wanneer jou data, of jou programme, is in die wolk, 341 00:15:45,256 --> 00:15:47,630 is dit net beteken dat dit op iemand anders se rekenaars elders, 342 00:15:47,630 --> 00:15:50,510 en nie, waarskynlik, op jou fisiese of laptop lessenaar. 343 00:15:50,510 --> 00:15:52,990 En so dit is wat CS50 IDE is nou. 344 00:15:52,990 --> 00:15:55,670 >> Voortaan sal jy gaan na 'n sekere URL wat jy sal stel 345 00:15:55,670 --> 00:16:00,090 om, in die probleem stel 1, later week, wat sal dan op te teken, 346 00:16:00,090 --> 00:16:01,480 gee jou hierdie omgewing. 347 00:16:01,480 --> 00:16:03,896 En baie soos Scratch het 'n paar verskillende panele wat betrokke is, 348 00:16:03,896 --> 00:16:06,030 so ook CS50 se IDE het presies dit. 349 00:16:06,030 --> 00:16:09,480 Op die top linkerkant hier, is jy gaan 'n bekende lêer leser sien. 350 00:16:09,480 --> 00:16:11,930 So enige van die lêers wat jy sit in hierdie omgewing 351 00:16:11,930 --> 00:16:13,346 is net gaan om daar gelys word. 352 00:16:13,346 --> 00:16:14,350 Lêers en dopgehou. 353 00:16:14,350 --> 00:16:16,790 Op die top reg hier, jy gaan na 'n plek te sien 354 00:16:16,790 --> 00:16:18,420 waar jy kan eintlik skryf jou kode. 355 00:16:18,420 --> 00:16:21,860 Aanvanklik in C, later in die term in PHP en JavaScript, 356 00:16:21,860 --> 00:16:24,739 en dalk vir finale projekte, Ruby of Java Python 357 00:16:24,739 --> 00:16:27,280 of enige aantal tale ondersteun in hierdie omgewing. 358 00:16:27,280 --> 00:16:30,130 Dit is glad nie vasgebind spesifiek CS50. 359 00:16:30,130 --> 00:16:33,390 >> En dan in die onderste hoek hier veral vir diegene wat meer gemaklik, 360 00:16:33,390 --> 00:16:35,590 jy iets bekend as 'n terminale venster. 361 00:16:35,590 --> 00:16:38,770 En dit terminale venster laat om enige bevel te voer dat jy 362 00:16:38,770 --> 00:16:40,860 wil in hierdie wolk omgewing. 363 00:16:40,860 --> 00:16:42,860 Dit laat jou toe om te installeer enige bykomende sagteware 364 00:16:42,860 --> 00:16:46,810 wat jy wil, want jy het die sogenaamde wortel, of administrateur voorregte. 365 00:16:46,810 --> 00:16:49,930 So met ander woorde, selfs al is dit uiteindelik aangebied in die wolk, 366 00:16:49,930 --> 00:16:52,400 en selfs al het ons vereenvoudig dit tot 'n mate 367 00:16:52,400 --> 00:16:57,110 by verstek, letterlik die bekendstelling, danksy Dan Armendariz, en Dino, 368 00:16:57,110 --> 00:17:01,070 en Dan Bradley op CS50 se span oor die afgelope maande, 'n minder gemaklik 369 00:17:01,070 --> 00:17:05,140 af wat 'n baie van die huide aanvanklik verwarrend afleiding. 370 00:17:05,140 --> 00:17:10,119 Alles wat daar bestaan ​​om verteenwoordig 'n tipiese rekenaarstelsel 371 00:17:10,119 --> 00:17:12,319 wat jy kan gebruik in die werklike wêreld. 372 00:17:12,319 --> 00:17:15,640 >> So, wat beteken dit alles, en wat kan ons eintlik doen met dit? 373 00:17:15,640 --> 00:17:19,124 Kom ons neem 'n blik eintlik op 'n program. 374 00:17:19,124 --> 00:17:21,290 So ek gaan om oop te maak die werklike omgewing hier, 375 00:17:21,290 --> 00:17:23,894 wat net ons Chrome leser, wat Firefox kan wees, 376 00:17:23,894 --> 00:17:26,640 kan wees Internet Explorer, of 'n ander leser as well. 377 00:17:26,640 --> 00:17:28,400 Dit is hier vol gekeur vir die oomblik. 378 00:17:28,400 --> 00:17:31,580 En ek wil eintlik terg afgesien wat hierdie program was. 379 00:17:31,580 --> 00:17:36,170 So laat ons 'n blik deur inzoomen up bo, na wat ek gedoen het, en hoe ek hier beland het. 380 00:17:36,170 --> 00:17:38,315 So hier is die presiese dieselfde reëls van die kode. 381 00:17:38,315 --> 00:17:40,440 So dit is die verklaring, as jy vroeër genoem. 382 00:17:40,440 --> 00:17:42,580 Die funksie wat hallo sê. 383 00:17:42,580 --> 00:17:45,870 Die krulhakies op line vier en ses lyn, 384 00:17:45,870 --> 00:17:49,290 vermoedelik soort envelop dat die lyn om dit te assosieer 385 00:17:49,290 --> 00:17:50,890 met die essensie van my program. 386 00:17:50,890 --> 00:17:54,890 So inderdaad, hierdie navraag belangrikste, dit is daar op die lyn drie, 387 00:17:54,890 --> 00:17:59,450 jy kan dink dat as die ekwivalent van dat wanneer groen vlag gekliek, 388 00:17:59,450 --> 00:18:01,080 blok in Scratch. 389 00:18:01,080 --> 00:18:05,280 So dit is al wat ons hier het, is wanneer groen vlag gekliek, druk, of sê, 390 00:18:05,280 --> 00:18:06,700 hello world. 391 00:18:06,700 --> 00:18:11,210 >> Maar laat ons neem 'n raaiskoot, nou, op watter hierdie eerste, meer arcane lyn, is. 392 00:18:11,210 --> 00:18:15,100 Skerp sluit, oop skuins bracket, standaard I / O dot h, 393 00:18:15,100 --> 00:18:17,320 sluit skuins bracket. 394 00:18:17,320 --> 00:18:19,850 Wat is dit dalk te doen, veral as jy het geprogrammeer 395 00:18:19,850 --> 00:18:21,390 voor in 'n ander taal. 396 00:18:21,390 --> 00:18:21,890 Ja? 397 00:18:21,890 --> 00:18:22,765 >> GEHOOR: [onhoorbaar] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. MALAN: Ja. 400 00:18:25,970 --> 00:18:26,470 Presies. 401 00:18:26,470 --> 00:18:29,455 So dit gee jou toegang tot 'n biblioteek, so te sê, van funksies. 402 00:18:29,455 --> 00:18:31,830 En 'n biblioteek van funksies is funksies wat iemand anders 403 00:18:31,830 --> 00:18:34,406 geskryf het, óf het onlangs of lank gelede, sodat jy 404 00:18:34,406 --> 00:18:35,780 nie aan die wiel te herontwerp. 405 00:18:35,780 --> 00:18:39,020 Byvoorbeeld, ons doen nie het om te weet, in 2015, 406 00:18:39,020 --> 00:18:42,280 hoe om kode wat wan skryf 'n karakter op my skerm. 407 00:18:42,280 --> 00:18:44,820 Iemand anders het gedink dat uit met die printf funksie 408 00:18:44,820 --> 00:18:47,280 sodat ek kan sorteer van abstrakte weg van daardie, of laag 409 00:18:47,280 --> 00:18:49,350 op die top van sy of haar kode, en nou net ' 410 00:18:49,350 --> 00:18:52,760 vanselfsprekend dat enige program wat ek skryf kan iets doen om die skerm te druk. 411 00:18:52,760 --> 00:18:58,150 So die eerste lyn daar in stap een sluit die sogenaamde kop lêer 412 00:18:58,150 --> 00:18:59,980 vir die standaard biblioteek. 413 00:18:59,980 --> 00:19:02,630 So sien die taal wat ons nou werk 414 00:19:02,630 --> 00:19:05,010 het 'n standaard biblioteek met baie van die funksies. 415 00:19:05,010 --> 00:19:07,240 Printf is een van hulle, en dat die eerste reël van die kode 416 00:19:07,240 --> 00:19:10,040 beteken gee my toegang tot daardie funksies, sodat ek 417 00:19:10,040 --> 00:19:12,300 hoef nie te wat wiel. 418 00:19:12,300 --> 00:19:15,940 >> Nou laat gaan na die onderste venster en doen presies wat ek gedoen het voordat. 419 00:19:15,940 --> 00:19:18,520 'N Oomblik gelede, toe ek whizzing deur die kode, 420 00:19:18,520 --> 00:19:24,540 uit te tik dit vir die eerste keer, Ek baie vinnig getik, maak hallo. 421 00:19:24,540 --> 00:19:28,250 Wat was dit alles oor sou jy raai? 422 00:19:28,250 --> 00:19:29,150 Wat is ek? 423 00:19:29,150 --> 00:19:29,649 Ja? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Never mind. 426 00:19:32,310 --> 00:19:32,970 Dit is OK. 427 00:19:32,970 --> 00:19:33,492 Ja. 428 00:19:33,492 --> 00:19:34,450 GEHOOR: Opstel dit. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Ja. 430 00:19:34,700 --> 00:19:35,770 Dit was net die opstel van dit. 431 00:19:35,770 --> 00:19:36,270 Reg? 432 00:19:36,270 --> 00:19:39,280 Selfs al is dit heeltemal onbekende vir julle, dit is redelik Engels wil. 433 00:19:39,280 --> 00:19:41,155 Dit is beslis nie nulle en kinders, so ek het nog 434 00:19:41,155 --> 00:19:44,220 nodig het om dit uit te voer deur middel van dat die sogenaamde program, 'n samesteller, wat gaan 435 00:19:44,220 --> 00:19:46,060 om dit te neem as invoer en produseer uitset. 436 00:19:46,060 --> 00:19:48,270 En ten minste vir nou in hierdie Linux omgewing, 437 00:19:48,270 --> 00:19:51,030 maar dit word nie voorvereiste dit is net waar ons sal begin, 438 00:19:51,030 --> 00:19:53,960 jy in die algemeen interaksie met rekenaarstelsels soos hierdie 439 00:19:53,960 --> 00:19:55,770 deur 'n sogenaamde command line. 440 00:19:55,770 --> 00:19:57,790 So met 'n knip vinnige en jou sleutelbord, 441 00:19:57,790 --> 00:20:01,630 en nie soseer jou muis, en nie soveel vensters en ikone en spyskaarte, 442 00:20:01,630 --> 00:20:02,980 eerder alles is tekstuele. 443 00:20:02,980 --> 00:20:06,180 En selfs al is dit voel, op die eerste oogopslag, miskien, soos 'n stap agteruit, 444 00:20:06,180 --> 00:20:08,437 dit is eintlik 'n baie meer kragtige en ekspressiewe manier 445 00:20:08,437 --> 00:20:10,270 beheer 'n rekenaar veral as jy, 446 00:20:10,270 --> 00:20:12,950 jouself, raak meer gemaklik van minder. 447 00:20:12,950 --> 00:20:16,790 Dit gaan jou toelaat om 'n baie te doen meer dinge as net dit wat Microsoft 448 00:20:16,790 --> 00:20:20,390 of Apple kan jy te doen het met hul grafiese bedryfstelsel. 449 00:20:20,390 --> 00:20:23,270 >> So wanneer ek druk Enter, nou, niks gebeur hierdie tyd 450 00:20:23,270 --> 00:20:25,960 want blykbaar die program hallo op datum is. 451 00:20:25,960 --> 00:20:28,250 En wat was die opdrag Ek hardloop na dit? 452 00:20:28,250 --> 00:20:32,370 Dot streep hello, en hello world. 453 00:20:32,370 --> 00:20:34,350 Nou laat ons neem 'n stap terug vir 'n oomblik. 454 00:20:34,350 --> 00:20:39,510 Dit blyk dat die maak hallo is net 'n vereenvoudigde manier van die opstel van 'n program. 455 00:20:39,510 --> 00:20:41,670 Laat ons net bekend een stuk jargon, 456 00:20:41,670 --> 00:20:43,470 maar dan weg te beweeg van dit, want dit is nie 457 00:20:43,470 --> 00:20:46,640 alles wat interessant vir doeleindes vandag se. 458 00:20:46,640 --> 00:20:51,000 Die samesteller ons gaan begin gebruik genoem klang, vir die C-taal. 459 00:20:51,000 --> 00:20:54,280 En dit is 'n program wat net hardloop soos ons gedoen het by die opdrag lyn daar. 460 00:20:54,280 --> 00:20:56,580 En so as ek wil 'n program saam te stel dat ek 461 00:20:56,580 --> 00:21:00,790 het in 'n lêer genaamd hallo dot geskryf c, ek het letterlik net tik klang hallo c 462 00:21:00,790 --> 00:21:02,100 betree. 463 00:21:02,100 --> 00:21:04,880 >> Die funny ding is, vir historiese redes, 464 00:21:04,880 --> 00:21:07,750 as ek nie spesifiseer die naam van die program 465 00:21:07,750 --> 00:21:11,690 wat ek wil uitvoer, as ek dit nie doen nie spesifiseer 'n lêer naam vir die nulle 466 00:21:11,690 --> 00:21:14,990 en kinders, 'n baie vreemde konvensie aanvaar jaar gelede 467 00:21:14,990 --> 00:21:17,390 waar dit gevoel soort van 'n goeie antwoord op die oomblik, 468 00:21:17,390 --> 00:21:21,650 Wel, laat ons net arbitrêr noem die eerste program wat ons 'n punt te stel nie. 469 00:21:21,650 --> 00:21:22,900 A kom eerste in die alfabet. 470 00:21:22,900 --> 00:21:23,920 Out, dit is die uitset. 471 00:21:23,920 --> 00:21:26,210 So sal ons die program noem by verstek 'n punt uit. 472 00:21:26,210 --> 00:21:29,550 En dit is goed, want as ek wil hardloop die program in hierdie teks gebaseer 473 00:21:29,550 --> 00:21:33,590 omgewing, ek tik net dot dot streep 'n uit te voer. 474 00:21:33,590 --> 00:21:35,250 En dit sou presies soos voor hardloop. 475 00:21:35,250 --> 00:21:36,880 So laat ons sien wat ware vinnig. 476 00:21:36,880 --> 00:21:40,370 >> So as ek gaan terug na my bronkode in CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 en ek plaas dit te doen, klang hallo bed c ingaan, lyk kennisgewing niks gebeur nie, 478 00:21:47,860 --> 00:21:49,790 maar byna altyd in hierdie Linux omgewing, 479 00:21:49,790 --> 00:21:53,310 wanneer niks sleg lyk om te gebeur, dat beteken iets goeds werklik gebeur het. 480 00:21:53,310 --> 00:21:56,270 As jy nie 'n fout sien boodskap, al is waarskynlik goed. 481 00:21:56,270 --> 00:22:01,930 En inderdaad, as ek nou doen dot streep 'n punt uit te voer, het ek my dieselfde program te hardloop. 482 00:22:01,930 --> 00:22:04,610 Ek het nog steeds die hallo program van vroeër, want inderdaad, dit is 483 00:22:04,610 --> 00:22:07,430 gaan so baie lekkerder wees net tik maak in plaas van om te onthou 484 00:22:07,430 --> 00:22:10,240 hierdie inkantasies van opdragte, maar laat ons sien hoe ons 485 00:22:10,240 --> 00:22:12,890 kan verbeter op hierdie, nietemin. 486 00:22:12,890 --> 00:22:15,340 >> So, dit is die opdrag om die kode te stel. 487 00:22:15,340 --> 00:22:19,100 Dit is die opdrag om te hardloop die saamgestelde kode daarna. 488 00:22:19,100 --> 00:22:20,546 Hoe kan ek 'n lêer naam spesifiseer? 489 00:22:20,546 --> 00:22:22,670 Wel, laat ons net bekend een stuk jargon. 490 00:22:22,670 --> 00:22:24,461 Wanneer jy in hierdie teks-gebaseerde omgewing, 491 00:22:24,461 --> 00:22:27,400 jy gaan om te wil om te spesifiseer dinge genoem command line argumente. 492 00:22:27,400 --> 00:22:31,380 Wat net 'n fancy manier om te sê, ander woorde op die instruksielyn dat 493 00:22:31,380 --> 00:22:33,860 tweak die gedrag van watter program wat jy loop. 494 00:22:33,860 --> 00:22:37,320 So spesifiek die program Ek is hardloop, deur te tik die naam klang, 495 00:22:37,320 --> 00:22:38,504 is die program genaamd klang. 496 00:22:38,504 --> 00:22:40,920 So dit is of die ou skool ekwivalent van dubbel-kliek 497 00:22:40,920 --> 00:22:42,860 op Microsoft Word of icon paar program. 498 00:22:42,860 --> 00:22:46,360 Ek plaas net tik sy naam, maar in hierdie weergawe van die bevel, 499 00:22:46,360 --> 00:22:51,334 Ek het dan stamp o ruimte hallo hallo ruimte dot c. 500 00:22:51,334 --> 00:22:53,500 So selfs as jy nog nooit gespeel in hierdie wêreld voor, 501 00:22:53,500 --> 00:22:58,160 net 'n raaiskoot te neem wat nie Dash o hallo doen? 502 00:22:58,160 --> 00:23:00,620 Of wat beteken dit vertel klang om te doen? 503 00:23:00,620 --> 00:23:01,386 Ja. 504 00:23:01,386 --> 00:23:02,455 >> GEHOOR: [onhoorbaar] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Ja. 506 00:23:03,330 --> 00:23:08,614 Dit stel net uitset die lêer se te wees hallo in plaas van die slordiger n dot uit. 507 00:23:08,614 --> 00:23:09,780 En, inderdaad, laat ons probeer om hierdie. 508 00:23:09,780 --> 00:23:14,250 So as ek nou doen, in die eerste laat dit te doen, r m hallo. 509 00:23:14,250 --> 00:23:15,590 Dit is verwyder. 510 00:23:15,590 --> 00:23:18,450 En dit gaan om te verwyder sê gereelde lêer hello, wat 511 00:23:18,450 --> 00:23:22,210 is onnodig arcane, maar dit net middel te doen wat jy wil die lêer verwyder, 512 00:23:22,210 --> 00:23:23,230 en ek tik y vir ja. 513 00:23:23,230 --> 00:23:27,340 En sien, as jy skrams by top gelaat het, het dit verdwyn uit daar. 514 00:23:27,340 --> 00:23:32,180 Laat my nou te doen klang Dash o, en Ek gaan om voort te gaan en te doen hello, 515 00:23:32,180 --> 00:23:34,890 in hoofletters, hello dot c. 516 00:23:34,890 --> 00:23:37,775 Nou, as ek dit doen dot streep hello, wat sou jy verwag? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Miskien is dit die geval sensitief. 519 00:23:42,430 --> 00:23:43,070 Miskien is dit nie. 520 00:23:43,070 --> 00:23:44,030 Kom ons kyk. 521 00:23:44,030 --> 00:23:45,230 Geen lêer of gids. 522 00:23:45,230 --> 00:23:47,438 En ons kan soort van kul deur net te kyk na links bo. 523 00:23:47,438 --> 00:23:49,630 Wat het ek natuurlik Stoor die program as? 524 00:23:49,630 --> 00:23:51,070 Alle pette hallo. 525 00:23:51,070 --> 00:23:53,020 So ja, dit is gaan om 'n verskil te maak. 526 00:23:53,020 --> 00:23:54,540 So nou hello world is terug. 527 00:23:54,540 --> 00:23:56,969 Nou is dit alles goed en wel, en al baie mind-numbing, 528 00:23:56,969 --> 00:23:59,760 om soort van kry vasgeval in hierdie besonderhede nie, maar hulle verstaan 529 00:23:59,760 --> 00:24:00,500 is goed. 530 00:24:00,500 --> 00:24:02,675 >> Tik aan hierdie toenemend lang inkantasies 531 00:24:02,675 --> 00:24:05,980 gaan nie veral nie pret, sodat mense in die wêreld 532 00:24:05,980 --> 00:24:08,260 uitgevind 'n ander program, 'n paar jaar gelede, genoem 533 00:24:08,260 --> 00:24:12,190 maak dat eenvoudig kan jy om te maak tik, 534 00:24:12,190 --> 00:24:14,530 die naam van die program jy wil om te maak, en maak 535 00:24:14,530 --> 00:24:18,580 is slim dat dit sal lyk in die huidige gids, aka gids, 536 00:24:18,580 --> 00:24:21,440 en as jy 'n lêer genoem hallo dot c, 537 00:24:21,440 --> 00:24:25,800 dit is die lêer sal stel vir jou in 'n program genaamd hallo. 538 00:24:25,800 --> 00:24:29,950 So dit is 'n baie makliker manier doen die meer kriptiese opdragte 539 00:24:29,950 --> 00:24:30,800 dat ons vroeër gedoen het. 540 00:24:30,800 --> 00:24:34,080 En ons het 'n pre-ingestel CS50 IDE weet 541 00:24:34,080 --> 00:24:38,560 dat dit bietjie o en 'n aantal moet doen ander vlae, of command line argumente, 542 00:24:38,560 --> 00:24:40,670 dat ons sal sien voor lank. 543 00:24:40,670 --> 00:24:43,700 >> Maar laat ons nou eintlik doen iets meer interessant. 544 00:24:43,700 --> 00:24:46,950 Net tik aan hello world al die tyd is nie al wat dwingende. 545 00:24:46,950 --> 00:24:52,280 So laat my gaan voort en verandering hierdie program en sê hallo David. 546 00:24:52,280 --> 00:24:54,120 Nou gaan ek hier af te gaan. 547 00:24:54,120 --> 00:24:57,360 Ek gaan om voort te gaan en te doen hallo. 548 00:24:57,360 --> 00:25:00,652 En nou weer jy sien maak, is die langer wys jy 549 00:25:00,652 --> 00:25:03,360 volgorde van instruksies wat dit is doen, want ons het 'n pre-ingestel 550 00:25:03,360 --> 00:25:05,200 dit so nie, maar ons moet nie bekommerd wees vir nou 551 00:25:05,200 --> 00:25:10,735 wat dit anders as dit doen samestelling van dot streep hello, hello world. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Wat is verkeerd? 554 00:25:15,510 --> 00:25:16,177 Ja. 555 00:25:16,177 --> 00:25:17,370 >> GEHOOR: [onhoorbaar] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Ja. 557 00:25:18,203 --> 00:25:19,600 So, noobie fout. 558 00:25:19,600 --> 00:25:22,394 Ek sien dit is super subtiele, maar die asterisk hier, in die blad, 559 00:25:22,394 --> 00:25:25,060 beteken net julle het dit nie gered nie, en blaaiers en ander programme 560 00:25:25,060 --> 00:25:25,930 doen dit soms. 561 00:25:25,930 --> 00:25:27,939 So beheer s of opdrag s moet dit red. 562 00:25:27,939 --> 00:25:29,730 Nou kan ek gaan voort en re-run van die program. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Gehercompileerd. 565 00:25:34,260 --> 00:25:36,050 Right, so dit is 'n multi-stap proses. 566 00:25:36,050 --> 00:25:39,400 Nie een van wat is veral kompleks, maar enige tyd verander ons die lêer, 567 00:25:39,400 --> 00:25:43,450 ons nodig het om die gevolglike verandering nulle en ene, en dot streep hallo. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 So dit is baie underwhelming dat ons net gedruk hiervan. 570 00:25:46,450 --> 00:25:48,360 Kom ons maak dinge 'n bietjie meer dinamiese, nou. 571 00:25:48,360 --> 00:25:52,280 >> Wel dit blyk dat graag Nuuts af, C ondersteun veranderlikes. 572 00:25:52,280 --> 00:25:54,790 En dit blyk as jy wil om 'n veranderlike wat winkels het, 573 00:25:54,790 --> 00:25:57,300 nie 'n nommer soos ons tipies gedoen het met Scratch, 574 00:25:57,300 --> 00:26:01,300 maar soos 'n woord of 'n frase, of 'n naam, kan jy 575 00:26:01,300 --> 00:26:04,837 kan 'n veranderlike spesifiseer te wees van die tipe string. 576 00:26:04,837 --> 00:26:06,670 So sal ons meer van sien dit in 'n oomblik, 577 00:26:06,670 --> 00:26:09,090 maar dit blyk dat C en 'n baie tale soos dit 578 00:26:09,090 --> 00:26:11,240 het 'n baie spesifieke tipes veranderlikes. 579 00:26:11,240 --> 00:26:13,810 Dit is nie net soos algebra, waar jy 'n x, 'n y, en z kry 580 00:26:13,810 --> 00:26:16,940 En dit is net altyd getalle, in 'n programmeertaal 581 00:26:16,940 --> 00:26:20,030 jy kan getalle te stoor, kan jy individuele karakters te stoor, 582 00:26:20,030 --> 00:26:24,619 jy kan die hele woorde stoor, kan jy stoor hele beelde, geheel klank lêers, 583 00:26:24,619 --> 00:26:25,160 en dies meer. 584 00:26:25,160 --> 00:26:28,362 So moet ons wat spesifiseer die tipe van ons veranderlike. 585 00:26:28,362 --> 00:26:31,570 En deur konvensie ek gaan bel my veranderlike s net omdat dit bondige, 586 00:26:31,570 --> 00:26:33,510 en s staan ​​vir string. 587 00:26:33,510 --> 00:26:36,400 >> En dan gaan ek slaan binnekant van hierdie veranderlike, 588 00:26:36,400 --> 00:26:39,570 net soos met Scratch toe ek die gebruik van die stel blok, 589 00:26:39,570 --> 00:26:41,950 Ek gaan die gebruik opdrag operateur in C, 590 00:26:41,950 --> 00:26:45,290 wat mooi genoeg is die gelyke teken, maar die gelyk teken doen dit. 591 00:26:45,290 --> 00:26:53,220 Dit beweeg iets van die reg om die linkerkant van die uitdrukking. 592 00:26:53,220 --> 00:26:57,170 So, wat ek gedoen het, duidelik in wees line vyf is Ek het 'n veranderlike verklaar. 593 00:26:57,170 --> 00:27:01,284 Ek het die rekenaar vertel, gee my geheue vir 'n veranderlike, noem dit is, 594 00:27:01,284 --> 00:27:03,950 en vooraf weet dat ek gaan word om 'n string in dit. 595 00:27:03,950 --> 00:27:05,950 En 'n string is net 'n volgorde van die karakters. 596 00:27:05,950 --> 00:27:09,190 Dit is 'n woord of 'n frase, of paragraaf, maar dit is 'n reeks van karakters. 597 00:27:09,190 --> 00:27:10,610 Dit is nie getalle. 598 00:27:10,610 --> 00:27:13,800 Wat string ek gaan wees om in daardie veranderlike? 599 00:27:13,800 --> 00:27:16,185 Wel, blykbaar haal unquote, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Nou let op die patroon wat is opkomende. 601 00:27:17,810 --> 00:27:19,260 Daar is 'n linkerhand uitdrukking. 602 00:27:19,260 --> 00:27:21,810 Daar is 'n regterhand uitdrukking, geskei deur die gelyk teken. 603 00:27:21,810 --> 00:27:24,390 En net 'n raaiskoot, as onbekende nietemin, 604 00:27:24,390 --> 00:27:27,430 met wat die kommapunt doen. 605 00:27:27,430 --> 00:27:28,865 Wat is dit vermoedelik vir ons doen? 606 00:27:28,865 --> 00:27:29,365 Ja? 607 00:27:29,365 --> 00:27:29,840 >> GEHOOR: [onhoorbaar] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Ja. 609 00:27:29,980 --> 00:27:31,170 Dit is net die beëindiging van die lyn. 610 00:27:31,170 --> 00:27:31,669 Reg? 611 00:27:31,669 --> 00:27:34,260 Die rekenaars wil onomwonde wees vertel, letterlik, wat om te doen. 612 00:27:34,260 --> 00:27:36,343 Soos die grondboontjiebotter en jellie toebroodjie byvoorbeeld 613 00:27:36,343 --> 00:27:39,360 as jy nie spesifiseer presies wat jy van plan is, 614 00:27:39,360 --> 00:27:42,190 sou word oorgelaat aan die oordeel of foute. 615 00:27:42,190 --> 00:27:44,890 Die kommapunt beteken, dit is dit vir hierdie opdrag. 616 00:27:44,890 --> 00:27:48,310 Dit is wat super akkurate, en dit is 'n baie maklike ding om af te verlaat. 617 00:27:48,310 --> 00:27:52,240 So nou hierdie program lyk nie word gedra nie anders totdat ek 618 00:27:52,240 --> 00:27:53,500 maak dit meer dinamies. 619 00:27:53,500 --> 00:27:57,107 So eerder as harde kon my eie noem, laat ek 'n tydelike waarde. 620 00:27:57,107 --> 00:28:00,190 En dit blyk dat, en ek weet dit uit die dokumentasie gelees het, 621 00:28:00,190 --> 00:28:04,080 en gebruik die funksie vir die jaar, wat printf is ontwerp dinamiese wees. 622 00:28:04,080 --> 00:28:07,510 Jy hoef nie om vooraf te weet watter woorde jy wil om dit in te sit. 623 00:28:07,510 --> 00:28:11,290 Jy kan plaas 'n plekhouer soos persent s, wat 624 00:28:11,290 --> 00:28:15,500 gaan die vertel rekenaar, sit hier 'n string. 625 00:28:15,500 --> 00:28:17,740 >> Watter string wil ons daar sit? 626 00:28:17,740 --> 00:28:22,430 Will blyk dat tussen hierdie hakies, wat onthou, af te baken 627 00:28:22,430 --> 00:28:28,020 die insette om 'n funksie, as jy ' kommas geskei lys van dinge hier, 628 00:28:28,020 --> 00:28:31,790 ons eintlik in verskeie slaag insette om 'n funksie. 629 00:28:31,790 --> 00:28:33,901 Dus net graag 'n paar Scratch blokke, kan jy nie 630 00:28:33,901 --> 00:28:36,150 gespeel het saam met hulle vir jou projekte nog of glad nie, 631 00:28:36,150 --> 00:28:38,250 sommige Scratch blokke het twee insette. 632 00:28:38,250 --> 00:28:41,220 Twee wit bokse wat jy kan tik nommers of woorde in. 633 00:28:41,220 --> 00:28:45,210 So om nie C het funksies soos printf dat twee insette kan neem. 634 00:28:45,210 --> 00:28:48,050 En weer, hierdie komma skei hulle. 635 00:28:48,050 --> 00:28:51,070 So in Engels, weer, selfs as jy nog nooit voorheen geprogrammeer, 636 00:28:51,070 --> 00:28:55,320 deur daardie logika printf is 'n funksie, neem twee insette, waarvan een 637 00:28:55,320 --> 00:28:58,810 is 'n plekhouer, wat sou jy hoop printf gaan doen met hierdie insette? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Dit gaan om hallo te sê Hannah, hopelik. 640 00:29:03,220 --> 00:29:05,274 So om dit wat ons nodig om dit te red nie. 641 00:29:05,274 --> 00:29:06,190 Ek gaan om te vergroot. 642 00:29:06,190 --> 00:29:10,701 Ek gaan hier terug te gaan en sê hallo te maak betree. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Iets is verkeerd, en eintlik dit is nogal oorweldigend. 645 00:29:14,830 --> 00:29:18,400 Ek het ses reëls van die kode en soos 12 lyne van die foute. 646 00:29:18,400 --> 00:29:22,120 So, kyk uit na hierdie. 647 00:29:22,120 --> 00:29:24,260 So, wat gaan hier aan? 648 00:29:24,260 --> 00:29:27,370 Dus is die beste reël hier, veral wanneer jy begin, 649 00:29:27,370 --> 00:29:29,370 nie afgelei kry deur die dinge aan die onderkant. 650 00:29:29,370 --> 00:29:31,220 Trouens, ek het baie doelbewus net scrolled up 651 00:29:31,220 --> 00:29:33,930 omdat baie dikwels, 'n rekenaar is nie al wat helder van 'n toestel. 652 00:29:33,930 --> 00:29:35,054 Dit gaan deurmekaar raak. 653 00:29:35,054 --> 00:29:37,220 As dit sien een ding wat dit nie verstaan ​​nie, 654 00:29:37,220 --> 00:29:40,030 dit ander kan aansien reëls van die kode as verkeerd, 655 00:29:40,030 --> 00:29:41,649 selfs al is hulle heeltemal fyn. 656 00:29:41,649 --> 00:29:43,940 Sodat jy altyd wil om te werk bo af deur die foute. 657 00:29:43,940 --> 00:29:47,850 En dit is weliswaar super arcane op die oomblik. 658 00:29:47,850 --> 00:29:50,830 >> Fout, die gebruik van onverklaarde identifiseerder string. 659 00:29:50,830 --> 00:29:52,130 Het ek bedoel standaard in? 660 00:29:52,130 --> 00:29:53,720 Nee, ek bedoel string. 661 00:29:53,720 --> 00:29:55,830 En dit is wys om, miskien is dit 'n tikfout. 662 00:29:55,830 --> 00:30:00,570 Soort van soos, speltoets in 'n baie geeky manier, maar die rede hier, 663 00:30:00,570 --> 00:30:02,840 en jy sal weet net deur die praktyk, is 664 00:30:02,840 --> 00:30:06,390 dat dit blyk dat string bestaan ​​nie in C. In werklikheid, C 665 00:30:06,390 --> 00:30:08,820 is 'n besonder ou taal, en dit is 'n baie lae vlak, 666 00:30:08,820 --> 00:30:11,361 en dit nie 'n baie van die funksies dat jy dalk gegroei 667 00:30:11,361 --> 00:30:14,620 met as jy, in werklikheid, geprogrammeer in Java, soos sommige van julle het, 668 00:30:14,620 --> 00:30:16,980 maar jy kan dit te leer nuwe dinge. 669 00:30:16,980 --> 00:30:20,900 En inderdaad, het ons hierdie CS50 gedoen, selfs al teen die einde van die semester, 670 00:30:20,900 --> 00:30:23,512 al hierdie opleiding wiele sal geneem af, 671 00:30:23,512 --> 00:30:25,220 wat ons doen in hierdie eerste paar weke 672 00:30:25,220 --> 00:30:29,830 aanvanklik is ons ook jy sluit CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Wat is 'n kop-lêer. 674 00:30:31,230 --> 00:30:32,440 Meer oor wat in die toekoms. 675 00:30:32,440 --> 00:30:36,430 >> Dit is 'n lêer wat funksies bevat dat ons vir jou geskryf. 676 00:30:36,430 --> 00:30:39,180 En onder dié funksies is funksies vir om insette 677 00:30:39,180 --> 00:30:43,520 van die gebruiker, soos snare, en getalle en reële getalle, en meer. 678 00:30:43,520 --> 00:30:45,550 Maar dit het ook 'n paar kortpaaie. 679 00:30:45,550 --> 00:30:48,200 Dit definieer 'n Boole as 'n tipe data. 680 00:30:48,200 --> 00:30:50,340 C nie waar of vals is. 681 00:30:50,340 --> 00:30:53,880 Maar ons kan dit gee die idee van waar of vals deur middel van hierdie biblioteek. 682 00:30:53,880 --> 00:30:57,670 En dit het ook nie 'n string het gebou in totdat ons sluit hierdie lyn. 683 00:30:57,670 --> 00:31:01,090 So hierdie lyn van die kode vertel die samesteller, hey, klang, kyk 684 00:31:01,090 --> 00:31:03,570 in hierdie lêer vir 'n hele n klomp van die kode wat CS50 685 00:31:03,570 --> 00:31:06,330 geskryf het sodat enigiemand met behulp van hierdie lêer 686 00:31:06,330 --> 00:31:09,330 kan vanselfsprekend die funksies wat hulle het bygevoeg. 687 00:31:09,330 --> 00:31:11,220 >> So nou laat my gaan voort en duidelik die skerm, 688 00:31:11,220 --> 00:31:14,178 en as nuuskierig Ek sê maar net beheer l elke keer om die skerm skoon, 689 00:31:14,178 --> 00:31:15,500 of jy kan duidelik tik. 690 00:31:15,500 --> 00:31:19,220 Ek gaan net nou voort te gaan en tipe maak hello, en alles is goed. 691 00:31:19,220 --> 00:31:22,550 Steeds 'n arcane uitset, maar dit is nie 'n foutiewe boodskap. 692 00:31:22,550 --> 00:31:28,300 Maar as ek doen dot streep hello, en as 'n eenkant, dot streep onbekend aan die meeste. 693 00:31:28,300 --> 00:31:30,430 Dit beteken net, dot middel die huidige gids. 694 00:31:30,430 --> 00:31:33,120 So as jy ooit gebruik DOS, of Linux, Unix of 695 00:31:33,120 --> 00:31:35,410 jy dalk iets gedoen het soos cd dot dot, waar 696 00:31:35,410 --> 00:31:39,220 dot dot beteken gaan terug in tyd, of gaan agteruit, of hoër 697 00:31:39,220 --> 00:31:40,370 in jou gids. 698 00:31:40,370 --> 00:31:43,090 Dot beteken net kyk in die huidige gids. 699 00:31:43,090 --> 00:31:45,670 Ek wil hello, wat is reg hier. 700 00:31:45,670 --> 00:31:47,750 En inderdaad, nou is dit sê hallo Hannah. 701 00:31:47,750 --> 00:31:51,120 En as ek dit weer verander Maria, heropstel 702 00:31:51,120 --> 00:31:55,650 dit sou hello, dot streep te maak hello, die program bly maar verander. 703 00:31:55,650 --> 00:31:58,060 >> Maar dit is nog steeds 'n redelik dom program. 704 00:31:58,060 --> 00:32:00,972 As ek wil hierdie program skip, of gee dit aan 'n vriend, 705 00:32:00,972 --> 00:32:03,430 of gee dit aan Maria of Hannah vir die saak, is dit goed. 706 00:32:03,430 --> 00:32:07,300 Ek kan dit aan te pas vir beide van hulle, maar dit gaan nooit dinamiese wees. 707 00:32:07,300 --> 00:32:10,870 Hulle kan dit nie verander nie nadat dit opgestel af in die nulle en ene. 708 00:32:10,870 --> 00:32:12,350 So wat ons het iets slimmer? 709 00:32:12,350 --> 00:32:17,100 Wat as, in plaas van harde kodering in die program se naam hierdie persoon, 710 00:32:17,100 --> 00:32:20,890 wat as ons net kry die string op aanvraag? 711 00:32:20,890 --> 00:32:22,430 >> So met ander woorde, laat my dit doen. 712 00:32:22,430 --> 00:32:24,030 Ek gaan hierdie program heropstel. 713 00:32:24,030 --> 00:32:25,710 En laat my in zoom aan die onderkant nou. 714 00:32:25,710 --> 00:32:29,920 Maak hallo dot streep hallo. 715 00:32:29,920 --> 00:32:31,710 Nou niks gebeur nie. 716 00:32:31,710 --> 00:32:35,860 Kan ons 'n vinnige vrywilliger Om iets te laat gebeur? 717 00:32:35,860 --> 00:32:36,360 Kom up. 718 00:32:36,360 --> 00:32:37,020 Wat is jou naam? 719 00:32:37,020 --> 00:32:37,445 >> Pancho: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Kom up. 722 00:32:39,609 --> 00:32:42,150 Sodra jy hier opstaan, dit is gaan baie underwhelming te wees, 723 00:32:42,150 --> 00:32:44,060 maar dit is meer interessant as ek tik. 724 00:32:44,060 --> 00:32:49,007 As jy wil om voort te gaan en tik jou naam, het ek hierdie program net vir jou. 725 00:32:49,007 --> 00:32:49,840 Tik net jou naam. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Betree. 728 00:32:53,900 --> 00:32:54,489 Wonderlik. 729 00:32:54,489 --> 00:32:55,780 Alle reg, baie dankie. 730 00:32:55,780 --> 00:32:56,708 >> Pancho: Dankie. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Applous] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Dit was baie vriendelik. 735 00:33:01,840 --> 00:33:03,145 Hier gaan jy. 736 00:33:03,145 --> 00:33:03,770 Wat het ons te doen? 737 00:33:03,770 --> 00:33:05,930 So uiteindelik het ons, ten minste, het hierdie program dinamiese. 738 00:33:05,930 --> 00:33:08,400 Nou is dit nog steeds beslis deur ontwerp underwhelming, 739 00:33:08,400 --> 00:33:11,480 maar ons het uiteindelik het die vermoë nou kode te skryf in advance, veel 740 00:33:11,480 --> 00:33:13,770 soos die skrywers van printf, en dan dinamies 741 00:33:13,770 --> 00:33:17,550 ontwaren gebaseer op die insette wat ons is oorhandig, hetsy deur die programmeerder, 742 00:33:17,550 --> 00:33:20,610 of deur die mens wat eintlik interaksie met die program. 743 00:33:20,610 --> 00:33:22,990 So laat eintlik nou probeer om 'n paar ander konstrukte te doen 744 00:33:22,990 --> 00:33:26,625 en kyk of ons nie die programme kan maak hulself meer gesofistikeerd. 745 00:33:26,625 --> 00:33:29,250 So laat ons gaan voort en in plaas van skryf hierdie een van nuuts af, 746 00:33:29,250 --> 00:33:31,540 Ek gaan in vandag se om te gaan bronkode, en al hierdie dinge 747 00:33:31,540 --> 00:33:34,290 is beskikbaar op die kursus se webwerf, en jy kan sleep en dit 748 00:33:34,290 --> 00:33:36,590 in jou eie omgewing kom Vrydag keer probleem 749 00:33:36,590 --> 00:33:38,506 stel 1 gee jou die instruksies, of jy kan 750 00:33:38,506 --> 00:33:41,200 doen dit op die command line as goed, maar meer om te kom in p stel 1. 751 00:33:41,200 --> 00:33:44,940 >> Kom ons sien wat in hierdie program hier genoem word, adder dot c. 752 00:33:44,940 --> 00:33:47,970 Nou het ek al opgemerk nie, maar wat is nuut? 753 00:33:47,970 --> 00:33:51,230 Met die eerste oogopslag, watter lyn van die kode is absoluut nuut? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Waarskynlik nie fundamenteel onbekende nou. 756 00:33:56,780 --> 00:33:58,417 >> GEHOOR: [onhoorbaar] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Ja, so int x gelyk te kry n. 758 00:34:00,250 --> 00:34:03,760 Ons het nog nooit enige van hierdie gesien voor, maar is waarskynlik int 759 00:34:03,760 --> 00:34:08,179 die simbool vir watter soort veranderlike, [? uit?] 'n heelgetal. 760 00:34:08,179 --> 00:34:09,040 So int vir heelgetal. 761 00:34:09,040 --> 00:34:11,420 Dit is net om meer bondige. x is net arbitrêr. 762 00:34:11,420 --> 00:34:13,920 x en y en z nog mooi redelike getalle, 763 00:34:13,920 --> 00:34:16,790 maar oor die algemeen sal ons woorde een keer gebruik ons programme te kry meer kompleks. 764 00:34:16,790 --> 00:34:18,940 Kry int, natuurlik, baie soos get string, 765 00:34:18,940 --> 00:34:21,629 is waarskynlik gaan om te kry 'n int van die gebruiker, 766 00:34:21,629 --> 00:34:23,670 en dan gaan ons doen dieselfde ding met y. 767 00:34:23,670 --> 00:34:27,610 En blykbaar, selfs al is dit laaste reël, 24, lyk meer kompleks, 768 00:34:27,610 --> 00:34:32,679 dit gaan die som van hierdie sê en dit is die ander ding. 769 00:34:32,679 --> 00:34:35,840 >> En kennis persent i waarskynlik dui wat? 770 00:34:35,840 --> 00:34:38,190 Watter rol persent i blykbaar dien? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 Dis net plekhouers. 773 00:34:41,719 --> 00:34:42,219 Reg? 774 00:34:42,219 --> 00:34:45,149 Persent s was vir string, persent i is vir heelgetal. 775 00:34:45,149 --> 00:34:47,690 Daar gaan persent f wees vir drywende punt waarde, wat 776 00:34:47,690 --> 00:34:49,273 is net 'n nommer met 'n desimale punt. 777 00:34:49,273 --> 00:34:50,590 Met ander woorde, 'n reële getal. 778 00:34:50,590 --> 00:34:55,270 So laat eintlik hierdie stel program real vinnig en maak nie basilisk. 779 00:34:55,270 --> 00:34:57,962 Oeps. 780 00:34:57,962 --> 00:34:58,670 Goeie geleentheid. 781 00:34:58,670 --> 00:35:02,970 So sien hier, al hierdie tyd het my gebruiker naam vir hierdie rekening is jharvard. 782 00:35:02,970 --> 00:35:06,620 Ek is in CS50 IDE, aka IDE50. 783 00:35:06,620 --> 00:35:11,030 En nou in die blou hier, is 'n melding nie, maar uit die omgewing, van waar ek is. 784 00:35:11,030 --> 00:35:16,050 En in die feit, as ek zoom op die top hier, sien dat ek 'n IDE50 785 00:35:16,050 --> 00:35:19,490 en ek sien hierdie woord, as jy soort draai jou kop na die kant, werkspasie. 786 00:35:19,490 --> 00:35:23,890 In 'n neutedop, die feit dat Ek sien tilde slash werkspasie 787 00:35:23,890 --> 00:35:26,910 beteken dat in hierdie teks gebaseer opdrag omgewing, 788 00:35:26,910 --> 00:35:32,300 Ek is in die teks ekwivalent van hierdie grafiese hier gids tot. 789 00:35:32,300 --> 00:35:35,730 So wanneer ek doen dot streep adder, is dit gesê geen reël 790 00:35:35,730 --> 00:35:37,372 teiken adder stop te maak. 791 00:35:37,372 --> 00:35:39,830 Ek weet nie wat dit beteken, maar dit is sleg vir een of ander rede. 792 00:35:39,830 --> 00:35:43,310 Geen lêer of gids is selfs meer duidelik. 793 00:35:43,310 --> 00:35:45,670 Waar is dit dan? 794 00:35:45,670 --> 00:35:47,820 Gebaseer op waar ek gekliek om die lêer oop te maak vroeër. 795 00:35:47,820 --> 00:35:49,442 Waar kan dit wees? 796 00:35:49,442 --> 00:35:52,050 >> Dit is waarskynlik in die bron een w, vir Woensdag, 797 00:35:52,050 --> 00:35:53,960 en ek kan dit sien, inderdaad, as ek oop te maak. 798 00:35:53,960 --> 00:35:57,220 Daar is adder dot c, maar in hierdie teks-gebaseerde omgewing, 799 00:35:57,220 --> 00:35:59,380 Weereens, ek het super eksplisiete wees. 800 00:35:59,380 --> 00:36:03,950 As ek wil dopgehou verander in bron een Woensdag, moet ek tik, 801 00:36:03,950 --> 00:36:07,210 cd bron een spasie Woensdag betree en nou 802 00:36:07,210 --> 00:36:09,810 my vinnige veranderinge aan gee my 'n visuele cue wat 803 00:36:09,810 --> 00:36:12,330 Ek is inderdaad elders in my omgewing, 804 00:36:12,330 --> 00:36:15,710 maar nou kan ek maak nie adder, dit blyk te werk, 805 00:36:15,710 --> 00:36:18,190 dot streep adder, gee my 'n heelgetal. 806 00:36:18,190 --> 00:36:19,080 Een. 807 00:36:19,080 --> 00:36:20,070 Twee. 808 00:36:20,070 --> 00:36:21,630 Die som van een en twee is drie. 809 00:36:21,630 --> 00:36:24,140 Maar as ek nie saamwerk nie, Kom ons kyk wat kry int doen. 810 00:36:24,140 --> 00:36:25,200 Gee my 'n heelgetal. 811 00:36:25,200 --> 00:36:26,590 No. 812 00:36:26,590 --> 00:36:27,350 Weer. 813 00:36:27,350 --> 00:36:29,060 OK. 814 00:36:29,060 --> 00:36:30,520 Boete. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Alle regte. 818 00:36:33,010 --> 00:36:34,055 So dit uiteindelik saam. 819 00:36:34,055 --> 00:36:36,430 En dit is 'n paar van die funksies wat hierdie funksies 820 00:36:36,430 --> 00:36:37,760 kan gebou in vir jou. 821 00:36:37,760 --> 00:36:43,330 >> So in die implementering kry van int, wat ontwikkeling 822 00:36:43,330 --> 00:36:47,990 bou van verlede week is waarskynlik in daar om hierdie gedrag van weer probeer dwing, 823 00:36:47,990 --> 00:36:49,962 weer probeer, weer probeer? 824 00:36:49,962 --> 00:36:51,670 Ja, daar is waarskynlik 'n soort van loop. 825 00:36:51,670 --> 00:36:54,160 Dit gaan 'sintakties te kyk anders blokke Scratch se 826 00:36:54,160 --> 00:36:55,880 maar dit is inderdaad wat binne die lêer. 827 00:36:55,880 --> 00:36:58,505 En in 'n paar weke keer sal ons eintlik kyk na die CS50 biblioteek 828 00:36:58,505 --> 00:37:02,000 as om dit wat binne, maar daar is 'n lus instelling presies dit. 829 00:37:02,000 --> 00:37:04,840 >> Kom ons speel 'n simpel spel hier met hierdie lêer. 830 00:37:04,840 --> 00:37:06,550 Voorwaarde nul dot c. 831 00:37:06,550 --> 00:37:08,960 Ons is net gaan om in die algemeen begin tel op nul. 832 00:37:08,960 --> 00:37:11,220 En ek hou afgelope blaai sommige van die dinge wat op die top. 833 00:37:11,220 --> 00:37:15,390 Blou hier, afgebaken met al van hierdie sterre en die houe, 834 00:37:15,390 --> 00:37:17,310 dié van julle wat die program voor, wat is dit? 835 00:37:17,310 --> 00:37:18,690 Hoekom moet ons hou draai oor dit? 836 00:37:18,690 --> 00:37:19,110 Wat? 837 00:37:19,110 --> 00:37:19,490 >> GEHOOR: Dis 'n kommentaar. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Ja. 839 00:37:19,800 --> 00:37:20,633 Dis net 'n kommentaar. 840 00:37:20,633 --> 00:37:24,160 Dit is 'n kommentaar vir die mens om te lees, wat in ons geval, 841 00:37:24,160 --> 00:37:27,120 vertel ons wat die naam van die lêer is, wat dit geskryf het, en wat dit doen, 842 00:37:27,120 --> 00:37:28,610 sodat jy nie deur te lees die kode 843 00:37:28,610 --> 00:37:30,110 om te weet wat hierdie lêer is alles oor. 844 00:37:30,110 --> 00:37:33,110 Dit is net 'n beskrywing, maar funksioneel is dit irrelevant. 845 00:37:33,110 --> 00:37:35,930 En ek kan selfs verwyder dit van my lêer en dit het geen impak. 846 00:37:35,930 --> 00:37:38,740 Die sappige lyne is hierdie eerste twee hier, nou. 847 00:37:38,740 --> 00:37:41,405 int main leemte is die ekwivalent van ons wanneer groen vlag gekliek, 848 00:37:41,405 --> 00:37:44,030 so ons gaan laat dit wees vir vandag, en ons sal terug te kom, 849 00:37:44,030 --> 00:37:46,940 uiteindelik, soos wat int en leeg is nie, maar nou, 850 00:37:46,940 --> 00:37:49,500 sien wat ek gedoen het ook hier, jy kan ook, 851 00:37:49,500 --> 00:37:51,736 as jy 'n lyn in kommentaar, indien jy 852 00:37:51,736 --> 00:37:54,670 'n gedagte wat jy wil deel oor 'n spesifieke reël van die kode, 853 00:37:54,670 --> 00:37:58,910 konvensie in C is om te doen slash streep, en dan 'n paar bondige woorde, 854 00:37:58,910 --> 00:38:01,500 nie 'n volsin, oor die algemeen nie 'n paragraaf, 855 00:38:01,500 --> 00:38:05,310 wat net verduidelik aan jou, of jou TF of ander lesers of kollegas, 856 00:38:05,310 --> 00:38:06,990 wat jou kode doen. 857 00:38:06,990 --> 00:38:10,150 So eerder as om te kyk aan hierdie en aflei lyne 858 00:38:10,150 --> 00:38:12,550 nege en 10, wat is om dit te doen, in lyn agt 859 00:38:12,550 --> 00:38:14,945 Ek gee net 'n kommentaar aan vra die gebruiker vir 'n heelgetal is, 860 00:38:14,945 --> 00:38:17,820 dan sal ek nie te hard dink oor wat lyne nege en 10 is. 861 00:38:17,820 --> 00:38:19,720 Ek weet net dat dit is wat gesamentlik hulle doen. 862 00:38:19,720 --> 00:38:20,460 >> Hoe? 863 00:38:20,460 --> 00:38:22,060 Wel, hier is die vinnige. 864 00:38:22,060 --> 00:38:23,610 Hier is die kry van die int. 865 00:38:23,610 --> 00:38:25,984 En gebaseer op die vorige gedrag, dit lyk soos get int 866 00:38:25,984 --> 00:38:29,080 is slim genoeg om seker te maak dat die menslike saam en gee dit 867 00:38:29,080 --> 00:38:30,090 'n heelgetal. 868 00:38:30,090 --> 00:38:32,270 Maar nou sien ons dit. 869 00:38:32,270 --> 00:38:33,740 En dit is wat herinner aan Scratch. 870 00:38:33,740 --> 00:38:36,140 Ek beweer dat ek ontleding insette van die gebruiker 871 00:38:36,140 --> 00:38:39,050 maar ietwat verkeerd. 872 00:38:39,050 --> 00:38:43,200 En dit glo in C is hoe ons spreek 'n as anders, 'n tak, 873 00:38:43,200 --> 00:38:46,320 'n vurk in die pad, maar ek sê ietwat verkeerd. 874 00:38:46,320 --> 00:38:50,470 Wat is die fout in die program? 875 00:38:50,470 --> 00:38:51,610 Oor verder terug? 876 00:38:51,610 --> 00:38:52,223 Ja. 877 00:38:52,223 --> 00:38:53,150 >> GEHOOR: [onhoorbaar] nul. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Ja. 879 00:38:54,025 --> 00:38:57,630 So as ek tik in nul, laat ons kyk presies daardie geval, of hoek geval, 880 00:38:57,630 --> 00:38:58,450 as jy wil. 881 00:38:58,450 --> 00:39:02,790 So as ek tik in nul, wat van die blokke gaan blykbaar gryp dit? 882 00:39:02,790 --> 00:39:04,660 Die as of anders? 883 00:39:04,660 --> 00:39:07,340 Die anders, en dit gaan om te sê, jy 'n negatiewe getal opgetel. 884 00:39:07,340 --> 00:39:10,476 En inderdaad, nul is nie veronderstel positief of negatief te wees, 885 00:39:10,476 --> 00:39:11,850 en so sou dit verkeerdelik wees. 886 00:39:11,850 --> 00:39:12,930 Dit sou 'n fout wees. 887 00:39:12,930 --> 00:39:14,580 So hoe kan ons dit regmaak? 888 00:39:14,580 --> 00:39:16,360 Iemand wat nog nooit geprogrammeer? 889 00:39:16,360 --> 00:39:16,570 Het jy want-- 890 00:39:16,570 --> 00:39:17,480 >> GEHOOR: [onhoorbaar] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: terugtrek? 892 00:39:17,990 --> 00:39:18,570 >> GEHOOR: [onhoorbaar] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: O, jy het? 894 00:39:18,930 --> 00:39:20,350 Iemand wat nog nooit geprogrammeer. 895 00:39:20,350 --> 00:39:21,750 Wil om te probeer om jou hand op Dit, in die rooi hemp? 896 00:39:21,750 --> 00:39:22,600 Kom up. 897 00:39:22,600 --> 00:39:25,320 O ja, kom op, as jy nie omgee nie. 898 00:39:25,320 --> 00:39:27,586 So nooit gesien geprogrammeer voor, wat is jou naam? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, alles reg. 901 00:39:29,626 --> 00:39:31,150 So los hierdie fout vir ons. 902 00:39:31,150 --> 00:39:35,070 Jy het nie gesien C, vermoedelik, en waarskynlik geen ander taal. 903 00:39:35,070 --> 00:39:38,380 So los hierdie program vir ons. 904 00:39:38,380 --> 00:39:39,100 Nice om ya ontmoet. 905 00:39:39,100 --> 00:39:39,615 Geen druk. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Ja. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. MALAN: Maar weereens, as dit waagstuk volgens plan verloop, 909 00:39:46,270 --> 00:39:48,350 die afhaal hier wees, net weer te begin 910 00:39:48,350 --> 00:39:51,080 om patrone raaksien en aflei uit bestaande sintaksis 911 00:39:51,080 --> 00:39:55,420 hoe anders kan jy dalk te druk jouself, geen woordspeling bedoel, ten einde 912 00:39:55,420 --> 00:39:58,410 om 'n paar ekstra scenario te vang. 913 00:39:58,410 --> 00:39:59,603 So ons sê anders as. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, goed. 916 00:40:05,230 --> 00:40:09,120 En op met CS50 IDE, en frankly-- IDE 917 00:40:09,120 --> 00:40:11,110 staan ​​vir Geïntegreerde Development Environment. 918 00:40:11,110 --> 00:40:14,110 Dit is net 'n fancy manier om te sê 'n program wat jy program help. 919 00:40:14,110 --> 00:40:16,779 Dit doen use dinge soos wanneer jy een hakies tik, 920 00:40:16,779 --> 00:40:18,320 dit gee jou outomaties die ander. 921 00:40:18,320 --> 00:40:20,760 Die vermoede is dat jy uiteindelik gaan wil tik dat 922 00:40:20,760 --> 00:40:22,400 en dit beteken dit ook met aanhalings. 923 00:40:22,400 --> 00:40:24,190 >> So ek wil lyn 23. 924 00:40:24,190 --> 00:40:26,400 99% van die manier waarop daar. 925 00:40:26,400 --> 00:40:29,920 Iemand wil in slaan met 'n wenk? 926 00:40:29,920 --> 00:40:31,420 Ek het gehoor kommapunt uit die gehoor. 927 00:40:31,420 --> 00:40:32,080 Goed. 928 00:40:32,080 --> 00:40:33,260 Sodat daardie voltooi. 929 00:40:33,260 --> 00:40:37,930 En nou, ek het net 'n bietjie ontsteltenis met 'n lyn 21. 930 00:40:37,930 --> 00:40:41,370 Hoe wil ons dit uit te druk? 931 00:40:41,370 --> 00:40:43,370 Watter vraag wil ons vra, dink jy? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 So voorheen het ons gevra die vraag as n groter as nul is, doen dit. 934 00:40:50,330 --> 00:40:51,870 Anders, doen dit. 935 00:40:51,870 --> 00:40:54,317 So moet ons 'n keuse vraag hier te vra. 936 00:40:54,317 --> 00:40:55,192 GEHOOR: [onhoorbaar] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Goed. 938 00:40:56,530 --> 00:40:58,290 So as N gelyk aan nul. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Uitstekend. 941 00:41:02,100 --> 00:41:03,080 So laat breek hier. 942 00:41:03,080 --> 00:41:04,850 Baie dankie vir hierdie trotseer. 943 00:41:04,850 --> 00:41:10,890 Kom ek gee jou 'n bietjie welverdiende stres bal, miskien is daar. 944 00:41:10,890 --> 00:41:11,900 So ons is amper daar. 945 00:41:11,900 --> 00:41:14,790 In werklikheid, Lauren, as jy dit nie doen nie gedagte, laat my een aanpas hier 946 00:41:14,790 --> 00:41:17,850 net om konsekwent te wees, selfs met wat ons gesien het in Scratch, wat 947 00:41:17,850 --> 00:41:21,080 doen wat ek wil doen met lyne 21 en 24, net weer gebaseer 948 00:41:21,080 --> 00:41:23,290 oor hoe ons dit gedoen het in Scratch, miskien? 949 00:41:23,290 --> 00:41:24,230 >> GEHOOR: Beweeg dit op. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Ja, beweeg dit op. 951 00:41:25,605 --> 00:41:30,260 So het die anders toestand, die derde, of vierde of vyfde, of finale tak 952 00:41:30,260 --> 00:41:34,100 moet werklik kom daarna, en dit is net deur konvensie, 953 00:41:34,100 --> 00:41:36,047 net omdat as jy wil. 954 00:41:36,047 --> 00:41:37,380 So ek het nie nodig om hierdie tweak te maak. 955 00:41:37,380 --> 00:41:39,660 En ek moet my sit krullerige brace terug hier. 956 00:41:39,660 --> 00:41:42,700 En nou, is hierdie program sal saamstel. 957 00:41:42,700 --> 00:41:46,140 Ons is so naby, maar daar is 'n baie, baie subtiel fout. 958 00:41:46,140 --> 00:41:47,200 Kom ons kyk wat gebeur. 959 00:41:47,200 --> 00:41:49,660 >> Eerstens, laat my gaan voort en zoom uit. 960 00:41:49,660 --> 00:41:53,405 Ek gaan om voort te gaan en tik maak toestand nul. 961 00:41:53,405 --> 00:41:55,070 O, ek het gelieg. 962 00:41:55,070 --> 00:41:58,760 Nou is die samesteller is eintlik redelik slim. 963 00:41:58,760 --> 00:42:00,950 En ek het nie regtig verstaan dit is fout boodskap. 964 00:42:00,950 --> 00:42:04,310 Die gebruik van die gevolg van 'n opdrag as 'n voorwaarde sonder hakies, 965 00:42:04,310 --> 00:42:05,740 is blykbaar sleg. 966 00:42:05,740 --> 00:42:07,100 Maar wat beteken dit? 967 00:42:07,100 --> 00:42:10,860 >> Weer goed, op soek na patrone in kode wat ons reeds gesien het, 968 00:42:10,860 --> 00:42:16,640 Wat is lyn 17 eintlik, selfs al Lauren bedoel effens 969 00:42:16,640 --> 00:42:18,790 anders? 970 00:42:18,790 --> 00:42:19,290 Ja. 971 00:42:19,290 --> 00:42:21,565 >> GEHOOR: [onhoorbaar] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Ja. 973 00:42:22,440 --> 00:42:26,610 So onthou die gelyk teken, blykbaar soos ons dit het gebruik is nie gelyk. 974 00:42:26,610 --> 00:42:29,240 Sy opdrag, van regs na links. 975 00:42:29,240 --> 00:42:33,810 So reël 17 op die oomblik is 'n toestand, en dit is 976 00:42:33,810 --> 00:42:37,890 uitvoering kode binne-in die hakies, maar wanneer daardie kode voer, 977 00:42:37,890 --> 00:42:42,140 wat gebeur met die waarde van nul? 978 00:42:42,140 --> 00:42:45,250 Wat gebeur met die waarde van n? 979 00:42:45,250 --> 00:42:46,810 Om nul. 980 00:42:46,810 --> 00:42:50,520 So as N steeds zero, en weer, soos per verlede week, 981 00:42:50,520 --> 00:42:54,690 ons in die algemeen sê dat zero is vals en 'n waar is, 982 00:42:54,690 --> 00:42:57,410 of ja is een en geen is nul. 983 00:42:57,410 --> 00:42:59,590 So waar en vals, een en 0. 984 00:42:59,590 --> 00:43:06,090 As n as van die lyn 17 was gegewe die waarde 0, is nul waar? 985 00:43:06,090 --> 00:43:06,590 No. 986 00:43:06,590 --> 00:43:08,280 Per definisie zero is onwaar. 987 00:43:08,280 --> 00:43:10,860 Dit is die konvensie ons gaan klou aan om vorentoe te beweeg. 988 00:43:10,860 --> 00:43:17,320 So sal lyne 18, 19, 20 en nou ooit toepassing, logies? 989 00:43:17,320 --> 00:43:18,320 Hulle kan nie. 990 00:43:18,320 --> 00:43:21,640 So die vraag gevra ons maar nie heeltemal presies, 991 00:43:21,640 --> 00:43:25,620 en jy sal nie weet nie, tensy jy dit gesien, die oplossing in C 992 00:43:25,620 --> 00:43:29,610 is wanneer jy wil uit te druk gelykheid, sê jy gelykes gelyk. 993 00:43:29,610 --> 00:43:33,140 So gelyk teken is reeds opgebruik deur opdrag, van regs na links. 994 00:43:33,140 --> 00:43:35,110 Gelyk gelyk middel gelyk. 995 00:43:35,110 --> 00:43:37,950 En as jy regtig wil jou gedagtes word gebuig, in JavaScript en PHP, 996 00:43:37,950 --> 00:43:40,490 daar is gelyk gelyk gelykes, wat beteken iets heeltemal anders, 997 00:43:40,490 --> 00:43:41,990 maar ons sal kry om dit kort voor lank. 998 00:43:41,990 --> 00:43:45,760 >> So, dit is 'n eenvoudige oplossing nie, maar besef super maklik om hierdie fout maak, 999 00:43:45,760 --> 00:43:48,700 en dan wonder en stryd vir minute, indien nie 'n uur, 1000 00:43:48,700 --> 00:43:51,490 Hoekom is my kode nie uitvoering as ek van plan is? 1001 00:43:51,490 --> 00:43:54,140 Dit is omdat jy nie vertel dit presies wat jy bedoel. 1002 00:43:54,140 --> 00:43:56,450 Sodat amper volmaak nie, en dit was groot 1003 00:43:56,450 --> 00:44:00,760 dat ons struikel oor hierdie twee klein dinge, want nou as ons hulle op te los, 1004 00:44:00,760 --> 00:44:06,240 en ek maak toestand nul dot streep toestand nul, 1005 00:44:06,240 --> 00:44:07,490 Ek wil graag 'n heelgetal asseblief. 1006 00:44:07,490 --> 00:44:08,090 Kom ons kyk. 1007 00:44:08,090 --> 00:44:09,160 No. 1008 00:44:09,160 --> 00:44:10,740 Dit gaan my dwing om dit te doen. 1009 00:44:10,740 --> 00:44:11,990 So 42. 1010 00:44:11,990 --> 00:44:13,590 Ek pluk 'n positiewe getal. 1011 00:44:13,590 --> 00:44:16,470 So nou hoe kan ek bewys hierdie program korrek? 1012 00:44:16,470 --> 00:44:19,990 As jy 'n wiskundige, kan jy nie dit werklik te bewys deur trial and error, 1013 00:44:19,990 --> 00:44:20,490 reg? 1014 00:44:20,490 --> 00:44:23,180 Jy kan nie net 'n bewys deur Byvoorbeeld, maar ten minste 1015 00:44:23,180 --> 00:44:25,494 as 'n programmeerder ons is nie gaan probeer om te bewys vir nou 1016 00:44:25,494 --> 00:44:27,660 dat dit eintlik korrek, maar ek moet waarskynlik 1017 00:44:27,660 --> 00:44:29,470 toets paar verteenwoordigende gevalle. 1018 00:44:29,470 --> 00:44:31,070 >> Ek het getoets 42. 1019 00:44:31,070 --> 00:44:33,030 Ek kon toets 43. 1020 00:44:33,030 --> 00:44:34,910 Ek kon toets 44. 1021 00:44:34,910 --> 00:44:35,640 Toets 45. 1022 00:44:35,640 --> 00:44:36,140 Reg? 1023 00:44:36,140 --> 00:44:37,860 Maar ek kan dit 'n baie lang tyd te doen. 1024 00:44:37,860 --> 00:44:39,925 Wat sou 'n paar meer wees interessante gevalle te probeer? 1025 00:44:39,925 --> 00:44:41,050 GEHOOR: [onhoorbaar] nul. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: So nul. 1027 00:44:41,740 --> 00:44:42,297 Beslis. 1028 00:44:42,297 --> 00:44:44,880 En 'n goeie, ons het dit hierdie keer, danksy nuwe kode Lauren se. 1029 00:44:44,880 --> 00:44:46,213 Wat is 'n goeie saak te probeer? 1030 00:44:46,213 --> 00:44:47,320 GEHOOR: Negatief een. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: Negatief een en Miskien iets 'n bietjie groter, 1032 00:44:50,070 --> 00:44:52,617 so miskien negatiewe 42, maar in die algemeen, wanneer 1033 00:44:52,617 --> 00:44:54,450 toets jou programme vorentoe beweeg, is jy 1034 00:44:54,450 --> 00:44:56,325 gaan wil om te dink om jouself, soos wat 1035 00:44:56,325 --> 00:44:58,050 is die fundamentele verskillende gevalle. 1036 00:44:58,050 --> 00:45:01,720 En durf ek sê 'n negatiewe geval, 'n positiewe geval, en 'n nul geval 1037 00:45:01,720 --> 00:45:03,365 pretty much rondes dit uit. 1038 00:45:03,365 --> 00:45:04,990 Kom ons kyk na 'n variant van hierdie al. 1039 00:45:04,990 --> 00:45:06,930 Voorwaardes een. 1040 00:45:06,930 --> 00:45:11,224 Dit is 'n korrekte oplossing hier, sodat jy sal sien twee en aanlyn, 1041 00:45:11,224 --> 00:45:13,390 as jy deur die loop ipv, sal oor die algemeen 1042 00:45:13,390 --> 00:45:18,090 inkrementeer hierdie stapsgewyse totdat ons kry presies die regte benadering. 1043 00:45:18,090 --> 00:45:20,070 Wat gebeur as ons wou vra twee vrae op een slag? 1044 00:45:20,070 --> 00:45:22,200 >> Laat my dit oop te maak in plaas. 1045 00:45:22,200 --> 00:45:26,740 Nie-skakelaar, vir die redes ons sal 'n ander tyd te sien. 1046 00:45:26,740 --> 00:45:29,610 Wat is nuut sintakties hier? 1047 00:45:29,610 --> 00:45:32,760 Ek is tans 'n spel waar die rekenaar vertel 1048 00:45:32,760 --> 00:45:35,550 my, gee my 'n heelgetal tussen een en 10, 1049 00:45:35,550 --> 00:45:37,180 en dan is ek oordeel insette van die gebruiker. 1050 00:45:37,180 --> 00:45:39,180 In Engels, gebaseer op die kode wat jy hier sien 1051 00:45:39,180 --> 00:45:41,530 in blou, wat hierdie program doen? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 GEHOOR: [onhoorbaar] opgetel 'n groot of klein aantal. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Ja. 1055 00:45:46,484 --> 00:45:49,450 Dit is net beoordeel of Ek pluk 'n groot, of medium, 1056 00:45:49,450 --> 00:45:53,900 of klein aantal gebaseer op 'n baie arbitrêre definisie van klein, medium, 1057 00:45:53,900 --> 00:45:58,510 en hier groot, maar kennis die sintaksis wat nuut is hierdie. 1058 00:45:58,510 --> 00:46:02,340 Daar is nie minder nie as int of gelyk aan teken, of groter as of gelyk aan teken, 1059 00:46:02,340 --> 00:46:05,430 waar 'n mens is bo die ander, dat jy kan uitdruk in soos Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 So in 'n programmeringstaal wat jy tipies net nie twee karakters, 1061 00:46:08,180 --> 00:46:09,450 een na die ander. 1062 00:46:09,450 --> 00:46:12,695 En wat beteken dit waarskynlik verteenwoordig, ampersand ampersand. 1063 00:46:12,695 --> 00:46:13,570 GEHOOR: [onhoorbaar] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Ja. 1065 00:46:13,680 --> 00:46:16,910 Dit beteken net en omdat dit blyk dat die skrywers van C 1066 00:46:16,910 --> 00:46:19,120 gebruik om 'n enkele ampersand, wat jy dink 1067 00:46:19,120 --> 00:46:22,430 ideaal vir die idee sou wees van en word reeds gebruik word, 1068 00:46:22,430 --> 00:46:27,300 so ampersand ampersand eintlik vang die geval het ons eintlik wil hê. 1069 00:46:27,300 --> 00:46:30,610 >> So laat nou struikel oor twee dinge. 1070 00:46:30,610 --> 00:46:32,640 Laat my gaan voort en maak een. 1071 00:46:32,640 --> 00:46:36,590 Iets wat 'n bietjie kommerwekkend. 1072 00:46:36,590 --> 00:46:37,970 Onakkuraatheid dot c. 1073 00:46:37,970 --> 00:46:40,260 Laat my twee dinge hier bekend te stel. 1074 00:46:40,260 --> 00:46:44,720 Een, kennis dat ons kan doen wiskunde, as net so voor wanneer 1075 00:46:44,720 --> 00:46:47,797 ons het plus van twee getalle, x en y. 1076 00:46:47,797 --> 00:46:49,380 Wat is hierdie program blykbaar doen? 1077 00:46:49,380 --> 00:46:52,140 Ek het dit nog nie gedraai, en ek het persent f ingestel, 1078 00:46:52,140 --> 00:46:55,720 maar ek het gou vroeër gesê persent f beteken swaai punt 1079 00:46:55,720 --> 00:46:56,970 waarde, wat reële getal. 1080 00:46:56,970 --> 00:46:59,520 Iets met 'n desimale punt, wat nie 'n heelgetal. 1081 00:46:59,520 --> 00:47:02,270 Wat dink jy van hierdie program is probeer om my te wys op die skerm? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Ja? 1084 00:47:06,050 --> 00:47:07,550 GEHOOR: Die resultaat van een oor 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Ja. 1086 00:47:07,780 --> 00:47:09,680 Wat is die gevolg van 'n gedeel deur 10. 1087 00:47:09,680 --> 00:47:12,721 Reg, want almal van julle het waarskynlik grootgeword met die wete dat die een oor die 10 1088 00:47:12,721 --> 00:47:14,502 is wat? 1089 00:47:14,502 --> 00:47:16,220 Ja, dit is net 1/10 of 0,1. 1090 00:47:16,220 --> 00:47:16,720 Reg? 1091 00:47:16,720 --> 00:47:19,010 So laat ons sien wat dit werklik is. 1092 00:47:19,010 --> 00:47:21,010 So laat my gaan voort en behalwe hierdie. 1093 00:47:21,010 --> 00:47:21,970 Laat my af hier gaan. 1094 00:47:21,970 --> 00:47:26,360 Maak onakkuraatheid dot streep onakkuraatheid, en kennis, ook 1095 00:47:26,360 --> 00:47:29,380 in 'n Linux-omgewing, het jy nie moet tik onakkuraatheid en neem 1096 00:47:29,380 --> 00:47:30,010 die hele dag lank. 1097 00:47:30,010 --> 00:47:32,910 Algemeen, as jy Tab getref is, is dit sal jou denke klaar vir jou, 1098 00:47:32,910 --> 00:47:36,660 gebaseer op die woorde wat beskikbaar in die huidige gids. 1099 00:47:36,660 --> 00:47:37,160 OK. 1100 00:47:37,160 --> 00:47:37,970 So jy was reg. 1101 00:47:37,970 --> 00:47:41,239 Een gedeel deur 10 is, in werklikheid, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Maar ek is 'n bietjie nuuskierig. 1103 00:47:42,280 --> 00:47:44,196 En dit blyk printf ondersteun sommige kenmerke 1104 00:47:44,196 --> 00:47:48,700 waardeur jy meer as kan spesifiseer die standaard aantal desimale punte. 1105 00:47:48,700 --> 00:47:52,140 So as ek wil 10 desimale sien punte wat ek kan doen persent, 1106 00:47:52,140 --> 00:47:55,510 vir die plekhouer simbool, dot 10 vir, gee my 10 desimale punte, 1107 00:47:55,510 --> 00:47:58,140 en dan nog swaai punt waarde, en as 'n eenkant, 1108 00:47:58,140 --> 00:48:01,550 wat is hierdie backslash N blykbaar hou ons die gebruik van? 1109 00:48:01,550 --> 00:48:03,450 Dit blyk dit is 'n simbool vir 'n nuwe reël. 1110 00:48:03,450 --> 00:48:05,970 Dit is die baie duidelike manier sê aan die rekenaar, 1111 00:48:05,970 --> 00:48:08,759 beweeg die muis na die volgende lyn nadat jy klaar is. 1112 00:48:08,759 --> 00:48:10,800 En ons sal sien wat gebeur wanneer ons dit nie doen nie. 1113 00:48:10,800 --> 00:48:12,430 >> Laat my heropstel maak onakkuraatheid. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Dot nou streep onakkuraatheid. 1116 00:48:18,356 --> 00:48:18,930 OK. 1117 00:48:18,930 --> 00:48:19,780 Nog reg is. 1118 00:48:19,780 --> 00:48:21,512 Een gedeel deur 10. 1119 00:48:21,512 --> 00:48:23,220 Nou Ek kry 'n bietjie nuuskierig, al is. 1120 00:48:23,220 --> 00:48:27,599 Wat as ek kyk 20 desimale uitwys, heropstel, tik, 1121 00:48:27,599 --> 00:48:29,390 en as 'n eenkant vir spoed, kan jy ook gebruik 1122 00:48:29,390 --> 00:48:31,800 jou op en af ​​pyltjies om blaai deur jou geskiedenis, 1123 00:48:31,800 --> 00:48:35,476 so jy hoef nie te hou tik hierdie opdragte, te betree. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Ek het nie besef dat in graad skool. 1126 00:48:39,220 --> 00:48:43,260 Alle reg, so laat my sien soos 29 plekke uit. 1127 00:48:43,260 --> 00:48:44,300 Miskien is dit net 'n gelukskoot. 1128 00:48:44,300 --> 00:48:46,907 Miskien is my rekenaar optree vreemd. 1129 00:48:46,907 --> 00:48:47,990 Dit is nie 'n ding, reg? 1130 00:48:47,990 --> 00:48:50,300 Dit is om iets te doen deterministisch. 1131 00:48:50,300 --> 00:48:53,410 So maak onakkuraatheid. 1132 00:48:53,410 --> 00:48:54,890 OK, dit is deurmekaar. 1133 00:48:54,890 --> 00:48:57,620 So, wat gaan aan? 1134 00:48:57,620 --> 00:49:00,160 >> So glo jou onderwyser gelê 1135 00:49:00,160 --> 00:49:03,900 aan julle almal van hierdie tyd vir redes wat ons sal sien voor lank. 1136 00:49:03,900 --> 00:49:05,569 Maar laat ons eindig met 'n ander program. 1137 00:49:05,569 --> 00:49:07,860 Dit is 'n bietjie programme iemand het 'n paar jaar gelede, 1138 00:49:07,860 --> 00:49:08,990 en dit is eintlik deel van 'n wedstryd. 1139 00:49:08,990 --> 00:49:11,198 Niemand eintlik skryf kode soos hierdie, en as jy dit doen, 1140 00:49:11,198 --> 00:49:12,880 dit is stilisties 'n probleem. 1141 00:49:12,880 --> 00:49:14,660 Maar mense doen dit vir bragging rights. 1142 00:49:14,660 --> 00:49:17,260 Om te skryf die mees verwarrende soek program wat 1143 00:49:17,260 --> 00:49:19,110 nietemin iets interessant. 1144 00:49:19,110 --> 00:49:23,930 En die nota het ek gedink ons ​​wil laat op vandag voor Colton speel ons hier, 1145 00:49:23,930 --> 00:49:27,840 is om hierdie program te hardloop, wat, selfs in net die gebruik van 1146 00:49:27,840 --> 00:49:31,450 C in hierdie teks-gebaseerde omgewing, gee ons hierdie. 1147 00:49:31,450 --> 00:49:32,264 Dammit. 1148 00:49:32,264 --> 00:49:34,930 >> [Gelag] 1149 00:49:34,930 --> 00:49:36,800 >> Staan. 1150 00:49:36,800 --> 00:49:39,340 [Onhoorbaar] c Dash l m. 1151 00:49:39,340 --> 00:49:42,885 Jy gaan die magiese sien inkantasie wat ons sal sien voor lank. 1152 00:49:42,885 --> 00:49:45,780 [Onhoorbaar] Alle regte. 1153 00:49:45,780 --> 00:49:51,592 En nou kan jy selfs dinge soos hierdie te doen nie. 1154 00:49:51,592 --> 00:49:52,340 Dit is dit. 1155 00:49:52,340 --> 00:49:56,410 Vir CS50 ons, sal jy sien op Vrydag. 1156 00:49:56,410 --> 00:49:58,910 >> [Speel van musiek] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Applous] 1159 00:52:41,440 --> 00:52:42,812