1 00:00:00,000 --> 00:00:01,500 >> [Musikk spilles] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Greit dette er CS50 og dette er slutten på en uke. 4 00:00:16,110 --> 00:00:20,760 Så jeg vil gjerne presentere min tidligere advisee, Andel Duff, som ikke bare gjør 5 00:00:20,760 --> 00:00:25,460 iPhone 5 står, så vel som dette talerstol, han gjør også biler. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 ANSEL DUFF: Hvordan går det, alle sammen? 8 00:00:29,510 --> 00:00:31,980 Jeg vil bare fortelle deg litt litt om Formula SAE, som jeg 9 00:00:31,980 --> 00:00:32,604 er kaptein. 10 00:00:32,604 --> 00:00:33,437 Det er en MIT team. 11 00:00:33,437 --> 00:00:35,520 Jeg vil bare fortelle deg gutta litt om det 12 00:00:35,520 --> 00:00:37,520 og forhåpentligvis generere litt interesse. 13 00:00:37,520 --> 00:00:41,590 >> Så la meg bare kjøre gjennom en par ting om vårt team. 14 00:00:41,590 --> 00:00:43,640 Så vi er helt student løp, hvor alle 15 00:00:43,640 --> 00:00:47,300 av medlemmene design, simulere, test, og produsenten et delsystem 16 00:00:47,300 --> 00:00:48,090 av bilen. 17 00:00:48,090 --> 00:00:51,240 Vi har vår egen maskinverksted og garasjer, og N52-- eller beklager, 18 00:00:51,240 --> 00:00:54,140 N51-- som er samme bygning som MIT Science Museum. 19 00:00:54,140 --> 00:00:55,990 Og vi er mennesker som kjører bilen. 20 00:00:55,990 --> 00:00:58,340 Det er en nasjonal konkurranse i begynnelsen av sommeren, 21 00:00:58,340 --> 00:01:01,215 og så er det mindre shootout konkurranser gjennom hele året. 22 00:01:01,215 --> 00:01:04,400 Og så gjør vi driver opplæring dager å få nye medlemmer kjent. 23 00:01:04,400 --> 00:01:08,280 >> Våre bygge dager er på Lørdager fra 11 AM til 20:00. 24 00:01:08,280 --> 00:01:11,060 Lunsj og middag er å ta vare av, fra Bertucci og Beantown 25 00:01:11,060 --> 00:01:12,130 respektivt. 26 00:01:12,130 --> 00:01:15,260 Vi har et ukentlig møte og Seminaret, som er for selvfølgelig kreditt. 27 00:01:15,260 --> 00:01:18,560 Som er ny fra og med dette semesteret, og det vil også være for neste semester, 28 00:01:18,560 --> 00:01:19,940 slik at du kan kryss-reg for det. 29 00:01:19,940 --> 00:01:22,960 Og så har vi designe, butikk, og CAD dager i uken, 30 00:01:22,960 --> 00:01:26,870 mens medlemmer vil uavhengig CAD-deler, ordre et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Så for elektrisk teknikk ved lag 32 00:01:29,200 --> 00:01:31,110 vi har vår trekkraft, høyspenningssystem, 33 00:01:31,110 --> 00:01:33,390 som går på en nominell 300 volt, som omfatter 34 00:01:33,390 --> 00:01:35,360 motorer, motorstyringer, og batteripakker. 35 00:01:35,360 --> 00:01:37,235 Da har vi en lav spenningssystem, som går 36 00:01:37,235 --> 00:01:40,180 ved 12 volt, som omfatter kontrollene kan noder, hjernen 37 00:01:40,180 --> 00:01:41,570 boks, og dashbordet. 38 00:01:41,570 --> 00:01:43,890 Så langt CS går, gjør vi har nettstedet vedlikehold 39 00:01:43,890 --> 00:01:47,940 at vi trenger gjort for hendelser, medlemskap endringer, nye bilder, og PR materiale. 40 00:01:47,940 --> 00:01:51,540 Og så har vi kode som styrer bil for våre antispinn, lansering 41 00:01:51,540 --> 00:01:55,750 kontroll, dash kontroll, dreiemoment vectoring, og regenerative bremsesystemer, som 42 00:01:55,750 --> 00:01:59,170 kjøre typisk i MATLAB, Simulink og LabView. 43 00:01:59,170 --> 00:02:00,910 >> Fortell deg litt om bilen. 44 00:02:00,910 --> 00:02:02,470 Så det er ca 500 pounds. 45 00:02:02,470 --> 00:02:04,285 Det er regler begrenset til 85 kilowatt. 46 00:02:04,285 --> 00:02:08,310 Den har 2 EMRAX 207 motorer i tilbake, en for hvert bakhjul. 47 00:02:08,310 --> 00:02:11,880 Den har spesialbygde batterier fra Prisme A123 posen celler, 48 00:02:11,880 --> 00:02:14,780 totalt 300 volt og 5,6 kilowattimer. 49 00:02:14,780 --> 00:02:17,950 Og det er direkte stasjonen med en 2,64 til 1 utvekslingsforhold. 50 00:02:17,950 --> 00:02:20,970 Her er noen bilder vi tok av det på konkurranse. 51 00:02:20,970 --> 00:02:25,820 Her er baksiden, nese kjegle, og her er de motorene, 52 00:02:25,820 --> 00:02:29,682 de store svarte disker under et herre manus. 53 00:02:29,682 --> 00:02:32,140 Her er et bilde som jeg trakk ut av vår konkurranse ordningen. 54 00:02:32,140 --> 00:02:35,389 Og dette er bare å sammenligne vår bil til en par kommersielt tilgjengelige biler, 55 00:02:35,389 --> 00:02:38,380 som KTM XBOW, Ariel Atom, og Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Hvis du er kjent med prisen, makt trekke vekt, dollar per hestekraft, 57 00:02:42,110 --> 00:02:44,930 dollar per dreiemoment, og vår bil blåser dem ut av vannet. 58 00:02:44,930 --> 00:02:47,520 Hvis du har spørsmål, notere ned denne e-postadressen. 59 00:02:47,520 --> 00:02:50,800 Skyte oss en epost på fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Vi er glade for å snakke om noe du ønsker. 61 00:02:53,350 --> 00:02:55,600 Harvard studenter er snill av minoritets på laget. 62 00:02:55,600 --> 00:02:58,350 Hvis du har spørsmål om at vennligst skyte oss en mail, 63 00:02:58,350 --> 00:03:00,810 glade for å snakke, og jeg kommer å dra tilbake over til David. 64 00:03:00,810 --> 00:03:01,550 Takk. 65 00:03:01,550 --> 00:03:02,466 Jeg setter pris på det, folkens. 66 00:03:02,466 --> 00:03:03,615 [APPLAUSE] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel tilbrakte sommeren jobbe med oss ​​her på campus i CS50 69 00:03:10,980 --> 00:03:11,480 denne sommeren. 70 00:03:11,480 --> 00:03:13,505 Og i tillegg til å arbeide på ting som de binære pærer, 71 00:03:13,505 --> 00:03:16,090 han faktisk virkelig åpnet vår eyes-- og gruve i particular-- 72 00:03:16,090 --> 00:03:20,535 til det som virkelig krysset av ikke av maskinvare og programvare kan være. 73 00:03:20,535 --> 00:03:23,410 Faktisk mye av de tingene han bare turnert deg gjennom er slutt 74 00:03:23,410 --> 00:03:26,030 opprettet først i programvare, og deretter til slutt fremstille 75 00:03:26,030 --> 00:03:27,299 i den virkelige verden i maskinvare. 76 00:03:27,299 --> 00:03:29,590 Så hvis du er interessert i utforske det krysset, 77 00:03:29,590 --> 00:03:31,430 kanskje ta opp den gruppen. 78 00:03:31,430 --> 00:03:34,140 >> Nå i mellomtiden, de av dere som er fans av teknologi, 79 00:03:34,140 --> 00:03:36,140 og Apple-produkter i Spesielt vet at det 80 00:03:36,140 --> 00:03:37,860 var et par kunngjøringer i går. 81 00:03:37,860 --> 00:03:39,776 Men vi tenkte at vi skulle vise du en som kom ut 82 00:03:39,776 --> 00:03:43,590 noen dager før den du kanskje ikke har sett. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Du vet, gang på en stund noe 84 00:03:46,150 --> 00:03:49,540 kommer sammen som endrer måten vi lever. 85 00:03:49,540 --> 00:03:53,479 En enhet så enkelt og intuitivt bruke det føles nesten familiær. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Vi presenterer 2015 IKEA-katalogen. 88 00:04:04,138 --> 00:04:10,420 Det er ikke en digital bok eller en e-bok, det er en bok-bok. 89 00:04:10,420 --> 00:04:14,440 >> Den første tingen å merke seg er ingen kabler, ikke engang en strømkabel. 90 00:04:14,440 --> 00:04:18,519 2015 IKEA-katalogen kommer fulladet, 91 00:04:18,519 --> 00:04:20,550 og batterilevetiden er evig. 92 00:04:20,550 --> 00:04:27,300 Grensesnittet er 7.5 med 8 inches, men også utvide til 15 av 8 inches. 93 00:04:27,300 --> 00:04:32,410 Navigasjonen er basert på taktil berøring teknologi som du faktisk kan føle. 94 00:04:32,410 --> 00:04:37,120 >> Innhold leveres forhåndsinstallert via 328 HD-sider 95 00:04:37,120 --> 00:04:40,180 av inspirerende interiørtrenden ideer. 96 00:04:40,180 --> 00:04:43,740 For å begynne å bla, bare berøre og dra. 97 00:04:43,740 --> 00:04:50,870 Høyre til venstre for å bevege seg fremover, venstre til høyre for å bevege seg bakover. 98 00:04:50,870 --> 00:04:52,770 >> Legg merke til noe annet? 99 00:04:52,770 --> 00:04:53,780 Det er riktig. 100 00:04:53,780 --> 00:04:55,190 Ingen lag. 101 00:04:55,190 --> 00:04:58,400 Hver krystallklare side laster umiddelbart, 102 00:04:58,400 --> 00:05:00,586 uansett hvor fort du ruller. 103 00:05:00,586 --> 00:05:03,710 Hvis du ønsker å få en rask oversikt bare hold den i håndflaten din, 104 00:05:03,710 --> 00:05:06,816 og ved hjelp av tommelen, hastighet bla i innholdet. 105 00:05:06,816 --> 00:05:10,930 >> Hvis du finner noe du ønsker å lagre til senere, kan du bare bokmerke den. 106 00:05:10,930 --> 00:05:17,620 Og selv om du lukker programmet, kan du enkelt finne bokmerket igjen. 107 00:05:17,620 --> 00:05:18,490 Amazing. 108 00:05:18,490 --> 00:05:20,434 >> [Latter] 109 00:05:20,434 --> 00:05:21,406 [APPLAUSE] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Så det bringer oss til slutten av uken en. 112 00:05:29,870 --> 00:05:31,760 Noen kunngjøringer bedriften. 113 00:05:31,760 --> 00:05:33,440 Så seksjonering er nå pågår. 114 00:05:33,440 --> 00:05:36,860 Gå til denne nettadressen her en gang mellom nå og fredag ​​midt på dagen 115 00:05:36,860 --> 00:05:39,960 å faktisk oppgi om du er blant de mindre komfortable, mer 116 00:05:39,960 --> 00:05:41,690 komfortabel, eller et sted i mellom. 117 00:05:41,690 --> 00:05:44,511 >> Dette er vanligvis en av disse ting som du bare slags kjenner. 118 00:05:44,511 --> 00:05:47,510 Og faktisk de av dere som er mindre komfortabel sikkert vet så mye, 119 00:05:47,510 --> 00:05:49,634 de av dere som er mer komfortabel vite så mye, 120 00:05:49,634 --> 00:05:54,960 og igjen hvis du ikke er helt sikker på hvilken av disse bøtter du faller inn du er 121 00:05:54,960 --> 00:05:56,210 trolig et sted i mellom. 122 00:05:56,210 --> 00:05:59,810 Men være trygg på at du kan bytte etter et par uker hvis behovet være. 123 00:05:59,810 --> 00:06:02,620 >> I mellomtiden, for den kommende uken Vi starter ikke seksjoner per se, 124 00:06:02,620 --> 00:06:04,760 men super seksjoner, som er åpent for alle studenter. 125 00:06:04,760 --> 00:06:08,220 Førstkommende søndag på et sted å bli annonsert på kurset hjemmeside 126 00:06:08,220 --> 00:06:10,190 vi vil ha en for de mindre komfortable, 127 00:06:10,190 --> 00:06:12,470 så vel som en for de mer behagelig. 128 00:06:12,470 --> 00:06:15,460 Og de et sted i mellom kan velge hvilke av disse to, 129 00:06:15,460 --> 00:06:17,360 eller begge deler hvis du ønsker å sitte i på. 130 00:06:17,360 --> 00:06:19,630 Og fokus for de blir til slutt på C, 131 00:06:19,630 --> 00:06:22,440 som vi vil fortsette vår samtale i dag. 132 00:06:22,440 --> 00:06:25,070 >> Problem satt 0 i mellomtiden er forhåpentligvis i hendene. 133 00:06:25,070 --> 00:06:27,500 Offisielt forfaller i morgen, Torsdag, midt på dagen. 134 00:06:27,500 --> 00:06:29,490 Med mindre du kontanter i ett av dine 5 sene dager, 135 00:06:29,490 --> 00:06:31,780 som ville bringe det til fredag ​​midt på dagen. 136 00:06:31,780 --> 00:06:34,420 Problem satt en i mellomtiden vil være lagt ut på kursets hjemmeside. 137 00:06:34,420 --> 00:06:37,381 Og dette vil bli vår første streiftog som en klasse i C. 138 00:06:37,381 --> 00:06:40,630 Og det problemet satt spec vil lede deg gjennom mye av mekanikken i hva 139 00:06:40,630 --> 00:06:43,960 vi begynte å snakke om på mandag, og vi vil fortsette å snakke om i dag. 140 00:06:43,960 --> 00:06:46,770 C, Linux, den CS50 apparatet, alt dette 141 00:06:46,770 --> 00:06:48,990 venter deg i spesifikasjonen. 142 00:06:48,990 --> 00:06:52,840 >> Arbeidstid i mellomtiden er i gang, i lavere spisesalen. 143 00:06:52,840 --> 00:06:56,240 Hodet til denne nettadressen her for å se den planlegge for i kveld og i morgen, 144 00:06:56,240 --> 00:06:57,930 Hvis du ønsker å delta. 145 00:06:57,930 --> 00:07:01,920 Spørsmål i mellomtiden, slik at du har muligheter til å stille spørsmål 146 00:07:01,920 --> 00:07:05,860 asynkront, 24/7, skjønner du er ikke begrenset til seksjoner og kontor 147 00:07:05,860 --> 00:07:09,530 time, men heller dette verktøy her, CS50 Diskuter på denne nettadressen 148 00:07:09,530 --> 00:07:12,150 vil være kursets online oppslagstavle programvare, via hvilke 149 00:07:12,150 --> 00:07:15,030 du kan stille spørsmål til klassekamerater og også ansatte. 150 00:07:15,030 --> 00:07:18,492 Så husk at ressursen også. 151 00:07:18,492 --> 00:07:20,200 I mellomtiden en tradisjon starter denne fredagen. 152 00:07:20,200 --> 00:07:23,200 Som du kanskje har observert fra siste onsdagens teaser video, 153 00:07:23,200 --> 00:07:25,510 vi har en tradisjon mest hver fredag ​​i semesteret 154 00:07:25,510 --> 00:07:28,750 for å ta om lag 50 studenter og ansatte til en lokal restaurant som heter 155 00:07:28,750 --> 00:07:31,510 Fire and Ice, hvor vi er typisk selskap av noen alumni 156 00:07:31,510 --> 00:07:33,850 eller venner fra industrien å generelt strebe 157 00:07:33,850 --> 00:07:35,780 for å lage en stor klasse føles mindre. 158 00:07:35,780 --> 00:07:37,560 Så det er en helt uformell lunsj. 159 00:07:37,560 --> 00:07:40,160 En gjeng av oss, de ansatte spesielt, vil spille musikalske stoler 160 00:07:40,160 --> 00:07:43,360 og prate med elevene om 50, liv utenfor 50, 161 00:07:43,360 --> 00:07:46,510 liv i fremtiden, den virkelige verden, Jeg snakker om jobbmuligheter 162 00:07:46,510 --> 00:07:47,680 med venner i bransjen. 163 00:07:47,680 --> 00:07:51,110 >> Så hvis du ønsker å bli med oss denne fredagen, hodet til denne nettadressen her. 164 00:07:51,110 --> 00:07:54,180 Plassen er begrenset, men vi vil gjøre dette recurringly gjennom begrepet. 165 00:07:54,180 --> 00:07:57,380 Hodet der å cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 Og hvis du ikke får i denne gangen, for ikke å bekymre deg. 167 00:07:59,380 --> 00:08:02,390 Vi vil gjøre det igjen i de kommende ukene også. 168 00:08:02,390 --> 00:08:05,434 >> Så dette er bildet vi malte i forrige uke, 169 00:08:05,434 --> 00:08:07,350 og du har trolig vært sysle i hittil. 170 00:08:07,350 --> 00:08:10,360 Men la oss prøve å koble dette nå til hva vi skal gjøre i dag 171 00:08:10,360 --> 00:08:11,440 og videre. 172 00:08:11,440 --> 00:08:14,760 Kan jeg få en frivillig? 173 00:08:14,760 --> 00:08:16,000 Greit, eller flere. 174 00:08:16,000 --> 00:08:18,460 Hva med her på slutt, i det blå konstante. 175 00:08:18,460 --> 00:08:20,329 Kom opp, hva heter du? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Så Alana, for bare en moment-- hyggelig å møte du-- 179 00:08:25,100 --> 00:08:28,260 kommer til å spille rollen av denne funksjonen her. 180 00:08:28,260 --> 00:08:31,290 Den lilla blokken vi har kalt hittil en funksjon. 181 00:08:31,290 --> 00:08:34,830 Så det jeg kommer til å gå foran her og tilby Alana 182 00:08:34,830 --> 00:08:38,380 er litt navn signal, for å gjøre klart hvilken rolle du spiller. 183 00:08:38,380 --> 00:08:39,753 >> Så du skal være si blokk. 184 00:08:39,753 --> 00:08:41,419 Hvis du ønsker å gå videre og sette det på. 185 00:08:41,419 --> 00:08:43,169 Og vi kommer til å holde denne super enkelt. 186 00:08:43,169 --> 00:08:46,180 Hvis målet for hånden er rett og slett nå å gjennomføre med Benedicte, 187 00:08:46,180 --> 00:08:49,710 Dette såkalte si blokk, her er hvordan det kommer til å fungere. 188 00:08:49,710 --> 00:08:52,574 Jeg have-- la oss kalle det et argument eller parameter, 189 00:08:52,574 --> 00:08:54,240 det er egentlig bare et blankt ark. 190 00:08:54,240 --> 00:08:57,239 Og det er hvit til slags være minner av den hvite boksen der du 191 00:08:57,239 --> 00:08:58,080 kan skrive ord. 192 00:08:58,080 --> 00:09:00,660 >> I mellomtiden kommer jeg til å gå her. 193 00:09:00,660 --> 00:09:06,560 Jeg kommer til å gå videre og skrive H-E-L-L-O komma verden. 194 00:09:06,560 --> 00:09:09,972 Og nå har jeg, som sier programmereren, ikke faktisk vet hvordan jeg skal si noe. 195 00:09:09,972 --> 00:09:12,180 Jeg kan komme opp med ordene, men jeg gjør ikke nødvendigvis 196 00:09:12,180 --> 00:09:15,220 vet hvordan de skal uttrykke meg verbalt eller på skjermen. 197 00:09:15,220 --> 00:09:17,280 Og så hva jeg skal å gjøre er å ta dette stykket 198 00:09:17,280 --> 00:09:21,157 av funksjonalitet, hvis input-- eller argument, som vi kaller det, 199 00:09:21,157 --> 00:09:23,990 Jeg har skrevet om dette stykke paper-- og jeg kommer til å outsource det. 200 00:09:23,990 --> 00:09:26,831 >> Og ja det er den rollen som funksjoner i et programmeringsspråk 201 00:09:26,831 --> 00:09:27,330 kan spille. 202 00:09:27,330 --> 00:09:29,246 Noe som sier blokk kan bli outsourcet 203 00:09:29,246 --> 00:09:32,074 til noen som virkelig vet hva hun eller han snakker om. 204 00:09:32,074 --> 00:09:33,990 Så hvis du vil gå over her for bare et øyeblikk, 205 00:09:33,990 --> 00:09:40,092 Jeg kommer til å passere denne inngangen til Benedicte, og ber om at du sier dette innspill. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Hei, verden. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Det er det. 208 00:09:42,160 --> 00:09:43,326 Slik at det er en funksjon. 209 00:09:43,326 --> 00:09:46,556 Nå kan vi ta det litt mer, vi kan ta et skritt frem her. 210 00:09:46,556 --> 00:09:48,180 Fordi det var tydelig uimponerende. 211 00:09:48,180 --> 00:09:51,670 Så la oss nå konvertere dette til noe litt mer sofistikert. 212 00:09:51,670 --> 00:09:53,630 >> Så dette er selvfølgelig vår C-versjonen. 213 00:09:53,630 --> 00:09:56,760 Så nå hvis du vil ta den en av, det navnet tag av, 214 00:09:56,760 --> 00:09:58,530 og la oss har du legger på et nytt navn. 215 00:09:58,530 --> 00:10:00,850 Men fundamentalt du er spille samme rolle, 216 00:10:00,850 --> 00:10:03,400 det bare så skjer for å bli kalt printf nå. 217 00:10:03,400 --> 00:10:06,930 >> Historien er, selvfølgelig, kommer til å be-- trolig 218 00:10:06,930 --> 00:10:09,317 akkurat som underwhelming-- er kommer til å være følgende. 219 00:10:09,317 --> 00:10:10,650 Du er nå den funksjonen printf. 220 00:10:10,650 --> 00:10:13,300 Jeg er den som ringer, eller programmerer, som ønsker 221 00:10:13,300 --> 00:10:15,745 å stå på skuldrene til mennesker i fortiden som deg, 222 00:10:15,745 --> 00:10:18,670 som allerede har funnet ut hvordan å faktisk skrive noe ned. 223 00:10:18,670 --> 00:10:20,650 Og så denne periode heller enn å si det la oss 224 00:10:20,650 --> 00:10:22,255 bruker faktisk vår skjermen over her. 225 00:10:22,255 --> 00:10:24,130 Så hvis du ønsker å gå over her, jeg kommer 226 00:10:24,130 --> 00:10:27,196 til å passere igjen dette som innspill til min printf venn. 227 00:10:27,196 --> 00:10:29,320 Hvis du kunne gå videre og skrive ut som på skjermen, 228 00:10:29,320 --> 00:10:31,611 rett og slett ved å tegne med din finger på den svarte skjermen. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Utmerket. 231 00:10:44,180 --> 00:10:47,350 Ok, så det er mye spenning for hvordan det skulle spille ut. 232 00:10:47,350 --> 00:10:51,390 >> Så nå la oss ta ting opp én endelig hakk, hvis vi kunne, som følger. 233 00:10:51,390 --> 00:10:53,980 Så dette er et C-program som vi sa sist gang. 234 00:10:53,980 --> 00:10:57,460 Og dette bare gjør det du gjorde, det skrives ut til skjermen, hallo, verden. 235 00:10:57,460 --> 00:11:00,290 Selv om det er tydelig mye av distraherende ting der oppe. 236 00:11:00,290 --> 00:11:03,630 Men la oss ta ting opp et hakk og introdusere denne versjonen, som husker 237 00:11:03,630 --> 00:11:06,160 var den tredje versjonen som vi endte opp med forrige gang. 238 00:11:06,160 --> 00:11:09,120 >> Og nå er det klart to bruk av printf. 239 00:11:09,120 --> 00:11:12,280 Det er to samtaler til Alana i dette tilfellet for printf, 240 00:11:12,280 --> 00:11:14,740 men det er også en samtale til en annen funksjon. 241 00:11:14,740 --> 00:11:17,150 Hva er det funksjon tydelig? 242 00:11:17,150 --> 00:11:17,650 Getstring. 243 00:11:17,650 --> 00:11:18,980 >> Kan vi få en mer frivillig? 244 00:11:18,980 --> 00:11:20,980 OK, kom igjen opp. 245 00:11:20,980 --> 00:11:21,805 Hva heter du? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, kom opp. 248 00:11:24,750 --> 00:11:27,270 Så Javier rolle er på dette stykke papir. 249 00:11:27,270 --> 00:11:28,860 Som jeg kommer til å ringe generisk s. 250 00:11:28,860 --> 00:11:32,250 Nå er dette en variabel, det er av type streng, som underforstått 251 00:11:32,250 --> 00:11:34,290 ved at andre linjen i midten der. 252 00:11:34,290 --> 00:11:36,540 Og jeg vil at du skal gå få meg en streng. 253 00:11:36,540 --> 00:11:40,120 Spesielt hodet ned til orkesteret seksjon og få meg navnet på noen, 254 00:11:40,120 --> 00:11:43,142 og komme tilbake med en variabel inneholdende den verdien. 255 00:11:43,142 --> 00:11:44,225 Det kan være hvem du vil. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Here we go. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Greit, er Javier å skrive ned navnet. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Greit. 262 00:12:03,280 --> 00:12:05,740 Vi kan vel alle gjette hvordan dette kommer til å spille ut. 263 00:12:05,740 --> 00:12:07,489 Vi er kanskje belaboring poenget med hva 264 00:12:07,489 --> 00:12:10,320 en funksjon er å gjøre, men likevel takke deg veldig mye. 265 00:12:10,320 --> 00:12:13,890 >> Så Javier har returnert denne strengen her, som, kan ikke helt se, 266 00:12:13,890 --> 00:12:15,800 Jonathan er strengen som vi har fått. 267 00:12:15,800 --> 00:12:18,330 Så nå hva jeg faktisk kommer å gi til Alana skjønt 268 00:12:18,330 --> 00:12:20,150 er noe litt annerledes. 269 00:12:20,150 --> 00:12:23,800 Fordi i denne versjon av program, først er det oppgi navn. 270 00:12:23,800 --> 00:12:26,160 Så den aller første argumentet Jeg trenger å gi Alana 271 00:12:26,160 --> 00:12:33,030 med kommer til å være bokstavelig talt oppgi navn. 272 00:12:33,030 --> 00:12:35,280 Greit, så enkelt er det Jeg vil gi dette til deg. 273 00:12:35,280 --> 00:12:36,730 Og som jeg skriver opp neste argument, hvis du 274 00:12:36,730 --> 00:12:39,230 ønsker å gå videre og skrive dette på bordet, la oss gå videre 275 00:12:39,230 --> 00:12:42,659 og gjøre den siste eksempel her for å gjøre fjerne det som til slutt nødt til å skje. 276 00:12:42,659 --> 00:12:44,450 Så oppgi ditt navn, skrive det mot toppen 277 00:12:44,450 --> 00:12:47,220 hvis du ikke tankene, bare slik at vi har plass til en annen linje. 278 00:12:47,220 --> 00:12:52,890 Fordi det siste jeg kommer å nå gi deg er ikke bare én, 279 00:12:52,890 --> 00:12:57,220 men to stykker av papir. 280 00:12:57,220 --> 00:12:58,074 >> Greit. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O komma og deretter en blank linje. 282 00:13:01,920 --> 00:13:04,780 Så det jeg er i ferd med å levere Alana nå er noe litt annerledes. 283 00:13:04,780 --> 00:13:08,600 Ikke bare er hun å få dette, hvor fylle de tomme representerer 284 00:13:08,600 --> 00:13:12,050 som percent-- hva som var plassholder vi har brukt? 285 00:13:12,050 --> 00:13:13,890 Ja, så prosent s. 286 00:13:13,890 --> 00:13:16,530 I mellomtiden kommer jeg til å passere henne i et annet argument, som 287 00:13:16,530 --> 00:13:19,290 er nettopp hva Javier hentet fra Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Så la meg gi deg disse to. 289 00:13:20,534 --> 00:13:22,575 Hvis du ønsker å gå foran og skrive ut den effekten. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Hva er det som til slutt skjer nå er, Alana igjen 292 00:13:28,130 --> 00:13:29,410 spiller rollen som printf. 293 00:13:29,410 --> 00:13:32,160 Javier spilte rollen GetString. 294 00:13:32,160 --> 00:13:34,700 Så det vil være din souvenir. 295 00:13:34,700 --> 00:13:39,910 Og til slutt hva som skjer, til tross for dette hello-- yep gå videre og komma. 296 00:13:39,910 --> 00:13:41,410 ALANA: Sa jeg får denne ennå, eller nei? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Jepp, du fikk dem begge samtidig. 298 00:13:43,451 --> 00:13:45,740 Så ideen er at du Nå kan snu siden 299 00:13:45,740 --> 00:13:50,000 å behandle den andre av de to inngangene. 300 00:13:50,000 --> 00:13:53,280 Så dette er bare å hamre hjem påpeke at mens Alana henrettet 301 00:13:53,280 --> 00:13:55,830 denne grønne linjen her, og deretter Javier gjorde dette for oss 302 00:13:55,830 --> 00:13:57,820 og gå tilbake til meg noe vi kaller s, men det var virkelig 303 00:13:57,820 --> 00:13:59,520 bare det stykke papir av sine egne. 304 00:13:59,520 --> 00:14:02,320 Og nå Alana har gjort denne tredje linjen. 305 00:14:02,320 --> 00:14:06,010 >> Og selv om alt dette ser så utrolig kryptisk kanskje 306 00:14:06,010 --> 00:14:08,870 ved første øyekast, er det virkelig er så enkelt som det. 307 00:14:08,870 --> 00:14:11,390 Passerer innganger rundt, får utganger, enten 308 00:14:11,390 --> 00:14:14,560 blir fysisk levert tilbake noe, eller se en bivirkning som dette. 309 00:14:14,560 --> 00:14:17,170 Noe visuelt skrevet på skjermen. 310 00:14:17,170 --> 00:14:19,990 Så la oss gå videre og takke Benedicte og Javier, 311 00:14:19,990 --> 00:14:25,012 som var her nede, for bli med oss ​​her oppe. 312 00:14:25,012 --> 00:14:25,934 >> [APPLAUSE] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Så nå la oss ta for gitt akkurat hvordan grei alt dette kan være. 315 00:14:33,480 --> 00:14:36,775 Og la oss fortsette å faktisk gjøre noe i selve koden. 316 00:14:36,775 --> 00:14:40,620 Så opp på skjermen her er et skjermbilde av den såkalte CS50 apparatet. 317 00:14:40,620 --> 00:14:43,980 Og hvis du måtte på, som en 02:00 på onsdag ettermiddag, 318 00:14:43,980 --> 00:14:46,602 forklare til noen venn hva CS50 apparatet er, 319 00:14:46,602 --> 00:14:48,185 hvordan vil du definere det i en setning? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Enhver én setning? 322 00:14:53,240 --> 00:14:54,876 Yeah? 323 00:14:54,876 --> 00:14:57,334 STUDENT: Det er som et program som gjør alles datamaskin 324 00:14:57,334 --> 00:14:58,460 drives med det samme systemet. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Good! 326 00:14:59,210 --> 00:15:02,810 Det er et program som gjør at alles datamaskin til å løpe med samme system. 327 00:15:02,810 --> 00:15:04,920 Det er liksom din egen kopi av et drifts 328 00:15:04,920 --> 00:15:07,540 system som skjer med bli kalt Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 Og det går effektivt innsiden av et vindu på din egen Mac eller PC, 330 00:15:11,070 --> 00:15:15,080 slik at på denne måten rett ut av porten i uke 1, alle her i klassen 331 00:15:15,080 --> 00:15:17,590 har tilgang til de samme verktøyene, samme konfigurasjon, 332 00:15:17,590 --> 00:15:21,250 og det er ingen læringskurve bestemt til en Mac eller en PC i særdeleshet. 333 00:15:21,250 --> 00:15:25,620 >> Nå åpnes vi opp innsiden av CS50 apparatet på mandag, dette programmet her. 334 00:15:25,620 --> 00:15:27,040 Det skjer for å bli kalt gedit. 335 00:15:27,040 --> 00:15:29,050 Men det er egentlig bare en grafisk editor. 336 00:15:29,050 --> 00:15:33,170 Det er noe som Notisblokk eller Tekst Redigere på Windows eller Mac OS hhv. 337 00:15:33,170 --> 00:15:36,720 Og jeg foreslått at det var virkelig tre viktige deler til denne skjermen. 338 00:15:36,720 --> 00:15:39,560 Oversiden er der du ville skrive koden din. 339 00:15:39,560 --> 00:15:44,080 Og det er der vi brukte mye av vår tre eksempler i mandagens foredrag. 340 00:15:44,080 --> 00:15:47,650 Bunnen vi kalte det, denne sorte vinduet, ja? 341 00:15:47,650 --> 00:15:48,640 >> STUDENT: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Compiler vi åpnes ved hjelp av dette vinduet. 343 00:15:51,500 --> 00:15:53,040 Men mer generelt. 344 00:15:53,040 --> 00:15:54,540 Ja, det var bare et terminalvindu. 345 00:15:54,540 --> 00:15:57,780 Dette er et år gammelt begrep som bare beskriver i hovedsak en blinkende 346 00:15:57,780 --> 00:16:01,910 teksten, at år siden brukt til å være på en av de store CRT stil skjermer. 347 00:16:01,910 --> 00:16:04,300 Men i dag er det liksom virtuell i programvare. 348 00:16:04,300 --> 00:16:06,710 Og terminalen vinduer lar oss skrive kommandoer. 349 00:16:06,710 --> 00:16:11,750 Den slags forenklet versjon av brukergrensesnittet eller UI. 350 00:16:11,750 --> 00:16:14,060 Det er ikke en grafisk brukergrensesnitt eller GUI, 351 00:16:14,060 --> 00:16:17,250 det er et tekstbasert grensesnitt eller en kommandolinje-grensesnitt. 352 00:16:17,250 --> 00:16:20,770 >> Og ja det er der til slutt Jeg var i stand til å skrive litt kode. 353 00:16:20,770 --> 00:16:24,200 Når jeg hadde skrevet noen kode skjønt, husker at jeg brukte denne kommandoen. 354 00:16:24,200 --> 00:16:26,210 Og som det navnet slags antyder, dette 355 00:16:26,210 --> 00:16:29,860 tillater meg å gjøre en program kalt Hei. 356 00:16:29,860 --> 00:16:33,400 Men hva var det egentlig gjør? 357 00:16:33,400 --> 00:16:36,180 Vel make tok min input, min kildekode, 358 00:16:36,180 --> 00:16:39,380 og konvertere det til hva, til slutt? 359 00:16:39,380 --> 00:16:40,060 >> Objektkode. 360 00:16:40,060 --> 00:16:42,790 Og objektkode er bare en fancy måte å si nuller og enere. 361 00:16:42,790 --> 00:16:46,420 Og så når jeg ønsket å kjøre som objektkode, 362 00:16:46,420 --> 00:16:50,940 når jeg ønsket å passere som input de nuller og enere inn i datamaskinens 363 00:16:50,940 --> 00:16:54,430 hjernen, den såkalte CPU eller sentralenhet, 364 00:16:54,430 --> 00:16:55,730 Jeg måtte kjøre programmet. 365 00:16:55,730 --> 00:16:59,042 Men det var ikke helt enkelt på mandag så bare å dobbeltklikke noen ikonet. 366 00:16:59,042 --> 00:17:01,375 Hva i stedet gjorde jeg må gjøre for å kjøre et program? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Hva var det nestkommanderende? 369 00:17:07,890 --> 00:17:09,619 Jeg hører litt skråstreker? 370 00:17:09,619 --> 00:17:10,544 Ja, ja? 371 00:17:10,544 --> 00:17:12,474 >> STUDENT: Dot slash og programmets navn. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Nettopp. 373 00:17:13,349 --> 00:17:15,030 Dot slash og programmet navn. 374 00:17:15,030 --> 00:17:16,210 Nå hva gjorde dette? 375 00:17:16,210 --> 00:17:19,470 Vel dot er bare en avleggs måte si gjeldende katalog. 376 00:17:19,470 --> 00:17:23,440 Uansett mappen du er i er refereres til som, er representert som prikk. 377 00:17:23,440 --> 00:17:26,680 Skråstreken er akkurat det du har sett i Mac OS og Windows i mange år, 378 00:17:26,680 --> 00:17:30,329 det er en separator mellom en katalog eller mappe og resten av noen navn. 379 00:17:30,329 --> 00:17:32,620 I Windows skjer det å gå bakover, i Linux og Mac 380 00:17:32,620 --> 00:17:34,210 OS det skjer for å gå fremover. 381 00:17:34,210 --> 00:17:37,560 Men det er bare separatoren, så det er bare en uinteressant syntaktisk detalj. 382 00:17:37,560 --> 00:17:40,440 >> Den saftige delen av kurset er navnet på programmet, Hello. 383 00:17:40,440 --> 00:17:42,650 Og det er det som gjør skapt for oss. 384 00:17:42,650 --> 00:17:44,910 Det sendes ut at filen for oss. 385 00:17:44,910 --> 00:17:46,700 Men hvordan kom vi til det punktet? 386 00:17:46,700 --> 00:17:48,870 La oss nå be spørsmålet, hva var egentlig 387 00:17:48,870 --> 00:17:52,470 skjer her, i hvert fall med hensyn til noen av denne syntaksen? 388 00:17:52,470 --> 00:17:57,000 >> Så i en setning eller så, Hvordan klarte vi bortforklare 389 00:17:57,000 --> 00:17:59,020 denne første linje som er uthevet i grønt? 390 00:17:59,020 --> 00:18:02,998 Hva var det første linjen gjør, med hensyn til mitt program? 391 00:18:02,998 --> 00:18:03,974 Yeah? 392 00:18:03,974 --> 00:18:05,067 >> STUDENT: [uhørbart]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Si det igjen? 394 00:18:06,150 --> 00:18:08,734 STUDENT: Inkludert og nedlasting siste funksjonene [uhørbart]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Good. 396 00:18:09,483 --> 00:18:11,900 Inkludert, vil jeg ikke si nedlasting, men la oss si 397 00:18:11,900 --> 00:18:15,500 inkludert funksjoner som folk har skrevet i det siste. 398 00:18:15,500 --> 00:18:18,260 Og disse funksjonene er implementert et sted i min datamaskin. 399 00:18:18,260 --> 00:18:20,470 Noen skrev en fil år siden, og at filen 400 00:18:20,470 --> 00:18:23,490 er et sted på innsiden av CS50 apparatet, eller på harddisken min 401 00:18:23,490 --> 00:18:24,480 mer generelt. 402 00:18:24,480 --> 00:18:27,810 Og så denne linjen er i hovedsak si, gå finne den filen, standard I / O dot 403 00:18:27,810 --> 00:18:31,740 h, og kopiere og lime inn innholdet her på toppen av min fil 404 00:18:31,740 --> 00:18:33,860 slik at jeg ikke trenger å gjøre det manuelt selv. 405 00:18:33,860 --> 00:18:40,970 >> Og blant de saftigste bitene på innsiden av den filen vi hevdet var hvilken funksjon? 406 00:18:40,970 --> 00:18:45,740 Hvilken funksjon vi si ble erklært eller nevnt i standard I / O dot h 407 00:18:45,740 --> 00:18:47,120 mest sannsynlig? 408 00:18:47,120 --> 00:18:47,900 Printf, ikke sant? 409 00:18:47,900 --> 00:18:50,797 Vi skrev ikke printf på Mandag, det bare eksisterte. 410 00:18:50,797 --> 00:18:52,880 Mye som Alana bare kom opp på scenen og hun bare 411 00:18:52,880 --> 00:18:55,540 eksistert og visste hvordan å trekke noe på skjermen, 412 00:18:55,540 --> 00:18:58,660 så eksisterer printf i mange år. 413 00:18:58,660 --> 00:19:00,240 Og så dette er hvordan vi tilgang til den. 414 00:19:00,240 --> 00:19:03,280 Nå hvis vi går videre her, viktigste var analogt vi 415 00:19:03,280 --> 00:19:06,620 sa til puslespill brikke kalles når grønne flagget klikket 416 00:19:06,620 --> 00:19:07,620 i verden av Scratch. 417 00:19:07,620 --> 00:19:10,130 Det er bare liksom den standardnavn som mennesker 418 00:19:10,130 --> 00:19:13,340 besluttet ville representere standard inngangspunkt til et program. 419 00:19:13,340 --> 00:19:16,540 Den del av programmeringskode som blir utført først. 420 00:19:16,540 --> 00:19:19,700 >> I mellomtiden disse klammeparentes er type som den buede formen 421 00:19:19,700 --> 00:19:21,410 av mange av disse gule skrape stykker. 422 00:19:21,410 --> 00:19:24,860 De slags kapsle en hel haug med instruksjoner sammen. 423 00:19:24,860 --> 00:19:28,350 Så det bare slags binder sammen noen relaterte funksjonalitet. 424 00:19:28,350 --> 00:19:33,750 printf selvfølgelig er en funksjon som skriver på skjermen, slik vi nettopp gjorde. 425 00:19:33,750 --> 00:19:35,190 >> Hva om disse parentes? 426 00:19:35,190 --> 00:19:38,770 Hvordan ville du define-- selv om du har aldri programmert før, men bare basert 427 00:19:38,770 --> 00:19:41,320 nå på en økende forhåpentligvis intuisjon, hva 428 00:19:41,320 --> 00:19:43,290 er parentesene gjør for oss her? 429 00:19:43,290 --> 00:19:45,450 Eller hva er de rundt? 430 00:19:45,450 --> 00:19:46,360 Yeah? 431 00:19:46,360 --> 00:19:49,360 >> STUDENT: De sier hva du kommer til å skrive ut med printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Ja, de sier hva du kommer til å skrive ut med printf. 433 00:19:52,401 --> 00:19:56,260 Eller mer generelt, er de rundt inngangene til funksjonen. 434 00:19:56,260 --> 00:19:58,530 Så du kan nesten tenke av disse parentes 435 00:19:58,530 --> 00:20:01,620 som å være som metall klipp på denne utklippstavlen. 436 00:20:01,620 --> 00:20:05,940 Det er hva som holder, det er det som er kommer til å bli brukt for å gi argumenter 437 00:20:05,940 --> 00:20:08,500 inn i funksjon, noe som i dette tilfellet kalles printf. 438 00:20:08,500 --> 00:20:12,390 >> Så generelt nesten alle gang vi kaller en funksjon, 439 00:20:12,390 --> 00:20:14,280 vi kommer til å se et par parentes. 440 00:20:14,280 --> 00:20:17,000 Kanskje med noe i det, som nå, kanskje ingenting i det. 441 00:20:17,000 --> 00:20:19,770 Men det er der du vil sette inngangene eller såkalte argumenter 442 00:20:19,770 --> 00:20:20,680 til en funksjon. 443 00:20:20,680 --> 00:20:22,470 >> Her er en slik argument. 444 00:20:22,470 --> 00:20:24,467 Jeg har fremhevet alt mellom anførselstegn, 445 00:20:24,467 --> 00:20:26,300 fordi det viser seg i dette språket kalles 446 00:20:26,300 --> 00:20:29,950 C, når du ønsker å representere en string-- som er et ord eller en frase 447 00:20:29,950 --> 00:20:33,470 eller enda en paragraph-- du må omslutter den med doble anførselstegn. 448 00:20:33,470 --> 00:20:35,420 Ikke apostrof, anførselstegn. 449 00:20:35,420 --> 00:20:37,460 Og det er akkurat det jeg har gjort her. 450 00:20:37,460 --> 00:20:39,900 >> I mellomtiden er det en funky symbol mot slutten der. 451 00:20:39,900 --> 00:20:41,600 Backslash n. 452 00:20:41,600 --> 00:20:43,460 Hva sa vi at representert? 453 00:20:43,460 --> 00:20:44,093 Yeah? 454 00:20:44,093 --> 00:20:44,980 >> STUDENT: En ny linje. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: Ny linje. 456 00:20:45,896 --> 00:20:47,910 Høyre, gjør du ikke generelt trykk Enter når 457 00:20:47,910 --> 00:20:50,430 du vil at programmet å spytte ut en ny linje. 458 00:20:50,430 --> 00:20:54,210 Heller du fortelle det eksplisitt med dette riktignok uforståelige stykke 459 00:20:54,210 --> 00:20:58,770 syntaks, backslash n, at ønsker du en ny linje for å gå dit. 460 00:20:58,770 --> 00:20:59,810 Endelig semikolon. 461 00:20:59,810 --> 00:21:01,560 Vi gjorde egentlig ikke snakke for mye om dette, 462 00:21:01,560 --> 00:21:04,893 og langt dette vil være bane av noen av din eksistens for det første problemet 463 00:21:04,893 --> 00:21:07,990 satt, når du bare ikke klarte å realisere du har glemt noe så dumt 464 00:21:07,990 --> 00:21:08,614 som et semikolon. 465 00:21:08,614 --> 00:21:11,600 Og generelt å sette den det vil løse det problemet. 466 00:21:11,600 --> 00:21:13,511 Men hva er det du gjør for oss, vil du si? 467 00:21:13,511 --> 00:21:15,670 >> STUDENT: [uhørbart]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Sorry? 469 00:21:17,484 --> 00:21:18,532 >> STUDENT: [uhørbart]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Finishing en uttalelse. 471 00:21:19,990 --> 00:21:22,770 Det er liksom som perioden på slutten av en engelsk setning, 472 00:21:22,770 --> 00:21:25,790 mens i dette språket C det er slutt en uttalelse. 473 00:21:25,790 --> 00:21:29,250 En instruksjon av programmering kode som du bare ønsker å si, 474 00:21:29,250 --> 00:21:30,500 Jeg er ferdig med dette. 475 00:21:30,500 --> 00:21:32,240 Merker at det nå er den eneste her. 476 00:21:32,240 --> 00:21:34,614 Så du ikke ønsker å komme i en vane å sette semikolon 477 00:21:34,614 --> 00:21:36,190 etter hvert lukket parentes. 478 00:21:36,190 --> 00:21:38,610 For eksempel er det ingen neste til å annullere, og vi vil 479 00:21:38,610 --> 00:21:40,430 komme tilbake i fremtiden til hva ugyldig midler. 480 00:21:40,430 --> 00:21:44,080 Men i dette tilfellet din printf er en funksjon, eller en uttalelse som brukes, 481 00:21:44,080 --> 00:21:47,420 og så vi ønsker å ha det endestasjonen helt på slutten av den. 482 00:21:47,420 --> 00:21:50,980 >> Og jeg med vilje rørt på C. Og oppriktig en rekke språk som C, C ++ 483 00:21:50,980 --> 00:21:55,000 Java, Javascript, og en rekke andre språk har mye av disse 484 00:21:55,000 --> 00:21:56,730 slags syntaktiske detaljer. 485 00:21:56,730 --> 00:22:00,120 Som sikkert hvis du er ny på programmering kan virkelig reise deg opp. 486 00:22:00,120 --> 00:22:02,307 Og du vil, merk mine ord, noen av dere vil 487 00:22:02,307 --> 00:22:04,140 har denne erfaringen i kontortiden eller sent 488 00:22:04,140 --> 00:22:07,554 om natten arbeider på noen p-set, hvor din jævla programmet bare ikke kompilere, 489 00:22:07,554 --> 00:22:09,470 den kjører ikke, du har ingen anelse om hva som er galt, 490 00:22:09,470 --> 00:22:11,513 det virker helt logisk riktig for deg. 491 00:22:11,513 --> 00:22:13,596 Og det er fordi du har glemt noe som treffer 492 00:22:13,596 --> 00:22:15,250 semikolon ved slutten av en linje. 493 00:22:15,250 --> 00:22:17,590 >> Men dette er den slags ting du er kommer til å umiddelbart lære å se. 494 00:22:17,590 --> 00:22:20,048 Og faktisk er det disse tingene at CAs og TF-er har 495 00:22:20,048 --> 00:22:23,210 blitt liksom opplært til å se mye raskere enn deg. 496 00:22:23,210 --> 00:22:26,610 Og så dette er bare å si, som du dykk inn i oppgavesettet en spesielt, 497 00:22:26,610 --> 00:22:28,217 ikke bli frustrert av denne ting. 498 00:22:28,217 --> 00:22:30,050 Når du liksom akklimatisere til verden, du 499 00:22:30,050 --> 00:22:35,130 begynne å se ting som du kanskje ikke se ved første øyekast denne første uken. 500 00:22:35,130 --> 00:22:37,440 >> Så kildekoden er noe sånt. 501 00:22:37,440 --> 00:22:40,370 Vi ønsker å gi det inn den såkalte kompilatoren. 502 00:22:40,370 --> 00:22:42,850 Og at kompilatoren som vi sa gir effekt 503 00:22:42,850 --> 00:22:45,660 kalles objektkoden, såkalte nuller og enere. 504 00:22:45,660 --> 00:22:47,747 Men derfra, hva som gir oss? 505 00:22:47,747 --> 00:22:49,080 Vel det gir oss disse mønstrene. 506 00:22:49,080 --> 00:22:52,020 Og igjen datamaskinen, Intel inne, 507 00:22:52,020 --> 00:22:54,350 forstår disse mønstrene nuller og enere. 508 00:22:54,350 --> 00:22:57,300 Og noen ganger mønsteret representerer en faktisk desimaltall 509 00:22:57,300 --> 00:22:59,770 som vi så i forrige uke, noen ganger det representerer en bokstav 510 00:22:59,770 --> 00:23:02,730 som vi så i forrige uke, noen ganger det representerer en instruksjon, 511 00:23:02,730 --> 00:23:05,460 som å skrive ut noe til skjermen. 512 00:23:05,460 --> 00:23:08,782 >> Så printf for instance-- men heller la meg bakover. 513 00:23:08,782 --> 00:23:11,240 Vi har tatt for gitt at de nuller og enere 514 00:23:11,240 --> 00:23:14,200 produsert av denne kommandoen make. 515 00:23:14,200 --> 00:23:16,050 Men gjør er ikke en kompilator. 516 00:23:16,050 --> 00:23:19,370 Gjør er ikke tingen i midten som er å produsere de nuller og enere. 517 00:23:19,370 --> 00:23:23,780 Heller gjøre er bare en svært beleilig oppkalt program hvis formål i livet 518 00:23:23,780 --> 00:23:27,267 er i hovedsak å finne ut hvordan å kompilere programmet. 519 00:23:27,267 --> 00:23:29,350 Og vi bruker det i disse første ukene fordi det bare 520 00:23:29,350 --> 00:23:30,910 sparer oss for mye trøbbel. 521 00:23:30,910 --> 00:23:34,080 >> Men hva gjør er egentlig gjør når du kompilere hello, 522 00:23:34,080 --> 00:23:36,690 er, som vi sa sist gang, er det ser på harddisken 523 00:23:36,690 --> 00:23:40,620 eller i gjeldende mappe, for fil som heter hva, tydeligvis? 524 00:23:40,620 --> 00:23:41,815 Hello.c, ikke sant? 525 00:23:41,815 --> 00:23:43,190 Det er bare slags en konvensjon. 526 00:23:43,190 --> 00:23:45,620 Det er vilkårlig, men det er slik ting er. 527 00:23:45,620 --> 00:23:48,620 Lag, hvis du bare oppgir navnet av et program som ikke eksisterer ennå, 528 00:23:48,620 --> 00:23:52,200 det kommer til å se etter kildekoden i en fil, som standard betyr hello.c. 529 00:23:52,200 --> 00:23:53,530 Og hvis den finner det, flott. 530 00:23:53,530 --> 00:23:56,650 Det kommer til å konvertere den kilden kode til objektkode for deg. 531 00:23:56,650 --> 00:23:59,670 >> Men hver gang jeg har trykk Enter etter å ha kjørt gjøre hello, 532 00:23:59,670 --> 00:24:03,560 Husker du å se siste gang en ganske lang og kryptisk sekvens 533 00:24:03,560 --> 00:24:06,430 av andre hvite bokstaver og tegn på skjermen? 534 00:24:06,430 --> 00:24:11,220 Vel det var selve kommandoen, Selve kompilatoren, som kjørte. 535 00:24:11,220 --> 00:24:15,500 Så selve kompilatoren vi skal bruke mesteparten av semesteret er noe som kalles klang. 536 00:24:15,500 --> 00:24:19,280 Noen av dere kanskje har brukt Visual Studio før, eller GCC, 537 00:24:19,280 --> 00:24:21,340 eller hvilket som helst antall av andre kompilatorer. 538 00:24:21,340 --> 00:24:22,620 Vi vil bruke klang. 539 00:24:22,620 --> 00:24:26,950 >> Og klang tillater oss å faktisk konvertere at kildekoden til objektkoden. 540 00:24:26,950 --> 00:24:29,430 Hva betyr dette egentlig bety i praksis? 541 00:24:29,430 --> 00:24:33,390 Vel la meg gå inn i en av Mine mapper fra forrige gang. 542 00:24:33,390 --> 00:24:35,760 Innsiden av CS50 apparatet. 543 00:24:35,760 --> 00:24:42,080 Og la meg gå videre og lage dette samme fil, inkluderer standard I / O dot h. 544 00:24:42,080 --> 00:24:42,875 Int main annullert. 545 00:24:42,875 --> 00:24:46,000 Og vi vil komme tilbake i fremtiden som til hva int betyr og hva void betyr. 546 00:24:46,000 --> 00:24:49,130 Men for nå la oss gjøre hello world backslash n, 547 00:24:49,130 --> 00:24:50,500 akkurat som vi gjorde i styret. 548 00:24:50,500 --> 00:24:53,930 >> La meg lagre denne filen som heter hello.c. 549 00:24:53,930 --> 00:24:58,280 Og nå hvis jeg ønsker å kompilere dette Jeg kunne-- la meg zoome i-- løp 550 00:24:58,280 --> 00:25:00,450 gjøre hallo inn. 551 00:25:00,450 --> 00:25:02,645 Og dette igjen var at svært kryptisk linje. 552 00:25:02,645 --> 00:25:05,120 Men nå minst ett ord sannsynligvis hopper ut på deg. 553 00:25:05,120 --> 00:25:07,087 Clang er den linjen vi har sett før. 554 00:25:07,087 --> 00:25:10,420 Nå er det en masse andre ting ærlig at vi vil bølge våre hender for i dag. 555 00:25:10,420 --> 00:25:14,020 Men det er noen undergrupper, noen tegn i her 556 00:25:14,020 --> 00:25:14,907 som er av interesse. 557 00:25:14,907 --> 00:25:16,490 Men jeg kommer til å gå videre og gjøre dette. 558 00:25:16,490 --> 00:25:18,281 Jeg kommer til første løp Hei, bare for å bevise 559 00:25:18,281 --> 00:25:20,320 at dette fungerer som det var mandag. 560 00:25:20,320 --> 00:25:22,330 Men nå kommer jeg til å slette programmet. 561 00:25:22,330 --> 00:25:25,870 Og mye som vi hadde disse korte navn forrige gang, 562 00:25:25,870 --> 00:25:29,787 kommandoen for å fjerne noe er rm, fjerne inn. 563 00:25:29,787 --> 00:25:31,870 Du kommer til å få noen ganske kryptiske spørsmål. 564 00:25:31,870 --> 00:25:35,210 Vanskelig å tro at du kan gjøre selv dette spørsmålet er vanskelig å forstå. 565 00:25:35,210 --> 00:25:38,100 Men fjerne vanlig fil hallo bare betyr at du vil slette hei. 566 00:25:38,100 --> 00:25:42,650 >> Og jeg kan gå videre og skriver y for ja, Enter, og nå er det borte. 567 00:25:42,650 --> 00:25:45,130 Hva betyr dette nå, hvis jeg fjerner skjermen min, 568 00:25:45,130 --> 00:25:47,301 er at istedenfor gjør gjøre hello-- du 569 00:25:47,301 --> 00:25:48,800 Vet du hva, jeg får god på dette. 570 00:25:48,800 --> 00:25:50,690 Jeg kommer til å kjøre kompilatoren selv. 571 00:25:50,690 --> 00:25:53,330 Jeg trenger ikke noe program for å finne ut hva min filen heter. 572 00:25:53,330 --> 00:25:55,370 Jeg skrev hello.c, jeg vet hva det heter, 573 00:25:55,370 --> 00:25:57,640 Jeg er helt klart i stand til å skrive det. 574 00:25:57,640 --> 00:26:02,620 Så jeg kommer til å gå videre og gjør clang hello.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Synes å fungere. 576 00:26:03,264 --> 00:26:05,930 Og det er ingen ekstra utgang, fordi klang er kompilatoren. 577 00:26:05,930 --> 00:26:08,590 Det er det som å konvertere kildekoden til nuller og enere. 578 00:26:08,590 --> 00:26:12,870 Så hvis jeg nå gjøre dot slash hei Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Ny feilmelding i dag. 580 00:26:14,630 --> 00:26:17,610 Så bash er bare navnet på blinkende meldingen som vi bruker. 581 00:26:17,610 --> 00:26:20,360 Det er en grov overforenkling, men for nå det er alt som er, 582 00:26:20,360 --> 00:26:21,401 det er den blinkende meldingen. 583 00:26:21,401 --> 00:26:22,880 Og det er derfor det er roping på oss. 584 00:26:22,880 --> 00:26:25,690 >> Ingen slik fil eller katalog er litt mer ukomplisert. 585 00:26:25,690 --> 00:26:28,190 Men sikkert jeg gjort som objektkode. 586 00:26:28,190 --> 00:26:30,930 Men fangsten er, at hvis jeg skriver kommandoen 587 00:26:30,930 --> 00:26:34,650 å vise innholdet i dette katalogen, som er hva? 588 00:26:34,650 --> 00:26:36,210 ls for listen. 589 00:26:36,210 --> 00:26:39,332 Det er en haug med ting her inne, noen som fulgte med apparatet, 590 00:26:39,332 --> 00:26:42,040 som min Desktop mappe, nedlastinger mappe, Dropbox-mappen, og alle 591 00:26:42,040 --> 00:26:42,850 at ting. 592 00:26:42,850 --> 00:26:45,410 Men hva er interessant er hello.c, som 593 00:26:45,410 --> 00:26:47,286 Jeg opprettet et øyeblikk siden med gedit. 594 00:26:47,286 --> 00:26:49,160 Og hva er det merkeligste ser navn her inne, 595 00:26:49,160 --> 00:26:53,110 kanskje at vi ikke se siste gang i det hele tatt? 596 00:26:53,110 --> 00:26:54,710 >> a.out, ikke sant? 597 00:26:54,710 --> 00:26:56,920 Så tilbake i dag, det ble nettopp besluttet at når 598 00:26:56,920 --> 00:26:58,760 du kompilere et program for første gang, 599 00:26:58,760 --> 00:27:02,360 og du ikke oppgir navnet av en fil, la oss kalle det en. 600 00:27:02,360 --> 00:27:05,800 Og a.out betyr bare dette var produksjonen av kompilatoren. 601 00:27:05,800 --> 00:27:07,790 Så det er et fryktelig navn på et program. 602 00:27:07,790 --> 00:27:12,820 Men etter den logikken, dot slash for gjeldende katalog, slash a.out, 603 00:27:12,820 --> 00:27:16,102 bør bety det er faktisk min hello world program. 604 00:27:16,102 --> 00:27:17,560 Nå litt varme opp trening, også. 605 00:27:17,560 --> 00:27:20,420 Hvis jeg ønsker å endre navnet på denne fil, viser seg at du 606 00:27:20,420 --> 00:27:23,000 flytte en fil fra ett navn til et annet. 607 00:27:23,000 --> 00:27:28,750 Så mv a.out, og da jeg kan kalle det hallo Enter. 608 00:27:28,750 --> 00:27:30,940 Så dette er en Linux-kommando. 609 00:27:30,940 --> 00:27:34,370 DOS hadde dette år siden, Windows har et terminalvindu 610 00:27:34,370 --> 00:27:36,460 av noe slag som ser som dette, Linux og Mac 611 00:27:36,460 --> 00:27:38,140 datamaskiner har dette blinkende teksten. 612 00:27:38,140 --> 00:27:41,490 Selv om de fleste av oss sannsynligvis sjelden, om noensinne, bruk den. 613 00:27:41,490 --> 00:27:44,590 >> Men det jeg har gjort er å kjøre en Programmet, som heter mv, 614 00:27:44,590 --> 00:27:47,900 og jeg har gitt den med to argumenter, så å si. 615 00:27:47,900 --> 00:27:48,630 To innganger. 616 00:27:48,630 --> 00:27:50,260 a.out er det opprinnelige navnet. 617 00:27:50,260 --> 00:27:51,630 Hei er det nye navnet. 618 00:27:51,630 --> 00:27:55,670 Så hvis jeg nå gjøre dot slash hallo, Enter, finnes det. 619 00:27:55,670 --> 00:28:00,770 Og hvis jeg gjør dot slash a.out, hva forventer du jeg burde se? 620 00:28:00,770 --> 00:28:02,250 >> Bash, ingen slik fil eller katalog. 621 00:28:02,250 --> 00:28:03,350 Fordi jeg bare omdøpt den. 622 00:28:03,350 --> 00:28:04,975 Så dette tar litt tid å bli vant til. 623 00:28:04,975 --> 00:28:06,977 Men problemet satt en spesifikasjonen vil virkelig 624 00:28:06,977 --> 00:28:08,810 holde hånden din gjennom noe av denne minutae. 625 00:28:08,810 --> 00:28:11,050 Fordi dette er en fullstendig intellektuell distraksjon 626 00:28:11,050 --> 00:28:12,966 fra det mer interessant ideer for hånden, som 627 00:28:12,966 --> 00:28:15,310 er faktisk lage noe ut av kode. 628 00:28:15,310 --> 00:28:18,830 Men la oss gjøre en modifikasjon nå til dette programmet. 629 00:28:18,830 --> 00:28:23,150 >> Husker at sist gang jeg gjorde noe som dette, printf oppgi navn. 630 00:28:23,150 --> 00:28:25,790 Og ja vi nettopp gjorde dette på storskjerm der borte. 631 00:28:25,790 --> 00:28:30,640 Og så gjorde jeg streng s blir GetString åpne paren, nær paren. 632 00:28:30,640 --> 00:28:33,430 Og paren bare stenografi notasjon for parentes. 633 00:28:33,430 --> 00:28:36,460 Så betyr GetString ta noen argumenter? 634 00:28:36,460 --> 00:28:38,440 Ingen innganger Nei, men det trenger parentesene, 635 00:28:38,440 --> 00:28:41,830 fordi det er det som avgrenser kallet til en funksjon. 636 00:28:41,830 --> 00:28:46,440 >> Så jeg kommer til å gå videre og prøve å kjøre kompilatoren på dette programmet nå. 637 00:28:46,440 --> 00:28:50,774 Klang hello.c, fordi jeg ikke endre navn for nå. 638 00:28:50,774 --> 00:28:51,940 Og jeg fikk en haug med feil. 639 00:28:51,940 --> 00:28:53,570 La oss zoome ut her. 640 00:28:53,570 --> 00:28:55,420 Hvis jeg ruller opp igjen, som jeg sa sist gang, 641 00:28:55,420 --> 00:28:58,420 til den første, samme feilen at jeg fikk forrige gang. 642 00:28:58,420 --> 00:29:04,210 På linje 6 av hello.c hadde jeg en undeclared identifikator streng, 643 00:29:04,210 --> 00:29:05,590 jeg mener standard i? 644 00:29:05,590 --> 00:29:06,750 Jeg gjorde ikke det. 645 00:29:06,750 --> 00:29:10,050 Fordi det feil har jeg gjort i dette program, hvis du husker fra forrige gang? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Ja, vi trenger såkalte trening hjul 648 00:29:15,010 --> 00:29:16,510 at vi vil bare bruke et par uker. 649 00:29:16,510 --> 00:29:19,480 Men jeg må presisere at også, et sted inne i apparatet, 650 00:29:19,480 --> 00:29:22,720 er en fil som vi skrev bare noen få år siden. 651 00:29:22,720 --> 00:29:26,500 Innsiden av disse er funksjoner som tilsynelatende GetString. 652 00:29:26,500 --> 00:29:35,160 Så nå hvis jeg går tilbake hit, zoome inn, og re-run klang hello.c. 653 00:29:35,160 --> 00:29:36,500 Damn, en annen feil. 654 00:29:36,500 --> 00:29:38,590 Men vi har ikke sett dette før. 655 00:29:38,590 --> 00:29:41,900 >> Denne er litt mer esoterisk å finne ut. 656 00:29:41,900 --> 00:29:46,910 Men dette er bevisst på skjermen, fordi vi ønsket å fortelle denne historien. 657 00:29:46,910 --> 00:29:51,280 Når du kompilerer hello.c, akkurat som bildet fra før foreslått, 658 00:29:51,280 --> 00:29:54,650 du bare konvertere at kildekoden til nuller og enere. 659 00:29:54,650 --> 00:30:00,340 Nå CS50 ansatte for noen år siden skrev CS50.h, og en tilsvarende fil, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 Og vi, et par år siden, kompilert disse filene 662 00:30:04,490 --> 00:30:07,290 i en fil som skjer å bli kalt CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Eller det kan bli omdøpt en par forskjellige ting. 664 00:30:09,180 --> 00:30:11,054 Men det er en enkel måte av å tenke på det. 665 00:30:11,054 --> 00:30:14,960 Så vi samlet CS50 er biblioteket til nuller og enere. 666 00:30:14,960 --> 00:30:20,340 Men ingen steder har jeg spesifisert at jeg ønsker å kombinere mine nuller 667 00:30:20,340 --> 00:30:24,030 og de for min hello world program med nuller og enere 668 00:30:24,030 --> 00:30:29,760 at CS50 ansatte opprettet for noen år siden til en helhetlig program. 669 00:30:29,760 --> 00:30:34,100 Alt jeg har angitt ved å skrive klang hello.c er kompilere hello.c. 670 00:30:34,100 --> 00:30:38,380 >> Jeg har ikke fortalt klang til leddet i nuller og enere 671 00:30:38,380 --> 00:30:41,650 at CS50 ansatte opprettet for deg en tid siden. 672 00:30:41,650 --> 00:30:48,280 Så det er lett å fikse, dash l for link, CS50. 673 00:30:48,280 --> 00:30:52,600 Og vi vil igjen se dette før lenge igjen og igjen. 674 00:30:52,600 --> 00:30:54,420 Men legg merke til nå var det ingen klager. 675 00:30:54,420 --> 00:30:59,770 Så nå hvis jeg kjører dot slash Hei, nå er det å jobbe. 676 00:30:59,770 --> 00:31:03,840 Selv om det er litt misvisende siden jeg bare gjenskapt hva fil? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Så la meg spole tilbake for bare et øyeblikk. 679 00:31:07,930 --> 00:31:10,900 Programmet vi bare kompilert har de tre linjer med kode. 680 00:31:10,900 --> 00:31:14,710 Når jeg kjørte hello world, hallo et øyeblikk siden, jeg fikk ikke se oppgi navn. 681 00:31:14,710 --> 00:31:17,080 Og det er fordi jeg kjørte gamle versjonen av programmet. 682 00:31:17,080 --> 00:31:22,700 Men hvis ikke jeg faktisk kjøre dot slash a.out Enter, oppgi navn, Rob, hallo, 683 00:31:22,700 --> 00:31:23,370 verden. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Det er litt av en bug. 686 00:31:26,110 --> 00:31:28,560 Sannsynligvis mente å si Rob, ikke sant? 687 00:31:28,560 --> 00:31:30,997 Så hva er fix her i kode. 688 00:31:30,997 --> 00:31:31,872 STUDENT: [uhørbart]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Nettopp. 691 00:31:39,290 --> 00:31:43,160 Så jeg trenger bare å gjøre det endelige tweak slik at jeg har bestått i en plassholder, 692 00:31:43,160 --> 00:31:45,690 som en fylle de tomme, som vi gjorde for et øyeblikk siden. 693 00:31:45,690 --> 00:31:47,870 Men prosent s er nå at fylle inn de tomme. 694 00:31:47,870 --> 00:31:52,100 Så til slutt la oss avsløre en siste detaljer, slik at det er ingen magi. 695 00:31:52,100 --> 00:31:54,090 Jeg kommer til å gå videre og bli kvitt hellow. 696 00:31:54,090 --> 00:31:56,070 Jeg kommer til å gå videre og bli kvitt a.out. 697 00:31:56,070 --> 00:31:58,410 Så nå har jeg ingen programmer, bare min kildekoden. 698 00:31:58,410 --> 00:32:01,100 Og jeg kommer til å kjøre en litt lengre kommando, klang 699 00:32:01,100 --> 00:32:05,650 dash o hallo hello.c dash LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Nå er dette i ferd med å liksom gå i det ene øret og ut det andre kanskje. 701 00:32:08,700 --> 00:32:10,366 Men bare erte hverandre hva dette gjør. 702 00:32:10,366 --> 00:32:14,910 Clang er kompilatoren, dash LCS50 bevisst på slutten 703 00:32:14,910 --> 00:32:18,330 gjør hva i en setning? 704 00:32:18,330 --> 00:32:19,607 Lenker til CS50 biblioteket. 705 00:32:19,607 --> 00:32:21,440 Griper de nuller og de som de ansatte gjorde 706 00:32:21,440 --> 00:32:23,310 og crams dem inn i mitt eget program. 707 00:32:23,310 --> 00:32:27,040 Så det siste spørsmålet på hånden er, hva er dash o hei trolig 708 00:32:27,040 --> 00:32:30,530 gjør, selv om du aldri har sett denne syntaksen før? 709 00:32:30,530 --> 00:32:34,920 >> Gi ut et program som er ikke navngitt standard a.out. 710 00:32:34,920 --> 00:32:37,330 Snarere er det oppkalt hei. 711 00:32:37,330 --> 00:32:39,460 Så nå er det ingen a.out. 712 00:32:39,460 --> 00:32:42,660 Ingen slik fil eller katalog, fordi jeg eksplisitt sa 713 00:32:42,660 --> 00:32:46,720 kaller dette programmet hello, slik at Jeg kan nå skrive inn et navn som det 714 00:32:46,720 --> 00:32:47,790 og har det oppfører seg. 715 00:32:47,790 --> 00:32:50,180 >> Nå ærlig, er gutten som uinteressant å ha 716 00:32:50,180 --> 00:32:52,170 å huske alt dette lite minutia, ikke sant? 717 00:32:52,170 --> 00:32:54,180 Så la oss gå videre og bli kvitt Hei igjen. 718 00:32:54,180 --> 00:32:57,880 Og la oss nå vende tilbake til en verden som det er nok å si at hei. 719 00:32:57,880 --> 00:33:00,410 Men det er magien som gjør gjør for deg, 720 00:33:00,410 --> 00:33:02,320 det er tedium at det gjør for deg. 721 00:33:02,320 --> 00:33:04,630 Og som våre programmer og problemene blir mer komplekse, 722 00:33:04,630 --> 00:33:06,142 gjør vil virkelig være din venn. 723 00:33:06,142 --> 00:33:07,850 Fordi ikke altfor lenge fra nå skal vi 724 00:33:07,850 --> 00:33:11,150 å ha programmer som er skrevet ikke med én fil, men flere filer, 725 00:33:11,150 --> 00:33:16,310 og gjøre vil automatisere prosessen med kompilere alt dette for oss sammen. 726 00:33:16,310 --> 00:33:20,620 >> Så nå ut. 727 00:33:20,620 --> 00:33:24,960 printf er innsiden av denne filen, standard I / O dot h, som vi har sett før, 728 00:33:24,960 --> 00:33:26,980 men det er mer til printf enn det. 729 00:33:26,980 --> 00:33:30,482 Det er backslash n, men det er også en haug med andre escape-sekvenser. 730 00:33:30,482 --> 00:33:32,940 Og escape-sekvens er bare en fancy måte å si noe 731 00:33:32,940 --> 00:33:35,990 som starter med en backslash, ikke en skråstrek, en skråstrek, 732 00:33:35,990 --> 00:33:37,920 og gjør noen spesiell ting. 733 00:33:37,920 --> 00:33:43,770 Og vi vil ikke dvele ved de fleste av disse, men hvorfor er det backslash dobbelt anførselstegn, 734 00:33:43,770 --> 00:33:44,830 tror du? 735 00:33:44,830 --> 00:33:48,010 Hvorfor er det denne rare sekvens av tegn, backslash dobbelt anførselstegn, 736 00:33:48,010 --> 00:33:50,505 hvorfor kan det være nyttig? 737 00:33:50,505 --> 00:33:51,380 STUDENT: [uhørbart]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Nettopp, ikke sant? 740 00:33:57,760 --> 00:34:01,830 Tenk tilbake til vår hello world program som vi har sett ganske mange ganger nå, 741 00:34:01,830 --> 00:34:05,880 hver gang vi har sett at hello world programmet vi har hatt doble anførselstegn inni 742 00:34:05,880 --> 00:34:08,210 som er hallo komma verden backslash n. 743 00:34:08,210 --> 00:34:10,070 Men tenk deg selv, hva om du faktisk 744 00:34:10,070 --> 00:34:12,520 ønsket å skrive ut et anførselstegn? 745 00:34:12,520 --> 00:34:16,100 Ditt første instinkt kan være, vet jeg ikke vet hvorfor jeg kanskje vil gjøre-- her, 746 00:34:16,100 --> 00:34:18,780 vi kan være litt passiv aggressive, hallo venn. 747 00:34:18,780 --> 00:34:21,350 Vi kan ønske å gjøre noe sånt. 748 00:34:21,350 --> 00:34:25,230 >> Men hvorfor er dette nå problematisk? 749 00:34:25,230 --> 00:34:28,730 Ignorerer krøllete sitater side at keynote gjort for oss automatisk. 750 00:34:28,730 --> 00:34:29,730 Hvorfor er dette problematisk? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Nettopp. 753 00:34:37,270 --> 00:34:39,022 Fordi vi har som 4 anførselstegn. 754 00:34:39,022 --> 00:34:41,230 Vel det første man trolig går med den andre, 755 00:34:41,230 --> 00:34:43,271 og kanskje den fjerde går med den tredje, 756 00:34:43,271 --> 00:34:46,170 eller, jeg mener jeg er ikke engang sikker, heller ikke er maskinen kommer til å bli. 757 00:34:46,170 --> 00:34:48,352 Datamaskiner igjen, kompilatorer igjen, er ganske dumme. 758 00:34:48,352 --> 00:34:50,060 De vil bare gjøre det du forteller dem å gjøre. 759 00:34:50,060 --> 00:34:54,270 Og hvis du ikke er entydig de er sannsynligvis kommer til å kaste en feil. 760 00:34:54,270 --> 00:34:57,700 >> Hvis du ikke er entydig om hvordan man skal lage en peanut smør og gelé sandwich 761 00:34:57,700 --> 00:34:59,510 merkelige ting kan komme. 762 00:34:59,510 --> 00:35:00,580 Det er den samme ideen. 763 00:35:00,580 --> 00:35:03,100 Nå er nok å si at det er noen andre escape-sekvenser, 764 00:35:03,100 --> 00:35:04,820 men vi kommer til dem før lenge. 765 00:35:04,820 --> 00:35:07,410 Hovedsak disse flukt sekvenser representerer noe 766 00:35:07,410 --> 00:35:10,480 at du ikke kan være i stand for lett på tastaturet, 767 00:35:10,480 --> 00:35:12,010 uten forvirrende datamaskinen. 768 00:35:12,010 --> 00:35:15,733 >> Nå i mellomtiden har vi plassholdere i printf. 769 00:35:15,733 --> 00:35:19,630 Prosent d, som også kan skrives i nesten alle tilfeller som prosent i, 770 00:35:19,630 --> 00:35:21,610 er en plassholder for hva slags data? 771 00:35:21,610 --> 00:35:23,920 Hva slags verdi? 772 00:35:23,920 --> 00:35:24,920 Et desimaltall. 773 00:35:24,920 --> 00:35:27,234 Så egentlig vil vi starte ved hjelp av prosent i fordi det er 774 00:35:27,234 --> 00:35:28,650 litt enklere, for eksempel et heltall. 775 00:35:28,650 --> 00:35:29,550 Prosent i. 776 00:35:29,550 --> 00:35:31,320 Et heltall som skjer for å være desimal. 777 00:35:31,320 --> 00:35:35,690 >> Prosent s vi allerede sagt var en plassholder for en streng. 778 00:35:35,690 --> 00:35:38,630 Som er bare et ord, en setning, et avsnitt, et essay, uansett. 779 00:35:38,630 --> 00:35:40,830 Det er en sekvens av tegnene i noen lengde. 780 00:35:40,830 --> 00:35:42,820 Og vi får se før lenge noen av disse andre. 781 00:35:42,820 --> 00:35:45,950 Men prosent c er for en enkelt tegn. 782 00:35:45,950 --> 00:35:48,500 Prosent f er for en flyttall, 783 00:35:48,500 --> 00:35:50,860 som et reelt tall som har desimaltegn i den, som 784 00:35:50,860 --> 00:35:52,550 er selvfølgelig ikke er et heltall. 785 00:35:52,550 --> 00:35:54,670 Og det er en hel haug med andre også. 786 00:35:54,670 --> 00:35:56,990 >> I mellomtiden i C, og i en rekke språk, 787 00:35:56,990 --> 00:35:58,650 vi har ulike datatyper. 788 00:35:58,650 --> 00:36:00,650 Forskjellige glass boller hvis du vil. 789 00:36:00,650 --> 00:36:03,830 Bollen jeg brukte forrige gang var for ping pong-baller, 790 00:36:03,830 --> 00:36:06,990 men vi kan også lagre forskjellige verdier som tegn og strenger 791 00:36:06,990 --> 00:36:10,820 og heltall i en container, som en variabel, og C har disse. 792 00:36:10,820 --> 00:36:14,020 Røye er den type data, den type variabel, 793 00:36:14,020 --> 00:36:15,700 der du kan lagre et tegn. 794 00:36:15,700 --> 00:36:19,560 Float er en type variabel i der du kan lagre et reelt tall. 795 00:36:19,560 --> 00:36:21,220 >> Int er selvfølgelig for en int. 796 00:36:21,220 --> 00:36:23,760 Og heller latterlig heter en lang lang 797 00:36:23,760 --> 00:36:26,830 er der du kan lagre hovedsak en veldig lang rekke, med enda 798 00:36:26,830 --> 00:36:29,930 flere sifre deretter en typisk int makt butikken. 799 00:36:29,930 --> 00:36:32,420 Men vi skal komme tilbake til det før lenge. 800 00:36:32,420 --> 00:36:35,520 >> I CS50 dot h i mellomtiden den andre header-fil 801 00:36:35,520 --> 00:36:37,630 at vi har sett et par ganger i bruk, er det 802 00:36:37,630 --> 00:36:41,350 to andre datatyper som ikke finnes i C typisk. 803 00:36:41,350 --> 00:36:45,000 En er streng, og vi vil se i noen uker hvilke strenger virkelig 804 00:36:45,000 --> 00:36:46,610 er under panseret. 805 00:36:46,610 --> 00:36:47,950 Og man er bool. 806 00:36:47,950 --> 00:36:51,650 Og en bool er en variabel som kan bare ta på visse verdier. 807 00:36:51,650 --> 00:36:54,370 Og bare basert på forrige ukes forklaring av Scratch, 808 00:36:54,370 --> 00:36:56,680 og mer nylig C, hva ville du gjette 809 00:36:56,680 --> 00:37:01,770 er de to mulige verdier for noen beholder som er av typen bool? 810 00:37:01,770 --> 00:37:02,860 >> Ja og nei. 811 00:37:02,860 --> 00:37:03,870 En og null. 812 00:37:03,870 --> 00:37:04,502 Sant eller usant. 813 00:37:04,502 --> 00:37:07,460 Og ja det er det siste som har en tendens være konvensjonelle i et programmerings 814 00:37:07,460 --> 00:37:10,030 språk, å si noe som sant eller usant. 815 00:37:10,030 --> 00:37:13,160 >> Imens CS50 biblioteket kommer med en haug med funksjonalitet 816 00:37:13,160 --> 00:37:16,640 at de ansatte skrev for deg, foruten bare å få en streng. 817 00:37:16,640 --> 00:37:20,910 Vi skrev på forhånd funksjoner som kan få et helt tall fra brukeren, 818 00:37:20,910 --> 00:37:22,990 få et enkelt tegn, får en dupp, som 819 00:37:22,990 --> 00:37:25,160 er bare et tall med desimaltegn. 820 00:37:25,160 --> 00:37:28,290 Få en lang lang, en virkelig stor verdi fra brukeren. 821 00:37:28,290 --> 00:37:30,930 Så vi har bare sett dette i handling i form av GetString. 822 00:37:30,930 --> 00:37:33,230 Men via disse funksjonene vil snart være i stand til å skrive 823 00:37:33,230 --> 00:37:36,070 programmer som får input fra brukeren. 824 00:37:36,070 --> 00:37:39,230 >> I mellomtiden vurdere dette program, og vurdere 825 00:37:39,230 --> 00:37:42,600 hvordan vi kan nå begynne å legge til det med nye konstruksjoner. 826 00:37:42,600 --> 00:37:44,530 En rask virvelvind tur og så får vi se 827 00:37:44,530 --> 00:37:47,340 på noen skrive noen programmer manuelt selv. 828 00:37:47,340 --> 00:37:49,700 Heretter hvis vi ønsker å implementere en tilstand, 829 00:37:49,700 --> 00:37:52,790 det er ikke til å se ut som en fint lite pen puslespill brikke. 830 00:37:52,790 --> 00:37:54,460 Det kommer til å se litt mer uforståelige. 831 00:37:54,460 --> 00:37:57,620 Men dette er den kanoniske Strukturen av en tilstand i C. 832 00:37:57,620 --> 00:38:00,380 >> Ordet hvis to parentes, innsiden av som 833 00:38:00,380 --> 00:38:02,590 kommer til å være en slags boolsk uttrykk. 834 00:38:02,590 --> 00:38:04,999 Nå slash slash i midten, er dette 835 00:38:04,999 --> 00:38:07,290 i øyeblikket liksom som pseudokode plassholder. 836 00:38:07,290 --> 00:38:11,576 Men mer riktig, noen linje med kode i C som starter med skråstrek skråstrek 837 00:38:11,576 --> 00:38:12,850 er en kommentar. 838 00:38:12,850 --> 00:38:15,920 >> Det er som en gul lapp som du kanskje sette på et essay, trykt på papir. 839 00:38:15,920 --> 00:38:17,290 Det er et notat til deg selv. 840 00:38:17,290 --> 00:38:20,100 Det har ingen funksjonell innvirkning på programmet. 841 00:38:20,100 --> 00:38:23,580 Det er liksom en påminnelse, er det din egen dokumentasjon på hva som skjer. 842 00:38:23,580 --> 00:38:25,720 Så gjør dette i øyeblikket er liksom en plassholder 843 00:38:25,720 --> 00:38:27,560 for hva som er inni av de klammeparentes 844 00:38:27,560 --> 00:38:29,810 til slutt kommer til å gjøre noe. 845 00:38:29,810 --> 00:38:35,160 >> I mellomtiden har du to gafler i road, en if else konstruere som dette. 846 00:38:35,160 --> 00:38:37,024 Du kan hvis, elseif, annet. 847 00:38:37,024 --> 00:38:39,690 Nå er det verdt å merke seg, spesielt hvis du har vært Googling rundt 848 00:38:39,690 --> 00:38:42,480 online for ressurser ut av nysgjerrighet, eller hvis du plukke opp 849 00:38:42,480 --> 00:38:44,575 en av kursets anbefalte bøker om C, 850 00:38:44,575 --> 00:38:48,430 vil du se at mennesker har mange av ulike preferanser for hvordan 851 00:38:48,430 --> 00:38:50,510 til å uttrykke seg i kode. 852 00:38:50,510 --> 00:38:53,800 Noen mennesker liker å sette klammeparentes som jeg har gjort her. 853 00:38:53,800 --> 00:38:57,760 Noen mennesker liker å sette den krøllete tannregulering for eksempel opp her. 854 00:38:57,760 --> 00:39:01,700 >> Noen mennesker liker å sette den andens opp her og deretter dette over her. 855 00:39:01,700 --> 00:39:05,120 Det er en rekke måter å skrive-kode, og ingen av dem 856 00:39:05,120 --> 00:39:06,566 er riktig per se. 857 00:39:06,566 --> 00:39:08,440 Selv om det er noen som er ganske galt. 858 00:39:08,440 --> 00:39:11,315 Men det er no-- hvis dette er til slutt en veldig religiøs debatt. 859 00:39:11,315 --> 00:39:13,940 Faktisk en av de mest irriterende ting om informatikk 860 00:39:13,940 --> 00:39:16,310 er hvor sta dataforskere kan være. 861 00:39:16,310 --> 00:39:19,880 Og du vil finne over tid som selv du utvikle personlige preferanser 862 00:39:19,880 --> 00:39:22,130 om hvordan koden skal se ut. 863 00:39:22,130 --> 00:39:27,162 >> Ikke bare oppfører seg, ikke bare lage utgang, men hvordan det skal se estetisk. 864 00:39:27,162 --> 00:39:30,120 Så det vi vil gjøre er å veilede deg langs an mot, for å nå det minste 865 00:39:30,120 --> 00:39:34,825 en standard CS50 stil at minst holder ting uniform og lett å lese. 866 00:39:34,825 --> 00:39:37,330 Men mer om de distinksjoner før lenge. 867 00:39:37,330 --> 00:39:41,830 >> Et boolsk uttrykk i C, hvis du ønsket å si om denne betingelsen er sann 868 00:39:41,830 --> 00:39:44,650 og denne andre betingelsen er sant, trenger du ikke skrive ordet 869 00:39:44,650 --> 00:39:46,610 og, som du ville gjort på engelsk. 870 00:39:46,610 --> 00:39:50,580 Du stedet bruke ampersand ampersand, av grunner vi vil komme tilbake til. 871 00:39:50,580 --> 00:39:54,520 Hvis du ønsker å si, eller du bruker to vertikale barer, som på et norsk tastatur 872 00:39:54,520 --> 00:39:57,650 er generelt over Enter tasten ved siden av backslash. 873 00:39:57,650 --> 00:40:03,080 Og dette bare betyr at hvis denne tilstanden eller denne andre betingelsen er sann gjøre dette. 874 00:40:03,080 --> 00:40:05,210 >> I mellomtiden er det denne sprø ting, som 875 00:40:05,210 --> 00:40:07,760 vil du ha anledning å bruke en gang i en stund. 876 00:40:07,760 --> 00:40:10,390 Men det er bare et alternativ måte å uttrykke deg selv. 877 00:40:10,390 --> 00:40:12,400 Dette, for nå, la oss fastsette, det er bare 878 00:40:12,400 --> 00:40:16,880 en annen funky måte å uttrykke hvis, elseif, elseif, elseif, elseif. 879 00:40:16,880 --> 00:40:19,720 Det er bare formatert i form av tilfellene, hvor du bokstavelig talt 880 00:40:19,720 --> 00:40:23,420 oppsummere de verdiene som kan det være lurt å se etter. 881 00:40:23,420 --> 00:40:24,410 >> I mellomtiden looper. 882 00:40:24,410 --> 00:40:26,842 Vi så en sammenligning av Skrap med en løkke. 883 00:40:26,842 --> 00:40:29,550 Og jeg kommer til å vinke min hånd på hva hver av disse tingene betyr. 884 00:40:29,550 --> 00:40:33,520 Men legg merke til at en loop vil veldig starter ofte med nøkkelordet for. 885 00:40:33,520 --> 00:40:36,350 Eller det vil begynne med søkeordet stund. 886 00:40:36,350 --> 00:40:41,360 Eller det vil starte med nøkkelordet gjøre, og ender med nøkkelordet stund. 887 00:40:41,360 --> 00:40:43,920 >> Men det vi er i ferd med å se er ting mer som dette. 888 00:40:43,920 --> 00:40:47,950 Her er generelt i C, hvordan du kan deklarere en variabel og gi den en verdi. 889 00:40:47,950 --> 00:40:50,610 I C er det ikke nok, som i Scratch, du bare 890 00:40:50,610 --> 00:40:52,810 si gi meg en variabel kalt noe. 891 00:40:52,810 --> 00:40:55,960 Du må fortelle C, og fortell kompilatoren, mer spesifikt, 892 00:40:55,960 --> 00:40:58,680 hva slags verdi har du ønsker å sette i glassbollen. 893 00:40:58,680 --> 00:40:59,610 >> Er det et heltall? 894 00:40:59,610 --> 00:41:02,210 I så fall må du bokstavelig talt si int og deretter 895 00:41:02,210 --> 00:41:04,220 navnet på variabelen, deretter et semikolon. 896 00:41:04,220 --> 00:41:08,050 Hvis du i stedet ønsket streng og kalte Det er som jeg gjorde min kode her i dag, 897 00:41:08,050 --> 00:41:10,920 du vil si streng s semikolon. 898 00:41:10,920 --> 00:41:14,200 Når du ønsker å gi den en verdi Du kan deretter bruke likhetstegnet, 899 00:41:14,200 --> 00:41:16,211 ellers kjent som oppdrag operatør. 900 00:41:16,211 --> 00:41:17,960 Og legg merke til hvordan hver av disse linjene med kode 901 00:41:17,960 --> 00:41:20,650 har de semikolon ved enden av den. 902 00:41:20,650 --> 00:41:22,550 >> Men ærlig talt dette bare ser litt stygg. 903 00:41:22,550 --> 00:41:26,580 Hvorfor kan jeg ikke si til datamaskinen, gi meg en variabel og initialisere den til null. 904 00:41:26,580 --> 00:41:28,380 Det vil si, gi meg en tom glassbolle. 905 00:41:28,380 --> 00:41:28,980 Mens du kan. 906 00:41:28,980 --> 00:41:32,250 Og så en av dommen kaller du vil har å gjøre stilistisk over tid 907 00:41:32,250 --> 00:41:36,290 er, skriv du din kode som dette, eller du slags rydde opp og imponere 908 00:41:36,290 --> 00:41:39,040 folk ved å skrive to linjer som bare ett. 909 00:41:39,040 --> 00:41:41,830 Og dette vil bli betraktet generelt en mer elegant måte 910 00:41:41,830 --> 00:41:43,870 skrive koden din stilistisk. 911 00:41:43,870 --> 00:41:45,200 >> Funksjoner vi er selvfølgelig sett. 912 00:41:45,200 --> 00:41:46,340 De kommer til å ta dette formatet. 913 00:41:46,340 --> 00:41:48,881 Navnet på en funksjon, noen parenteser, og deretter kanskje noen 914 00:41:48,881 --> 00:41:49,910 ting inni. 915 00:41:49,910 --> 00:41:52,540 Eller du kan se bruk av flere funksjoner side 916 00:41:52,540 --> 00:41:55,980 ved side, som noe som dette. 917 00:41:55,980 --> 00:41:59,390 Nå som en tangent, gjør denne spøken nå fornuftig? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [Latter] 920 00:42:04,960 --> 00:42:09,360 Det betyr ikke at det er morsomt, men det betyr kanskje gjøre en litt mer fornuftig. 921 00:42:09,360 --> 00:42:12,140 Så nå la oss gå inn i CS50 apparatet et øyeblikk. 922 00:42:12,140 --> 00:42:14,640 Og la meg åpne opp en teaser her. 923 00:42:14,640 --> 00:42:17,470 >> Og faktisk en av grunnene for innføring av IKEA-katalogen 924 00:42:17,470 --> 00:42:20,080 og blinkende bilde av iPhone litt siden 925 00:42:20,080 --> 00:42:24,700 var å faktisk knytte sammen faktum at bare noen få år siden, i 2007, 926 00:42:24,700 --> 00:42:26,540 denne del av koden var frigjøres, som ble 927 00:42:26,540 --> 00:42:29,820 en av de aller første gjennomføringen av et stykke av programvare 928 00:42:29,820 --> 00:42:31,494 som gjør det som kalles jailbreaking. 929 00:42:31,494 --> 00:42:34,410 For dem ukjent, jailbreaking noe som en telefon eller en iPhone 930 00:42:34,410 --> 00:42:37,680 betyr i hovedsak å finne ut hvordan ting skal gjøres 931 00:42:37,680 --> 00:42:39,864 med det at selskapet som gjorde det ikke har tenkt. 932 00:42:39,864 --> 00:42:42,780 Som du ønsker å installere visse programvare som ikke er i app store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking telefonen som du gjøre ting som dette og mer. 934 00:42:45,405 --> 00:42:47,447 Men hva var det gøy i 2007-- og det har vært 935 00:42:47,447 --> 00:42:49,780 dusinvis av forskjellige versjoner av disse ting siden da, 936 00:42:49,780 --> 00:42:53,540 i alle slags languages-- er at dette programmet her, kalt iUnlock, 937 00:42:53,540 --> 00:42:57,036 ble faktisk skrevet i C. Og så jeg trakk opp kildekoden for dette, 938 00:42:57,036 --> 00:42:59,910 bare for å slags vise deg noen av likhetene med de konstruerer 939 00:42:59,910 --> 00:43:01,450 vi har diskutert så langt. 940 00:43:01,450 --> 00:43:05,150 Nå er det mye mer kompleksitet her enn vi har sett allerede i klassen. 941 00:43:05,150 --> 00:43:07,160 La meg bla opp bare en liten bit her. 942 00:43:07,160 --> 00:43:11,520 >> Men legg merke these-- godt vi merker noen things-- men legg merke til disse linjene her, 943 00:43:11,520 --> 00:43:14,090 inkludert standard I / O dot h. 944 00:43:14,090 --> 00:43:17,660 Og alle-- linje 24, vennligst bli merke standard I / O 945 00:43:17,660 --> 00:43:21,380 dot h og en hel haug med andre Filer som tilsynelatende andre mennesker 946 00:43:21,380 --> 00:43:22,160 har skrevet. 947 00:43:22,160 --> 00:43:24,850 Og hvis vi bla nedover gjennom dette, litt vilkårlig, 948 00:43:24,850 --> 00:43:27,910 merker jeg ikke vet hvordan du skal skrive alt dette selv nødvendigvis ennå, 949 00:43:27,910 --> 00:43:28,880 men det er hvis. 950 00:43:28,880 --> 00:43:30,400 Så tydeligvis dette har en filial. 951 00:43:30,400 --> 00:43:33,210 >> Og hvis jeg blar ned litt videre det er en annen hvis. 952 00:43:33,210 --> 00:43:38,210 Hvis jeg bla opp, tror jeg rundt linje 100 jeg så etter. 953 00:43:38,210 --> 00:43:40,020 Så jeg er ikke helt sikker hvordan dette fungerer ennå, 954 00:43:40,020 --> 00:43:43,180 men dette er en for løkke som kommer til å la meg iterere et antall ganger. 955 00:43:43,180 --> 00:43:45,230 Og hvis jeg bla alle veien til bunnen 956 00:43:45,230 --> 00:43:51,020 Jeg ser at det er en fungere her nede kalt 957 00:43:51,020 --> 00:43:54,570 viktigste, og noen ekstra studiepoeng for din leseglede. 958 00:43:54,570 --> 00:43:57,830 >> Så dette er bare for å si-- og vi vil sette dette online blant kursets kilde 959 00:43:57,830 --> 00:44:01,480 kode today-- at selv noen av disse enheter som vi tar for gitt, 960 00:44:01,480 --> 00:44:05,130 på slutten av dagen du fortsatt ved hjelp av disse grunnleggende begreper som vi har 961 00:44:05,130 --> 00:44:07,430 vært å innføre allerede så langt. 962 00:44:07,430 --> 00:44:08,620 Det er nok av den. 963 00:44:08,620 --> 00:44:11,480 Ok, så la oss nå faktisk bygge noe. 964 00:44:11,480 --> 00:44:15,640 >> La oss gå utover noe sånt hello.c, og åpne opp dette, 965 00:44:15,640 --> 00:44:17,170 La oss skrive dette programmet her. 966 00:44:17,170 --> 00:44:19,850 Jeg kommer til å gå videre og skrive et program som heter adder.c, 967 00:44:19,850 --> 00:44:23,310 hvis formål i livet kommer til å være som min første super enkel kalkulator 968 00:44:23,310 --> 00:44:24,840 som bare legger et par tall. 969 00:44:24,840 --> 00:44:27,050 Ikke fordi det er en vanskelig problem, men fordi det 970 00:44:27,050 --> 00:44:29,390 tillater meg å nå knytte sammen et par ting. 971 00:44:29,390 --> 00:44:33,100 Så jeg kommer til å gå videre og omfatte standard I / O dot h og CS50 dot h. 972 00:44:33,100 --> 00:44:34,670 Jeg kommer til å si int main annullert. 973 00:44:34,670 --> 00:44:36,545 Og igjen i fremtiden vi vil komme tilbake til det 974 00:44:36,545 --> 00:44:38,560 inn i denne sammenhengen og maktesløse midler. 975 00:44:38,560 --> 00:44:43,340 >> Og nå kommer jeg til å si noe som printf, gi meg et heltall. 976 00:44:43,340 --> 00:44:47,610 Og nå på min andre linjen, hvordan uttrykke jeg meg selv slik 977 00:44:47,610 --> 00:44:50,980 at jeg ønsker å erklære en variabel som kommer til å lagre en int? 978 00:44:50,980 --> 00:44:55,470 Bokstavelig talt hva jeg skriver om jeg vil oppretter en variabel som lagrer en int 979 00:44:55,470 --> 00:44:58,270 ville du si? 980 00:44:58,270 --> 00:44:59,650 int en lik getint. 981 00:44:59,650 --> 00:45:00,485 Jada, så som fungerer. 982 00:45:00,485 --> 00:45:02,360 Og bare for konsistens med koden du 983 00:45:02,360 --> 00:45:04,485 ser på nettet, la meg endre dette til x, bare fordi x 984 00:45:04,485 --> 00:45:06,830 er et felles variabelnavn å bruke, i alle fall i algebra. 985 00:45:06,830 --> 00:45:08,720 Nå la meg gå videre og gjøre printf igjen. 986 00:45:08,720 --> 00:45:10,692 Gi meg et annet heltall. 987 00:45:10,692 --> 00:45:12,900 Og nå kommer jeg til å form av lære av dette mønsteret, 988 00:45:12,900 --> 00:45:14,490 Jeg kommer til å si int y får GetInt. 989 00:45:14,490 --> 00:45:16,340 >> Og vi har brukt GetInt før, men bare 990 00:45:16,340 --> 00:45:19,860 som GetString går og får en streng, som Javier gjorde fra publikum, 991 00:45:19,860 --> 00:45:22,780 Tilsvarende gjør GetInt begynner å blinke spørsmålet. 992 00:45:22,780 --> 00:45:26,750 Og effektivt venter på at brukeren å gi den et heltall, ved å skrive det inn 993 00:45:26,750 --> 00:45:27,900 og trykket Enter. 994 00:45:27,900 --> 00:45:30,850 Nå til slutt kommer jeg til å gjøre dette, printf summen of-- 995 00:45:30,850 --> 00:45:36,080 og la meg få fancy now-- prosent i og prosent i er til stede 996 00:45:36,080 --> 00:45:39,270 Jeg utropstegn backslash n. 997 00:45:39,270 --> 00:45:42,750 Og hva tror du jeg kommer til å satt i nå som de ekstra innganger 998 00:45:42,750 --> 00:45:44,620 til printf? 999 00:45:44,620 --> 00:45:47,380 >> Jeg ønsker ikke å si bokstavelig sitere unquote x. 1000 00:45:47,380 --> 00:45:52,210 Jeg ønsker å klasse i x og da, og nå la oss få fancy 1001 00:45:52,210 --> 00:45:54,420 og la oss bare anta Vi kan gjøre hva vi vil. 1002 00:45:54,420 --> 00:45:56,330 Hva du ønsker å si neste? 1003 00:45:56,330 --> 00:45:57,070 x pluss y. 1004 00:45:57,070 --> 00:45:58,520 Og ja det vil fungere. 1005 00:45:58,520 --> 00:46:01,760 Det er minimalt programmeringsspråk forstår grunnleggende aritmetikk, 1006 00:46:01,760 --> 00:46:03,500 og så dette bør faktisk arbeid. 1007 00:46:03,500 --> 00:46:06,730 >> Så la meg gå videre og gjør huggorm i min svart og hvitt vindu 1008 00:46:06,730 --> 00:46:08,090 her nede, Enter. 1009 00:46:08,090 --> 00:46:10,830 Cryptic linje, men ingen feil melding, så det er bra. 1010 00:46:10,830 --> 00:46:14,410 Dot slash huggorm, gi meg et heltall, 1. 1011 00:46:14,410 --> 00:46:16,230 Gi meg et annet heltall, to. 1012 00:46:16,230 --> 00:46:18,770 Summen av 1 og 2 er 3. 1013 00:46:18,770 --> 00:46:21,730 >> Ok, så en ganske triviell program, men hva er det gjort? 1014 00:46:21,730 --> 00:46:25,680 Det er tillatt meg å bruke en funksjon syne her, ringe en annen funksjon her, 1015 00:46:25,680 --> 00:46:29,260 to samtaler til GetInt, en tredje kall til printf, 1016 00:46:29,260 --> 00:46:30,720 og deretter bruke disse plassholdere. 1017 00:46:30,720 --> 00:46:33,160 Så det er litt mer sofistikert enn forrige gang. 1018 00:46:33,160 --> 00:46:35,260 Men hva hvis jeg vil få en litt mer avansert? 1019 00:46:35,260 --> 00:46:38,900 >> La meg gå videre og nå gjør dette. 1020 00:46:38,900 --> 00:46:42,890 La meg gå videre og skape en ny fil som heter forhold null. 1021 00:46:42,890 --> 00:46:44,890 Og jeg kommer til å spare litt tid for klasser skyld 1022 00:46:44,890 --> 00:46:48,260 og limer i at kode som utgangspunkt. 1023 00:46:48,260 --> 00:46:51,510 Og nå er jeg bare kommer til å sette noe nytt her i midten. 1024 00:46:51,510 --> 00:46:55,889 Så printf jeg ønsker et heltall takk. 1025 00:46:55,889 --> 00:46:58,180 Og all denne koden er tilgjengelig på kurset hjemmeside, 1026 00:46:58,180 --> 00:47:00,556 du trenger ikke skrive det ut i klassen hvis du heller ikke. 1027 00:47:00,556 --> 00:47:02,638 int, og nå kommer jeg til å bruke, i stedet for x og y, 1028 00:47:02,638 --> 00:47:05,270 Jeg kommer til å bruke n, som er trolig den mest vanlige navnet 1029 00:47:05,270 --> 00:47:09,220 for et helt tall i et dataprogram. 1030 00:47:09,220 --> 00:47:12,060 Og nå ønsker jeg å gjøre en litt kritikk her. 1031 00:47:12,060 --> 00:47:15,460 Jeg kommer til å se om n er større enn 0, og deretter 1032 00:47:15,460 --> 00:47:23,670 Jeg kommer til å si printf-- whoops, printf-- du plukket et positivt tall, 1033 00:47:23,670 --> 00:47:25,370 utropstegn backslash n. 1034 00:47:25,370 --> 00:47:26,460 Lukke det. 1035 00:47:26,460 --> 00:47:33,150 Else Jeg kommer til å skrive ut printf du plukket et negativt tall. 1036 00:47:33,150 --> 00:47:35,377 >> Nå før du kjefte på meg, la oss kjøre dette programmet. 1037 00:47:35,377 --> 00:47:36,210 La meg gå ned her. 1038 00:47:36,210 --> 00:47:40,730 Og hvordan kompilere jeg et program kalt forhold dash 0? 1039 00:47:40,730 --> 00:47:42,300 Gjøre forholdene dash 0. 1040 00:47:42,300 --> 00:47:45,560 Slag av en dum navn, men-- faen. 1041 00:47:45,560 --> 00:47:47,560 OK, god undervisning øyeblikk. 1042 00:47:47,560 --> 00:47:48,410 Hvorfor gjorde at bryte? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Hva gjorde jeg tilfeldigvis kalle denne filen? 1045 00:47:54,710 --> 00:47:56,876 Du kan slags antyde fra kategorien her oppe. 1046 00:47:56,876 --> 00:47:58,750 Så det er ikke ille at jeg gjorde dette, fordi dette 1047 00:47:58,750 --> 00:48:00,208 vil skje kanskje for noen av dere. 1048 00:48:00,208 --> 00:48:03,880 Så jeg tilfeldigvis heter min kildekode tilstand 0. 1049 00:48:03,880 --> 00:48:09,950 Men min kilde kode ved konvensjon bør være i en fil kalt tilstand 0 dash c, 1050 00:48:09,950 --> 00:48:11,720 eller hva dot c. 1051 00:48:11,720 --> 00:48:12,610 >> Så la meg fikse dette. 1052 00:48:12,610 --> 00:48:16,880 Akkurat som Microsoft Word jeg kan gå opp Lagre som og gjøre tilstanden 0 dot c. 1053 00:48:16,880 --> 00:48:20,100 Nå bare å være ryddig jeg er kommer til å gå videre og ta 1054 00:48:20,100 --> 00:48:23,020 tilstand 0, som var min gamle versjonen. 1055 00:48:23,020 --> 00:48:26,550 Og nå la oss gjør tilstand 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, virker bra. 1057 00:48:27,870 --> 00:48:29,510 >> Tilstand 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Jeg ønsker et heltall please, 50, du plukket et positivt tall. 1059 00:48:33,530 --> 00:48:35,390 Nå hva med negativ 50? 1060 00:48:35,390 --> 00:48:37,660 Du plukket et negativt tall. 1061 00:48:37,660 --> 00:48:39,605 Hva med nå, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Ganske sikker på at 0 er ikke negativ. 1064 00:48:45,350 --> 00:48:47,780 >> Så dette er en slags logisk feil. 1065 00:48:47,780 --> 00:48:50,680 Hvordan løser jeg dette? 1066 00:48:50,680 --> 00:48:57,260 Else hvis n er mindre enn 0, gjør dette, annet vi kan ha en treveis gren her, 1067 00:48:57,260 --> 00:49:01,740 printf du plukket 0. 1068 00:49:01,740 --> 00:49:06,150 Så nå hvis jeg kjøre dette program etter kompilering av det 1069 00:49:06,150 --> 00:49:10,790 igjen med make, og nå kjøre tilstand 0, hva jeg vil se her 1070 00:49:10,790 --> 00:49:14,570 er 0 gir meg at produksjonen. 1071 00:49:14,570 --> 00:49:16,280 Så hvor skal vi med dette? 1072 00:49:16,280 --> 00:49:18,930 >> Vel det er veldig lett å miste av syne av skogen for bare trær. 1073 00:49:18,930 --> 00:49:23,590 Og så la oss til å konkludere med denne 2 og 1/2 minutters video 1074 00:49:23,590 --> 00:49:25,710 som til slutt er litt av en annonse fra Google, 1075 00:49:25,710 --> 00:49:28,850 men som egentlig er testament til hva selv ved hjelp av disse grunnleggende bygge 1076 00:49:28,850 --> 00:49:33,020 blokker vi kan til slutt gjøre en gang vi har en bit av programmering 1077 00:49:33,020 --> 00:49:34,463 savvy under våre belter. 1078 00:49:34,463 --> 00:49:35,150 >> [Musikk spilles] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO Brierley (voiceover): Det var 26 år siden, 1081 00:49:40,540 --> 00:49:42,470 og jeg var bare om å slå fem. 1082 00:49:42,470 --> 00:49:45,465 Vi fikk til jernbanestasjonen og vi bordet vårt tog sammen. 1083 00:49:45,465 --> 00:49:48,010 Broren min sa bare at jeg vil bo her, og jeg skal komme tilbake. 1084 00:49:48,010 --> 00:49:51,140 Og jeg tenkte, vel du vet, Jeg kan like godt bare gå i dvale 1085 00:49:51,140 --> 00:49:52,690 og han vil bare vekke meg. 1086 00:49:52,690 --> 00:49:55,145 Og da jeg våknet opp neste dag, hele vogn 1087 00:49:55,145 --> 00:49:59,125 var tom på et løpsk tog, et spøkelse toget tar meg jeg vet ikke hvor. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Jeg ble adoptert ut til Australia, til en australsk familie. 1090 00:50:06,280 --> 00:50:09,710 Og mamma hadde dekorert min rommet med kart over India, 1091 00:50:09,710 --> 00:50:11,950 som hun satt ved siden av sengen min. 1092 00:50:11,950 --> 00:50:15,830 Jeg våknet opp hver morgen ser at kartet, og dermed 1093 00:50:15,830 --> 00:50:18,530 det liksom holdt minnene i live. 1094 00:50:18,530 --> 00:50:20,530 Folk vil si, du er prøver å finne en nål 1095 00:50:20,530 --> 00:50:23,560 i en høystakk, Saroo du vil aldri finne den. 1096 00:50:23,560 --> 00:50:28,540 >> Jeg ville ha blinket av de stedene som jeg brukes til å gå, de blinker av familien min 1097 00:50:28,540 --> 00:50:29,890 ansikter. 1098 00:50:29,890 --> 00:50:34,060 Det var bildet av min mor, sitter med bena i kors, 1099 00:50:34,060 --> 00:50:35,740 bare se henne gråte. 1100 00:50:35,740 --> 00:50:38,160 Livet er bare så vanskelig. 1101 00:50:38,160 --> 00:50:41,237 Det var min skatt. 1102 00:50:41,237 --> 00:50:44,320 Og jeg var ute på Google Map og innså at det er Google Earth også. 1103 00:50:44,320 --> 00:50:48,140 I en verden der du kan zoome inn, Jeg begynte å ha alle disse tankene 1104 00:50:48,140 --> 00:50:51,500 og hvilke muligheter at dette kunne gjøre for meg. 1105 00:50:51,500 --> 00:50:54,890 Jeg sa til meg selv, du vet, har du fikk alle de fotografiske minner 1106 00:50:54,890 --> 00:50:58,590 og landemerker hvor du er fra, og du vet hva byen ser ut. 1107 00:50:58,590 --> 00:51:03,060 Dette kan være et program som du kan bruke til å finne veien tilbake. 1108 00:51:03,060 --> 00:51:06,720 >> Jeg tenkte, vel jeg vil sette en prikk på Calcutta jernbanestasjonen, 1109 00:51:06,720 --> 00:51:10,890 og en radius linje, vet du, at du bør søke rundt dette området. 1110 00:51:10,890 --> 00:51:13,750 Jeg liksom kom over disse toget spor. 1111 00:51:13,750 --> 00:51:18,160 Og jeg begynte å følge den, og Jeg kom til en jernbanestasjon som 1112 00:51:18,160 --> 00:51:22,228 reflekteres det samme bildet som var i mine minner. 1113 00:51:22,228 --> 00:51:23,707 Alt matchet. 1114 00:51:23,707 --> 00:51:27,950 Jeg tenkte Jepp, jeg vet hvor jeg skal. 1115 00:51:27,950 --> 00:51:30,116 Jeg skal bare la kart som jeg har i hodet mitt 1116 00:51:30,116 --> 00:51:33,080 føre meg og ta meg tilbake til min hjemby. 1117 00:51:33,080 --> 00:51:36,420 >> Jeg kom til dørstokken huset som jeg ble født. 1118 00:51:36,420 --> 00:51:39,140 Og gikk rundt ca 15 meter rundt hjørnet, 1119 00:51:39,140 --> 00:51:42,980 det var tre damer stående utsiden, ved siden av hverandre. 1120 00:51:42,980 --> 00:51:47,830 Og den mellomste gikk frem, og Jeg tenkte, dette er din mor. 1121 00:51:47,830 --> 00:51:53,450 Hun kom frem, hun klemte meg, og vi var der i ca fem minutter. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Hun tok meg i hånden og hun tok meg med til huset 1124 00:51:59,000 --> 00:52:02,450 og fikk på telefonen, hvor hun ringte min søster og min bror 1125 00:52:02,450 --> 00:52:05,600 å si det, vet du, din bror har nettopp 1126 00:52:05,600 --> 00:52:09,340 alle plutselig dukket opp som et spøkelse. 1127 00:52:09,340 --> 00:52:12,440 Og da familien ble gjenforent igjen. 1128 00:52:12,440 --> 00:52:15,110 Alt er bra, Jeg hjalp min mor ut, 1129 00:52:15,110 --> 00:52:17,110 hun trenger ikke å være slaving bort. 1130 00:52:17,110 --> 00:52:19,555 Hun kan leve resten av sitt liv i fred. 1131 00:52:19,555 --> 00:52:23,460 >> Det var en nål i en høystakk, men nålen var der. 1132 00:52:23,460 --> 00:52:24,400 Alt er der. 1133 00:52:24,400 --> 00:52:28,260 Alt vi har i verden er på peke på en knapp. 1134 00:52:28,260 --> 00:52:32,010 Men du må ha vilje og vilje til å ville det. 1135 00:52:32,010 --> 00:52:32,950 >> [Musikk spilles] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Wonder søt anbefaling 1138 00:52:38,170 --> 00:52:40,540 til akkurat hva du kan nå gjøre med teknologi. 1139 00:52:40,540 --> 00:52:43,390 Vi vil se deg neste uke. 1140 00:52:43,390 --> 00:52:44,374