1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [VIDEO PLAYBACK] 3 00:00:16,626 --> 00:00:19,410 >> -En Triumf matematisk og mekaniske evner 4 00:00:19,410 --> 00:00:23,270 er dette store nye automatiske lommeregner på Harvard University. 5 00:00:23,270 --> 00:00:27,140 Indviklede problemer i matematik sat gennem maskinen i kodet form 6 00:00:27,140 --> 00:00:31,710 på bånd nøjagtigt løst på en brøkdel af den tid, 7 00:00:31,710 --> 00:00:32,819 for human beregning. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Designet til at fremskynde alle former for matematiske og videnskabelige forskning, 10 00:00:48,220 --> 00:00:53,840 den gigantiske mekaniske hjerne vil arbejde for den amerikanske flåde, indtil krigens slutning. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [END AFSPIL] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. MALAN: Dette er CS50. 14 00:01:08,590 --> 00:01:10,590 Fortiden var en magisk sted, men hvis du nogensinde har 15 00:01:10,590 --> 00:01:13,366 spekulerede på, hvad enheden er i Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 det er faktisk en del af Harvard Mark I, og det er 17 00:01:16,150 --> 00:01:18,710 udstillet der nu i de sidste mange år. 18 00:01:18,710 --> 00:01:20,590 Og hvad du vil se indlejret i problemet sæt 19 00:01:20,590 --> 00:01:24,416 en er et kig bag kulisserne på, hvad den pågældende enhed gjorde, og gør, 20 00:01:24,416 --> 00:01:27,540 fra professor Harry Lewis, som er i datalogi afdelingen her. 21 00:01:27,540 --> 00:01:29,440 Så mere om det i bare en smule. 22 00:01:29,440 --> 00:01:33,990 >> Men i dag begynder vi at overgangen fra sidste uge til denne, 23 00:01:33,990 --> 00:01:37,290 og vi vil bringe omtale af et foto her 24 00:01:37,290 --> 00:01:38,630 det er faktisk ret berømt. 25 00:01:38,630 --> 00:01:42,270 Er der nogen vide, hvad dette her er på skærmen? 26 00:01:42,270 --> 00:01:43,880 I hvert fald ifølge myten. 27 00:01:43,880 --> 00:01:44,837 Ja. 28 00:01:44,837 --> 00:01:45,920 PUBLIKUM: Den første virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: Så det var angiveligt den allerførste egentlige fejl i en computer. 30 00:01:49,570 --> 00:01:52,490 Nu i virkeligheden ordet bug, for en fejl i et program, 31 00:01:52,490 --> 00:01:55,250 har været hos os for nogle tid i den fysiske verden, 32 00:01:55,250 --> 00:01:58,190 og dette var en af ​​de første dokumenterede tider, hvor en person faktisk 33 00:01:58,190 --> 00:02:02,280 plukkede en stor møl ud af Mark II computer, sætte det i bindemidlet, 34 00:02:02,280 --> 00:02:05,006 og derefter indspillet det som den første kendte bug 35 00:02:05,006 --> 00:02:06,630 at faktisk er blevet fundet fysisk. 36 00:02:06,630 --> 00:02:10,104 Så derfor blev indtastet at i dagens lore. 37 00:02:10,104 --> 00:02:12,020 Alt fra sidste uge er tilgængelig online. 38 00:02:12,020 --> 00:02:14,840 Især ressourcer, som du måske ikke nødvendigvis meddelelsen, herunder 39 00:02:14,840 --> 00:02:15,881 hvis kommer her personligt. 40 00:02:15,881 --> 00:02:20,230 Så en af ​​de pædagogiske stipendiater hver år gør en kanonisk sæt af noter, 41 00:02:20,230 --> 00:02:22,010 så du ikke behøver at holde dit hoved ned, forsøger 42 00:02:22,010 --> 00:02:24,410 at transskribere de fleste noget der kunne ske her i klassen. 43 00:02:24,410 --> 00:02:25,940 Så indse, at de såkaldte [? Scribd?] Noter 44 00:02:25,940 --> 00:02:29,350 er online, sikkert dias og kildekode, som vi bruger i klassen. 45 00:02:29,350 --> 00:02:31,436 Vi gør fuldtekst udskrifter tilgængelige samt. 46 00:02:31,436 --> 00:02:34,310 Så hvis du husker svagt nogle sigt, og ønsker at slå det op lidt 47 00:02:34,310 --> 00:02:37,280 lettere, indse, at alle af det er søgbare online. 48 00:02:37,280 --> 00:02:38,930 Samt walkthroughs så godt. 49 00:02:38,930 --> 00:02:42,710 Begynder faktisk i dag vi til at se på et lavere niveau programmeringssprog, 50 00:02:42,710 --> 00:02:45,290 snart at være kendt til os som C, og det er meget nemt 51 00:02:45,290 --> 00:02:48,820 at slags fare vild efter blot et par øjeblikke tid, og derefter slags undren 52 00:02:48,820 --> 00:02:52,370 hvordan vi kom faktisk til nogle mere komplekst eksempel fra den enkleste. 53 00:02:52,370 --> 00:02:54,975 Og så indser vi får kirsebær plukke under klassen nogle 54 00:02:54,975 --> 00:02:57,850 De repræsentative eksempler, men indse, at så meget mere er også 55 00:02:57,850 --> 00:03:01,140 tilgængelige online, så du kan arbejde gennem det i dit eget tempo, 56 00:03:01,140 --> 00:03:02,950 men du er mest komfortable. 57 00:03:02,950 --> 00:03:05,200 >> Men vi slap med programmer, der netop dette. 58 00:03:05,200 --> 00:03:09,690 Så jeg klikker på den grønne flag, og hvad betyder dette program gøre? 59 00:03:09,690 --> 00:03:10,710 Siger, hallo, verden. 60 00:03:10,710 --> 00:03:13,180 Det gør katten siger hej i sin lille verden 61 00:03:13,180 --> 00:03:15,990 på den øverste venstre side af Scratch brugergrænseflade. 62 00:03:15,990 --> 00:03:18,810 Men vi begyndte at indføre nogle terminologi i sidste uge. 63 00:03:18,810 --> 00:03:23,614 Og så, ting som dette vi kaldte hvad? 64 00:03:23,614 --> 00:03:25,280 Hvad kunne være den generiske betegnelse for dette? 65 00:03:25,280 --> 00:03:26,266 Ja. 66 00:03:26,266 --> 00:03:28,210 En metode eller en erklæring. 67 00:03:28,210 --> 00:03:29,280 Sikker på, det er en handling. 68 00:03:29,280 --> 00:03:30,140 Gør dette. 69 00:03:30,140 --> 00:03:32,400 Og alligevel var der andre former til bunden, 70 00:03:32,400 --> 00:03:35,360 Ud over disse såkaldte erklæring, de var også 71 00:03:35,360 --> 00:03:38,221 ting som dette, som vi kaldte hvad? 72 00:03:38,221 --> 00:03:38,720 Ja. 73 00:03:38,720 --> 00:03:39,634 Så en løkke. 74 00:03:39,634 --> 00:03:42,050 Og i dette tilfælde, denne ting gentagelser, naturligvis, 10 gange. 75 00:03:42,050 --> 00:03:43,040 Der er et evigt blok. 76 00:03:43,040 --> 00:03:44,164 Der er et par andre. 77 00:03:44,164 --> 00:03:48,309 Og i dag vil vi se, hvordan du omsætte dette til en mere moderne verden, 78 00:03:48,309 --> 00:03:50,850 hvis du vil, selv om det er vil blive vist ved første øjekast 79 00:03:50,850 --> 00:03:52,024 at være meget mere Arcane. 80 00:03:52,024 --> 00:03:53,190 Men dem var faktisk sløjfer. 81 00:03:53,190 --> 00:03:56,182 Og så har vi ting som dette, som havde denne form, 82 00:03:56,182 --> 00:03:57,515 og væsentlige spørgsmål. 83 00:03:57,515 --> 00:03:58,890 Og vi henvist til disse som hvad? 84 00:03:58,890 --> 00:03:59,762 >> PUBLIKUM: boolsk udtryk. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Ja. 86 00:04:00,320 --> 00:04:01,340 Boolsk udtryk. 87 00:04:01,340 --> 00:04:04,502 Noget, som er enten sandt eller falsk, ja eller nej, en eller nul, 88 00:04:04,502 --> 00:04:05,960 men du ønsker at se i verden. 89 00:04:05,960 --> 00:04:08,335 Men vi kaldte dem boolesk udtryk, og vi sætte dem 90 00:04:08,335 --> 00:04:09,900 i forhold, eller filialer. 91 00:04:09,900 --> 00:04:12,170 Og i en verden af Scratch, alt pænt 92 00:04:12,170 --> 00:04:15,460 interlocks i form af sin form, hvis det giver logisk mening at gøre det, 93 00:04:15,460 --> 00:04:18,490 men du behøver ikke at stoppe ved bare gøre én ting betinget, 94 00:04:18,490 --> 00:04:20,450 du kan have en legendarisk gaffel i vejen 95 00:04:20,450 --> 00:04:24,040 og gøre hverken dette eller hint, hvis betingelsen er sand eller ej. 96 00:04:24,040 --> 00:04:26,040 Og så, som du kan se, hvis du ikke allerede har, 97 00:04:26,040 --> 00:04:27,480 du kan endda reden disse blokke. 98 00:04:27,480 --> 00:04:32,110 Så Scratch vokser til at fylde de figurer at du måske ønsker at indsætte i det, 99 00:04:32,110 --> 00:04:35,330 så du kan faktisk udtrykke de fleste nogen logik, som du måske ønsker at gøre. 100 00:04:35,330 --> 00:04:38,220 >> Nu et par ord af annoncering både her og New Haven. 101 00:04:38,220 --> 00:04:39,370 Så sektionering begynder i dag. 102 00:04:39,370 --> 00:04:42,120 Webadressen for dette er på kursets hjemmeside, for dem ukendte. 103 00:04:42,120 --> 00:04:43,970 Sektioner vil være en mulighed for at komme sammen 104 00:04:43,970 --> 00:04:46,553 i en langt mere intimt miljø end [? Sanders?] Tillader, 105 00:04:46,553 --> 00:04:50,347 med 10 til 20 klassekammerater med en undervisning stipendiat ved forskellige spor, 106 00:04:50,347 --> 00:04:51,930 og forskellige hastigheder, hvis du ønsker det. 107 00:04:51,930 --> 00:04:54,080 Faktisk Kurset tilbyder forskellige sektioner 108 00:04:54,080 --> 00:04:57,340 for de mindre behagelig, mere komfortable, og et sted i mellem, 109 00:04:57,340 --> 00:04:59,860 og den rolle, tommelfinger her, er der er ingen formel definition, 110 00:04:59,860 --> 00:05:04,600 men hvis du er mindre behagelig, du slags kender det. 111 00:05:04,600 --> 00:05:07,470 Du er lidt frygtløs om idé om at træde fod, måske tilbage 112 00:05:07,470 --> 00:05:10,130 i klasseværelset, eller viser op til en mellem afsnit. 113 00:05:10,130 --> 00:05:12,770 Hvis du har været programmering, siden du var seks år, mere komfortabel, 114 00:05:12,770 --> 00:05:13,400 måske til dig. 115 00:05:13,400 --> 00:05:16,150 Og hvis det er sådan en toss-up, det er præcis, hvad det i mellem 116 00:05:16,150 --> 00:05:17,190 menes at være. 117 00:05:17,190 --> 00:05:18,410 >> Nu, i mellemtiden, for en klasse denne størrelse, 118 00:05:18,410 --> 00:05:21,326 det tager os temmelig lang tid at sektion alle, så vi har såkaldte, 119 00:05:21,326 --> 00:05:24,030 super sektioner, kommer op denne weekend og begyndelsen af ​​næste uge, 120 00:05:24,030 --> 00:05:26,570 så tag et kig på kursets hjemmeside for dem, der er naturligvis bred, 121 00:05:26,570 --> 00:05:28,610 og også filmet for dem der ikke kan gøre dem. 122 00:05:28,610 --> 00:05:33,470 Og §§ selv vil begynde i uge tre af CS50 nul indeks. 123 00:05:33,470 --> 00:05:35,880 Problem sæt 0 er allerede på kursets hjemmeside. 124 00:05:35,880 --> 00:05:40,010 Og indse, at du har ni sene dage denne semester. 125 00:05:40,010 --> 00:05:43,240 Så dette er en opgradering fra sidste år, da vi havde fem sene dage. 126 00:05:43,240 --> 00:05:46,210 >> Så hvis du spekulerer, Vi har ni problem sæt. 127 00:05:46,210 --> 00:05:53,200 Du har ni sene dage, der hver især Du kan kun bruge én pr uge på. 128 00:05:53,200 --> 00:05:56,089 Der effektivt gør alle problemet sætter skyldes fredag 129 00:05:56,089 --> 00:05:58,630 men målet er at sætte en lille bit af psykisk pres 130 00:05:58,630 --> 00:06:01,100 på dig at forsøge at få ting i torsdag 131 00:06:01,100 --> 00:06:03,960 fordi som du snart vil opdage, for bedre eller værre, de fleste 132 00:06:03,960 --> 00:06:07,820 alt i software-verdenen ender tager meget længere tid end du forventer. 133 00:06:07,820 --> 00:06:10,620 Så overveje det en slags af mulighed for at hjælpe 134 00:06:10,620 --> 00:06:13,880 selv at målrette torsdag men trøste, at ja, 135 00:06:13,880 --> 00:06:14,950 alt skyldes fredag. 136 00:06:14,950 --> 00:06:17,590 Og hvis du sender dem på Torsdag, det er vidunderligt. 137 00:06:17,590 --> 00:06:21,020 Der er ingen bonuspoint eller ekstra kredit for at opfylde denne frist. 138 00:06:21,020 --> 00:06:23,250 Det har betydet, at kun en krykke. 139 00:06:23,250 --> 00:06:25,810 >> Og kontortid, både her og i New Haven, 140 00:06:25,810 --> 00:06:28,840 personligt, hvis du gerne vil mødes med nogen af ​​vores kurser 141 00:06:28,840 --> 00:06:31,060 undervisning stipendiater og CA om bistand. 142 00:06:31,060 --> 00:06:31,640 >> Okay. 143 00:06:31,640 --> 00:06:33,110 Så nu, lad os gøre det mere virkeligt. 144 00:06:33,110 --> 00:06:35,470 Og et øjeblik det kommer til at starte at få lidt mere mystiske, men meget 145 00:06:35,470 --> 00:06:37,310 hurtigt på fredag ​​og næste uge vil vi være 146 00:06:37,310 --> 00:06:41,230 stand til at gøre så meget mere end vi kunne hidtil i Scratch. 147 00:06:41,230 --> 00:06:44,350 Så vi introducerede kode sidste uge, omend pictoral. 148 00:06:44,350 --> 00:06:45,620 Det var puslespilsbrikker. 149 00:06:45,620 --> 00:06:48,800 Og vi formaliseret, at det er noget, der hedder kildekode, 150 00:06:48,800 --> 00:06:50,330 men ville kunne se ud? 151 00:06:50,330 --> 00:06:52,550 Tja, det kiggede lidt noget som dette. 152 00:06:52,550 --> 00:06:55,410 Og i virkeligheden blot at slags drille, hvor vi kan gå med dette. 153 00:06:55,410 --> 00:06:57,800 Jeg har tænkt mig at gå videre og åbner et vindue her, 154 00:06:57,800 --> 00:06:59,810 og jeg bare at vælge Ny fil. 155 00:06:59,810 --> 00:07:03,200 Og jeg har tænkt mig at gemme denne fil som noget lignende hej dot c. 156 00:07:03,200 --> 00:07:05,700 Mere om det valg af ord i bare et øjeblik. 157 00:07:05,700 --> 00:07:08,630 Og det er sådan nogen måske gå om at skrive et program. 158 00:07:08,630 --> 00:07:13,990 Medtag standard I / O-dot t, int main ugyldig, og derefter åbne krøllet tandbøjle tæt 159 00:07:13,990 --> 00:07:19,430 krøllet tandbøjle, printf hej komma verden, backslash n, semikolon, Gem, gjort. 160 00:07:19,430 --> 00:07:19,930 OK. 161 00:07:19,930 --> 00:07:21,670 Jeg har skrevet min første program, men det går 162 00:07:21,670 --> 00:07:23,878 at være utrolig underwhelmed fordi når jeg faktisk 163 00:07:23,878 --> 00:07:27,352 køre dette program, naturligvis, ved først at skrive gør hej, 164 00:07:27,352 --> 00:07:30,310 og derefter dot skråstreg hej, og vi vil gå gennem denne meget mere detaljeret 165 00:07:30,310 --> 00:07:31,730 i et øjeblik, det er alt den gør. 166 00:07:31,730 --> 00:07:33,270 Ikke pop åbne nogen vinduer. 167 00:07:33,270 --> 00:07:35,070 Det gør ikke noget særligt fancy. 168 00:07:35,070 --> 00:07:38,830 Alt det gør, er, hvad jeg fortalte det til gør, men hvordan får vi til det? 169 00:07:38,830 --> 00:07:40,560 Og hvordan kan vi bygge videre på det? 170 00:07:40,560 --> 00:07:43,430 Nå, lad os introducere et par forskellige koncepter her. 171 00:07:43,430 --> 00:07:47,170 >> Så en, vi er ved at starte ved hjælp af et program kaldet en compiler. 172 00:07:47,170 --> 00:07:51,470 En compiler eksisterer for Mac OS, Windows, Linux, helst antal operativsystemer, 173 00:07:51,470 --> 00:07:54,540 og vi vil snart præsentere dig for miljø, som vi vil bruge, 174 00:07:54,540 --> 00:07:57,410 men en compiler er blot en generel betegnelse for et stykke software 175 00:07:57,410 --> 00:08:01,940 der tager kildekode og producerer objektkode fra det. 176 00:08:01,940 --> 00:08:03,940 Med andre ord, hvis du have som input din kilde 177 00:08:03,940 --> 00:08:08,250 kode, noget i retning af hvad jeg lige har skrevet, det i sidste ende producerer objektkode. 178 00:08:08,250 --> 00:08:11,780 Og objekt kode er egentlig bare en fancy måde at sige det output 179 00:08:11,780 --> 00:08:12,926 nul-og ens. 180 00:08:12,926 --> 00:08:14,800 Med andre ord, kilde kode, selvom det er 181 00:08:14,800 --> 00:08:17,240 kommer til at se lidt mystisk, og lidt mindre venligt 182 00:08:17,240 --> 00:08:19,590 end Scratch ved første øjekast, Det er i det mindste noget 183 00:08:19,590 --> 00:08:21,120 at vi mennesker kan forstå. 184 00:08:21,120 --> 00:08:24,360 Den slags ser ud og lyder som Engelsk, selvom det er meget kortfattet. 185 00:08:24,360 --> 00:08:28,040 Programmeringen i nul-og ens, som vores forgængere havde at gøre, 186 00:08:28,040 --> 00:08:30,920 for nogle år siden, var ikke en særligt sjov udfordring. 187 00:08:30,920 --> 00:08:33,710 Og dog, det er, hvad det computeren stadig forstår. 188 00:08:33,710 --> 00:08:37,010 Så compiler får os fra Kildekoden til at gøre indsigelse kode. 189 00:08:37,010 --> 00:08:39,860 Det er som at åbne en fil med compiler, og når du gemmer det, 190 00:08:39,860 --> 00:08:41,419 du får disse nuller og ettaller. 191 00:08:41,419 --> 00:08:43,419 Så vi vil se, hvordan du gør at på bare et øjeblik. 192 00:08:43,419 --> 00:08:47,400 >> Men lad os nu forsøge at give en bro mellem sidste uge, og det, 193 00:08:47,400 --> 00:08:50,660 så selv når vi bliver hængt op på ting som krøllede parenteser, 194 00:08:50,660 --> 00:08:54,100 og semikoloner og parenteser og alle disse intellektuelt interessant 195 00:08:54,100 --> 00:08:57,620 aspekter af programmering, der meget forståeligt tur folk op tidligt, 196 00:08:57,620 --> 00:09:00,930 indse, at alle de ideer i dag, er de samme som sidst. 197 00:09:00,930 --> 00:09:03,975 Så sidste, vi så dette eksempel her, Hello World program. 198 00:09:03,975 --> 00:09:07,500 Nå, starter i dag, hvis vi ønsker at gennemføre denne samme program, 199 00:09:07,500 --> 00:09:10,800 det kommer til at se en lidt noget som dette. 200 00:09:10,800 --> 00:09:14,040 Og vi vil forklare inden længe hvad int, og vigtigste, og ugyldig, og alt dette 201 00:09:14,040 --> 00:09:18,770 er, men i det mindste jeg kan se her allerede den velkendte Hello World. 202 00:09:18,770 --> 00:09:20,860 >> I mellemtiden ting som funktion, siger hej, 203 00:09:20,860 --> 00:09:23,570 er ganske enkelt vil være en meget simpel erklæring som denne. 204 00:09:23,570 --> 00:09:26,930 Printf hello verden, med nogle citerer, med en omvendt skråstreg, 205 00:09:26,930 --> 00:09:29,780 med et semikolon, men mere på, at komme. 206 00:09:29,780 --> 00:09:34,066 Loops, i mellemtiden, det er en løkke, der, selvfølgelig, siger hej verden for evigt, 207 00:09:34,066 --> 00:09:36,690 og denne ene kommer til at se en lidt mærkelig end i den sidste, 208 00:09:36,690 --> 00:09:39,530 men hvis jeg siger noget lignende, mens sandt, I 209 00:09:39,530 --> 00:09:44,050 kan derefter udskrive Hej Verden igen og igen og igen og igen. 210 00:09:44,050 --> 00:09:46,660 Og så, som du kan slags af begynde at udlede her, 211 00:09:46,660 --> 00:09:49,070 denne konvention for at bruge krøllede parenteser er venlig 212 00:09:49,070 --> 00:09:52,050 ligesom omfavne den indrykket linje kode der. 213 00:09:52,050 --> 00:09:55,840 Den printf linje kode meget gerne den gule brik op over. 214 00:09:55,840 --> 00:09:58,740 Så vi kommer ikke til at sige for evigt, vi kommer til at sige, mens sand, 215 00:09:58,740 --> 00:10:01,020 men vi vil se, hvorfor der er i bare en smule. 216 00:10:01,020 --> 00:10:04,210 >> I mellemtiden, hvis vi har en løkke som denne, hvor du gentager noget et endeligt 217 00:10:04,210 --> 00:10:07,730 antal gange, denne ene også er det kommer til at tage lidt tilvænning 218 00:10:07,730 --> 00:10:12,820 til, men det kommer til at sige til int Jeg får nul, jeg mindre end 10, jeg ++, 219 00:10:12,820 --> 00:10:14,056 og derefter printf igen. 220 00:10:14,056 --> 00:10:15,430 Men der vil være mønstre. 221 00:10:15,430 --> 00:10:18,434 Og for dem af jer kender med AP Computer Science, eller Java, 222 00:10:18,434 --> 00:10:21,100 eller en række andre sprog, næsten alle disse konstruktioner 223 00:10:21,100 --> 00:10:23,820 hidtil skal se det meste bekendt. 224 00:10:23,820 --> 00:10:24,680 >> Så variabel. 225 00:10:24,680 --> 00:10:29,270 Så her er en simpel Scratch uddrag, der sætter en variabel kaldet til nul, 226 00:10:29,270 --> 00:10:33,150 og derefter for evigt siger tælleren, og derefter det ændrer tælleren med én. 227 00:10:33,150 --> 00:10:37,030 Så det starter med nul, og derefter en, to, tre. 228 00:10:37,030 --> 00:10:42,560 Nå, hvordan kan vi præsentere det i denne nye sprog lidt tilsvarende? 229 00:10:42,560 --> 00:10:45,460 Int counter lig nul, mens sandt, hvilket 230 00:10:45,460 --> 00:10:48,100 er, at samme idé fra før gøre noget evigt, 231 00:10:48,100 --> 00:10:49,530 og jeg bare at printf. 232 00:10:49,530 --> 00:10:53,310 Og nu er det at få lidt mærkeligt, procent i, men mere om det at komme, 233 00:10:53,310 --> 00:10:55,140 men disse ideer er nøjagtig det samme. 234 00:10:55,140 --> 00:10:58,820 Vi har lige nu nødt til at overholde syntaksen, at computeren er 235 00:10:58,820 --> 00:11:00,010 kommer til at kræve af os. 236 00:11:00,010 --> 00:11:04,620 >> Boolesk udtryk, noget lignende sx mindre end y eller x mindre end y, 237 00:11:04,620 --> 00:11:06,354 og y er mindre end z. 238 00:11:06,354 --> 00:11:09,270 Det kommer til at se lidt noget som dette, med parenteser bare 239 00:11:09,270 --> 00:11:13,020 ligesom i matematik for god foranstaltning til bare sikre, at rækkefølgen af ​​operationer 240 00:11:13,020 --> 00:11:14,750 er så vi agter. 241 00:11:14,750 --> 00:11:15,600 Og nu, betingelser. 242 00:11:15,600 --> 00:11:21,220 Så hvis x er mindre end y, siger x er mindre end y, ellers hvis x er større end y, 243 00:11:21,220 --> 00:11:26,020 siger x er større end y, ellers logisk, skal x være lig med y. 244 00:11:26,020 --> 00:11:28,710 Så du kan implementere noget som dette i Scratch, 245 00:11:28,710 --> 00:11:31,230 eller du kan implementere den i denne syntaks. 246 00:11:31,230 --> 00:11:35,090 Og igen, de krøllede parenteser er lidt giver os den samme form som puslespillet 247 00:11:35,090 --> 00:11:40,750 stykker, men syntaksen nu, er måske begynder at følge nogle mønstre. 248 00:11:40,750 --> 00:11:42,910 >> Så hvad betyder dette giver os her? 249 00:11:42,910 --> 00:11:45,260 Så vi er tilbage derefter på vores hovedprogrammet. 250 00:11:45,260 --> 00:11:47,930 Lad os faktisk, nu, gøre noget med det. 251 00:11:47,930 --> 00:11:50,660 Så i denne allerførste line vi ser skarpe omfatter, 252 00:11:50,660 --> 00:11:53,160 standard I / O, dot h, og derefter nogle underlige vinkel 253 00:11:53,160 --> 00:11:57,330 parentes under dette. int main ugyldig, og derefter printf hej verden. 254 00:11:57,330 --> 00:11:58,200 Så bare tage et skridt. 255 00:11:58,200 --> 00:12:02,440 Nogen der har aldrig programmeret før, i det mindste forklare en af ​​disse linjer. 256 00:12:02,440 --> 00:12:04,490 Brug af måske nogle af jargon af sidste uge. 257 00:12:04,490 --> 00:12:06,942 Hvad er printf, for eksempel? 258 00:12:06,942 --> 00:12:07,442 Ja. 259 00:12:07,442 --> 00:12:08,410 >> PUBLIKUM: [uhørligt] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Ja. 261 00:12:08,610 --> 00:12:11,380 Det er en funktion, eller en erklæring, fra sidste uges terminologi. 262 00:12:11,380 --> 00:12:13,470 Og det er en handling der gør noget. 263 00:12:13,470 --> 00:12:15,855 Nu er denne funktion, eller denne erklæring, gør 264 00:12:15,855 --> 00:12:17,550 det ser ud til at tage nogen form for input? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 Og i hvilken forstand gør det synes at tage input, hvis ja? 267 00:12:24,380 --> 00:12:26,180 Input, hvad mener jeg med det? 268 00:12:26,180 --> 00:12:26,720 Ja. 269 00:12:26,720 --> 00:12:27,595 >> PUBLIKUM: [uhørligt] 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 Så Skrab ud et par puslespilsbrikker hvor du kan parametrize det. 273 00:12:34,890 --> 00:12:37,980 Du kan fortælle gentagelse blokere, hvor mange gange til at gentage, 274 00:12:37,980 --> 00:12:40,320 så det var et input af slags, og ligesom Scratch 275 00:12:40,320 --> 00:12:43,060 havde en lille hvid pladsholder for det nummer, du vil skrive i, 276 00:12:43,060 --> 00:12:45,810 så bruger vi i dette tekst verdens parenteser 277 00:12:45,810 --> 00:12:49,910 at give os, at cirkulær form ind, som vi kan sætte vores input. 278 00:12:49,910 --> 00:12:53,180 Efter alt, snesevis af år siden når dette sprog, kaldet C, 279 00:12:53,180 --> 00:12:55,950 blev opfundet ingen forudset det er en af ​​os, 280 00:12:55,950 --> 00:12:59,420 disse nogle år senere, vi havde ønsker en funktion, der siger hej. 281 00:12:59,420 --> 00:12:59,920 Højre? 282 00:12:59,920 --> 00:13:02,880 Det ville være rart, hvis der var en brik eller et nøgleord, 283 00:13:02,880 --> 00:13:05,502 der hedder hej, at bogstaveligt talt bare siger hej. 284 00:13:05,502 --> 00:13:06,460 Men vi har ikke brug for det. 285 00:13:06,460 --> 00:13:09,320 Vi kan have noget meget lavere plan, som et generisk print 286 00:13:09,320 --> 00:13:12,760 kommando, der tager input, og udskriver hvad vi ønsker. 287 00:13:12,760 --> 00:13:14,960 Så opdager nu mønstret der vil begynde at dukke op. 288 00:13:14,960 --> 00:13:19,310 Åbne paren tæt paren er tilsyneladende omfatter input, 289 00:13:19,310 --> 00:13:21,770 og så ser jeg dobbelt citater i begge ender. 290 00:13:21,770 --> 00:13:25,110 Der er stadig underligt backslash n, men forhåbentlig nu er du 291 00:13:25,110 --> 00:13:29,900 kan begynde at visualisere det mindste at printf tager i en eller anden form for input. 292 00:13:29,900 --> 00:13:31,850 Ikke så brugervenligt som Skrab, men det er bare 293 00:13:31,850 --> 00:13:34,920 ligesom at have sluttet en vis værdi der. 294 00:13:34,920 --> 00:13:38,306 >> Okay, lad os nu faktisk gøre noget med dette. 295 00:13:38,306 --> 00:13:40,930 Så nogle af jer måske kender fra der gik klassen før, 296 00:13:40,930 --> 00:13:42,638 chattede med venner, at i mange år 297 00:13:42,638 --> 00:13:44,590 vi brugte noget, der hedder det CS50 apparatet. 298 00:13:44,590 --> 00:13:49,160 Dette var en term, der beskriver en teknologi kaldes den virtuelle maskine, som 299 00:13:49,160 --> 00:13:51,870 er et stykke software, som din forgængere ville hente fra 300 00:13:51,870 --> 00:13:53,360 kursets hjemmeside gratis. 301 00:13:53,360 --> 00:13:56,550 De vil også hente en gratis stykke software kaldet en hypervisor, 302 00:13:56,550 --> 00:14:00,590 noget, der hedder ligesom VMware, eller VirtualBox, eller en række 303 00:14:00,590 --> 00:14:04,450 af andre værktøjer, og på deres Mac eller pc eller hvad computer de havde sidste år 304 00:14:04,450 --> 00:14:06,620 og i de forløbne år, de ville dobbeltklikke på et ikon 305 00:14:06,620 --> 00:14:08,860 til at køre denne software kaldet hypervisor. 306 00:14:08,860 --> 00:14:12,220 Og derefter inde i programmet de ville åbne CS50 apparatet. 307 00:14:12,220 --> 00:14:14,710 Og virkningen var, at om en forgænger af jeres 308 00:14:14,710 --> 00:14:17,780 kørte Mac OS eller Vinduer, han eller hun derefter 309 00:14:17,780 --> 00:14:22,910 havde efterfølgende et nyt vindue på deres Skærmen kører CS50 miljø. 310 00:14:22,910 --> 00:14:27,370 Så en virtuel maskine kan du køre en operativsystem inde i en anden, 311 00:14:27,370 --> 00:14:28,785 og det er præcis, hvad vi gjorde. 312 00:14:28,785 --> 00:14:31,410 Gennem det meste af kurset, vi bruge et operativsystem kaldet 313 00:14:31,410 --> 00:14:34,070 Linux, specielt Ubuntu Linux, og dette 314 00:14:34,070 --> 00:14:37,590 er en meget flot måde i de forløbne år af at sikre, at alle i løbet 315 00:14:37,590 --> 00:14:38,840 lige haft det samme miljø. 316 00:14:38,840 --> 00:14:41,339 Og du kan bruge nogen form for computer, som du rent faktisk ønsker. 317 00:14:41,339 --> 00:14:43,930 Blandt de ulemper, selv om, var det var ligesom to gigabyte 318 00:14:43,930 --> 00:14:45,480 at downloade denne ting. 319 00:14:45,480 --> 00:14:50,310 Det gjorde ikke nødvendigvis arbejde super godt på mennesker, hvis computere, der måske kun 320 00:14:50,310 --> 00:14:54,570 havde en koncert eller så RAM, eller ikke for mange gigahertz af CPU-hastighed, 321 00:14:54,570 --> 00:14:56,750 og så i år, for denne og andre grunde, 322 00:14:56,750 --> 00:14:59,140 har vi været overgang til dette miljø. 323 00:14:59,140 --> 00:15:03,730 Den såkaldte CS50 IDE, som er baseret på open source-software, 324 00:15:03,730 --> 00:15:07,380 og en understøttet platform at et firma kaldet Cloud9 325 00:15:07,380 --> 00:15:11,110 støtter i Europa, at tillader os at have væsentlige 326 00:15:11,110 --> 00:15:15,770 at nøjagtig samme miljø som i forløbne år, men i den såkaldte sky. 327 00:15:15,770 --> 00:15:17,532 >> Så hvad er skyen? 328 00:15:17,532 --> 00:15:20,480 Du har sikkert klikket dens ikon på din Mac eller pc. 329 00:15:20,480 --> 00:15:22,210 Hvad er skyen? 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 Lidt højere. 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 Det er bare en flok computere andetsteds, der lagrer data og køre 336 00:15:33,770 --> 00:15:34,880 software og lignende. 337 00:15:34,880 --> 00:15:39,390 Så det er egentlig bare til ordet de jure beskrive [? udlejes?] 338 00:15:39,390 --> 00:15:40,930 computere, der lever andre steder. 339 00:15:40,930 --> 00:15:42,810 At du, dig selv, ikke nødvendigvis ejer. 340 00:15:42,810 --> 00:15:45,256 Så når dine data, eller din programmer, er i skyen, 341 00:15:45,256 --> 00:15:47,630 det betyder bare, det er på nogen andens computere andre steder, 342 00:15:47,630 --> 00:15:50,510 og ikke, sandsynligvis på fysisk bærbar eller stationær. 343 00:15:50,510 --> 00:15:52,990 Og så det er hvad CS50 IDE nu er. 344 00:15:52,990 --> 00:15:55,670 >> Fremover vil du gå til en bestemt URL, der vil introducere dig 345 00:15:55,670 --> 00:16:00,090 til, i problemer sæt 1, senere på uge, der vil så, når du logger på, 346 00:16:00,090 --> 00:16:01,480 give dig dette miljø. 347 00:16:01,480 --> 00:16:03,896 Og ligesom Scratch havde en par forskellige paneler, der er involveret, 348 00:16:03,896 --> 00:16:06,030 så gør CS50 s IDE har præcis det. 349 00:16:06,030 --> 00:16:09,480 I øverste venstre side her, er du kommer til at se et velkendt fil browser. 350 00:16:09,480 --> 00:16:11,930 Så nogen af ​​de filer, du lagt i dette miljø 351 00:16:11,930 --> 00:16:13,346 er lige til at blive opført der. 352 00:16:13,346 --> 00:16:14,350 Filer og mapper. 353 00:16:14,350 --> 00:16:16,790 På toppen lige her, du kommer til at se et sted 354 00:16:16,790 --> 00:16:18,420 hvor du kan faktisk skrive din kode. 355 00:16:18,420 --> 00:16:21,860 Først i C, senere i sigt i PHP og JavaScript, 356 00:16:21,860 --> 00:16:24,739 og måske til endelig projekter, Ruby eller Java eller Python 357 00:16:24,739 --> 00:16:27,280 eller en række sprog er understøttet i dette miljø. 358 00:16:27,280 --> 00:16:30,130 Det er ikke på alle bundet at CS50 specifikt. 359 00:16:30,130 --> 00:16:33,390 >> Og derefter i det nederste hjørne her, især for dem mere komfortable, 360 00:16:33,390 --> 00:16:35,590 du har noget kaldes et terminalvindue. 361 00:16:35,590 --> 00:16:38,770 Og denne terminal vindue tillader dig til at udføre enhver kommando, som du 362 00:16:38,770 --> 00:16:40,860 ønsker i denne sky miljø. 363 00:16:40,860 --> 00:16:42,860 Det giver dig mulighed for at installere ekstra software 364 00:16:42,860 --> 00:16:46,810 som du ønsker, fordi du har såkaldte root, eller administratorrettigheder. 365 00:16:46,810 --> 00:16:49,930 Så med andre ord, selv om det i sidste ende hostet i skyen, 366 00:16:49,930 --> 00:16:52,400 og selv om vi har forenklet det til en vis grad 367 00:16:52,400 --> 00:16:57,110 som standard, bogstaveligt indføre, takket være Dan Armendariz, og Dino, 368 00:16:57,110 --> 00:17:01,070 og Dan Bradley på CS50 hold over forbi mange måneder, en mindre behagelig 369 00:17:01,070 --> 00:17:05,140 tilstand, der skjuler en masse af de oprindeligt forvirrende distraktioner. 370 00:17:05,140 --> 00:17:10,119 Alt, hvad der eksisterer for at repræsenterer et typisk computersystem 371 00:17:10,119 --> 00:17:12,319 at du kan bruge i den virkelige verden. 372 00:17:12,319 --> 00:17:15,640 >> Så hvad betyder alt dette, og hvad kan vi egentlig gøre med det? 373 00:17:15,640 --> 00:17:19,124 Lad os faktisk tage et kig på et program. 374 00:17:19,124 --> 00:17:21,290 Så jeg har tænkt mig at åbne op for faktiske miljø her, 375 00:17:21,290 --> 00:17:23,894 som er lige vores Chrome browser, som kunne være Firefox, 376 00:17:23,894 --> 00:17:26,640 kunne være Internet Explorer, eller en anden browser samt. 377 00:17:26,640 --> 00:17:28,400 Det er fuldt screenet her for øjeblikket. 378 00:17:28,400 --> 00:17:31,580 Og jeg vil faktisk drille fra hinanden, hvad dette program var. 379 00:17:31,580 --> 00:17:36,170 Så lad os tage et kig, ved at zoome ind op top, hvad jeg gjorde, og hvordan jeg kom her. 380 00:17:36,170 --> 00:17:38,315 Så her er de, nøjagtig samme linjer kode. 381 00:17:38,315 --> 00:17:40,440 Så dette er redegørelsen, som du nævnte tidligere. 382 00:17:40,440 --> 00:17:42,580 Funktionen, der siger hej. 383 00:17:42,580 --> 00:17:45,870 De krøllede parenteser, på linie fire og linie seks, 384 00:17:45,870 --> 00:17:49,290 formentlig slags indhylle denne linje til at forbinde det 385 00:17:49,290 --> 00:17:50,890 med essensen af ​​mit program. 386 00:17:50,890 --> 00:17:54,890 Så ja, dette søgeord vigtigste, det er deroppe på linje tre, 387 00:17:54,890 --> 00:17:59,450 du kan tænke på det som det, der svarer af, at når grønne flag klikkede, 388 00:17:59,450 --> 00:18:01,080 blok i Scratch. 389 00:18:01,080 --> 00:18:05,280 Så det er alt, vi har her, er, når grønt flag klikkede, udskrive eller sige, 390 00:18:05,280 --> 00:18:06,700 Hej Verden. 391 00:18:06,700 --> 00:18:11,210 >> Men lad os tage et gæt, nu, hvad denne første, mere mystiske linje, er. 392 00:18:11,210 --> 00:18:15,100 Sharp indbefatter åben vinklet beslag, standard I / O-dot h, 393 00:18:15,100 --> 00:18:17,320 lukke vinklet beslag. 394 00:18:17,320 --> 00:18:19,850 Hvad er det måske gør, især hvis du har programmeret 395 00:18:19,850 --> 00:18:21,390 før i et andet sprog. 396 00:18:21,390 --> 00:18:21,890 Ja? 397 00:18:21,890 --> 00:18:22,765 >> PUBLIKUM: [uhørligt] 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 Præcis. 401 00:18:26,470 --> 00:18:29,455 Så dette er at give dig adgang til en bibliotek, så at sige, af funktioner. 402 00:18:29,455 --> 00:18:31,830 Og et bibliotek af funktioner er funktioner, som en anden 403 00:18:31,830 --> 00:18:34,406 skrev, enten for nylig eller længe siden, så du 404 00:18:34,406 --> 00:18:35,780 behøver ikke at genopfinde hjulet. 405 00:18:35,780 --> 00:18:39,020 For eksempel har vi ikke nødt til at vide, i 2015, 406 00:18:39,020 --> 00:18:42,280 hvordan man skriver kode, som sætter et tegn på min skærm. 407 00:18:42,280 --> 00:18:44,820 En anden har regnede med, at ud med printf funktion 408 00:18:44,820 --> 00:18:47,280 så jeg kan sortere af abstrakt væk fra det, eller et lag 409 00:18:47,280 --> 00:18:49,350 oven på hans eller hendes kode, og nu bare tage 410 00:18:49,350 --> 00:18:52,760 for givet, at ethvert program jeg skriver kan udskrive noget på skærmen. 411 00:18:52,760 --> 00:18:58,150 Så denne første linie der i trin et omfatter den såkaldte header fil 412 00:18:58,150 --> 00:18:59,980 for standard biblioteket. 413 00:18:59,980 --> 00:19:02,630 Så se, det sprog, som vi nu arbejder 414 00:19:02,630 --> 00:19:05,010 havde en standard bibliotek med masser af funktioner. 415 00:19:05,010 --> 00:19:07,240 Printf er en af ​​dem, og at første linje kode 416 00:19:07,240 --> 00:19:10,040 betyder at give mig adgang til disse funktioner, så at jeg 417 00:19:10,040 --> 00:19:12,300 behøver ikke at genopfinde den hjulet. 418 00:19:12,300 --> 00:19:15,940 >> Lad os nu gå til bunden vindue og gøre præcis, hvad jeg gjorde før. 419 00:19:15,940 --> 00:19:18,520 For et øjeblik siden, da jeg var susende gennem koden, 420 00:19:18,520 --> 00:19:24,540 skrive det ud for første gang, Jeg meget hurtigt skrevet, gør hej. 421 00:19:24,540 --> 00:19:28,250 Hvad var det for noget ville du gætte? 422 00:19:28,250 --> 00:19:29,150 Hvad var jeg gør? 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 Glem det. 426 00:19:32,310 --> 00:19:32,970 Det er ok. 427 00:19:32,970 --> 00:19:33,492 Ja. 428 00:19:33,492 --> 00:19:34,450 PUBLIKUM: Kompilering det. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Ja. 430 00:19:34,700 --> 00:19:35,770 Det var bare at kompilere den. 431 00:19:35,770 --> 00:19:36,270 Højre? 432 00:19:36,270 --> 00:19:39,280 Selv om dette er helt uvant til dig, er det temmelig engelsk lignende. 433 00:19:39,280 --> 00:19:41,155 Det er bestemt ikke nuller og dem, så jeg stadig 434 00:19:41,155 --> 00:19:44,220 nødt til at køre det gennem denne såkaldte program, en compiler, er, at gå 435 00:19:44,220 --> 00:19:46,060 at tage det som input og producerer output. 436 00:19:46,060 --> 00:19:48,270 Og i det mindste for nu, i denne Linux-miljø, 437 00:19:48,270 --> 00:19:51,030 men dette er ikke en forudsætning, dette er blot, hvor vi vil begynde, 438 00:19:51,030 --> 00:19:53,960 du generelt interagere med edb-systemer som dette 439 00:19:53,960 --> 00:19:55,770 af en såkaldt kommandolinje. 440 00:19:55,770 --> 00:19:57,790 Så med en blinkende hurtig og dit tastatur, 441 00:19:57,790 --> 00:20:01,630 og ikke så meget din mus, og ikke så meget vinduer og ikoner og menuer, 442 00:20:01,630 --> 00:20:02,980 snarere alt er tekstmæssige. 443 00:20:02,980 --> 00:20:06,180 Og selv om det føles, ved første blik, måske, ligesom et skridt tilbage, 444 00:20:06,180 --> 00:20:08,437 det er faktisk en langt mere kraftfuld og udtryksfuld måde 445 00:20:08,437 --> 00:20:10,270 til styring af en computer især som du, 446 00:20:10,270 --> 00:20:12,950 dig selv, bliver mere komfortable fra mindre. 447 00:20:12,950 --> 00:20:16,790 Det kommer til at give dig mulighed for at gøre en masse flere ting end blot, hvad Microsoft 448 00:20:16,790 --> 00:20:20,390 eller Apple tillader dig at gøre med deres grafiske operativsystem. 449 00:20:20,390 --> 00:20:23,270 >> Så når jeg ramte Enter, nu, der sker ikke noget denne gang 450 00:20:23,270 --> 00:20:25,960 fordi tilsyneladende programmet hej er opdateret. 451 00:20:25,960 --> 00:20:28,250 Og hvad var kommandoen Jeg løb efter det? 452 00:20:28,250 --> 00:20:32,370 Dot skråstreg hej, og goddag verden. 453 00:20:32,370 --> 00:20:34,350 Lad os nu tage et skridt bakke for bare et øjeblik. 454 00:20:34,350 --> 00:20:39,510 Det viser sig, gør hej er bare en forenklet måde at kompilere et program. 455 00:20:39,510 --> 00:20:41,670 Lad os bare indføre ét stykke af jargon, 456 00:20:41,670 --> 00:20:43,470 men derefter bevæge sig væk fra det, da det ikke er 457 00:20:43,470 --> 00:20:46,640 alt, interessant for nutidens formål. 458 00:20:46,640 --> 00:20:51,000 Compiler vil vi begynde at bruge kaldes Dunk, for C-sprog. 459 00:20:51,000 --> 00:20:54,280 Og det er et program, der køres lige ligesom vi gjorde på kommandolinjen der. 460 00:20:54,280 --> 00:20:56,580 Og så hvis jeg ønsker at kompilere et program, som jeg 461 00:20:56,580 --> 00:21:00,790 har skrevet i en fil kaldet hej dot c, jeg bogstaveligt talt bare skrive klang hej c 462 00:21:00,790 --> 00:21:02,100 komme ind. 463 00:21:02,100 --> 00:21:04,880 >> Det sjove er, af historiske grunde, 464 00:21:04,880 --> 00:21:07,750 hvis jeg ikke angiver navn af programmet 465 00:21:07,750 --> 00:21:11,690 at jeg ønsker at output, hvis jeg ikke angive et filnavn for de nuller 466 00:21:11,690 --> 00:21:14,990 og dem, en meget underlig konventionen blev vedtaget år siden 467 00:21:14,990 --> 00:21:17,390 hvor det følte slags en godt svar på det tidspunkt, 468 00:21:17,390 --> 00:21:21,650 godt lad os bare vilkårligt kalder første program vi kompilere en prik ud. 469 00:21:21,650 --> 00:21:22,900 A kommer først i alfabetet. 470 00:21:22,900 --> 00:21:23,920 Ud, er det output. 471 00:21:23,920 --> 00:21:26,210 Så vi vil kalde programmet som standard en prik ud. 472 00:21:26,210 --> 00:21:29,550 Og det er fint, fordi hvis jeg ønsker at køre programmet i denne tekst baseret 473 00:21:29,550 --> 00:21:33,590 miljø, jeg bare skrive dot skråstreg en prik ud ind. 474 00:21:33,590 --> 00:21:35,250 Og det ville køre nøjagtigt som før. 475 00:21:35,250 --> 00:21:36,880 Så lad os se, at rigtig hurtigt. 476 00:21:36,880 --> 00:21:40,370 >> Så hvis jeg går tilbage til min kildekoden i CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 og jeg i stedet gøre det, klang hej barneseng c indtaste, varsel intet synes at ske, 478 00:21:47,860 --> 00:21:49,790 men næsten altid denne Linux-miljø, 479 00:21:49,790 --> 00:21:53,310 når intet dårligt synes at ske, at betyder noget godt faktisk skete. 480 00:21:53,310 --> 00:21:56,270 Hvis du ikke kan se en fejl besked, alt er nok godt. 481 00:21:56,270 --> 00:22:01,930 Og ja, hvis jeg nu gør prik skråstreg en prik ud ind, jeg har kørt min samme program. 482 00:22:01,930 --> 00:22:04,610 Jeg har stadig hej programmet fra tidligere, fordi ja, det er 483 00:22:04,610 --> 00:22:07,430 kommer til at være så meget pænere bare skriv gøre i stedet for at huske 484 00:22:07,430 --> 00:22:10,240 disse besværgelser af kommandoer, men lad os se, hvordan vi 485 00:22:10,240 --> 00:22:12,890 kunne forbedre på dette, alligevel. 486 00:22:12,890 --> 00:22:15,340 >> Så det er kommandoen at kompilere koden. 487 00:22:15,340 --> 00:22:19,100 Dette er kommandoen til at køre den kompileret kode derefter. 488 00:22:19,100 --> 00:22:20,546 Hvordan kan jeg angive et filnavn? 489 00:22:20,546 --> 00:22:22,670 Jamen lad os bare indføre endnu et stykke af jargon. 490 00:22:22,670 --> 00:22:24,461 Når du er i denne tekstbaseret miljø, 491 00:22:24,461 --> 00:22:27,400 du vil ønsker at angive ting kaldet kommandolinjeargumenter. 492 00:22:27,400 --> 00:22:31,380 Hvilket er bare en fancy måde at sige, andre ord på den meddelelse, der 493 00:22:31,380 --> 00:22:33,860 tweak adfærd uanset program, du kører. 494 00:22:33,860 --> 00:22:37,320 Så specifikt program, jeg er kører, ved at skrive navnet klang, 495 00:22:37,320 --> 00:22:38,504 er det program hedder Dunk. 496 00:22:38,504 --> 00:22:40,920 Så dette er, eller den gamle skole svarer til at dobbeltklikke 497 00:22:40,920 --> 00:22:42,860 på Microsoft Word eller nogle programmets ikon. 498 00:22:42,860 --> 00:22:46,360 Jeg stedet blot at skrive sit navn, men i denne version af kommandoen, 499 00:22:46,360 --> 00:22:51,334 Jeg så have bindestreg o plads hej plads hej dot c. 500 00:22:51,334 --> 00:22:53,500 Så selvom du har aldrig spillet i denne verden før, 501 00:22:53,500 --> 00:22:58,160 bare tage et gæt hvad betyder dash o hej gøre? 502 00:22:58,160 --> 00:23:00,620 Eller hvad betyder det fortæller klang at gøre? 503 00:23:00,620 --> 00:23:01,386 Ja. 504 00:23:01,386 --> 00:23:02,455 >> PUBLIKUM: [uhørligt] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Ja. 506 00:23:03,330 --> 00:23:08,614 Det bare sætter filens output til at være hello stedet for sillier en prik ud. 507 00:23:08,614 --> 00:23:09,780 Og, ja, lad os prøve dette. 508 00:23:09,780 --> 00:23:14,250 Så hvis jeg nu gør, først lad os gøre det, r m hej. 509 00:23:14,250 --> 00:23:15,590 Det er fjerne. 510 00:23:15,590 --> 00:23:18,450 Og det kommer til at sige fjerne almindelig fil hej, som 511 00:23:18,450 --> 00:23:22,210 er unødvendigt mystiske, men det bare midler at gøre, du vil slette filen, 512 00:23:22,210 --> 00:23:23,230 og jeg skriver y for ja. 513 00:23:23,230 --> 00:23:27,340 Og læg mærke til, hvis du var et blik på toppen venstre, det forsvinder fra deroppe. 514 00:23:27,340 --> 00:23:32,180 Lad mig nu gøre klang streg o, og Jeg har tænkt mig at gå videre og gøre hej, 515 00:23:32,180 --> 00:23:34,890 i alle hætter, hej dot c. 516 00:23:34,890 --> 00:23:37,775 Nu, hvis jeg gør dot skråstreg hej, hvad ville du forvente? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Måske er det små bogstaver. 519 00:23:42,430 --> 00:23:43,070 Måske er det ikke. 520 00:23:43,070 --> 00:23:44,030 Lad os se. 521 00:23:44,030 --> 00:23:45,230 Ingen sådan fil eller mappe. 522 00:23:45,230 --> 00:23:47,438 Og vi kan slags snyde ved bare at kigge på øverst til venstre. 523 00:23:47,438 --> 00:23:49,630 Hvad gjorde jeg naturligvis gemme programmet som? 524 00:23:49,630 --> 00:23:51,070 Alle hætter hej. 525 00:23:51,070 --> 00:23:53,020 Så ja, det er at gå at gøre en forskel. 526 00:23:53,020 --> 00:23:54,540 Så nu hej verden er tilbage. 527 00:23:54,540 --> 00:23:56,969 Nu er dette er alt fint og godt, og alle meget sind-bedøvende, 528 00:23:56,969 --> 00:23:59,760 til slags kører fast i disse detaljer, men forstå dem 529 00:23:59,760 --> 00:24:00,500 er god. 530 00:24:00,500 --> 00:24:02,675 >> Skrive ud disse i stigende grad lange besværgelser 531 00:24:02,675 --> 00:24:05,980 kommer ikke til at være særlig sjovt, så mennesker i verden 532 00:24:05,980 --> 00:24:08,260 opfandt et andet program, for nogle år siden, kaldet 533 00:24:08,260 --> 00:24:12,190 gør, at ganske enkelt giver dig mulighed for at skrive make, 534 00:24:12,190 --> 00:24:14,530 navnet på programmet du ønsker at gøre, og gøre 535 00:24:14,530 --> 00:24:18,580 er smart, fordi det vil se ud i den aktuelle mappe, alias biblioteket, 536 00:24:18,580 --> 00:24:21,440 og hvis du har en fil kaldet hej dot c, 537 00:24:21,440 --> 00:24:25,800 det er den fil, det vil kompilere for dig i et program kaldet hej. 538 00:24:25,800 --> 00:24:29,950 Så det er en meget enklere måde gør de mere kryptiske kommandoer 539 00:24:29,950 --> 00:24:30,800 at vi gjorde tidligere. 540 00:24:30,800 --> 00:24:34,080 Og vi har pre-konfigureret CS50 IDE at vide 541 00:24:34,080 --> 00:24:38,560 at det skal gøre streg o og en række andre flag, eller kommandolinjeargumenter, 542 00:24:38,560 --> 00:24:40,670 at vi vil se inden længe. 543 00:24:40,670 --> 00:24:43,700 >> Men lad os nu rent faktisk gør noget mere interessant. 544 00:24:43,700 --> 00:24:46,950 Bare at skrive ud hej verden alle tiden er ikke alt, overbevisende. 545 00:24:46,950 --> 00:24:52,280 Så lad mig gå videre og forandring dette program, og siger, hej David. 546 00:24:52,280 --> 00:24:54,120 Nu vil jeg gå ned her. 547 00:24:54,120 --> 00:24:57,360 Jeg har tænkt mig at gå videre og gør hej. 548 00:24:57,360 --> 00:25:00,652 Og nu igen du ser gøre viser dig den længere 549 00:25:00,652 --> 00:25:03,360 sekvens af kommandoer, som det er gør, fordi vi har pre-konfigureret 550 00:25:03,360 --> 00:25:05,200 det på den måde, men vi behøver ikke bekymre dig for nu 551 00:25:05,200 --> 00:25:10,735 hvad det andet, end det er at gøre udarbejder prik slash hej, hej verden. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Hvad er der galt? 554 00:25:15,510 --> 00:25:16,177 Ja. 555 00:25:16,177 --> 00:25:17,370 >> PUBLIKUM: [uhørligt] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Ja. 557 00:25:18,203 --> 00:25:19,600 Så noobie fejl. 558 00:25:19,600 --> 00:25:22,394 Jeg bemærke dette er super subtile, men stjernen her, under fanen, 559 00:25:22,394 --> 00:25:25,060 bare betyder, at du ikke har gemt det, og browsere og andre programmer 560 00:25:25,060 --> 00:25:25,930 gøre dette til tider. 561 00:25:25,930 --> 00:25:27,939 Så kontrol s eller kommando s skal gemme det. 562 00:25:27,939 --> 00:25:29,730 Lad mig nu gå videre og re-køre programmet. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Genoversat. 565 00:25:34,260 --> 00:25:36,050 Lige, så det er en multi-trins proces. 566 00:25:36,050 --> 00:25:39,400 Hvoraf ingen er særlig kompliceret, men helst vi ændre filen, 567 00:25:39,400 --> 00:25:43,450 vi er nødt til at ændre resulterende nuller og ettaller, og dot skråstreg hej. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 Så dette er meget underwhelming at vi bare udskrives dette. 570 00:25:46,450 --> 00:25:48,360 Lad os gøre tingene lidt mere dynamisk, nu. 571 00:25:48,360 --> 00:25:52,280 >> Jamen det viser sig, der kan lide Scratch, C understøtter variable. 572 00:25:52,280 --> 00:25:54,790 Og det viser sig, hvis du vil at have en variabel, der gemmer, 573 00:25:54,790 --> 00:25:57,300 ikke et tal, som vi typisk gjorde med Scratch, 574 00:25:57,300 --> 00:26:01,300 men ligesom et ord eller en sætning, eller et navn, du 575 00:26:01,300 --> 00:26:04,837 kan angive en variabel at være af typen string. 576 00:26:04,837 --> 00:26:06,670 Så vi vil se mere af disse i bare et øjeblik, 577 00:26:06,670 --> 00:26:09,090 men det viser sig, at C, og en masse sprog som det, 578 00:26:09,090 --> 00:26:11,240 har meget specifikke typer af variabler. 579 00:26:11,240 --> 00:26:13,810 Det er ikke ligesom algebra, hvor man får en x, a y og z 580 00:26:13,810 --> 00:26:16,940 og dem er bare altid tal, i et programmeringssprog 581 00:26:16,940 --> 00:26:20,030 du kan gemme numre, du kan gemme enkelte tegn, 582 00:26:20,030 --> 00:26:24,619 du kunne gemme hele ord, du kunne gemme hele billeder, hele lydfiler, 583 00:26:24,619 --> 00:26:25,160 og lignende. 584 00:26:25,160 --> 00:26:28,362 Så vi har brug for at angive, hvad typen af ​​vores variabel er. 585 00:26:28,362 --> 00:26:31,570 Og ved konventionen jeg har tænkt mig at ringe til min variable s, bare fordi det er kortfattet, 586 00:26:31,570 --> 00:26:33,510 og s står for streng. 587 00:26:33,510 --> 00:26:36,400 >> Og så jeg har tænkt mig at gemme indersiden af ​​denne variabel, 588 00:26:36,400 --> 00:26:39,570 Ligesom med Scratch når jeg bruger den indstillede blok, 589 00:26:39,570 --> 00:26:41,950 Jeg har tænkt mig at bruge Opgaven operatør i C, 590 00:26:41,950 --> 00:26:45,290 som pænt nok er den lige underskrive, men lighedstegnet gør dette. 591 00:26:45,290 --> 00:26:53,220 Den bevæger sig noget fra højre ind venstre side af udtrykket. 592 00:26:53,220 --> 00:26:57,170 Så hvad jeg har gjort, for at være klar i linie fem, er jeg har erklæret en variabel. 593 00:26:57,170 --> 00:27:01,284 Jeg har fortalt computeren, giv mig hukommelse til en variabel, kalder det s, 594 00:27:01,284 --> 00:27:03,950 og på forhånd ved, at jeg har tænkt mig til at lægge en streng i det. 595 00:27:03,950 --> 00:27:05,950 Og en streng er bare en sekvens af tegn. 596 00:27:05,950 --> 00:27:09,190 Det er et ord eller en sætning, eller afsnit, men det er en sekvens af tegn. 597 00:27:09,190 --> 00:27:10,610 Det er ikke tal. 598 00:27:10,610 --> 00:27:13,800 Hvad snor er jeg kommer til at være ibrugtagning, at variabel? 599 00:27:13,800 --> 00:27:16,185 Nå, tilsyneladende citerer citat slut, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Bemærk nu det mønster, der er på vej frem. 601 00:27:17,810 --> 00:27:19,260 Der er en venstre udtryk. 602 00:27:19,260 --> 00:27:21,810 Der er en højre hånd udtryk, adskilt af lighedstegnet. 603 00:27:21,810 --> 00:27:24,390 Og bare tage et gæt, hvis ukendte alligevel, 604 00:27:24,390 --> 00:27:27,430 med, hvad semikolon gør. 605 00:27:27,430 --> 00:27:28,865 Hvordan er det formentlig gør for os? 606 00:27:28,865 --> 00:27:29,365 Ja? 607 00:27:29,365 --> 00:27:29,840 >> PUBLIKUM: [uhørligt] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Ja. 609 00:27:29,980 --> 00:27:31,170 Det er bare om afslutning af linjen. 610 00:27:31,170 --> 00:27:31,669 Højre? 611 00:27:31,669 --> 00:27:34,260 Computerne vil være ligeud fortalte, bogstaveligt talt, hvad de skal gøre. 612 00:27:34,260 --> 00:27:36,343 Ligesom jordnøddesmør og syltetøjssandwich eksempel 613 00:27:36,343 --> 00:27:39,360 Hvis du ikke angiver præcis, hvad du har til hensigt, 614 00:27:39,360 --> 00:27:42,190 kan det overlades til dom eller fejl. 615 00:27:42,190 --> 00:27:44,890 Semikolon betyder, det er det for denne kommando. 616 00:27:44,890 --> 00:27:48,310 Det bliver super præcis, og det er en meget nem ting at holde op. 617 00:27:48,310 --> 00:27:52,240 Så nu dette program synes ikke at være opfører anderledes indtil jeg 618 00:27:52,240 --> 00:27:53,500 gøre det mere dynamisk. 619 00:27:53,500 --> 00:27:57,107 Så i stedet for hårdt kunne min egen navn, lad mig sætte en pladsholder værdi. 620 00:27:57,107 --> 00:28:00,190 Og det viser sig, at, og jeg ved det fra at have læst dokumentationen, 621 00:28:00,190 --> 00:28:04,080 og anvendes funktionen i årevis, at printf er designet til at være dynamisk. 622 00:28:04,080 --> 00:28:07,510 Du behøver ikke at vide på forhånd hvilke ord du ønsker at sætte i det. 623 00:28:07,510 --> 00:28:11,290 Du kan i stedet have en pladsholder, ligesom procent s, som 624 00:28:11,290 --> 00:28:15,500 kommer til at fortælle computer, sætte en snor her. 625 00:28:15,500 --> 00:28:17,740 >> Hvilken snor ønsker vi at sætte der? 626 00:28:17,740 --> 00:28:22,430 Will viser sig, at mellem disse parenteser, der husker, afgrænse 627 00:28:22,430 --> 00:28:28,020 input til en funktion, hvis du har kommasepareret liste af ting her, 628 00:28:28,020 --> 00:28:31,790 vi faktisk passere i flere input til en funktion. 629 00:28:31,790 --> 00:28:33,901 Så bare gerne have nogle Scratch blokke, ikke kunne du 630 00:28:33,901 --> 00:28:36,150 har spillet med dem for dine projekter endnu eller på alle, 631 00:28:36,150 --> 00:28:38,250 nogle Scratch blokke har to indgange. 632 00:28:38,250 --> 00:28:41,220 To hvide kasser, du kan skrive tal eller ord ind. 633 00:28:41,220 --> 00:28:45,210 Så for at gør C har funktioner som printf der kan tage to indgange. 634 00:28:45,210 --> 00:28:48,050 Og igen, denne komma er at adskille dem. 635 00:28:48,050 --> 00:28:51,070 Så på engelsk, igen selv hvis du aldrig har programmeret før, 636 00:28:51,070 --> 00:28:55,320 af denne logik printf er en funktion, tager to indgange, hvoraf den ene 637 00:28:55,320 --> 00:28:58,810 er en pladsholder, hvad ville du håber printf kommer til at gøre med denne indgang? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Det kommer til at sige hej Hannah, forhåbentlig. 640 00:29:03,220 --> 00:29:05,274 Så for at gøre dette har vi brug for at gemme det. 641 00:29:05,274 --> 00:29:06,190 Jeg har tænkt mig at zoome ud. 642 00:29:06,190 --> 00:29:10,701 Jeg har tænkt mig at gå tilbage hernede og sige, gøre hej ind. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Der er noget galt, og faktisk dette er ganske overvældende. 645 00:29:14,830 --> 00:29:18,400 Jeg har seks linjer kode og ligesom 12 linjer af fejl. 646 00:29:18,400 --> 00:29:22,120 Så ser frem til dette. 647 00:29:22,120 --> 00:29:24,260 Så hvad sker der her? 648 00:29:24,260 --> 00:29:27,370 Så den bedste tommelfingerregel her, især når du er startet ud, 649 00:29:27,370 --> 00:29:29,370 ikke bliver distraheret af stuff nederst. 650 00:29:29,370 --> 00:29:31,220 Faktisk jeg meget bevidst bare rulles op 651 00:29:31,220 --> 00:29:33,930 fordi meget ofte, en computer er ikke alle, der lyse af en enhed. 652 00:29:33,930 --> 00:29:35,054 Det kommer til at blive forvirret. 653 00:29:35,054 --> 00:29:37,220 Hvis det ser én ting, det ikke forstår, 654 00:29:37,220 --> 00:29:40,030 det kunne forveksle andre linjer kode som forkerte, 655 00:29:40,030 --> 00:29:41,649 selvom de er helt fint. 656 00:29:41,649 --> 00:29:43,940 Så du altid ønsker at arbejde top ned gennem fejlene. 657 00:29:43,940 --> 00:29:47,850 Og ganske vist er super mystisk i øjeblikket. 658 00:29:47,850 --> 00:29:50,830 >> Fejl, brug af sort identifikator streng. 659 00:29:50,830 --> 00:29:52,130 Har jeg mener standard i? 660 00:29:52,130 --> 00:29:53,720 Nej, jeg mente streng. 661 00:29:53,720 --> 00:29:55,830 Og det er at pege på, måske er det en tastefejl. 662 00:29:55,830 --> 00:30:00,570 Lidt ligesom, stavekontrol i et meget nørdet måde, men årsagen her, 663 00:30:00,570 --> 00:30:02,840 og du ved det blot ved praksis er 664 00:30:02,840 --> 00:30:06,390 at det viser sig, at strengen ikke findes i C. Faktisk C 665 00:30:06,390 --> 00:30:08,820 er en særlig gamle sprog, og det er meget lavt niveau, 666 00:30:08,820 --> 00:30:11,361 og det gør ikke en masse funktioner at du måske er vokset op 667 00:30:11,361 --> 00:30:14,620 med, hvis du har, i virkeligheden, programmeret i Java, som nogle af jer har, 668 00:30:14,620 --> 00:30:16,980 men du kan undervise i det nye ting. 669 00:30:16,980 --> 00:30:20,900 Og ja, vi har gjort dette CS50, selvom ved udgangen af ​​semestret, 670 00:30:20,900 --> 00:30:23,512 alle disse støttehjul vil være blevet taget ud, 671 00:30:23,512 --> 00:30:25,220 hvad vi gør i disse første par uger 672 00:30:25,220 --> 00:30:29,830 oprindeligt er vi også du inkluderer CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Hvilket er en header fil. 674 00:30:31,230 --> 00:30:32,440 Mere om det i fremtiden. 675 00:30:32,440 --> 00:30:36,430 >> Det er en fil, der indeholder funktioner at vi har skrevet til dig. 676 00:30:36,430 --> 00:30:39,180 Og blandt disse funktioner er funktioner til at få input 677 00:30:39,180 --> 00:30:43,520 fra brugeren, som strenge, og tal og reelle tal og meget mere. 678 00:30:43,520 --> 00:30:45,550 Men det har også et par genveje. 679 00:30:45,550 --> 00:30:48,200 Det definerer en boolesk som en datatype. 680 00:30:48,200 --> 00:30:50,340 C har ikke sand eller falsk. 681 00:30:50,340 --> 00:30:53,880 Men vi kan give det forestillingen om sand eller falsk ved hjælp af dette bibliotek. 682 00:30:53,880 --> 00:30:57,670 Og det har heller ikke en streng bygget i indtil vi medtage denne linje. 683 00:30:57,670 --> 00:31:01,090 Så denne linje kode fortæller compileren, hey, Dunk, se 684 00:31:01,090 --> 00:31:03,570 i denne fil til en hel bundt af kode, CS50 685 00:31:03,570 --> 00:31:06,330 har skrevet, så alle, der bruger denne fil 686 00:31:06,330 --> 00:31:09,330 kan tage for givet funktioner, de har tilføjet. 687 00:31:09,330 --> 00:31:11,220 >> Så lad mig gå videre og rydde skærmen, 688 00:31:11,220 --> 00:31:14,178 og hvis nysgerrig jeg bare sige kontrol l hver gang for at rydde skærmen, 689 00:31:14,178 --> 00:31:15,500 eller du kan skrive klart. 690 00:31:15,500 --> 00:31:19,220 Jeg er bare kommer til at gå videre nu, og typen gør hej, og alt er godt. 691 00:31:19,220 --> 00:31:22,550 Stadig en mystisk udgang, men det er ikke en fejlagtig besked. 692 00:31:22,550 --> 00:31:28,300 Nu, hvis jeg gør prik skråstreg hej, og som en til side, dot skråstreg er ukendt for de fleste. 693 00:31:28,300 --> 00:31:30,430 Det betyder blot, dot midler den aktuelle mappe. 694 00:31:30,430 --> 00:31:33,120 Så hvis du nogensinde har brugt DOS eller Linux, eller Unix 695 00:31:33,120 --> 00:31:35,410 du måske har gjort noget som CD dot dot, hvor 696 00:31:35,410 --> 00:31:39,220 dot dot betyder gå baglæns i tid, eller gå baglæns, eller højere op 697 00:31:39,220 --> 00:31:40,370 i dit bibliotek. 698 00:31:40,370 --> 00:31:43,090 Dot betyder blot kigge i den aktuelle mappe. 699 00:31:43,090 --> 00:31:45,670 Jeg ønsker hej, hvilket er lige her. 700 00:31:45,670 --> 00:31:47,750 Og ja, nu er det siger Hej Hannah. 701 00:31:47,750 --> 00:31:51,120 Og hvis jeg ændrer den igen til Maria, rekompilere 702 00:31:51,120 --> 00:31:55,650 det ville gøre hej, dot skråstreg hej, holder programmet forandring. 703 00:31:55,650 --> 00:31:58,060 >> Men det er stadig en temmelig dumme program. 704 00:31:58,060 --> 00:32:00,972 Hvis jeg ønsker at sende dette program, eller give det til en ven, 705 00:32:00,972 --> 00:32:03,430 eller give det til Maria eller Hannah for den sags skyld, det er fint. 706 00:32:03,430 --> 00:32:07,300 Jeg kan tilpasse det for dem begge, men det er aldrig kommer til at være dynamisk. 707 00:32:07,300 --> 00:32:10,870 De kan ikke ændre den, når den er kompileret ned i disse nuller og ettaller. 708 00:32:10,870 --> 00:32:12,350 Så hvad vi gjorde noget smartere? 709 00:32:12,350 --> 00:32:17,100 Hvad hvis, i stedet for hårdt-kodning i programmet denne persons navn, 710 00:32:17,100 --> 00:32:20,890 hvad nu hvis vi bare får strengen på efterspørgslen? 711 00:32:20,890 --> 00:32:22,430 >> Så med andre ord, lad mig gøre det. 712 00:32:22,430 --> 00:32:24,030 Jeg har tænkt mig at kompilere dette program. 713 00:32:24,030 --> 00:32:25,710 Og lad mig zoome ind ved bunden nu. 714 00:32:25,710 --> 00:32:29,920 Gøre hej dot skråstreg hej. 715 00:32:29,920 --> 00:32:31,710 Nu ingenting sker. 716 00:32:31,710 --> 00:32:35,860 Kan vi få en hurtig frivillig at gøre noget ske? 717 00:32:35,860 --> 00:32:36,360 Kom op. 718 00:32:36,360 --> 00:32:37,020 Hvad er dit navn? 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 op. 722 00:32:39,609 --> 00:32:42,150 Når du får op her, det er vil være meget underwhelming, 723 00:32:42,150 --> 00:32:44,060 men det er mere interessant end mig skrive det. 724 00:32:44,060 --> 00:32:49,007 Hvis du ønsker at gå videre og skrive dit navn, jeg lavede dette program til dig. 725 00:32:49,007 --> 00:32:49,840 Bare skriv dit navn. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Enter. 728 00:32:53,900 --> 00:32:54,489 Vidunderligt. 729 00:32:54,489 --> 00:32:55,780 Okay, mange tak. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Mange tak. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Applaus] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Det var meget venlig. 735 00:33:01,840 --> 00:33:03,145 Vær så god. 736 00:33:03,145 --> 00:33:03,770 Hvad gjorde vi? 737 00:33:03,770 --> 00:33:05,930 Så vi endelig, i det mindste, gjort dette program dynamik. 738 00:33:05,930 --> 00:33:08,400 Nu er det stadig sikkert ved design underwhelming, 739 00:33:08,400 --> 00:33:11,480 men vi endelig har mulighed nu at skrive kode i forvejen, meget 740 00:33:11,480 --> 00:33:13,770 ligesom forfatterne af printf, og derefter dynamisk 741 00:33:13,770 --> 00:33:17,550 tilpasser sig baseret på input er vi udleveret, enten af ​​programmøren, 742 00:33:17,550 --> 00:33:20,610 eller af det menneskelige, der er faktisk interagere med programmet. 743 00:33:20,610 --> 00:33:22,990 Så lad os faktisk nu forsøge til at gøre et par andre konstruktioner 744 00:33:22,990 --> 00:33:26,625 og se om vi ikke kan gøre programmerne selv mere sofistikeret. 745 00:33:26,625 --> 00:33:29,250 Så lad os gå videre og i stedet for skrive denne ene fra bunden, 746 00:33:29,250 --> 00:33:31,540 Jeg har tænkt mig at gå ind i nutidens kildekode, og alt dette 747 00:33:31,540 --> 00:33:34,290 er tilgængelig på kursets hjemmeside, og du kan trække og slippe det 748 00:33:34,290 --> 00:33:36,590 ind i dit eget miljø kommer fredag, når problemet 749 00:33:36,590 --> 00:33:38,506 sæt 1 giver dig instruktioner, eller du kunne 750 00:33:38,506 --> 00:33:41,200 gør det på kommandolinjen som godt, men mere at komme i p set 1. 751 00:33:41,200 --> 00:33:44,940 >> Lad os se, hvad der er i dette program her kaldes, adder dot c. 752 00:33:44,940 --> 00:33:47,970 Nu har jeg allerede kommenteret det, men hvad er nyt? 753 00:33:47,970 --> 00:33:51,230 Ved første øjekast, hvilken linje kode er absolut nyt? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Sandsynligvis ikke fundamentalt ukendte nu. 756 00:33:56,780 --> 00:33:58,417 >> PUBLIKUM: [uhørligt] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Ja, så int x er lig få n. 758 00:34:00,250 --> 00:34:03,760 Vi har aldrig set noget af dette før, men er sandsynligvis int 759 00:34:03,760 --> 00:34:08,179 symbolet for hvilken slags variable, [? fra?] et heltal. 760 00:34:08,179 --> 00:34:09,040 Så int for heltal. 761 00:34:09,040 --> 00:34:11,420 Det er bare at være mere kortfattet. x er lige vilkårlig. 762 00:34:11,420 --> 00:34:13,920 x og y og z er stadig temmelig rimelig for tal, 763 00:34:13,920 --> 00:34:16,790 men generelt vil vi bruge ord, når vores programmer får mere komplekse. 764 00:34:16,790 --> 00:34:18,940 Få int, selvfølgelig, meget gerne get streng, 765 00:34:18,940 --> 00:34:21,629 er sandsynligvis vil få en int fra brugeren, 766 00:34:21,629 --> 00:34:23,670 og så vil vi gøre det samme med y. 767 00:34:23,670 --> 00:34:27,610 Og tilsyneladende, selvom det sidste linje, 24, ser mere komplekse, 768 00:34:27,610 --> 00:34:32,679 det vil sige summen af ​​denne og det er denne anden ting. 769 00:34:32,679 --> 00:34:35,840 >> Og varsel procent i formentlig betegner hvad? 770 00:34:35,840 --> 00:34:38,190 Hvilken rolle procent jeg tilsyneladende tjene? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 Det er bare pladsholdere. 773 00:34:41,719 --> 00:34:42,219 Højre? 774 00:34:42,219 --> 00:34:45,149 Procent s var for streng, procent i er til heltal. 775 00:34:45,149 --> 00:34:47,690 Der kommer til at være procent f til floating point værdi, hvilket 776 00:34:47,690 --> 00:34:49,273 er bare et tal med et komma. 777 00:34:49,273 --> 00:34:50,590 Med andre ord, et reelt tal. 778 00:34:50,590 --> 00:34:55,270 Så lad os faktisk kompilere dette programmere virkelig hurtigt og gør adder. 779 00:34:55,270 --> 00:34:57,962 Hovsa. 780 00:34:57,962 --> 00:34:58,670 God mulighed. 781 00:34:58,670 --> 00:35:02,970 Så bemærke her, al denne tid min bruger navn for denne konto er jharvard. 782 00:35:02,970 --> 00:35:06,620 Jeg er i CS50 IDE, alias IDE50. 783 00:35:06,620 --> 00:35:11,030 Og nu i blå her, er en omtale, men fra miljøet, hvor jeg er. 784 00:35:11,030 --> 00:35:16,050 Og i virkeligheden, hvis jeg zoome op til toppen her, bemærke, at jeg har en IDE50 785 00:35:16,050 --> 00:35:19,490 og jeg ser dette ord, hvis du slags dreje hovedet til siden, arbejdsområde. 786 00:35:19,490 --> 00:35:23,890 I en nøddeskal, det faktum, at Jeg ser tilde skråstreg arbejdsområde 787 00:35:23,890 --> 00:35:26,910 betyder, at i denne tekst baserede kommando miljø, 788 00:35:26,910 --> 00:35:32,300 Jeg er i teksten svarer til dette grafiske mappe op her. 789 00:35:32,300 --> 00:35:35,730 Så når jeg gør dot skråstreg adder, det siger ingen regel 790 00:35:35,730 --> 00:35:37,372 at gøre målet adder stop. 791 00:35:37,372 --> 00:35:39,830 Jeg ved ikke, hvad det betyder, men det er dårligt for en eller anden grund. 792 00:35:39,830 --> 00:35:43,310 Ingen sådan fil eller mappe er endnu mere klart. 793 00:35:43,310 --> 00:35:45,670 Hvor er det så? 794 00:35:45,670 --> 00:35:47,820 Baseret på hvor jeg klikkede at åbne filen tidligere. 795 00:35:47,820 --> 00:35:49,442 Hvor kan det være? 796 00:35:49,442 --> 00:35:52,050 >> Det er sandsynligvis i kilden én w, til onsdag 797 00:35:52,050 --> 00:35:53,960 og jeg kan se det, ja, hvis jeg åbner det op. 798 00:35:53,960 --> 00:35:57,220 Der er adder dot C, men i denne tekst-baseret miljø, 799 00:35:57,220 --> 00:35:59,380 igen, jeg er nødt til at være super eksplicit. 800 00:35:59,380 --> 00:36:03,950 Hvis jeg ønsker at ændre mapper ind kilde én Onsdag jeg nødt til at skrive, 801 00:36:03,950 --> 00:36:07,210 cd plads kilde én Onsdag indtaste og nu 802 00:36:07,210 --> 00:36:09,810 min hurtige ændringer give mig et visuelt stikord, der 803 00:36:09,810 --> 00:36:12,330 Jeg er, ja, et andet sted i mine omgivelser, 804 00:36:12,330 --> 00:36:15,710 men nu kan jeg gør adder, ser det ud til at virke, 805 00:36:15,710 --> 00:36:18,190 dot slash adder, giv mig et heltal. 806 00:36:18,190 --> 00:36:19,080 One. 807 00:36:19,080 --> 00:36:20,070 To. 808 00:36:20,070 --> 00:36:21,630 Summen af ​​et og to er tre. 809 00:36:21,630 --> 00:36:24,140 Men hvis jeg ikke samarbejder, lad os se hvad får int gør. 810 00:36:24,140 --> 00:36:25,200 Giv mig et heltal. 811 00:36:25,200 --> 00:36:26,590 Nej. 812 00:36:26,590 --> 00:36:27,350 Prøv igen. 813 00:36:27,350 --> 00:36:29,060 OK. 814 00:36:29,060 --> 00:36:30,520 Fint. 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 Okay. 818 00:36:33,010 --> 00:36:34,055 Så det endelig samarbejder. 819 00:36:34,055 --> 00:36:36,430 Og det er noget af det funktionalitet, disse funktioner 820 00:36:36,430 --> 00:36:37,760 kan have indbygget for dig. 821 00:36:37,760 --> 00:36:43,330 >> Så inde gennemførelsen af får int, hvad programmering 822 00:36:43,330 --> 00:36:47,990 konstruere fra sidste uge er sandsynligvis i der for at tvinge denne adfærd nyt forsøg, 823 00:36:47,990 --> 00:36:49,962 prøve igen, prøv igen? 824 00:36:49,962 --> 00:36:51,670 Ja, der er nok en slags sløjfe. 825 00:36:51,670 --> 00:36:54,160 Det kommer til at se syntaktisk forskellig fra Scratch s blokke, 826 00:36:54,160 --> 00:36:55,880 men det er faktisk hvad der er inde i filen. 827 00:36:55,880 --> 00:36:58,505 Og i et par uger vi får faktisk se på CS50 biblioteket 828 00:36:58,505 --> 00:37:02,000 om, hvad der er indeni, men der er en løkke om indførelse præcis det. 829 00:37:02,000 --> 00:37:04,840 >> Lad os lege en dum lille spil her med denne fil. 830 00:37:04,840 --> 00:37:06,550 Condition Zero dot c. 831 00:37:06,550 --> 00:37:08,960 Vi vil blot generelt begynde at tælle ved nul. 832 00:37:08,960 --> 00:37:11,220 Og jeg holder rulle forbi nogle af de ting på toppen. 833 00:37:11,220 --> 00:37:15,390 I blå her, afgrænset med alle af disse stjerner og skråstreger, 834 00:37:15,390 --> 00:37:17,310 dem af jer der programmerer før, hvad er det? 835 00:37:17,310 --> 00:37:18,690 Hvorfor skal vi holde springer over det? 836 00:37:18,690 --> 00:37:19,110 Hvad? 837 00:37:19,110 --> 00:37:19,490 >> PUBLIKUM: Det er en kommentar. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Ja. 839 00:37:19,800 --> 00:37:20,633 Det er bare en kommentar. 840 00:37:20,633 --> 00:37:24,160 Dette er en kommentar til mennesker at læse, at i vores tilfælde, 841 00:37:24,160 --> 00:37:27,120 fortæller os, hvad navnet på den fil er, der skrev det, og hvad det gør, 842 00:37:27,120 --> 00:37:28,610 så du ikke behøver at læse koden 843 00:37:28,610 --> 00:37:30,110 at vide, hvad denne fil handler om. 844 00:37:30,110 --> 00:37:33,110 Det er bare en beskrivelse, men funktionelt er det irrelevant. 845 00:37:33,110 --> 00:37:35,930 Og jeg kan endda slette det fra min fil, og det har ingen betydning. 846 00:37:35,930 --> 00:37:38,740 De saftige linjer er disse første to her, nu. 847 00:37:38,740 --> 00:37:41,405 int main tomrum svarer af vores når grønne flag klikkede, 848 00:37:41,405 --> 00:37:44,030 så vi kommer til at forlade det være for i dag, og vi vil komme tilbage, 849 00:37:44,030 --> 00:37:46,940 Til sidst, som til hvad int og tomrum er, men nu, 850 00:37:46,940 --> 00:37:49,500 mærke til, hvad jeg har gjort også her kan du også, 851 00:37:49,500 --> 00:37:51,736 hvis du har en på linje kommentere, hvis du har 852 00:37:51,736 --> 00:37:54,670 en troede, du ønsker at dele om en bestemt linje kode, 853 00:37:54,670 --> 00:37:58,910 konvention i C er at gøre skråstreg skråstreg, og derefter et par kortfattede ord, 854 00:37:58,910 --> 00:38:01,500 ikke en hel sætning, generelt ikke et afsnit, 855 00:38:01,500 --> 00:38:05,310 der bare forklarer til dig, eller din TF eller andre læsere eller kolleger, 856 00:38:05,310 --> 00:38:06,990 hvad din kode gør. 857 00:38:06,990 --> 00:38:10,150 Så i stedet nødt til at se på dette og udlede linjer 858 00:38:10,150 --> 00:38:12,550 ni og 10, hvad der er Dette gør, på linje otte 859 00:38:12,550 --> 00:38:14,945 Jeg bare give en kommentar til bede brugeren om et heltal, 860 00:38:14,945 --> 00:38:17,820 så jeg behøver ikke at tænke alt for hårdt om, hvad linjerne ni og 10 er. 861 00:38:17,820 --> 00:38:19,720 Jeg ved bare, at det er, hvad kollektivt de laver. 862 00:38:19,720 --> 00:38:20,460 >> Hvordan? 863 00:38:20,460 --> 00:38:22,060 Nå, her er prompten. 864 00:38:22,060 --> 00:38:23,610 Her er den at komme af int. 865 00:38:23,610 --> 00:38:25,984 Og baseret på den tidligere adfærd, det ser ud som get int 866 00:38:25,984 --> 00:38:29,080 er smart nok til at sørge for, at det menneskelige samarbejder og giver det 867 00:38:29,080 --> 00:38:30,090 et heltal. 868 00:38:30,090 --> 00:38:32,270 Men nu ser vi dette. 869 00:38:32,270 --> 00:38:33,740 Og det minder om Scratch. 870 00:38:33,740 --> 00:38:36,140 Jeg påstår, at jeg er analysere brugerens input, 871 00:38:36,140 --> 00:38:39,050 men noget unøjagtigt. 872 00:38:39,050 --> 00:38:43,200 Og dette tilsyneladende i C er, hvordan vi udtrykke en hvis ellers, en filial, 873 00:38:43,200 --> 00:38:46,320 en gaffel i vejen, men jeg siger noget unøjagtigt. 874 00:38:46,320 --> 00:38:50,470 Hvad er fejl i dette program? 875 00:38:50,470 --> 00:38:51,610 Om længere tilbage? 876 00:38:51,610 --> 00:38:52,223 Ja. 877 00:38:52,223 --> 00:38:53,150 >> PUBLIKUM: [uhørligt] nul. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Ja. 879 00:38:54,025 --> 00:38:57,630 Så hvis jeg skriver i nul, lad os overveje præcis så fald eller hjørne tilfælde, 880 00:38:57,630 --> 00:38:58,450 hvis du vil. 881 00:38:58,450 --> 00:39:02,790 Så hvis jeg skriver i nul, hvilket af blokke vil tilsyneladende få fat i det? 882 00:39:02,790 --> 00:39:04,660 Den hvis eller andet? 883 00:39:04,660 --> 00:39:07,340 Den anden, og det kommer til at sige, du valgte et negativt tal. 884 00:39:07,340 --> 00:39:10,476 Og ja, nul er ikke meningen at være positiv eller negativ, 885 00:39:10,476 --> 00:39:11,850 og så det ville være fejlagtigt. 886 00:39:11,850 --> 00:39:12,930 Det ville være en fejl. 887 00:39:12,930 --> 00:39:14,580 Så hvordan kan vi løse dette? 888 00:39:14,580 --> 00:39:16,360 Nogen, der aldrig har programmeret før? 889 00:39:16,360 --> 00:39:16,570 Vil du have-- 890 00:39:16,570 --> 00:39:17,480 >> PUBLIKUM: [uhørligt] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: Tilbagetrækning? 892 00:39:17,990 --> 00:39:18,570 >> PUBLIKUM: [uhørligt] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: Åh, du har? 894 00:39:18,930 --> 00:39:20,350 Nogen, der aldrig har programmeret før. 895 00:39:20,350 --> 00:39:21,750 Vil du prøve din hånd på dette, i den røde trøje? 896 00:39:21,750 --> 00:39:22,600 Kom op. 897 00:39:22,600 --> 00:39:25,320 Oh yeah, kom nu op, hvis du ikke har noget imod. 898 00:39:25,320 --> 00:39:27,586 Så aldrig har programmeret før, hvad er dit navn? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, okay. 901 00:39:29,626 --> 00:39:31,150 Så ordne denne fejl for os. 902 00:39:31,150 --> 00:39:35,070 Du har ikke set C, formentlig, og formentlig ingen andre sprog. 903 00:39:35,070 --> 00:39:38,380 Så løse dette program for os. 904 00:39:38,380 --> 00:39:39,100 Rart at møde dig. 905 00:39:39,100 --> 00:39:39,615 Ingen pres. 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: Men igen, hvis det gamble går efter planen, 909 00:39:46,270 --> 00:39:48,350 takeaway her vil være lige igen, for at starte 910 00:39:48,350 --> 00:39:51,080 at lægge mærke til mønstre og udlede eksisterende syntaks 911 00:39:51,080 --> 00:39:55,420 hvor du ellers måtte udtrykke dig selv, ingen ordspil bestemt, for 912 00:39:55,420 --> 00:39:58,410 at fange nogle yderligere scenario. 913 00:39:58,410 --> 00:39:59,603 Så vi siger andet, hvis. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, god. 916 00:40:05,230 --> 00:40:09,120 Og mærke med CS50 IDE, og frankly-- IDE 917 00:40:09,120 --> 00:40:11,110 står for Integreret Udviklingsmiljø. 918 00:40:11,110 --> 00:40:14,110 Det er bare en fancy måde at sige et program, der hjælper dig med program. 919 00:40:14,110 --> 00:40:16,779 Det gør brugervenlige ting som når du skriver en parentes, 920 00:40:16,779 --> 00:40:18,320 det automatisk giver dig den anden. 921 00:40:18,320 --> 00:40:20,760 Formodningen er, at du er i sidste ende vil ønsker at skrive det, 922 00:40:20,760 --> 00:40:22,400 og det også gør det med citater. 923 00:40:22,400 --> 00:40:24,190 >> Så jeg kan godt lide linie 23. 924 00:40:24,190 --> 00:40:26,400 99% af vejen der. 925 00:40:26,400 --> 00:40:29,920 Nogen ønsker at kime ind med et tip? 926 00:40:29,920 --> 00:40:31,420 Jeg hørte semikolon fra publikum. 927 00:40:31,420 --> 00:40:32,080 Godt. 928 00:40:32,080 --> 00:40:33,260 Så der fuldender det. 929 00:40:33,260 --> 00:40:37,930 Og nu, jeg bare har en lille bestyrtelse med linje 21. 930 00:40:37,930 --> 00:40:41,370 Hvordan ønsker vi at udtrykke dette? 931 00:40:41,370 --> 00:40:43,370 Hvilket spørgsmål ønsker vi at spørge, tror du? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Så vi tidligere stillede spørgsmålet, hvis n er større end nul, gør dette. 934 00:40:50,330 --> 00:40:51,870 Else, gør det. 935 00:40:51,870 --> 00:40:54,317 Så vi er nødt til at vælge en spørgsmål at stille her. 936 00:40:54,317 --> 00:40:55,192 PUBLIKUM: [uhørligt] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Godt. 938 00:40:56,530 --> 00:40:58,290 Så hvis n er lig med nul. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Fremragende. 941 00:41:02,100 --> 00:41:03,080 Så lad os holde pause her. 942 00:41:03,080 --> 00:41:04,850 Tak så meget for at trodset dette. 943 00:41:04,850 --> 00:41:10,890 Lad mig give dig lidt velfortjent stress bold, måske er der. 944 00:41:10,890 --> 00:41:11,900 Så vi er der næsten. 945 00:41:11,900 --> 00:41:14,790 Faktisk Lauren, hvis du ikke sind, lad mig gøre en tweak her, 946 00:41:14,790 --> 00:41:17,850 bare for at være ensartet, selv hvad vi så i Scratch, hvad 947 00:41:17,850 --> 00:41:21,080 jeg ønsker at gøre med linjer 21 og 24, bare igen baseret 948 00:41:21,080 --> 00:41:23,290 om, hvordan vi gjorde dette i Scratch, måske? 949 00:41:23,290 --> 00:41:24,230 >> PUBLIKUM: Flyt det op. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Ja, flytte det op. 951 00:41:25,605 --> 00:41:30,260 Så else tilstand, den tredje eller fjerde eller femte, eller endelig filial, 952 00:41:30,260 --> 00:41:34,100 bør faktisk komme bagefter, og det er kun ved konvention, 953 00:41:34,100 --> 00:41:36,047 bare fordi hvis du vil. 954 00:41:36,047 --> 00:41:37,380 Så jeg har brug for at gøre denne tweak. 955 00:41:37,380 --> 00:41:39,660 Og jeg har brug for at sætte min krøllet tandbøjle tilbage her. 956 00:41:39,660 --> 00:41:42,700 Og nu, vil dette program kompilere. 957 00:41:42,700 --> 00:41:46,140 Vi er så tæt på, men der er en meget, meget subtile fejl. 958 00:41:46,140 --> 00:41:47,200 Lad os se hvad der sker. 959 00:41:47,200 --> 00:41:49,660 >> Først, lad mig gå videre og zoome ud. 960 00:41:49,660 --> 00:41:53,405 Jeg har tænkt mig at gå videre og skriv gøre tilstand nul. 961 00:41:53,405 --> 00:41:55,070 Åh, løj jeg. 962 00:41:55,070 --> 00:41:58,760 Nu compiler er faktisk temmelig smart. 963 00:41:58,760 --> 00:42:00,950 Og jeg forstår ikke rigtig, det er fejlmeddelelse. 964 00:42:00,950 --> 00:42:04,310 Brug af resultatet af en opgave som en betingelse uden parenteser, 965 00:42:04,310 --> 00:42:05,740 tilsyneladende dårligt. 966 00:42:05,740 --> 00:42:07,100 Men hvad betyder det? 967 00:42:07,100 --> 00:42:10,860 >> Nå igen, på udkig efter mønstre i kode, som vi har set før, 968 00:42:10,860 --> 00:42:16,640 hvad der er line 17 faktisk gør, selvom Lauren bestemt lidt 969 00:42:16,640 --> 00:42:18,790 ellers? 970 00:42:18,790 --> 00:42:19,290 Ja. 971 00:42:19,290 --> 00:42:21,565 >> PUBLIKUM: [uhørligt] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Ja. 973 00:42:22,440 --> 00:42:26,610 Så husk lighedstegnet, tilsyneladende som vi har brugt det før, er ikke lig. 974 00:42:26,610 --> 00:42:29,240 Dens opgave, fra højre til venstre. 975 00:42:29,240 --> 00:42:33,810 Så linje 17 på det tidspunkt, er en betingelse, og det er 976 00:42:33,810 --> 00:42:37,890 udføre kode inde parentes, men da denne kode henretter, 977 00:42:37,890 --> 00:42:42,140 hvad der sker med værdien af ​​nul? 978 00:42:42,140 --> 00:42:45,250 Hvad sker der med værdien af ​​n? 979 00:42:45,250 --> 00:42:46,810 At blive nul. 980 00:42:46,810 --> 00:42:50,520 Så hvis n bliver nul, og igen, som pr sidste uge, 981 00:42:50,520 --> 00:42:54,690 vi generelt sige, at nul er falsk, og den ene er sandt, 982 00:42:54,690 --> 00:42:57,410 eller ja er én, og ingen er nul. 983 00:42:57,410 --> 00:42:59,590 Så sandt og falsk, en og 0. 984 00:42:59,590 --> 00:43:06,090 Hvis n fra linje 17 er givet værdien 0, er nul sandt? 985 00:43:06,090 --> 00:43:06,590 Nej. 986 00:43:06,590 --> 00:43:08,280 Definition nul er falsk. 987 00:43:08,280 --> 00:43:10,860 Det er den konvention, vi er kommer til at klamre sig til at bevæge sig fremad. 988 00:43:10,860 --> 00:43:17,320 Så vil ledningerne 18, 19 og 20 nogensinde gælder nu, logisk? 989 00:43:17,320 --> 00:43:18,320 De kan ikke. 990 00:43:18,320 --> 00:43:21,640 Så vi stillede spørgsmålet men ikke helt præcist, 991 00:43:21,640 --> 00:43:25,620 og du ville ikke vide dette, medmindre du har set det, er løsningen i C 992 00:43:25,620 --> 00:43:29,610 er, når du ønsker at udtrykke lighed, siger du ligemænd lig. 993 00:43:29,610 --> 00:43:33,140 Så lighedstegn blev allerede brugt op ved overdragelse, at fra højre til venstre. 994 00:43:33,140 --> 00:43:35,110 Lig lig midler lig. 995 00:43:35,110 --> 00:43:37,950 Og hvis du virkelig vil dit sind der skal bukkes, i JavaScript og PHP, 996 00:43:37,950 --> 00:43:40,490 der er lig med lig ligemænd, som betyde noget helt andet, 997 00:43:40,490 --> 00:43:41,990 men vi vil komme til at inden længe. 998 00:43:41,990 --> 00:43:45,760 >> Så dette er en simpel rettelse, men indser super nemt at lave denne fejl, 999 00:43:45,760 --> 00:43:48,700 og derefter undre sig og kamp for minutter, hvis ikke en time, 1000 00:43:48,700 --> 00:43:51,490 hvorfor er min kode ikke udførelse som jeg agter? 1001 00:43:51,490 --> 00:43:54,140 Det er fordi du ikke fortælle det præcis, hvad du mente. 1002 00:43:54,140 --> 00:43:56,450 Så det var næsten perfekt, og det var fantastisk 1003 00:43:56,450 --> 00:44:00,760 at vi snuble over disse to lidt ting, fordi nu hvis vi løse dem, 1004 00:44:00,760 --> 00:44:06,240 og jeg gør tilstand nul dot slash tilstand nul, 1005 00:44:06,240 --> 00:44:07,490 Jeg vil gerne et heltal venligst. 1006 00:44:07,490 --> 00:44:08,090 Lad os se. 1007 00:44:08,090 --> 00:44:09,160 Nej. 1008 00:44:09,160 --> 00:44:10,740 Det kommer til at tvinge mig til at gøre det. 1009 00:44:10,740 --> 00:44:11,990 Så 42. 1010 00:44:11,990 --> 00:44:13,590 Jeg plukket et positivt tal. 1011 00:44:13,590 --> 00:44:16,470 Så nu, hvordan gør jeg bevise dette program korrekt? 1012 00:44:16,470 --> 00:44:19,990 Hvis du er en matematiker, ikke kan du virkelig bevise dette ved trial and error, 1013 00:44:19,990 --> 00:44:20,490 højre? 1014 00:44:20,490 --> 00:44:23,180 Du kan ikke bare bevis ved eksempel, men i det mindste 1015 00:44:23,180 --> 00:44:25,494 som programmør vi er ikke vil forsøge at bevise for nu 1016 00:44:25,494 --> 00:44:27,660 at dette faktisk er korrekt, men jeg burde nok 1017 00:44:27,660 --> 00:44:29,470 teste nogle repræsentative tilfælde. 1018 00:44:29,470 --> 00:44:31,070 >> Jeg har testet 42. 1019 00:44:31,070 --> 00:44:33,030 Jeg kunne teste 43. 1020 00:44:33,030 --> 00:44:34,910 Jeg kunne teste 44. 1021 00:44:34,910 --> 00:44:35,640 Test 45. 1022 00:44:35,640 --> 00:44:36,140 Højre? 1023 00:44:36,140 --> 00:44:37,860 Men jeg kunne gøre dette til en virkelig lang tid. 1024 00:44:37,860 --> 00:44:39,925 Hvad ville være nogle flere interessante sager at prøve? 1025 00:44:39,925 --> 00:44:41,050 PUBLIKUM: [uhørligt] nul. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: Så nul. 1027 00:44:41,740 --> 00:44:42,297 Bestemt. 1028 00:44:42,297 --> 00:44:44,880 Og godt, har vi fået det denne gang, takket være Laurens ny kode. 1029 00:44:44,880 --> 00:44:46,213 Hvad er en anden god sag at prøve? 1030 00:44:46,213 --> 00:44:47,320 PUBLIKUM: Negativ én. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: Negativ en, og måske noget lidt større, 1032 00:44:50,070 --> 00:44:52,617 så måske negativ 42, men generelt når 1033 00:44:52,617 --> 00:44:54,450 teste dine programmer bevæger sig fremad, er du 1034 00:44:54,450 --> 00:44:56,325 vil ønsker at tænke til dig selv, som hvad 1035 00:44:56,325 --> 00:44:58,050 er de grundlæggende forskellige tilfælde. 1036 00:44:58,050 --> 00:45:01,720 Og jeg tør sige en negativ sag, en positiv tilfældet, og et nul tilfælde 1037 00:45:01,720 --> 00:45:03,365 temmelig meget afrunder disse ud. 1038 00:45:03,365 --> 00:45:04,990 Lad os se på en variant af denne selv. 1039 00:45:04,990 --> 00:45:06,930 Betingelser én. 1040 00:45:06,930 --> 00:45:11,224 Dette er en korrekt løsning her, så du kan se to og online, 1041 00:45:11,224 --> 00:45:13,390 hvis du går gennem walkthroughs, vil generelt 1042 00:45:13,390 --> 00:45:18,090 tilvækst disse trinvis, indtil vi får præcis den rigtige strategi. 1043 00:45:18,090 --> 00:45:20,070 Hvad hvis vi ønskede at spørge to spørgsmål på én gang? 1044 00:45:20,070 --> 00:45:22,200 >> Lad mig åbne dette i stedet. 1045 00:45:22,200 --> 00:45:26,740 Ikke-switch grunde vi vil se en anden gang. 1046 00:45:26,740 --> 00:45:29,610 Hvad er nyt syntaktisk her? 1047 00:45:29,610 --> 00:45:32,760 Jeg er i øjeblikket spiller et spil hvor computeren fortæller 1048 00:45:32,760 --> 00:45:35,550 mig, giv mig et heltal mellem en og 10, 1049 00:45:35,550 --> 00:45:37,180 og så er jeg at dømme brugerens input. 1050 00:45:37,180 --> 00:45:39,180 På engelsk, baseret på den kode, du ser her 1051 00:45:39,180 --> 00:45:41,530 i blå, hvad dette program gør? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 PUBLIKUM: [uhørligt] plukket et stort eller lille antal. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Ja. 1055 00:45:46,484 --> 00:45:49,450 Det er bare træffer afgørelse om, hvorvidt Jeg plukket en stor eller medium, 1056 00:45:49,450 --> 00:45:53,900 eller mindre antal baseret på en meget vilkårlig definition af små, mellemstore, 1057 00:45:53,900 --> 00:45:58,510 og store her, men varsel syntaksen, der er nyt, er dette. 1058 00:45:58,510 --> 00:46:02,340 Der er ikke mindre end int eller lig med underskrive, eller større end eller lig til at underskrive, 1059 00:46:02,340 --> 00:46:05,430 hvor den ene er over den anden, at man kan udtrykke i ligesom Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Så i et programmeringssprog, du typisk bare gøre to tegn, 1061 00:46:08,180 --> 00:46:09,450 den ene efter den anden. 1062 00:46:09,450 --> 00:46:12,695 Og hvad betyder dette sandsynligvis repræsentere, tegnet tegnet. 1063 00:46:12,695 --> 00:46:13,570 PUBLIKUM: [uhørligt] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Ja. 1065 00:46:13,680 --> 00:46:16,910 Det betyder blot, og fordi det viser sig, at forfatterne af C 1066 00:46:16,910 --> 00:46:19,120 anvendes en enkelt-tegn, som du måske tror 1067 00:46:19,120 --> 00:46:22,430 ville være perfekt til begrebet og er allerede brugt op, 1068 00:46:22,430 --> 00:46:27,300 så tegnet tegnet faktisk indfanger tilfældet, vi faktisk ønsker. 1069 00:46:27,300 --> 00:46:30,610 >> Så lad os nu snuble over to ting. 1070 00:46:30,610 --> 00:46:32,640 Lad mig gå videre og åbne op for en. 1071 00:46:32,640 --> 00:46:36,590 Noget, der er lidt bekymrende. 1072 00:46:36,590 --> 00:46:37,970 Unøjagtighed dot c. 1073 00:46:37,970 --> 00:46:40,260 Lad mig introducere to ting her. 1074 00:46:40,260 --> 00:46:44,720 En, varsel, at vi kan gøre matematik, så lige som før, når 1075 00:46:44,720 --> 00:46:47,797 vi gjorde plus to tal, x og y. 1076 00:46:47,797 --> 00:46:49,380 Hvad er dette program tilsyneladende gør? 1077 00:46:49,380 --> 00:46:52,140 Jeg har ikke kommenteret det endnu, og jeg har introduceret procent f, 1078 00:46:52,140 --> 00:46:55,720 men jeg hurtigt sagde tidligere procent f betyder flydende punkt 1079 00:46:55,720 --> 00:46:56,970 værdi, som er reelt tal. 1080 00:46:56,970 --> 00:46:59,520 Noget med en decimal punkt, som ikke er et heltal. 1081 00:46:59,520 --> 00:47:02,270 Hvad tror du dette program er forsøger at vise mig på skærmen? 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 PUBLIKUM: Resultatet af en over 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Ja. 1086 00:47:07,780 --> 00:47:09,680 Hvad er resultatet af en divideret med 10. 1087 00:47:09,680 --> 00:47:12,721 Ret, fordi alle du har sandsynligvis vokset op vel vidende, at en over 10 1088 00:47:12,721 --> 00:47:14,502 er hvad? 1089 00:47:14,502 --> 00:47:16,220 Ja, det er bare 1/10 eller 0,1. 1090 00:47:16,220 --> 00:47:16,720 Højre? 1091 00:47:16,720 --> 00:47:19,010 Så lad os se, hvad det egentlig er. 1092 00:47:19,010 --> 00:47:21,010 Så lad mig gå videre og gemme denne. 1093 00:47:21,010 --> 00:47:21,970 Lad mig gå ned her. 1094 00:47:21,970 --> 00:47:26,360 Gøre unøjagtigheder dot skråstreg unøjagtighed, og varsel, også, 1095 00:47:26,360 --> 00:47:29,380 i et Linux-miljø, ikke gør du nødt til at skrive ud unøjagtigheder og tage 1096 00:47:29,380 --> 00:47:30,010 hele dagen lang. 1097 00:47:30,010 --> 00:47:32,910 Det generelt, hvis du rammer Tab, det vil afslutte din tanke for dig, 1098 00:47:32,910 --> 00:47:36,660 på grundlag af de ord, der er tilgængelig i den aktuelle mappe. 1099 00:47:36,660 --> 00:47:37,160 OK. 1100 00:47:37,160 --> 00:47:37,970 Så du havde ret. 1101 00:47:37,970 --> 00:47:41,239 En divideret med 10 er i virkeligheden, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Men jeg er lidt nysgerrig. 1103 00:47:42,280 --> 00:47:44,196 Og det viser sig printf understøtter nogle funktioner 1104 00:47:44,196 --> 00:47:48,700 hvor du kan angive mere end standard antallet af decimaler. 1105 00:47:48,700 --> 00:47:52,140 Så hvis jeg ønsker at se 10 decimal punkter, jeg kan gøre procent, 1106 00:47:52,140 --> 00:47:55,510 for pladsholderen symbol dot 10 for, giv mig 10 decimaler, 1107 00:47:55,510 --> 00:47:58,140 og derefter stadig flydende komma værdi, og som en sidebemærkning, 1108 00:47:58,140 --> 00:48:01,550 hvad er dette omvendt skråstreg n tilsyneladende vi holde bruger? 1109 00:48:01,550 --> 00:48:03,450 Det viser sig, det er en symbol for en ny linje. 1110 00:48:03,450 --> 00:48:05,970 Det er den meget eksplicitte måde at sige til computeren, 1111 00:48:05,970 --> 00:48:08,759 flytte markøren til den næste linje efter du er færdig. 1112 00:48:08,759 --> 00:48:10,800 Og vi vil se, hvad der sker når vi ikke gør det. 1113 00:48:10,800 --> 00:48:12,430 >> Lad mig genkompilere gøre unøjagtighed. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Nu dot skråstreg unøjagtighed. 1116 00:48:18,356 --> 00:48:18,930 OK. 1117 00:48:18,930 --> 00:48:19,780 Stadig højre. 1118 00:48:19,780 --> 00:48:21,512 Et divideret med 10. 1119 00:48:21,512 --> 00:48:23,220 Nu er jeg får en lidt nysgerrig, selvom. 1120 00:48:23,220 --> 00:48:27,599 Hvad hvis jeg ser 20 decimal påpeger, rekompilere, gentagelsen, 1121 00:48:27,599 --> 00:48:29,390 og som en sidebemærkning til hastighed, kan du også bruge 1122 00:48:29,390 --> 00:48:31,800 din op og ned pilene til rulle gennem din historie, 1123 00:48:31,800 --> 00:48:35,476 så du ikke behøver at holde genindtastning disse kommandoer, indtaster. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Jeg har ikke lære, at i folkeskolen. 1126 00:48:39,220 --> 00:48:43,260 Okay, så lad mig Se lignende 29 pladser ud. 1127 00:48:43,260 --> 00:48:44,300 Måske er det bare et lykketræf. 1128 00:48:44,300 --> 00:48:46,907 Måske min computer handler underligt. 1129 00:48:46,907 --> 00:48:47,990 Det er ikke en ting, ikke? 1130 00:48:47,990 --> 00:48:50,300 Det gør noget deterministisk. 1131 00:48:50,300 --> 00:48:53,410 Så gør upræcise. 1132 00:48:53,410 --> 00:48:54,890 OK, der er rodet op. 1133 00:48:54,890 --> 00:48:57,620 Så hvad sker der? 1134 00:48:57,620 --> 00:49:00,160 >> Så tilsyneladende din Læreren har ligget 1135 00:49:00,160 --> 00:49:03,900 til jer alle for denne gang for årsager til, at vi vil se inden længe. 1136 00:49:03,900 --> 00:49:05,569 Men lad os slutte med et andet program. 1137 00:49:05,569 --> 00:49:07,860 Dette er lidt programmer nogen skrev for nogle år siden, 1138 00:49:07,860 --> 00:49:08,990 og det er faktisk en del af en konkurrence. 1139 00:49:08,990 --> 00:49:11,198 Ingen faktisk skriver kode som dette, og hvis du gør, 1140 00:49:11,198 --> 00:49:12,880 dette er stilistisk et problem. 1141 00:49:12,880 --> 00:49:14,660 Men folk gør dette for håneret. 1142 00:49:14,660 --> 00:49:17,260 For at skrive den mest forvirrende søger program, 1143 00:49:17,260 --> 00:49:19,110 alligevel gør noget interessant. 1144 00:49:19,110 --> 00:49:23,930 Og noten jeg troede, vi ville forlade dag, før Colton spiller os ud her, 1145 00:49:23,930 --> 00:49:27,840 er at køre dette program, der, selv i bare at bruge 1146 00:49:27,840 --> 00:49:31,450 C i denne tekst-baserede miljø, giver os dette. 1147 00:49:31,450 --> 00:49:32,264 Dammit. 1148 00:49:32,264 --> 00:49:34,930 >> [Latter] 1149 00:49:34,930 --> 00:49:36,800 >> Stå ved. 1150 00:49:36,800 --> 00:49:39,340 [Uhørligt] c Dash l m. 1151 00:49:39,340 --> 00:49:42,885 Du kommer til at se den magiske besværgelse, at vi vil se inden længe. 1152 00:49:42,885 --> 00:49:45,780 [Uhørligt] Okay. 1153 00:49:45,780 --> 00:49:51,592 Og nu kan du endda gøre ting som dette. 1154 00:49:51,592 --> 00:49:52,340 Det er det. 1155 00:49:52,340 --> 00:49:56,410 For CS50 vi vil se dig på fredag. 1156 00:49:56,410 --> 00:49:58,910 >> [Musik spiller] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Applaus] 1159 00:52:41,440 --> 00:52:42,812