1 00:00:00,000 --> 00:00:01,500 >> [Musik spiller] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Okay dette er CS50 og dette er i slutningen af ​​uge én. 4 00:00:16,110 --> 00:00:20,760 Så jeg vil gerne introducere min tidligere advisee, Andel Duff, der ikke kun gør 5 00:00:20,760 --> 00:00:25,460 iPhone 5 stande, såvel som dette talerstol, gør han 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 fortælle dig lidt lidt om Formula SAE, som jeg 9 00:00:31,980 --> 00:00:32,604 er kaptajnen. 10 00:00:32,604 --> 00:00:33,437 Det er en MIT hold. 11 00:00:33,437 --> 00:00:35,520 Jeg vil bare fortælle dig fyre en lille smule om det 12 00:00:35,520 --> 00:00:37,520 og forhåbentlig generere en vis interesse. 13 00:00:37,520 --> 00:00:41,590 >> Så lad mig bare køre gennem en par ting om vores team. 14 00:00:41,590 --> 00:00:43,640 Så vi er helt studerende løb, hvor alle 15 00:00:43,640 --> 00:00:47,300 af medlemmernes design, simulere, test, og producenten et delsystem 16 00:00:47,300 --> 00:00:48,090 af bilen. 17 00:00:48,090 --> 00:00:51,240 Vi har vores egen maskine butik og garager, og N52-- eller ked af det, 18 00:00:51,240 --> 00:00:54,140 N51-- som er den samme bygning som MIT Science Museum. 19 00:00:54,140 --> 00:00:55,990 Og vi er de mennesker, at køre bilen. 20 00:00:55,990 --> 00:00:58,340 Der er en national konkurrence i begyndelsen af ​​sommeren, 21 00:00:58,340 --> 00:01:01,215 og så er der mindre shootout konkurrencer i løbet af året. 22 00:01:01,215 --> 00:01:04,400 Og så gør vi kørekursus dage at få nye medlemmer bekendtskab. 23 00:01:04,400 --> 00:01:08,280 >> Vores bygge dage er på Lørdage fra 11:00 til 08:00. 24 00:01:08,280 --> 00:01:11,060 Frokosten og aftensmaden kan tage sig af, fra Bertucci-og Beantown 25 00:01:11,060 --> 00:01:12,130 henholdsvis. 26 00:01:12,130 --> 00:01:15,260 Vi har et ugentligt møde og seminar, der er til kursus kredit. 27 00:01:15,260 --> 00:01:18,560 Hvilket er ny som i dette semester, og det vil også være til næste semester, 28 00:01:18,560 --> 00:01:19,940 så du kan krydse-reg for. 29 00:01:19,940 --> 00:01:22,960 Og så har vi designe, butik, og CAD-dage i løbet af ugen, 30 00:01:22,960 --> 00:01:26,870 mens medlemmerne vil selvstændigt CAD-dele, ordrebeholdning et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Så for elektrisk ingeniør på holdet 32 00:01:29,200 --> 00:01:31,110 vi har vores trækkraft, højspændingsnet, 33 00:01:31,110 --> 00:01:33,390 som kører til en nominel 300 volt, som omfatter 34 00:01:33,390 --> 00:01:35,360 motorer, kontrolapparater, og batteripakker. 35 00:01:35,360 --> 00:01:37,235 Så vi har en lav spænding system, som løber 36 00:01:37,235 --> 00:01:40,180 ved 12 volt, som omfatter kontroller kan knudepunkter hjernen 37 00:01:40,180 --> 00:01:41,570 kasse, og instrumentbrættet. 38 00:01:41,570 --> 00:01:43,890 Så vidt CS går, gør vi har hjemmeside vedligeholdelse 39 00:01:43,890 --> 00:01:47,940 at vi har brug gjort for arrangementer, medlemskab forandringer, nye billeder og PR-materiale. 40 00:01:47,940 --> 00:01:51,540 Og så har vi kode, der styrer bil for vores trækkraft kontrol, lancering 41 00:01:51,540 --> 00:01:55,750 kontrol, tankestreg kontrol, drejningsmoment vectoring, og regenerative bremsesystemer, der 42 00:01:55,750 --> 00:01:59,170 løber typisk i MATLAB, Simulink, og LabVIEW. 43 00:01:59,170 --> 00:02:00,910 >> Fortælle dig en lille smule om bilen. 44 00:02:00,910 --> 00:02:02,470 Så det er omkring 500 pounds. 45 00:02:02,470 --> 00:02:04,285 Det er regler, der er begrænset til 85 kilowatt. 46 00:02:04,285 --> 00:02:08,310 Det har 2 EMRAX 207 motorer i tilbage, en for hvert baghjul. 47 00:02:08,310 --> 00:02:11,880 Den har specialbyggede batteripakker fra Prismatiske A123 pose celler 48 00:02:11,880 --> 00:02:14,780 på 300 volt og 5.6 kilowatt-timer. 49 00:02:14,780 --> 00:02:17,950 Og det er direkte drev med en 2,64-1 udvekslingsforhold. 50 00:02:17,950 --> 00:02:20,970 Her er nogle billeder, vi tog af det på konkurrencen. 51 00:02:20,970 --> 00:02:25,820 Her er ryggen, næse kegle, og her er de motorer, 52 00:02:25,820 --> 00:02:29,682 de store sorte skiver under et herre manus. 53 00:02:29,682 --> 00:02:32,140 Her er et dias, jeg trak ud af vores konkurrence ordningen. 54 00:02:32,140 --> 00:02:35,389 Og det er bare at sammenligne vores bil til en par af kommercielt tilgængelige biler, 55 00:02:35,389 --> 00:02:38,380 ligesom KTM XBOW Ariel Atom, og Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Hvis du er fortrolig med pris, magt pull vægt, dollars per hestekræfter, 57 00:02:42,110 --> 00:02:44,930 dollars per drejningsmoment, og vores bil blæser dem alle ud af vandet. 58 00:02:44,930 --> 00:02:47,520 Hvis du har spørgsmål, notere ned denne e-mailadresse. 59 00:02:47,520 --> 00:02:50,800 Skyde os en mail på fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Vi er glade for at tale om noget, du gerne vil. 61 00:02:53,350 --> 00:02:55,600 Harvard-studerende er venlige mindretallets på holdet. 62 00:02:55,600 --> 00:02:58,350 Hvis du har spørgsmål om der bedes du skyde os en mail, 63 00:02:58,350 --> 00:03:00,810 glad for at tale, og jeg har tænkt mig til hovedet tilbage over til David. 64 00:03:00,810 --> 00:03:01,550 Tak. 65 00:03:01,550 --> 00:03:02,466 Jeg sætter pris på det, gutter. 66 00:03:02,466 --> 00:03:03,615 [Applaus] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel tilbragte sommeren arbejde sammen med os her på campus i CS50 69 00:03:10,980 --> 00:03:11,480 denne sommer. 70 00:03:11,480 --> 00:03:13,505 Og ud over at arbejde på ting som binære løg 71 00:03:13,505 --> 00:03:16,090 han faktisk virkelig åbnet vores eyes-- og minen i particular-- 72 00:03:16,090 --> 00:03:20,535 til hvad der virkelig skæringspunktet ikke af hardware og software kan være. 73 00:03:20,535 --> 00:03:23,410 Faktisk en masse af de ting, han bare turnerede dig igennem er i sidste ende 74 00:03:23,410 --> 00:03:26,030 skabte først i software, og så i sidste ende fabrikerede 75 00:03:26,030 --> 00:03:27,299 i den virkelige verden i hardware. 76 00:03:27,299 --> 00:03:29,590 Så hvis du er interesseret i udforske denne skæring, 77 00:03:29,590 --> 00:03:31,430 måske tage op denne gruppe. 78 00:03:31,430 --> 00:03:34,140 >> Nu mellemtiden de af jer der er fans af teknologi, 79 00:03:34,140 --> 00:03:36,140 og Apple-produkter i navnlig ved, at der 80 00:03:36,140 --> 00:03:37,860 var et par annonceringer i går. 81 00:03:37,860 --> 00:03:39,776 Men vi troede, vi ville vise du en, der kom ud 82 00:03:39,776 --> 00:03:43,590 et par dage før, at du måske ikke har set. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Du ved, en gang i et stykke tid noget 84 00:03:46,150 --> 00:03:49,540 kommer sammen at ændrer den måde, vi lever på. 85 00:03:49,540 --> 00:03:53,479 En enhed, så enkel og intuitiv bruger det føles næsten bekendt. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Introduktion 2015 IKEA kataloget. 88 00:04:04,138 --> 00:04:10,420 Det er ikke en digital bog eller en e-bog, er det en bog-bog. 89 00:04:10,420 --> 00:04:14,440 >> Den første ting at bemærke er nej kabler, ikke engang et strømkabel. 90 00:04:14,440 --> 00:04:18,519 2015 IKEA kataloget kommer fuldt opladet, 91 00:04:18,519 --> 00:04:20,550 og batteriets levetid er evig. 92 00:04:20,550 --> 00:04:27,300 Interfacet er 7,5 med 8 inches, men kan udvide til 15 ved 8 inches. 93 00:04:27,300 --> 00:04:32,410 Navigationen er baseret på taktil berøring teknologi, som du rent faktisk kan føle. 94 00:04:32,410 --> 00:04:37,120 >> Indholdet kommer præinstalleret via 328 high-definition-sider 95 00:04:37,120 --> 00:04:40,180 af inspirerende boligindretningsprodukter ideer. 96 00:04:40,180 --> 00:04:43,740 Sådan startes browsing, blot trykke og trække. 97 00:04:43,740 --> 00:04:50,870 Højre til venstre for at bevæge sig fremad, venstre til højre for at flytte tilbage. 98 00:04:50,870 --> 00:04:52,770 >> Læg mærke noget andet? 99 00:04:52,770 --> 00:04:53,780 Det er rigtigt. 100 00:04:53,780 --> 00:04:55,190 Ingen forsinkelse. 101 00:04:55,190 --> 00:04:58,400 Hver krystalklar side belastninger øjeblikkeligt, 102 00:04:58,400 --> 00:05:00,586 uanset hvor hurtigt du ruller. 103 00:05:00,586 --> 00:05:03,710 Hvis du ønsker at få et hurtigt overblik, bare holde det i din hule hånd, 104 00:05:03,710 --> 00:05:06,816 og med tommelfingeren, hastighed gennemse indholdet. 105 00:05:06,816 --> 00:05:10,930 >> Hvis du finder noget, du vil gemme til senere, kan du blot bogmærke det. 106 00:05:10,930 --> 00:05:17,620 Og selv hvis du lukker programmet, du kan nemt finde bogmærket igen. 107 00:05:17,620 --> 00:05:18,490 Forbløffende. 108 00:05:18,490 --> 00:05:20,434 >> [Latter] 109 00:05:20,434 --> 00:05:21,406 [Applaus] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Så det bringer os til i slutningen af ​​uge et. 112 00:05:29,870 --> 00:05:31,760 Et par annonceringer nu. 113 00:05:31,760 --> 00:05:33,440 Så sektionering er nu i gang. 114 00:05:33,440 --> 00:05:36,860 Gå til denne webadresse her engang mellem nu og fredag ​​ved middagstid 115 00:05:36,860 --> 00:05:39,960 til rent faktisk at angive, om du er blandt dem mindre behagelig, mere 116 00:05:39,960 --> 00:05:41,690 komfortabel, eller et sted i mellem. 117 00:05:41,690 --> 00:05:44,511 >> Det er typisk en af ​​dem ting, som du lige slags kender. 118 00:05:44,511 --> 00:05:47,510 Og i virkeligheden dem, der er mindre komfortable nok vide så meget, 119 00:05:47,510 --> 00:05:49,634 dem af jer, der er mere komfortabel vide så meget, 120 00:05:49,634 --> 00:05:54,960 og igen, hvis du ikke er helt sikker på, hvilken af disse spande du falder ind du er 121 00:05:54,960 --> 00:05:56,210 sandsynligvis et sted i mellem. 122 00:05:56,210 --> 00:05:59,810 Men forvisset om du kan bytte efter et par uger, hvis det bliver nødvendigt. 123 00:05:59,810 --> 00:06:02,620 >> I mellemtiden, for den kommende uge Vi starter ikke dele per se, 124 00:06:02,620 --> 00:06:04,760 men super sektioner, som er åbne for alle studerende. 125 00:06:04,760 --> 00:06:08,220 Det kommende søndag på et sted blive annonceret på kursets websted 126 00:06:08,220 --> 00:06:10,190 vi vil have en for dem mindre behagelig, 127 00:06:10,190 --> 00:06:12,470 samt en for dem mere komfortabel. 128 00:06:12,470 --> 00:06:15,460 Og dem et sted i mellem kan vælge, hvilken af ​​de to, 129 00:06:15,460 --> 00:06:17,360 eller begge dele, hvis du gerne vil, at sidde-in på. 130 00:06:17,360 --> 00:06:19,630 Og fokus på dem vil i sidste ende være på C, 131 00:06:19,630 --> 00:06:22,440 som vi vil fortsætte vores samtale i dag. 132 00:06:22,440 --> 00:06:25,070 >> Problem sæt 0 mellemtiden er forhåbentlig i dine hænder. 133 00:06:25,070 --> 00:06:27,500 Officielt skyldes i morgen, Torsdag kl. 134 00:06:27,500 --> 00:06:29,490 Medmindre du kontanter i en af dine 5 sene dage, 135 00:06:29,490 --> 00:06:31,780 hvilket vil bringe det indtil fredag ​​ved middagstid. 136 00:06:31,780 --> 00:06:34,420 Problem sæt 1 mellemtiden vil være lagt på kursets hjemmeside. 137 00:06:34,420 --> 00:06:37,381 Og dette vil være vores første strejftog som en klasse i C. 138 00:06:37,381 --> 00:06:40,630 Og det problem sæt spec vil gå dig gennem en masse mekanik hvad 139 00:06:40,630 --> 00:06:43,960 vi begyndte at tale om på mandag, og vi vil fortsætte med at tale om i dag. 140 00:06:43,960 --> 00:06:46,770 C, Linux, CS50 apparat, bliver alle 141 00:06:46,770 --> 00:06:48,990 vil afvente dig i specifikationen. 142 00:06:48,990 --> 00:06:52,840 >> Kontortid i mellemtiden er i gang, i bachelor spisesal. 143 00:06:52,840 --> 00:06:56,240 Hovedet til denne webadresse her for at se den planlægge for i aften og i morgen, 144 00:06:56,240 --> 00:06:57,930 Hvis du gerne vil deltage. 145 00:06:57,930 --> 00:07:01,920 Spørgsmål mellemtiden, så du få mulighed for at stille spørgsmål 146 00:07:01,920 --> 00:07:05,860 asynkront, 24/7, indser du er ikke begrænset til sektioner og kontor 147 00:07:05,860 --> 00:07:09,530 timer, men snarere dette værktøj her, CS50 Diskuter på denne webadresse 148 00:07:09,530 --> 00:07:12,150 vil være kursets online opslagstavle software via hvilke 149 00:07:12,150 --> 00:07:15,030 du kan stille spørgsmål klassekammerater og også personale. 150 00:07:15,030 --> 00:07:18,492 Så husk på, at ressource som godt. 151 00:07:18,492 --> 00:07:20,200 Imens en tradition starter denne fredag. 152 00:07:20,200 --> 00:07:23,200 Som du måske har et glimt fra sidste onsdag teaser-video, 153 00:07:23,200 --> 00:07:25,510 Vi har en tradition mest hver fredag ​​i løbet af sigt 154 00:07:25,510 --> 00:07:28,750 tage omkring 50 studerende, og personale til en lokal restaurant kaldet 155 00:07:28,750 --> 00:07:31,510 Fire and Ice, hvor vi er typisk følgeskab af nogle alumner 156 00:07:31,510 --> 00:07:33,850 eller venner fra industrien generelt stræbe 157 00:07:33,850 --> 00:07:35,780 at gøre en stor klasse føler mindre. 158 00:07:35,780 --> 00:07:37,560 Så det er en helt afslappet frokost. 159 00:07:37,560 --> 00:07:40,160 En flok af os, ansatte især vil spille musikalske stole 160 00:07:40,160 --> 00:07:43,360 og chatte med elever om 50, livet udenfor på 50, 161 00:07:43,360 --> 00:07:46,510 liv i fremtiden, den virkelige verden, Jeg taler om jobmuligheder 162 00:07:46,510 --> 00:07:47,680 med venner i industrien. 163 00:07:47,680 --> 00:07:51,110 >> Så hvis du gerne vil slutte sig til os denne fredag, hoved til denne webadresse her. 164 00:07:51,110 --> 00:07:54,180 Pladsen er begrænset, men vi vil gøre dette recurringly hele sigt. 165 00:07:54,180 --> 00:07:57,380 Leder der til cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 Og hvis du ikke får i denne gang, ikke at bekymre dig. 167 00:07:59,380 --> 00:08:02,390 Vi vil gøre det igen i de kommende uger så godt. 168 00:08:02,390 --> 00:08:05,434 >> Så det er billedet vi malet i sidste uge, 169 00:08:05,434 --> 00:08:07,350 og du har sikkert været fuske i hidtil. 170 00:08:07,350 --> 00:08:10,360 Men lad os prøve at forbinde dette nu til, hvad vi skal gøre i dag 171 00:08:10,360 --> 00:08:11,440 og fremefter. 172 00:08:11,440 --> 00:08:14,760 Kan jeg få en frivillig? 173 00:08:14,760 --> 00:08:16,000 Okay, eller flere. 174 00:08:16,000 --> 00:08:18,460 Hvordan omkring her på ende, i den blå skjorte. 175 00:08:18,460 --> 00:08:20,329 Kom op, hvad er dit navn? 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-- rart at møde dig-- 179 00:08:25,100 --> 00:08:28,260 kommer til at spille den rolle, af denne funktion her. 180 00:08:28,260 --> 00:08:31,290 Den lilla blok vi har kaldet hidtil en funktion. 181 00:08:31,290 --> 00:08:34,830 Så hvad jeg har tænkt mig at gå forude her og tilbyde Alana 182 00:08:34,830 --> 00:08:38,380 er en lille navneskilt, at klart, hvilken rolle, du spiller. 183 00:08:38,380 --> 00:08:39,753 >> Så du skal være sige blok. 184 00:08:39,753 --> 00:08:41,419 Hvis du ønsker at gå videre og sætte det på. 185 00:08:41,419 --> 00:08:43,169 Og vi vil holde dette super enkel. 186 00:08:43,169 --> 00:08:46,180 Hvis målet ved hånden er simpelthen nu at gennemføre med Alana, 187 00:08:46,180 --> 00:08:49,710 denne såkaldte sige blok, her er hvordan det kommer til at fungere. 188 00:08:49,710 --> 00:08:52,574 Jeg have-- lad os kalde det et argument eller parameter, 189 00:08:52,574 --> 00:08:54,240 det er egentlig bare et blankt stykke papir. 190 00:08:54,240 --> 00:08:57,239 Og det er hvide til at slags være minder af den hvide boks, hvor du 191 00:08:57,239 --> 00:08:58,080 kan skrive ord. 192 00:08:58,080 --> 00:09:00,660 >> Imens jeg har tænkt mig at gå her. 193 00:09:00,660 --> 00:09:06,560 Jeg har tænkt mig at gå videre og skrive H-E-L-L-O komma verden. 194 00:09:06,560 --> 00:09:09,972 Og nu vil jeg, som siger programmøren, ikke faktisk ved, hvordan at sige noget. 195 00:09:09,972 --> 00:09:12,180 Jeg kan komme op med ordene: men jeg gør ikke nødvendigvis 196 00:09:12,180 --> 00:09:15,220 vide, hvordan at udtrykke mig mundtligt eller på skærmen. 197 00:09:15,220 --> 00:09:17,280 Og så hvad jeg har tænkt mig gøre er at tage dette stykke 198 00:09:17,280 --> 00:09:21,157 funktionalitet, hvis input-- eller argumenter, som vi vil kalde det, 199 00:09:21,157 --> 00:09:23,990 Jeg har skrevet om dette stykke paper-- og jeg har tænkt mig at outsource det. 200 00:09:23,990 --> 00:09:26,831 >> Og ja det er den rolle, som fungerer i et programmeringssprog 201 00:09:26,831 --> 00:09:27,330 kan spille. 202 00:09:27,330 --> 00:09:29,246 Noget ligesom sige blok kan outsources 203 00:09:29,246 --> 00:09:32,074 til en person, der virkelig kender hvad hun eller han taler om. 204 00:09:32,074 --> 00:09:33,990 Så hvis du vil gå over her for et øjeblik, 205 00:09:33,990 --> 00:09:40,092 Jeg vil videregive dette input til Alana, og beder om, at du siger dette input. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Hej, verden. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Det er det. 208 00:09:42,160 --> 00:09:43,326 Således at der er en funktion. 209 00:09:43,326 --> 00:09:46,556 Nu kan vi tage det lidt mere, vi kan tage et skridt fremad her. 210 00:09:46,556 --> 00:09:48,180 Fordi det var tydeligt underwhelming. 211 00:09:48,180 --> 00:09:51,670 Så lad os nu konvertere dette til noget lidt mere sofistikeret. 212 00:09:51,670 --> 00:09:53,630 >> Så dette er naturligvis vores C-version. 213 00:09:53,630 --> 00:09:56,760 Så nu, hvis du ønsker at tage den en off, det navneskilt slukket, 214 00:09:56,760 --> 00:09:58,530 og lad os få dig sat på et nyt navn. 215 00:09:58,530 --> 00:10:00,850 Men fundamentalt er du spiller den samme rolle, 216 00:10:00,850 --> 00:10:03,400 det bare så sker til kaldes printf nu. 217 00:10:03,400 --> 00:10:06,930 >> Historien er, selvfølgelig, vil være-- sandsynligvis 218 00:10:06,930 --> 00:10:09,317 ligesom underwhelming-- er vil være den følgende. 219 00:10:09,317 --> 00:10:10,650 Du er nu den funktion printf. 220 00:10:10,650 --> 00:10:13,300 Jeg er den, der ringer, eller programmør, der ønsker 221 00:10:13,300 --> 00:10:15,745 at stå på skuldrene af folk i fortiden som dig, 222 00:10:15,745 --> 00:10:18,670 der allerede har regnet ud, hvordan til rent faktisk at skrive noget ned. 223 00:10:18,670 --> 00:10:20,650 Og så denne gang, snarere end at sige det lad 224 00:10:20,650 --> 00:10:22,255 faktisk bruger vores skærm herovre. 225 00:10:22,255 --> 00:10:24,130 Så hvis du gerne vil træde herovre, jeg vil 226 00:10:24,130 --> 00:10:27,196 at passere igen som input til min printf ven. 227 00:10:27,196 --> 00:10:29,320 Hvis du kunne gå videre og udskrive det på skærmen, 228 00:10:29,320 --> 00:10:31,611 simpelthen ved at trække med din finger på den sorte skærm. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Fremragende. 231 00:10:44,180 --> 00:10:47,350 Okay, så masser af spænding for hvordan der skulle spille ud. 232 00:10:47,350 --> 00:10:51,390 >> Så lad os nu tage tingene op en endelig hak, hvis vi kunne, som følger. 233 00:10:51,390 --> 00:10:53,980 Så dette er et C-program som vi sagde sidste gang. 234 00:10:53,980 --> 00:10:57,460 Og det gør bare, hvad du gjorde, det udskriver til skærmen, hej, verden. 235 00:10:57,460 --> 00:11:00,290 Selvom der er helt klart en masse af distraherende ting deroppe. 236 00:11:00,290 --> 00:11:03,630 Men lad os tage tingene op et hak og indføre denne version, som husker 237 00:11:03,630 --> 00:11:06,160 var den tredje version, vi endte med sidste gang. 238 00:11:06,160 --> 00:11:09,120 >> Og nu er der klart to anvendelser af printf. 239 00:11:09,120 --> 00:11:12,280 Der er 2 opkald til Alana i dette tilfælde til printf, 240 00:11:12,280 --> 00:11:14,740 men der er også en opfordring til en anden funktion. 241 00:11:14,740 --> 00:11:17,150 Hvad er denne funktion klart? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Kan vi få en mere frivillig? 244 00:11:18,980 --> 00:11:20,980 OK, kom op. 245 00:11:20,980 --> 00:11:21,805 Hvad er dit navn? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN Javier, kom op. 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 Hvilket jeg har tænkt mig at kalde generisk sek. 250 00:11:28,860 --> 00:11:32,250 Nu er det en variabel, er det af typen string, som underforstået 251 00:11:32,250 --> 00:11:34,290 denne anden linje i midten der. 252 00:11:34,290 --> 00:11:36,540 Og jeg vil gerne have dig til at gå få mig en streng. 253 00:11:36,540 --> 00:11:40,120 Specifikt hovedet ned til orkester sektion og få mig navnet på en person, 254 00:11:40,120 --> 00:11:43,142 og komme tilbage med en variabel indeholder den værdi. 255 00:11:43,142 --> 00:11:44,225 Det kan være hvem som helst, du ønsker. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Her går vi. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Okay, Javier er skrive ned navnet. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Okay. 262 00:12:03,280 --> 00:12:05,740 Vi kan alle sikkert gætte hvordan Dette kommer til at spille ud. 263 00:12:05,740 --> 00:12:07,489 Vi er måske belaboring det punkt, hvad 264 00:12:07,489 --> 00:12:10,320 en funktion er at gøre, men ikke desto mindre mange tak. 265 00:12:10,320 --> 00:12:13,890 >> Så Javier er vendt tilbage denne streng her, hvilket kan ikke helt se, 266 00:12:13,890 --> 00:12:15,800 Jonathan er streng at vi har fået. 267 00:12:15,800 --> 00:12:18,330 Så nu, hvad jeg rent faktisk vil at give Alana selv 268 00:12:18,330 --> 00:12:20,150 er noget lidt anderledes. 269 00:12:20,150 --> 00:12:23,800 Fordi der i denne version af program, der først er dit navn. 270 00:12:23,800 --> 00:12:26,160 Så den allerførste argument Jeg har brug for at give Alana 271 00:12:26,160 --> 00:12:33,030 med vil være bogstaveligt oplyse dit navn. 272 00:12:33,030 --> 00:12:35,280 Okay, så enkelt er det Jeg ville aflevere det til dig. 273 00:12:35,280 --> 00:12:36,730 Og som jeg skriver op næste argument, hvis du 274 00:12:36,730 --> 00:12:39,230 ønsker at gå videre og skrive dette på tavlen, lad os gå videre 275 00:12:39,230 --> 00:12:42,659 og gøre det sidste eksempel her for at gøre klart, hvad der i sidste ende kom til at ske. 276 00:12:42,659 --> 00:12:44,450 Så oplyse dit navn, skrive det mod toppen 277 00:12:44,450 --> 00:12:47,220 hvis du ikke har noget imod, bare så at Vi har plads til en anden linje. 278 00:12:47,220 --> 00:12:52,890 Fordi det sidste jeg har tænkt mig nu give dig, er ikke én, 279 00:12:52,890 --> 00:12:57,220 men to stykker papir. 280 00:12:57,220 --> 00:12:58,074 >> Okay. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O komma og derefter en blank linje. 282 00:13:01,920 --> 00:13:04,780 Så hvad jeg er ved at aflevere Alana nu er noget lidt anderledes. 283 00:13:04,780 --> 00:13:08,600 Ikke alene er hun ved at blive det, hvor udfylde det repræsenterer 284 00:13:08,600 --> 00:13:12,050 det percent-- hvad var pladsholder vi har brugt? 285 00:13:12,050 --> 00:13:13,890 Ja, så procent sek. 286 00:13:13,890 --> 00:13:16,530 Imens jeg har tænkt mig at passere hende i et andet argument, som 287 00:13:16,530 --> 00:13:19,290 er netop, hvad Javier hentes fra Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Så lad mig give dig disse to. 289 00:13:20,534 --> 00:13:22,575 Hvis du gerne vil, gå videre og udskrive denne virkning. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Hvad er i sidste ende sker nu er, Alana igen 292 00:13:28,130 --> 00:13:29,410 spiller rollen som printf. 293 00:13:29,410 --> 00:13:32,160 Javier spillede rolle 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 i sidste ende, hvad der sker, på trods af dette hello-- yep gå videre og komma. 296 00:13:39,910 --> 00:13:41,410 ALANA: Har jeg modtager denne endnu eller nej? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Jep, du modtog dem begge på én gang. 298 00:13:43,451 --> 00:13:45,740 Så ideen er, at du kan nu vende side 299 00:13:45,740 --> 00:13:50,000 til at håndtere den anden af de to indgange. 300 00:13:50,000 --> 00:13:53,280 Så dette er blot at hammer hjem peger, at mens Alana henrettet 301 00:13:53,280 --> 00:13:55,830 denne grønne linje her, og derefter Javier gjorde denne ene for os 302 00:13:55,830 --> 00:13:57,820 og vende tilbage til mig noget vi vil kalde s, men det var virkelig 303 00:13:57,820 --> 00:13:59,520 bare det stykke papir af hans egne. 304 00:13:59,520 --> 00:14:02,320 Og nu Alana har gjort dette tredje linje. 305 00:14:02,320 --> 00:14:06,010 >> Og selvom alt dette ser så utroligt kryptisk måske 306 00:14:06,010 --> 00:14:08,870 ved første øjekast, det virkelig er så simpelt er det. 307 00:14:08,870 --> 00:14:11,390 Passing indgange rundt, få udgange, enten 308 00:14:11,390 --> 00:14:14,560 bliver fysisk afleveret noget tilbage, eller se en bivirkning som denne. 309 00:14:14,560 --> 00:14:17,170 Noget visuelt skrevet på skærmen. 310 00:14:17,170 --> 00:14:19,990 Så lad os gå videre og takke Alana og Javier, 311 00:14:19,990 --> 00:14:25,012 der var hernede, for slutter sig til os her. 312 00:14:25,012 --> 00:14:25,934 >> [Applaus] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Så lad os nu tage for givet, hvor ligetil alt dette kunne være. 315 00:14:33,480 --> 00:14:36,775 Og lad os gå videre til rent faktisk gøre noget i den faktiske kode. 316 00:14:36,775 --> 00:14:40,620 Så op på skærmen, her er et screenshot af den såkaldte CS50 apparatet. 317 00:14:40,620 --> 00:14:43,980 Og hvis du skulle på, som en 02:00 onsdag eftermiddag, 318 00:14:43,980 --> 00:14:46,602 forklare nogle ven hvad CS50 apparatet, 319 00:14:46,602 --> 00:14:48,185 hvordan vil du definere det i en sætning? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Enhver en sætning? 322 00:14:53,240 --> 00:14:54,876 Ja? 323 00:14:54,876 --> 00:14:57,334 STUDENT: Det er ligesom et program der gør alles computer 324 00:14:57,334 --> 00:14:58,460 drives med det samme system. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Godt! 326 00:14:59,210 --> 00:15:02,810 Det er et program, der gør det muligt for alles computer til at køre med samme system. 327 00:15:02,810 --> 00:15:04,920 Det er en slags din egen kopi af et operativsystem 328 00:15:04,920 --> 00:15:07,540 system, der sker for kaldes Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 Og det fungerer effektivt inde i et vindue på din egen Mac eller pc, 330 00:15:11,070 --> 00:15:15,080 så denne måde lige ud af porten i uge 1, alle her i klassen 331 00:15:15,080 --> 00:15:17,590 har adgang til de samme værktøjer, den samme konfiguration, 332 00:15:17,590 --> 00:15:21,250 og der er ingen indlæringskurve specifik til en Mac eller en PC i særdeleshed. 333 00:15:21,250 --> 00:15:25,620 >> Nu er vi åbnet, indersiden af ​​CS50 apparatet på mandag, dette program her. 334 00:15:25,620 --> 00:15:27,040 Det sker at blive kaldt 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 noget som Notesblok eller Text Redigere på Windows eller Mac OS hhv. 337 00:15:33,170 --> 00:15:36,720 Og jeg foreslog, at der var virkelig tre vigtige dele til denne skærm. 338 00:15:36,720 --> 00:15:39,560 Oversiden er, hvor du ville skrive din kode. 339 00:15:39,560 --> 00:15:44,080 Og det er, hvor vi tilbragte meget af vores tre eksempler i mandagens forelæsning. 340 00:15:44,080 --> 00:15:47,650 Bunden vi kaldte det, denne sorte vindue, 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 tilgås ved hjælp af vinduet. 343 00:15:51,500 --> 00:15:53,040 Men mere generelt. 344 00:15:53,040 --> 00:15:54,540 Ja, det var bare en terminal vindue. 345 00:15:54,540 --> 00:15:57,780 Dette er en meget gammel begreb, der bare beskriver hovedsagelig en blinkende 346 00:15:57,780 --> 00:16:01,910 hurtig, at år siden bruges til at være på en af ​​de store CRT-stil skærme. 347 00:16:01,910 --> 00:16:04,300 Men i dag er det slags virtuelle i software. 348 00:16:04,300 --> 00:16:06,710 Og terminalen vinduer Lad os skrive kommandoer. 349 00:16:06,710 --> 00:16:11,750 Den slags af den forenklede udgave brugergrænsefladen eller UI. 350 00:16:11,750 --> 00:16:14,060 Det er ikke en grafisk brugergrænseflade eller GUI 351 00:16:14,060 --> 00:16:17,250 Det er en tekst-baseret interface eller en kommandolinje brugerflade. 352 00:16:17,250 --> 00:16:20,770 >> Og ja det er der i sidste ende Jeg var i stand til at skrive noget kode. 353 00:16:20,770 --> 00:16:24,200 Når jeg havde skrevet noget kode selv, husker, at jeg brugte denne kommando. 354 00:16:24,200 --> 00:16:26,210 Og som det navnet slags antyder, er dette 355 00:16:26,210 --> 00:16:29,860 tillader mig at lave en program kaldet Hej. 356 00:16:29,860 --> 00:16:33,400 Men hvad var det egentlig gør? 357 00:16:33,400 --> 00:16:36,180 Godt gøre tog min input min kildekode, 358 00:16:36,180 --> 00:16:39,380 og omdanne det til det i sidste ende? 359 00:16:39,380 --> 00:16:40,060 >> Objekt kode. 360 00:16:40,060 --> 00:16:42,790 Og objekt kode er bare en fancy måde at sige nuller og ettaller. 361 00:16:42,790 --> 00:16:46,420 Og når jeg ønskede at køre den objektkode, 362 00:16:46,420 --> 00:16:50,940 når jeg ønskede at videregive som input de nuller og ettaller i computerens 363 00:16:50,940 --> 00:16:54,430 hjerne, den såkaldte CPU eller centralenhed, 364 00:16:54,430 --> 00:16:55,730 Jeg var nødt til at køre programmet. 365 00:16:55,730 --> 00:16:59,042 Men det var ikke helt en enkel på mandag som bare dobbeltklikke på nogle ikonet. 366 00:16:59,042 --> 00:17:01,375 Hvad i stedet skulle jeg gøre for at køre et program? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Hvad var det anden kommando? 369 00:17:07,890 --> 00:17:09,619 Jeg hører lidt skråstreger? 370 00:17:09,619 --> 00:17:10,544 Ja, ja? 371 00:17:10,544 --> 00:17:12,474 >> STUDENT: Dot skråstreg og programmets navn. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Præcis. 373 00:17:13,349 --> 00:17:15,030 Dot skråstreg og programmets navn. 374 00:17:15,030 --> 00:17:16,210 Nu, hvad gjorde det? 375 00:17:16,210 --> 00:17:19,470 Nå prik er bare en mystisk måde sige aktuelle mappe. 376 00:17:19,470 --> 00:17:23,440 Uanset mappe, du er i, er opført som er repræsenteret prik. 377 00:17:23,440 --> 00:17:26,680 Skråstregen er lige, hvad du har set i Mac OS og Windows i årevis, 378 00:17:26,680 --> 00:17:30,329 det er en separator mellem en mappe eller mappe og resten af ​​nogle navn. 379 00:17:30,329 --> 00:17:32,620 I Windows det sker at gå baglæns, i Linux og Mac 380 00:17:32,620 --> 00:17:34,210 OS det sker at gå fremad. 381 00:17:34,210 --> 00:17:37,560 Men det er bare den separator, så det er bare et uinteressant syntaktisk detalje. 382 00:17:37,560 --> 00:17:40,440 >> Den saftige del af kurset er navnet på det program, Hej. 383 00:17:40,440 --> 00:17:42,650 Og det er, hvad gør skabt for os. 384 00:17:42,650 --> 00:17:44,910 Det udsendes filen for os. 385 00:17:44,910 --> 00:17:46,700 Men hvordan vi kommer til det punkt? 386 00:17:46,700 --> 00:17:48,870 Lad os nu spørge spørgsmål, hvad var virkelig 387 00:17:48,870 --> 00:17:52,470 foregår her, i hvert fald med hensyn til nogle af denne syntaks? 388 00:17:52,470 --> 00:17:57,000 >> Så i en sætning eller deromkring, hvordan vi bortforklare 389 00:17:57,000 --> 00:17:59,020 denne første linje, der er markeret med grønt? 390 00:17:59,020 --> 00:18:02,998 Hvad var det første linie gør, med hensyn til mit program? 391 00:18:02,998 --> 00:18:03,974 Ja? 392 00:18:03,974 --> 00:18:05,067 >> STUDENT: [uhørligt]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Sig det igen? 394 00:18:06,150 --> 00:18:08,734 STUDENT: Inklusive og download tidligere funktioner [uhørligt]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Godt. 396 00:18:09,483 --> 00:18:11,900 Herunder vil jeg ikke sige downloading, men lad os sige 397 00:18:11,900 --> 00:18:15,500 herunder funktioner, som folk har skrevet tidligere. 398 00:18:15,500 --> 00:18:18,260 Og disse funktioner er implementeret et eller andet sted i min computer. 399 00:18:18,260 --> 00:18:20,470 Nogen skrev en fil år siden, og filen 400 00:18:20,470 --> 00:18:23,490 er et eller andet sted inde i CS50 apparat, eller på min harddisk 401 00:18:23,490 --> 00:18:24,480 mere generelt. 402 00:18:24,480 --> 00:18:27,810 Og så denne linje er hovedsagelig sige, gå finde filen, standard I / O-prik 403 00:18:27,810 --> 00:18:31,740 h, og kopiere og indsætte dens indhold lige her på toppen af ​​min fil 404 00:18:31,740 --> 00:18:33,860 så jeg ikke behøver at gøre det manuelt selv. 405 00:18:33,860 --> 00:18:40,970 >> Og blandt de mest saftige stykker inde i den fil vi hævdede var, hvad funktion? 406 00:18:40,970 --> 00:18:45,740 Hvad funktion vi sige blev erklæret eller i standard I / O-prik t nævnt 407 00:18:45,740 --> 00:18:47,120 mest sandsynligt? 408 00:18:47,120 --> 00:18:47,900 Printf, right? 409 00:18:47,900 --> 00:18:50,797 Vi ikke skrive printf på Mandag, det bare eksisterede. 410 00:18:50,797 --> 00:18:52,880 Meget gerne Alana bare kom op på scenen, og hun bare 411 00:18:52,880 --> 00:18:55,540 eksisterede og vidste hvordan man tegner noget på skærmen, 412 00:18:55,540 --> 00:18:58,660 så gør printf eksistere i mange år. 413 00:18:58,660 --> 00:19:00,240 Og så dette er, hvordan vi adgang til det. 414 00:19:00,240 --> 00:19:03,280 Nu, hvis vi går videre her, vigtigste var analog vi 415 00:19:03,280 --> 00:19:06,620 sagde til brik kaldes, når grønt flag klikkede 416 00:19:06,620 --> 00:19:07,620 i verden af ​​Scratch. 417 00:19:07,620 --> 00:19:10,130 Det er bare slags af standard navn, at mennesker 418 00:19:10,130 --> 00:19:13,340 besluttet ville repræsentere standard indgang til et program. 419 00:19:13,340 --> 00:19:16,540 Den bid af programkode der bliver udført først. 420 00:19:16,540 --> 00:19:19,700 >> Imens disse krøllede parenteser er slags ligesom den buede form 421 00:19:19,700 --> 00:19:21,410 en masse af disse gule scratch stykker. 422 00:19:21,410 --> 00:19:24,860 De slags indkapsle hele bundt af instruktioner sammen. 423 00:19:24,860 --> 00:19:28,350 Så det lige slags binder sammen nogle relaterede funktionalitet. 424 00:19:28,350 --> 00:19:33,750 printf selvfølgelig er en funktion, udskriver på skærmen, som vi lige gjorde. 425 00:19:33,750 --> 00:19:35,190 >> Hvad om disse parenteser? 426 00:19:35,190 --> 00:19:38,770 Hvordan ville du define-- selvom du har aldrig programmeret før, men blot baseret 427 00:19:38,770 --> 00:19:41,320 nu en stigende Forhåbentlig intuition, hvad 428 00:19:41,320 --> 00:19:43,290 er parenteser gør for os her? 429 00:19:43,290 --> 00:19:45,450 Eller hvad er de omkringliggende? 430 00:19:45,450 --> 00:19:46,360 Ja? 431 00:19:46,360 --> 00:19:49,360 >> STUDENT: De siger, hvad du vil udskrive med printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Ja, de siger hvad du vil udskrive med printf. 433 00:19:52,401 --> 00:19:56,260 Eller mere generelt, de er omkring input til funktionen. 434 00:19:56,260 --> 00:19:58,530 Så du kan næsten tænke disse parenteser 435 00:19:58,530 --> 00:20:01,620 som værende ligesom metal klip på denne klippebordet. 436 00:20:01,620 --> 00:20:05,940 Det er, hvad der holder, men det er hvad der er skal bruges til at give argumenter 437 00:20:05,940 --> 00:20:08,500 i funktionen, hvilket dette tilfælde kaldes printf. 438 00:20:08,500 --> 00:20:12,390 >> Så i almindelighed næsten enhver gang vi kalder en funktion, 439 00:20:12,390 --> 00:20:14,280 vi kommer til at se et par parenteser. 440 00:20:14,280 --> 00:20:17,000 Måske med noget i det, ud nu, måske noget i den. 441 00:20:17,000 --> 00:20:19,770 Men det er, hvor du ville sætte de input eller såkaldte argumenter 442 00:20:19,770 --> 00:20:20,680 til en funktion. 443 00:20:20,680 --> 00:20:22,470 >> Her er et sådant argument. 444 00:20:22,470 --> 00:20:24,467 Jeg har fremhævet alt mellem anførselstegnene, 445 00:20:24,467 --> 00:20:26,300 fordi det viser sig i dette sprog kaldes 446 00:20:26,300 --> 00:20:29,950 C, når du ønsker at repræsentere en string-- der er et ord eller en sætning 447 00:20:29,950 --> 00:20:33,470 eller endda en paragraph-- du nødt til at omgive det med anførselstegn. 448 00:20:33,470 --> 00:20:35,420 Ikke enkelte anførselstegn, dobbelte anførselstegn. 449 00:20:35,420 --> 00:20:37,460 Og det er præcis, hvad jeg har gjort her. 450 00:20:37,460 --> 00:20:39,900 >> I mellemtiden er der en funky symbol mod slutningen der. 451 00:20:39,900 --> 00:20:41,600 Den omvendte skråstreg n. 452 00:20:41,600 --> 00:20:43,460 Hvad gjorde vi sige, der er repræsenteret? 453 00:20:43,460 --> 00:20:44,093 Ja? 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øjre, du ikke generelt hit Enter, når 457 00:20:47,910 --> 00:20:50,430 du ønsker, at programmet at spytte en ny linje. 458 00:20:50,430 --> 00:20:54,210 Snarere du fortælle det udtrykkeligt med dette ganske mystiske stykke 459 00:20:54,210 --> 00:20:58,770 af syntaks, backslash n, at du ønsker en ny linje til at gå der. 460 00:20:58,770 --> 00:20:59,810 Endelig semikolon. 461 00:20:59,810 --> 00:21:01,560 Vi har ikke rigtig snakke for meget om dette, 462 00:21:01,560 --> 00:21:04,893 og langt dette vil være den bane af nogle af din eksistens for første problem 463 00:21:04,893 --> 00:21:07,990 indstillet, når du bare kunne indse du har glemt noget 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 sætte det der vil løse dette problem. 466 00:21:11,600 --> 00:21:13,511 Men hvad er det gør for os, ville du sige? 467 00:21:13,511 --> 00:21:15,670 >> STUDENT: [uhørligt]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Undskyld? 469 00:21:17,484 --> 00:21:18,532 >> STUDENT: [uhørligt]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Finishing en erklæring. 471 00:21:19,990 --> 00:21:22,770 Det er lidt ligesom den periode på enden af ​​en engelsk sætning, 472 00:21:22,770 --> 00:21:25,790 hvorimod i dette sprog C er det slutter en erklæring. 473 00:21:25,790 --> 00:21:29,250 En instruktion af programmeringen kode, som du bare ønsker at sige, 474 00:21:29,250 --> 00:21:30,500 Jeg er færdig med dette. 475 00:21:30,500 --> 00:21:32,240 Bemærk nu det er den eneste her. 476 00:21:32,240 --> 00:21:34,614 Så du behøver ikke ønsker at komme i en vane med at sætte semikolon 477 00:21:34,614 --> 00:21:36,190 efter hver lukket parentes. 478 00:21:36,190 --> 00:21:38,610 For eksempel er der ingen næste til at annullere, og vi vil 479 00:21:38,610 --> 00:21:40,430 vende tilbage i fremtiden hvad ugyldige midler. 480 00:21:40,430 --> 00:21:44,080 Men i dette tilfælde din printf er en funktion, eller en erklæring, der anvendes, 481 00:21:44,080 --> 00:21:47,420 og så vil vi have, at endestation i slutningen af ​​det. 482 00:21:47,420 --> 00:21:50,980 >> Og jeg bevidst plukke på C. Og helt ærligt en masse sprog som C, C ++ 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript og et antal andre sprog har en masse af disse 484 00:21:55,000 --> 00:21:56,730 slags syntaktiske detaljer. 485 00:21:56,730 --> 00:22:00,120 Det er bestemt, hvis du er ny til programmering kan virkelig rejse dig op. 486 00:22:00,120 --> 00:22:02,307 Og du vil markere min ord, nogle af jer vil 487 00:22:02,307 --> 00:22:04,140 har denne erfaring i kontortiden eller sen 488 00:22:04,140 --> 00:22:07,554 natten arbejder på nogle p-sæt, hvor Deres forbandede program bare ikke kompilere, 489 00:22:07,554 --> 00:22:09,470 det kører ikke, du har ingen idé om, hvad der er galt, 490 00:22:09,470 --> 00:22:11,513 det forekommer helt logisk korrekt at dig. 491 00:22:11,513 --> 00:22:13,596 Og det er fordi du har glemt noget som rammer 492 00:22:13,596 --> 00:22:15,250 et semikolon i slutningen af ​​nogle linje. 493 00:22:15,250 --> 00:22:17,590 >> Men disse er den slags ting, du er vil straks lære at se. 494 00:22:17,590 --> 00:22:20,048 Og faktisk er disse ting at CA-og TF s har 495 00:22:20,048 --> 00:22:23,210 blevet slags uddannet til at se meget hurtigere end dig. 496 00:22:23,210 --> 00:22:26,610 Og så dette er kun at sige, som du dykke ned i problemet sæt 1 især, 497 00:22:26,610 --> 00:22:28,217 ikke får frustrerede over det her. 498 00:22:28,217 --> 00:22:30,050 Når du slags akklimatisere til verden, du 499 00:22:30,050 --> 00:22:35,130 begynde at se ting, som du måske ikke se ved første øjekast denne første uge. 500 00:22:35,130 --> 00:22:37,440 >> Så kildekode er noget lignende. 501 00:22:37,440 --> 00:22:40,370 Vi ønsker at videregive den i den såkaldte compiler. 502 00:22:40,370 --> 00:22:42,850 Og det compiler som sagde vi giver output 503 00:22:42,850 --> 00:22:45,660 kendt som objektkode, den såkaldte nuller og ettaller. 504 00:22:45,660 --> 00:22:47,747 Men derfra, er, hvad det giver os? 505 00:22:47,747 --> 00:22:49,080 Jamen det giver os disse mønstre. 506 00:22:49,080 --> 00:22:52,020 Og igen din computer, Intel indeni, 507 00:22:52,020 --> 00:22:54,350 forstår disse mønstre af nuller og ettaller. 508 00:22:54,350 --> 00:22:57,300 Og nogle gange mønsteret repræsenterer det faktiske decimaltal 509 00:22:57,300 --> 00:22:59,770 som vi så i sidste uge, undertiden det repræsenterer et brev 510 00:22:59,770 --> 00:23:02,730 ligesom vi så i sidste uge, undertiden det repræsenterer en instruktion, 511 00:23:02,730 --> 00:23:05,460 som udskriver noget til skærmen. 512 00:23:05,460 --> 00:23:08,782 >> Så printf til instance-- men snarere, lad mig spole tilbage. 513 00:23:08,782 --> 00:23:11,240 Vi har taget for givet at disse nuller og ettaller er 514 00:23:11,240 --> 00:23:14,200 produceret af denne kommando gøre. 515 00:23:14,200 --> 00:23:16,050 Men tag ikke en compiler. 516 00:23:16,050 --> 00:23:19,370 Gør ikke den ting i midten der er producerer nuller og ettaller. 517 00:23:19,370 --> 00:23:23,780 Snarere gøre er bare en meget bekvemt navngivne program, hvis formål i livet 518 00:23:23,780 --> 00:23:27,267 er væsentligt at finde ud af hvordan man kompilerer dit program. 519 00:23:27,267 --> 00:23:29,350 Og vi bruger det i disse første uger, fordi det bare 520 00:23:29,350 --> 00:23:30,910 sparer os for en masse besvær. 521 00:23:30,910 --> 00:23:34,080 >> Men hvad gør virkelig gør, når du kompilere hej, 522 00:23:34,080 --> 00:23:36,690 er, som vi sagde sidste gang, det er kigge på din harddisk 523 00:23:36,690 --> 00:23:40,620 eller i den aktuelle mappe, fil kaldet hvad tilsyneladende? 524 00:23:40,620 --> 00:23:41,815 Hello.c, right? 525 00:23:41,815 --> 00:23:43,190 Det er bare sådan et konvent. 526 00:23:43,190 --> 00:23:45,620 Det er vilkårligt, men det er den måde, tingene er. 527 00:23:45,620 --> 00:23:48,620 Gør, hvis du bare angive navn af et program, der endnu ikke eksisterer, 528 00:23:48,620 --> 00:23:52,200 det kommer til at kigge efter kildekoden i en fil, som standard betyder hello.c. 529 00:23:52,200 --> 00:23:53,530 Og hvis den finder det, stor. 530 00:23:53,530 --> 00:23:56,650 Det kommer til at konvertere denne kilde kode i objekt kode til dig. 531 00:23:56,650 --> 00:23:59,670 >> Men hver gang jeg har ramt Enter efter at have kørt gøre hej, 532 00:23:59,670 --> 00:24:03,560 gør du huske at se sidste gang en temmelig lang og kryptisk sekvens 533 00:24:03,560 --> 00:24:06,430 af andre hvide bogstaver og tegn på skærmen? 534 00:24:06,430 --> 00:24:11,220 Tja, der var den egentlige kommando, faktiske compiler, der kørte. 535 00:24:11,220 --> 00:24:15,500 Så den reelle compiler vi vil bruge det meste af semestret er noget der hedder klang. 536 00:24:15,500 --> 00:24:19,280 Nogle af jer måske har brugt Visual Studio før eller GCC, 537 00:24:19,280 --> 00:24:21,340 eller en række andre oversættere. 538 00:24:21,340 --> 00:24:22,620 Vi bruger klang. 539 00:24:22,620 --> 00:24:26,950 >> Og klang giver os mulighed for rent faktisk at konvertere at kildekoden til objektkode. 540 00:24:26,950 --> 00:24:29,430 Hvad betyder dette faktisk betyde i praksis? 541 00:24:29,430 --> 00:24:33,390 Jamen så lad mig gå ind i en af mine mapper fra sidste gang. 542 00:24:33,390 --> 00:24:35,760 Inde i CS50 apparatet. 543 00:24:35,760 --> 00:24:42,080 Og lad mig gå videre og skabe denne samme fil, omfatter standard I / O prik time. 544 00:24:42,080 --> 00:24:42,875 Int main tomrum. 545 00:24:42,875 --> 00:24:46,000 Og vi vil komme tilbage i fremtiden hvad int midler og hvilke void midler. 546 00:24:46,000 --> 00:24:49,130 Men lad os nu gøre hej verden omvendt skråstreg n 547 00:24:49,130 --> 00:24:50,500 ligesom vi gjorde på brættet. 548 00:24:50,500 --> 00:24:53,930 >> Lad mig gemme denne fil kaldet hello.c. 549 00:24:53,930 --> 00:24:58,280 Og nu, hvis jeg ønsker at kompilere dette Jeg could-- lad mig zoome in-- løb 550 00:24:58,280 --> 00:25:00,450 gøre hej ind. 551 00:25:00,450 --> 00:25:02,645 Og dette var igen at meget kryptiske linje. 552 00:25:02,645 --> 00:25:05,120 Men nu mindst ét ​​ord sandsynligvis springer ud på dig. 553 00:25:05,120 --> 00:25:07,087 Dunk er denne linje, vi har set før. 554 00:25:07,087 --> 00:25:10,420 Nu er der en masse andre ting ærligt at vi vil vinke vores hænder på for i dag. 555 00:25:10,420 --> 00:25:14,020 Men der er et par delmængder, nogle få tegn i her 556 00:25:14,020 --> 00:25:14,907 der er af interesse. 557 00:25:14,907 --> 00:25:16,490 Men jeg har tænkt mig at gå videre og gøre dette. 558 00:25:16,490 --> 00:25:18,281 Jeg har tænkt mig at første kørsel hej, bare for at bevise 559 00:25:18,281 --> 00:25:20,320 at dette virker som det var mandag. 560 00:25:20,320 --> 00:25:22,330 Men nu har jeg tænkt mig at slette programmet. 561 00:25:22,330 --> 00:25:25,870 Og meget ligesom vi havde disse korte navne sidste gang, 562 00:25:25,870 --> 00:25:29,787 kommando til at fjerne noget er rm, fjerne, enter. 563 00:25:29,787 --> 00:25:31,870 Du kommer til at få nogle temmelig kryptiske spørgsmål. 564 00:25:31,870 --> 00:25:35,210 Svært at tro, at du kan gøre selv dette spørgsmål svært at forstå. 565 00:25:35,210 --> 00:25:38,100 Men fjern almindelig fil hej bare midler gøre du ønsker at slette hej. 566 00:25:38,100 --> 00:25:42,650 >> Og jeg kan gå videre og skrive y for ja, Enter, og nu er det væk. 567 00:25:42,650 --> 00:25:45,130 Hvad dette betyder nu, hvis jeg rydde min skærm, 568 00:25:45,130 --> 00:25:47,301 er, at i stedet for gør make hello-- dig 569 00:25:47,301 --> 00:25:48,800 Ved I hvad, jeg får god til dette. 570 00:25:48,800 --> 00:25:50,690 Jeg har tænkt mig at køre compiler selv. 571 00:25:50,690 --> 00:25:53,330 Jeg har ikke brug for nogle program til regne ud, hvad min fil hedder. 572 00:25:53,330 --> 00:25:55,370 Jeg skrev hello.c, jeg vide, hvad det hedder, 573 00:25:55,370 --> 00:25:57,640 Jeg er helt klart i stand til at skrive det. 574 00:25:57,640 --> 00:26:02,620 Så jeg har tænkt mig at gå videre og gør clang hello.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Synes at virke. 576 00:26:03,264 --> 00:26:05,930 Og der er ingen ekstra udgang, fordi clang er compileren. 577 00:26:05,930 --> 00:26:08,590 Det er, hvad der omdanner kildekoden til nuller og ettaller. 578 00:26:08,590 --> 00:26:12,870 Så hvis jeg nu gør prik slash hej Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Ny fejlmeddelelse dag. 580 00:26:14,630 --> 00:26:17,610 Så bash er bare navnet på den blinkende prompt, vi bruger. 581 00:26:17,610 --> 00:26:20,360 Det er en grov forsimpling, men for nu det er alt der er, 582 00:26:20,360 --> 00:26:21,401 det er den blinkende prompt. 583 00:26:21,401 --> 00:26:22,880 Og det er derfor, det er råben på os. 584 00:26:22,880 --> 00:26:25,690 >> Ingen sådan fil eller mappe er lidt mere ligetil. 585 00:26:25,690 --> 00:26:28,190 Men sikkert jeg gjorde det objekt kode. 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 at vise indholdet af denne mappe, hvilket er hvad? 588 00:26:34,650 --> 00:26:36,210 LS til listen. 589 00:26:36,210 --> 00:26:39,332 Der er en masse ting her, hvoraf nogle kom med apparatet, 590 00:26:39,332 --> 00:26:42,040 ligesom min Desktop mappe, downloads mappe, Dropbox mappe, og alle 591 00:26:42,040 --> 00:26:42,850 at stuff. 592 00:26:42,850 --> 00:26:45,410 Men hvad er interessant er hello.c, som 593 00:26:45,410 --> 00:26:47,286 Jeg har oprettet et øjeblik siden med gedit. 594 00:26:47,286 --> 00:26:49,160 Og hvad er de mærkeligste søger navn på her, 595 00:26:49,160 --> 00:26:53,110 måske, at vi ikke gjorde se sidste tid overhovedet? 596 00:26:53,110 --> 00:26:54,710 >> a.out, right? 597 00:26:54,710 --> 00:26:56,920 Så tilbage i dag, er det var netop besluttet, at når 598 00:26:56,920 --> 00:26:58,760 du samler et program for første gang, 599 00:26:58,760 --> 00:27:02,360 og du behøver ikke angive navn af en fil, lad os kalde det en. 600 00:27:02,360 --> 00:27:05,800 Og a.out betyder bare dette var produktionen af ​​compileren. 601 00:27:05,800 --> 00:27:07,790 Så det er en forfærdelig navn for et program. 602 00:27:07,790 --> 00:27:12,820 Men ved denne logik, dot skråstreg til aktuelle mappe, skråstreg a.out, 603 00:27:12,820 --> 00:27:16,102 bør betyde, at der er i virkeligheden mit hej verden program. 604 00:27:16,102 --> 00:27:17,560 Nu lidt varme op motion, også. 605 00:27:17,560 --> 00:27:20,420 Hvis jeg ønsker at omdøbe dette fil, viser sig, at du 606 00:27:20,420 --> 00:27:23,000 flytte en fil fra et navn til en anden. 607 00:27:23,000 --> 00:27:28,750 Så mv a.out, og så er jeg kan kalde det goddag 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 havde dette år siden, Windows har en terminal vindue 610 00:27:34,370 --> 00:27:36,460 af en slags, der ser som dette, Linux og Mac 611 00:27:36,460 --> 00:27:38,140 computere har denne blinkende prompt. 612 00:27:38,140 --> 00:27:41,490 Selv om de fleste af os nok sjældent, om nogensinde, bruge det. 613 00:27:41,490 --> 00:27:44,590 >> Men hvad jeg har gjort er at køre en program, hvis navn er MV, 614 00:27:44,590 --> 00:27:47,900 og jeg har givet det med to argumenter, så at sige. 615 00:27:47,900 --> 00:27:48,630 To indgange. 616 00:27:48,630 --> 00:27:50,260 a.out er det oprindelige navn. 617 00:27:50,260 --> 00:27:51,630 Hej er det nye navn. 618 00:27:51,630 --> 00:27:55,670 Så hvis jeg nu gør prik skråstreg hej, Enter, der eksisterer. 619 00:27:55,670 --> 00:28:00,770 Og hvis jeg gør prik skråstreg a.out, hvad forventer du jeg skal se? 620 00:28:00,770 --> 00:28:02,250 >> Bash, ingen sådan fil eller mappe. 621 00:28:02,250 --> 00:28:03,350 Fordi jeg bare omdøbt det. 622 00:28:03,350 --> 00:28:04,975 Så det tager en smule tilvænning. 623 00:28:04,975 --> 00:28:06,977 Men problemet sæt 1 specifikation vil virkelig 624 00:28:06,977 --> 00:28:08,810 holde din hånd gennem nogle af denne minutae. 625 00:28:08,810 --> 00:28:11,050 Da dette er en komplet intellektuelle distraktion 626 00:28:11,050 --> 00:28:12,966 fra mere interessant ideer ved hånden, som 627 00:28:12,966 --> 00:28:15,310 er faktisk at skabe noget ud af koden. 628 00:28:15,310 --> 00:28:18,830 Men lad os gøre en modifikation nu i dette program. 629 00:28:18,830 --> 00:28:23,150 >> Husk, at sidste gang jeg gjorde noget som dette, printf oplyse dit navn. 630 00:28:23,150 --> 00:28:25,790 Og faktisk vi bare gjorde det på den store skærm derovre. 631 00:28:25,790 --> 00:28:30,640 Og så gjorde jeg streng s får GetString åbne paren, close paren. 632 00:28:30,640 --> 00:28:33,430 Og paren bare stenografi notation for parentes. 633 00:28:33,430 --> 00:28:36,460 Så betyder getString tage nogen argumenter? 634 00:28:36,460 --> 00:28:38,440 Ingen indgange Nej, men det brug for de parenteser, 635 00:28:38,440 --> 00:28:41,830 fordi det er hvad afgrænser kaldelsen af ​​en funktion. 636 00:28:41,830 --> 00:28:46,440 >> Så jeg har tænkt mig at gå videre og forsøge at køre compileren på dette program nu. 637 00:28:46,440 --> 00:28:50,774 Dunk hello.c, fordi jeg ikke ændre sit navn for nu. 638 00:28:50,774 --> 00:28:51,940 Og jeg fik en masse fejl. 639 00:28:51,940 --> 00:28:53,570 Lad os zoome ud her. 640 00:28:53,570 --> 00:28:55,420 Hvis jeg rulle op igen, som jeg sagde sidste gang, 641 00:28:55,420 --> 00:28:58,420 til den første samme fejl at jeg fik sidste gang. 642 00:28:58,420 --> 00:29:04,210 På linje 6 af hello.c havde jeg en kaldenavn 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. 645 00:29:06,750 --> 00:29:10,050 For hvad fejl jeg har lavet i denne program, hvis du husker fra sidste gang? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Ja, vi har brug for såkaldt støttehjul 648 00:29:15,010 --> 00:29:16,510 at vi bare skal bruge et par uger. 649 00:29:16,510 --> 00:29:19,480 Men jeg har brug for at angive, at også et eller andet sted inde i apparatet, 650 00:29:19,480 --> 00:29:22,720 er en fil, som vi skrev blot et par år siden. 651 00:29:22,720 --> 00:29:26,500 Inde der er funktioner ligesom tilsyneladende getString. 652 00:29:26,500 --> 00:29:35,160 Så nu hvis jeg gå tilbage ned her, zoome ind, og re-run klang hello.c. 653 00:29:35,160 --> 00:29:36,500 Damn, en anden fejl. 654 00:29:36,500 --> 00:29:38,590 Men vi har ikke set denne ene før. 655 00:29:38,590 --> 00:29:41,900 >> Denne ene er lidt mere esoterisk at regne ud. 656 00:29:41,900 --> 00:29:46,910 Men det er med vilje på skærmen, fordi vi ønskede at fortælle denne historie. 657 00:29:46,910 --> 00:29:51,280 Når du kompilerer hello.c, ligesom billedet fra før foreslået, 658 00:29:51,280 --> 00:29:54,650 du kun at konvertere, at kildekoden til nuller og ettaller. 659 00:29:54,650 --> 00:30:00,340 Nu CS50 personale et par å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, udarbejdet disse filer 662 00:30:04,490 --> 00:30:07,290 i en fil, der sker at blive kaldt CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Eller det kan omdøbes en par forskellige ting. 664 00:30:09,180 --> 00:30:11,054 Men det er en enkel måde af at tænke over det. 665 00:30:11,054 --> 00:30:14,960 Så vi kompileret CS50 s bibliotek i nuller og ettaller. 666 00:30:14,960 --> 00:30:20,340 Men ingen steder har jeg specificeret at jeg ønsker at kombinere mine nuller 667 00:30:20,340 --> 00:30:24,030 og dem for min hej verden program med nuller og ettaller 668 00:30:24,030 --> 00:30:29,760 at CS50 personale skabte et par år siden i et komplet program. 669 00:30:29,760 --> 00:30:34,100 Alt, hvad jeg har angivet ved at skrive klang hello.c er kompilere hello.c. 670 00:30:34,100 --> 00:30:38,380 >> Jeg har ikke fortalt Klang til linket i nuller og ettaller 671 00:30:38,380 --> 00:30:41,650 at CS50 personale skabte for dig for nogen tid siden. 672 00:30:41,650 --> 00:30:48,280 Så det er en let rettelse, dash l for linket, CS50. 673 00:30:48,280 --> 00:30:52,600 Og vi vil igen se denne inden længe igen og igen. 674 00:30:52,600 --> 00:30:54,420 Men bemærk nu var der ingen klager. 675 00:30:54,420 --> 00:30:59,770 Så nu hvis jeg løber dot skråstreg hej, nu er det virker. 676 00:30:59,770 --> 00:31:03,840 Selvom der er en smule vildledende da jeg lige genskabt hvad fil? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Så lad mig spole tilbage for bare et øjeblik. 679 00:31:07,930 --> 00:31:10,900 Det program, vi lige har kompileret har de tre linjer kode. 680 00:31:10,900 --> 00:31:14,710 Da jeg løb hej verden, hallo et øjeblik siden vidste jeg ikke se dit navn. 681 00:31:14,710 --> 00:31:17,080 Og det er fordi jeg kørte ældre version af programmet. 682 00:31:17,080 --> 00:31:22,700 Men hvis jeg rent faktisk køre prik skråstreg a.out Enter, oplyse dit 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 lidt af en bug. 686 00:31:26,110 --> 00:31:28,560 Sandsynligvis ville sige Rob, right? 687 00:31:28,560 --> 00:31:30,997 Så hvad er rettelsen her i kode. 688 00:31:30,997 --> 00:31:31,872 STUDENT: [uhørligt]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Præcis. 691 00:31:39,290 --> 00:31:43,160 Så jeg skal bare tage det sidste tweak så jeg passerer i en pladsholder, 692 00:31:43,160 --> 00:31:45,690 ligesom en udfylde det, ligesom vi gjorde for et øjeblik siden. 693 00:31:45,690 --> 00:31:47,870 Men procent s er nu at udfylde det. 694 00:31:47,870 --> 00:31:52,100 Så endelig lad os afsløre en sidste detaljer, så der er ingen magi. 695 00:31:52,100 --> 00:31:54,090 Jeg har tænkt mig at gå videre og slippe af hellow. 696 00:31:54,090 --> 00:31:56,070 Jeg har tænkt mig at gå videre og slippe af a.out. 697 00:31:56,070 --> 00:31:58,410 Så nu har jeg ingen programmer, bare min kildekode. 698 00:31:58,410 --> 00:32:01,100 Og jeg har tænkt mig at køre en lidt længere kommando, klang 699 00:32:01,100 --> 00:32:05,650 dash o hej hello.c tankestreg LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Nu er dette er begyndt at slags gå i det ene øre og ud ad det andet måske. 701 00:32:08,700 --> 00:32:10,366 Men bare drille hinanden, hvad det gør. 702 00:32:10,366 --> 00:32:14,910 Dunk er compileren, bindestreg LCS50 bevidst til allersidst 703 00:32:14,910 --> 00:32:18,330 gør hvad i en sætning? 704 00:32:18,330 --> 00:32:19,607 Links til CS50 biblioteket. 705 00:32:19,607 --> 00:32:21,440 Griber nuller og dem, at personalet gjort 706 00:32:21,440 --> 00:32:23,310 og crams dem ind i mit eget program. 707 00:32:23,310 --> 00:32:27,040 Så det sidste spørgsmål ved hånden er, hvad er streg o hej sandsynligvis 708 00:32:27,040 --> 00:32:30,530 laver, selvom du har aldrig set denne syntaks før? 709 00:32:30,530 --> 00:32:34,920 >> Udlæsning af et program, der er ikke navngivet standard a.out. 710 00:32:34,920 --> 00:32:37,330 Snarere det er opkaldt hej. 711 00:32:37,330 --> 00:32:39,460 Så nu er der ingen a.out. 712 00:32:39,460 --> 00:32:42,660 Ingen sådan fil eller mappe, fordi jeg sagde udtrykkeligt 713 00:32:42,660 --> 00:32:46,720 kalder dette program hej, så Jeg kan nu indtaste et navn som dette 714 00:32:46,720 --> 00:32:47,790 og har det opfører sig. 715 00:32:47,790 --> 00:32:50,180 >> Nu ærligt, drengen er at uinteressant at have 716 00:32:50,180 --> 00:32:52,170 at huske alle at lille minutia, right? 717 00:32:52,170 --> 00:32:54,180 Så lad os gå videre og slippe af hej igen. 718 00:32:54,180 --> 00:32:57,880 Og lad os nu vende tilbage til en verden i som er det tilstrækkeligt at sige gøre hej. 719 00:32:57,880 --> 00:33:00,410 Men det er den magi, der gøre gør for dig, 720 00:33:00,410 --> 00:33:02,320 Det er det kedelige, at det gør for dig. 721 00:33:02,320 --> 00:33:04,630 Og da vores programmer og problemer får mere komplekse, 722 00:33:04,630 --> 00:33:06,142 gøre vil virkelig være din ven. 723 00:33:06,142 --> 00:33:07,850 Fordi ikke alt for længe fra nu vil vi 724 00:33:07,850 --> 00:33:11,150 at have programmer, der er skrevet ikke med en fil, men flere filer, 725 00:33:11,150 --> 00:33:16,310 og gøre automatiserer processen kompilere alt dette for os sammen. 726 00:33:16,310 --> 00:33:20,620 >> Så nu udskrive. 727 00:33:20,620 --> 00:33:24,960 printf er inde i denne fil, standard I / O-prik t, at vi har set før, 728 00:33:24,960 --> 00:33:26,980 men der er mere at printf end det. 729 00:33:26,980 --> 00:33:30,482 Der er omvendt skråstreg n, men der er også en masse andre escape-sekvenser. 730 00:33:30,482 --> 00:33:32,940 Og undvigesekvens er blot en fancy måde at sige noget 731 00:33:32,940 --> 00:33:35,990 der starter med en omvendt skråstreg, ikke en skråstreg, en omvendt skråstreg, 732 00:33:35,990 --> 00:33:37,920 og gør nogle særlige ting. 733 00:33:37,920 --> 00:33:43,770 Og vi vil ikke dvæle ved de fleste af disse, men hvorfor er der omvendt skråstreg dobbelt citat, 734 00:33:43,770 --> 00:33:44,830 tror du? 735 00:33:44,830 --> 00:33:48,010 Hvorfor er der denne underlige sekvens af tegn, omvendt skråstreg dobbelt citat, 736 00:33:48,010 --> 00:33:50,505 hvorfor kan det være nyttigt? 737 00:33:50,505 --> 00:33:51,380 STUDENT: [uhørligt]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Præcis, right? 740 00:33:57,760 --> 00:34:01,830 Tænk tilbage til vores hello world program at vi har set helt et par gange nu, 741 00:34:01,830 --> 00:34:05,880 hver gang vi har set, at hej verden program, vi har haft anførselstegn inde 742 00:34:05,880 --> 00:34:08,210 som er hej komma verden backslash n. 743 00:34:08,210 --> 00:34:10,070 Men tænk på dig selv, hvad nu hvis du rent faktisk 744 00:34:10,070 --> 00:34:12,520 ønskede at udskrive en anførselstegn? 745 00:34:12,520 --> 00:34:16,100 Din første indskydelse kan være, det gør jeg ikke vide, hvorfor jeg måske ønsker at do-- her, 746 00:34:16,100 --> 00:34:18,780 vi kan være lidt passiv aggressiv, hej ven. 747 00:34:18,780 --> 00:34:21,350 Vi vil måske gøre noget lignende. 748 00:34:21,350 --> 00:34:25,230 >> Men hvorfor er det nu problematisk? 749 00:34:25,230 --> 00:34:28,730 Ignorerer de krøllede anførselstegn til side, at Keynote foretaget for os automatisk. 750 00:34:28,730 --> 00:34:29,730 Hvorfor er det problematisk? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Præcis. 753 00:34:37,270 --> 00:34:39,022 Fordi vi har ligesom 4 anførselstegn. 754 00:34:39,022 --> 00:34:41,230 Nå den første sandsynligvis går med den anden, 755 00:34:41,230 --> 00:34:43,271 og måske 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 computeren vil være. 757 00:34:46,170 --> 00:34:48,352 Computere igen, oversættere igen, er temmelig dum. 758 00:34:48,352 --> 00:34:50,060 De vil kun gøre, hvad du fortælle dem at gøre. 759 00:34:50,060 --> 00:34:54,270 Og hvis du ikke er entydig, de sandsynligvis vil kaste en fejl. 760 00:34:54,270 --> 00:34:57,700 >> Hvis du ikke er entydig med hensyn til, hvordan man lave en jordnøddesmør og gelé sandwich 761 00:34:57,700 --> 00:34:59,510 mærkelige ting måske ankommer. 762 00:34:59,510 --> 00:35:00,580 Det er den samme idé. 763 00:35:00,580 --> 00:35:03,100 Nu er det tilstrækkeligt at sige, at der er nogle andre escape-sekvenser, 764 00:35:03,100 --> 00:35:04,820 men vi vil komme til dem inden længe. 765 00:35:04,820 --> 00:35:07,410 Hovedsagelig disse flugt sekvenser repræsenterer noget 766 00:35:07,410 --> 00:35:10,480 at du måske ikke være i stand for let på tastaturet, 767 00:35:10,480 --> 00:35:12,010 uden at forveksle computeren. 768 00:35:12,010 --> 00:35:15,733 >> Nu i mellemtiden har vi pladsholdere i printf. 769 00:35:15,733 --> 00:35:19,630 Procent d, som også kan skrives i næsten alle tilfælde som procent i, 770 00:35:19,630 --> 00:35:21,610 er en pladsholder for hvilken type data? 771 00:35:21,610 --> 00:35:23,920 Hvilken type af værdi? 772 00:35:23,920 --> 00:35:24,920 Et decimaltal. 773 00:35:24,920 --> 00:35:27,234 Så egentlig begynder vi hjælp procent i, fordi det er 774 00:35:27,234 --> 00:35:28,650 lidt enklere, ligesom et heltal. 775 00:35:28,650 --> 00:35:29,550 Procent i. 776 00:35:29,550 --> 00:35:31,320 Et heltal, der sker for at være decimal. 777 00:35:31,320 --> 00:35:35,690 >> Procent s vi allerede sagt var pladsholder for en streng. 778 00:35:35,690 --> 00:35:38,630 Hvilket er bare et ord, en sætning, et afsnit, et essay, uanset hvad. 779 00:35:38,630 --> 00:35:40,830 Det er en sekvens af tegn i en vis udstrækning. 780 00:35:40,830 --> 00:35:42,820 Og vi vil se inden længe nogle af disse andre. 781 00:35:42,820 --> 00:35:45,950 Men procent c er et enkelt tegn. 782 00:35:45,950 --> 00:35:48,500 Procent f er en decimaltal, 783 00:35:48,500 --> 00:35:50,860 som et reelt tal, der har et komma i det, som 784 00:35:50,860 --> 00:35:52,550 er naturligvis ikke et heltal. 785 00:35:52,550 --> 00:35:54,670 Og der er en hel flok andre. 786 00:35:54,670 --> 00:35:56,990 >> I mellemtiden i C, og i en masse sprog, 787 00:35:56,990 --> 00:35:58,650 Vi har forskellige typer af data. 788 00:35:58,650 --> 00:36:00,650 Forskellige typer af glasskåle hvis du vil. 789 00:36:00,650 --> 00:36:03,830 Skålen jeg brugte sidste gang var for ping pong bolde, 790 00:36:03,830 --> 00:36:06,990 men vi kan også gemme forskellige værdier som tegn og strygere 791 00:36:06,990 --> 00:36:10,820 og heltal i en container, som en variabel og C har disse. 792 00:36:10,820 --> 00:36:14,020 Char er den type data, den type variabel, 793 00:36:14,020 --> 00:36:15,700 hvor du kan gemme en karakter. 794 00:36:15,700 --> 00:36:19,560 Float er en type variabel i hvor du kan gemme et reelt tal. 795 00:36:19,560 --> 00:36:21,220 >> Int er naturligvis til en int. 796 00:36:21,220 --> 00:36:23,760 Og temmelig latterligt opkaldt en lang lang 797 00:36:23,760 --> 00:36:26,830 er, hvor du kan gemme hovedsageligt en virkelig lang række, med endnu 798 00:36:26,830 --> 00:36:29,930 flere cifre derefter en typisk int måske butik. 799 00:36:29,930 --> 00:36:32,420 Men vi vil vende tilbage til det inden længe. 800 00:36:32,420 --> 00:36:35,520 >> I CS50 dot h i mellemtiden den anden header fil 801 00:36:35,520 --> 00:36:37,630 at vi har set et par gange i brug, er der 802 00:36:37,630 --> 00:36:41,350 to andre datatyper, der ikke findes i C typisk. 803 00:36:41,350 --> 00:36:45,000 Den ene er streng, og vi vil se på et par uger hvilke strings virkelig 804 00:36:45,000 --> 00:36:46,610 er under motorhjelmen. 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, kun kan tage på visse værdier. 807 00:36:51,650 --> 00:36:54,370 Og blot baseret på sidste uges forklaring af Scratch, 808 00:36:54,370 --> 00:36:56,680 og for nylig C hvad ville du gætte 809 00:36:56,680 --> 00:37:01,770 er de to mulige værdier for nogle beholder, der er af typen bool? 810 00:37:01,770 --> 00:37:02,860 >> Ja og nej. 811 00:37:02,860 --> 00:37:03,870 En og nul. 812 00:37:03,870 --> 00:37:04,502 Sandt eller falsk. 813 00:37:04,502 --> 00:37:07,460 Og ja det er den sidste, der har tendens at være konventionel i et programmeringssprog 814 00:37:07,460 --> 00:37:10,030 sprog, siger noget ligesom sandt eller falsk. 815 00:37:10,030 --> 00:37:13,160 >> I mellemtiden CS50 biblioteket kommer med en flok af funktionalitet 816 00:37:13,160 --> 00:37:16,640 at personalet skrev til dig, udover blot at få en streng. 817 00:37:16,640 --> 00:37:20,910 Vi skrev i forskud funktioner, kan få et heltal fra brugeren, 818 00:37:20,910 --> 00:37:22,990 få et enkelt tegn, få en float, at 819 00:37:22,990 --> 00:37:25,160 er blot et tal med kommaet. 820 00:37:25,160 --> 00:37:28,290 Få en lang lang, en virkelig stor værdi fra brugeren. 821 00:37:28,290 --> 00:37:30,930 Så vi har kun set det i handling i form af getString. 822 00:37:30,930 --> 00:37:33,230 Men via disse funktioner vil snart være i stand til at skrive 823 00:37:33,230 --> 00:37:36,070 programmer, der får input fra brugeren. 824 00:37:36,070 --> 00:37:39,230 >> I mellemtiden overveje dette program, og overveje 825 00:37:39,230 --> 00:37:42,600 hvordan vi kan nu begynde at tilføje til det med nye konstruktioner. 826 00:37:42,600 --> 00:37:44,530 En hurtig hvirvelvind turné og så vil vi se 827 00:37:44,530 --> 00:37:47,340 på nogle skrive nogle programmer manuelt selv. 828 00:37:47,340 --> 00:37:49,700 Fremover hvis vi ønsker at gennemføre en tilstand, 829 00:37:49,700 --> 00:37:52,790 er det ikke kommer til at ligne en dejlig lille smuk brik. 830 00:37:52,790 --> 00:37:54,460 Det kommer til at se lidt mere mystisk. 831 00:37:54,460 --> 00:37:57,620 Men dette er den kanoniske struktur af en tilstand i C. 832 00:37:57,620 --> 00:38:00,380 >> Ordet hvis to parenteser, inden i hvilken 833 00:38:00,380 --> 00:38:02,590 kommer til at være en slags af boolsk udtryk. 834 00:38:02,590 --> 00:38:04,999 Nu skråstreg skråstreg i midten, dette er 835 00:38:04,999 --> 00:38:07,290 på det tidspunkt, lidt ligesom pseudokoden kode pladsholder. 836 00:38:07,290 --> 00:38:11,576 Men mere korrekt, enhver linje kode i C, der starter med skråstreg skråstreg 837 00:38:11,576 --> 00:38:12,850 er en kommentar. 838 00:38:12,850 --> 00:38:15,920 >> Det er ligesom en gul seddel, som du måske sat på et essay, trykt på papir. 839 00:38:15,920 --> 00:38:17,290 Det er en note til dig selv. 840 00:38:17,290 --> 00:38:20,100 Det har ingen funktionelle indvirkning på programmet. 841 00:38:20,100 --> 00:38:23,580 Det er en slags en påmindelse, er det din egen dokumentation for, hvad der foregår. 842 00:38:23,580 --> 00:38:25,720 Så gør det i øjeblikket er en slags pladsholder 843 00:38:25,720 --> 00:38:27,560 uanset er inde af disse krøllede parenteser 844 00:38:27,560 --> 00:38:29,810 til sidst kommer til at gøre noget. 845 00:38:29,810 --> 00:38:35,160 >> I mellemtiden har du to gafler i vej, en hvis ellers konstruere som denne. 846 00:38:35,160 --> 00:38:37,024 Du kan If, ElseIf, ellers. 847 00:38:37,024 --> 00:38:39,690 Nu er det værd at bemærke, især hvis du har været Googling omkring 848 00:38:39,690 --> 00:38:42,480 online ressourcer ud af nysgerrighed, eller hvis du afhente 849 00:38:42,480 --> 00:38:44,575 en af ​​kursets anbefalede bøger om C, 850 00:38:44,575 --> 00:38:48,430 vil du se, at mennesker har masser forskellige præferencer for, hvordan 851 00:38:48,430 --> 00:38:50,510 til at udtrykke sig i kode. 852 00:38:50,510 --> 00:38:53,800 Nogle mennesker kan lide at sætte krøllede parenteser, som jeg har gjort her. 853 00:38:53,800 --> 00:38:57,760 Nogle mennesker kan lide at sætte krøllede seler for eksempel op her. 854 00:38:57,760 --> 00:39:01,700 >> Nogle mennesker kan lide at sætte den andens op her og derefter det herovre. 855 00:39:01,700 --> 00:39:05,120 Der er en række forskellige måder at skrive kode, og ingen af ​​dem 856 00:39:05,120 --> 00:39:06,566 er lige sådan. 857 00:39:06,566 --> 00:39:08,440 Selvom der er et par der er temmelig forkert. 858 00:39:08,440 --> 00:39:11,315 Men der er no--, hvis dette er i sidste ende en meget religiøs debat. 859 00:39:11,315 --> 00:39:13,940 Faktisk en af ​​de mest irriterende ting om datalogi 860 00:39:13,940 --> 00:39:16,310 er hvordan påståelig dataloger kan være. 861 00:39:16,310 --> 00:39:19,880 Og du vil finde over tid, der selv du udvikle personlige præferencer 862 00:39:19,880 --> 00:39:22,130 , hvordan din kode skal se ud. 863 00:39:22,130 --> 00:39:27,162 >> Ikke bare opfører sig, ikke bare skabe output, men hvordan det skal se æstetisk. 864 00:39:27,162 --> 00:39:30,120 Så hvad vi vil gøre, er at guide dig sammen vejen mod, for nu i det mindste 865 00:39:30,120 --> 00:39:34,825 en standard CS50 stil, at mindst holder tingene ensartet og let at læse. 866 00:39:34,825 --> 00:39:37,330 Men mere om dem, sondringer inden længe. 867 00:39:37,330 --> 00:39:41,830 >> En boolesk udtryk i C, hvis du ønskede at sige, om denne betingelse er sand 868 00:39:41,830 --> 00:39:44,650 og denne anden betingelse er sandt, behøver du ikke skrive ordet 869 00:39:44,650 --> 00:39:46,610 og, som du ville på engelsk. 870 00:39:46,610 --> 00:39:50,580 Du stedet bruge tegnet tegnet, af grunde, vi vil vende tilbage til. 871 00:39:50,580 --> 00:39:54,520 Hvis du ønsker at sige, eller du bruge to lodrette stænger, der på et amerikansk tastatur 872 00:39:54,520 --> 00:39:57,650 er generelt over Enter tasten ved siden af ​​den omvendte skråstreg. 873 00:39:57,650 --> 00:40:03,080 Og dette blot betyder, at hvis denne betingelse eller denne anden betingelse er sand gøre dette. 874 00:40:03,080 --> 00:40:05,210 >> I mellemtiden er der denne skøre ting, som 875 00:40:05,210 --> 00:40:07,760 har du lejlighed at bruge en gang i et stykke tid. 876 00:40:07,760 --> 00:40:10,390 Men det er bare et alternativ måde at udtrykke dig. 877 00:40:10,390 --> 00:40:12,400 Dette for nu, lad os fastsætte, det er bare 878 00:40:12,400 --> 00:40:16,880 anden funky måde at udtrykke If, ElseIf, ElseIf, ElseIf, elseif. 879 00:40:16,880 --> 00:40:19,720 Det er bare formateret i form af tilfældene, hvor du bogstaveligt talt 880 00:40:19,720 --> 00:40:23,420 opregne de værdier, du måske ønsker at kontrollere for. 881 00:40:23,420 --> 00:40:24,410 >> I mellemtiden sløjfer. 882 00:40:24,410 --> 00:40:26,842 Vi så en sammenligning af Scratch med en løkke. 883 00:40:26,842 --> 00:40:29,550 Og jeg har tænkt mig at vinke min hånd på hvad hver af disse ting betyder. 884 00:40:29,550 --> 00:40:33,520 Men bemærk, at en løkke vil meget ofte starte med nøgleordet for. 885 00:40:33,520 --> 00:40:36,350 Eller det vil begynde med søgeordet mens. 886 00:40:36,350 --> 00:40:41,360 Eller det vil begynde med nøgleordet gøre, og ender med søgeordet mens. 887 00:40:41,360 --> 00:40:43,920 >> Men hvad vi er ved at se er tingene mere som dette. 888 00:40:43,920 --> 00:40:47,950 Her er generelt i C, hvordan du kan erklære en variabel og give det en værdi. 889 00:40:47,950 --> 00:40:50,610 I C er det ikke tilstrækkeligt, ligesom i Scratch, du bare 890 00:40:50,610 --> 00:40:52,810 sige give mig en variabel kaldes noget. 891 00:40:52,810 --> 00:40:55,960 Du er nødt til at fortælle C, og fortælle din compiler, mere specifikt, 892 00:40:55,960 --> 00:40:58,680 hvilken type værdi gør du ønsker at sætte i glasskålen. 893 00:40:58,680 --> 00:40:59,610 >> Er det et heltal? 894 00:40:59,610 --> 00:41:02,210 Hvis ja, du er nødt til at bogstaveligt sige int og derefter 895 00:41:02,210 --> 00:41:04,220 navnet på den variable, derefter et semikolon. 896 00:41:04,220 --> 00:41:08,050 Hvis du i stedet ønsker snor og kaldte det s ligesom jeg gjorde min kode her i dag, 897 00:41:08,050 --> 00:41:10,920 ville du sige streng s semikolon. 898 00:41:10,920 --> 00:41:14,200 Når du ønsker at give det en værdi Du kan derefter bruge lighedstegnet, 899 00:41:14,200 --> 00:41:16,211 ellers kendt som opgave operatør. 900 00:41:16,211 --> 00:41:17,960 Og bemærk, hvordan hver af disse linjer kode 901 00:41:17,960 --> 00:41:20,650 har semikolon i slutningen af ​​det. 902 00:41:20,650 --> 00:41:22,550 >> Men helt ærligt det bare ser lidt grimt. 903 00:41:22,550 --> 00:41:26,580 Hvorfor kan jeg ikke sige til computeren, giver mig en variabel og initialisere den til nul. 904 00:41:26,580 --> 00:41:28,380 Det vil sige, giv mig en tom glasskål. 905 00:41:28,380 --> 00:41:28,980 Mens du kan. 906 00:41:28,980 --> 00:41:32,250 Og så en af ​​dommen kalder du nødt til at gøre stilistisk over tid 907 00:41:32,250 --> 00:41:36,290 er, skriver du din kode som denne, eller behøver du slags rense det og imponere 908 00:41:36,290 --> 00:41:39,040 mennesker ved at skrive to linjer som kun én. 909 00:41:39,040 --> 00:41:41,830 Og dette ville blive betragtet generelt en mere elegant måde 910 00:41:41,830 --> 00:41:43,870 skrive din kode stilistisk. 911 00:41:43,870 --> 00:41:45,200 >> Funktioner er vi jo set. 912 00:41:45,200 --> 00:41:46,340 De kommer til at tage dette format. 913 00:41:46,340 --> 00:41:48,881 Navnet på en funktion, nogle parenteser, og så måske nogle 914 00:41:48,881 --> 00:41:49,910 ting inde. 915 00:41:49,910 --> 00:41:52,540 Eller du kan se anvendelser af flere funktioner side 916 00:41:52,540 --> 00:41:55,980 side, som noget som dette. 917 00:41:55,980 --> 00:41:59,390 Nu som en tangent, gør denne vittighed nu mening? 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 betyder ikke, det er sjovt, men det gør måske gøre lidt mere mening. 921 00:42:09,360 --> 00:42:12,140 Så lad os nu gå ind i CS50 apparatet et øjeblik. 922 00:42:12,140 --> 00:42:14,640 Og lad mig åbne en teaser her. 923 00:42:14,640 --> 00:42:17,470 >> Og faktisk en af ​​grundene for at indføre IKEA kataloget 924 00:42:17,470 --> 00:42:20,080 og blinkende billedet af iPhone lidt siden 925 00:42:20,080 --> 00:42:24,700 var faktisk binde i sammen faktum, at bare et par år siden, i 2007, 926 00:42:24,700 --> 00:42:26,540 dette stykke kode var frigives, hvilket blev 927 00:42:26,540 --> 00:42:29,820 en af ​​de allerførste gennemførelse af et stykke software 928 00:42:29,820 --> 00:42:31,494 der gør, hvad der kaldes jailbreaking. 929 00:42:31,494 --> 00:42:34,410 For dem bekendt, jailbreaking noget som en telefon eller en iPhone 930 00:42:34,410 --> 00:42:37,680 betyder i realiteten, at regne ud, hvordan man gør tingene 931 00:42:37,680 --> 00:42:39,864 med det, at selskabet der gjorde det ikke havde til hensigt. 932 00:42:39,864 --> 00:42:42,780 Ligesom du ønsker at installere visse software, der ikke er i app store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking din telefon, som du gøre ting som dette og meget mere. 934 00:42:45,405 --> 00:42:47,447 Men hvad var sjovt i 2007-- og der har været 935 00:42:47,447 --> 00:42:49,780 snesevis af forskellige versioner af disse ting siden da, 936 00:42:49,780 --> 00:42:53,540 i alle mulige languages-- er, at dette program, som kaldes iUnlock, 937 00:42:53,540 --> 00:42:57,036 faktisk blev skrevet i C. Og så jeg trukket op kildekoden til dette, 938 00:42:57,036 --> 00:42:59,910 bare at slags vise dig nogle af lighederne med konstruktionerne 939 00:42:59,910 --> 00:43:01,450 vi har diskuteret hidtil. 940 00:43:01,450 --> 00:43:05,150 Nu er der langt mere kompleksitet her end vi har set allerede i klassen. 941 00:43:05,150 --> 00:43:07,160 Lad mig rulle op bare en lille smule her. 942 00:43:07,160 --> 00:43:11,520 >> Men bemærk these-- godt vi bemærke et par ting-- men bemærker disse linjer her, 943 00:43:11,520 --> 00:43:14,090 herunder standard I / O prik time. 944 00:43:14,090 --> 00:43:17,660 Og all-- linie 24, please-- bemærke standard I / O 945 00:43:17,660 --> 00:43:21,380 dot t og en hel masse andre filer, der tilsyneladende 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 rulle ned gennem denne lille vilkårligt 948 00:43:24,850 --> 00:43:27,910 Bemærk, at jeg ikke ved, hvordan man skriver alt dette selv nødvendigvis endnu, 949 00:43:27,910 --> 00:43:28,880 men der er hvis. 950 00:43:28,880 --> 00:43:30,400 Så tilsyneladende dette har en filial. 951 00:43:30,400 --> 00:43:33,210 >> Og hvis jeg rulle ned lidt yderligere er der en anden, hvis. 952 00:43:33,210 --> 00:43:38,210 Hvis jeg rulle op, tror jeg omkring linie 100 Jeg så efter. 953 00:43:38,210 --> 00:43:40,020 Så jeg er ikke helt sikker hvordan det fungerer endnu, 954 00:43:40,020 --> 00:43:43,180 men dette er en for-løkke, der kommer til Lad mig gentage nogle antal gange. 955 00:43:43,180 --> 00:43:45,230 Og hvis jeg rulle hele vejen til bunden 956 00:43:45,230 --> 00:43:51,020 Jeg kan se, at der er en fungere hernede kaldet 957 00:43:51,020 --> 00:43:54,570 vigtigste, og nogle yderligere kreditter for din læsning nydelse. 958 00:43:54,570 --> 00:43:57,830 >> Så dette er blot at sige--, og vi vil sætte dette online blandt kursets kilde 959 00:43:57,830 --> 00:44:01,480 kode today--, at selv nogle af disse enheder, som vi tager for givet, 960 00:44:01,480 --> 00:44:05,130 ved slutningen af ​​den dag, du stadig ved hjælp af disse grundlæggende konstruktioner, som vi har 961 00:44:05,130 --> 00:44:07,430 været at indføre allerede hidtil. 962 00:44:07,430 --> 00:44:08,620 Det er nok af det ene. 963 00:44:08,620 --> 00:44:11,480 Okay, så lad os nu faktisk bygge noget. 964 00:44:11,480 --> 00:44:15,640 >> Lad os gå ud over noget lignende hello.c, og åbne op for dette, 965 00:44:15,640 --> 00:44:17,170 lad os skrive dette program her. 966 00:44:17,170 --> 00:44:19,850 Jeg har tænkt mig at gå videre og skrive et program kaldet adder.c, 967 00:44:19,850 --> 00:44:23,310 hvis formål i livet vil være ligesom min første super simpel regnemaskine 968 00:44:23,310 --> 00:44:24,840 der blot tilføjer et par numre. 969 00:44:24,840 --> 00:44:27,050 Ikke fordi det er en hård problem, men fordi det 970 00:44:27,050 --> 00:44:29,390 tillader mig at nu binde sammen et par ting. 971 00:44:29,390 --> 00:44:33,100 Så jeg har tænkt mig at gå videre og inkludere standard I / O prik t og CS50 prik time. 972 00:44:33,100 --> 00:44:34,670 Jeg har tænkt mig at sige int main tomrum. 973 00:44:34,670 --> 00:44:36,545 Og igen i fremtiden vi vil vende tilbage til det 974 00:44:36,545 --> 00:44:38,560 ind i denne sammenhæng, og ugyldige midler. 975 00:44:38,560 --> 00:44:43,340 >> Og nu jeg har tænkt mig at sige noget ligesom printf, giv mig et heltal. 976 00:44:43,340 --> 00:44:47,610 Og nu på min anden linje, hvordan kan jeg udtrykke mig sådan 977 00:44:47,610 --> 00:44:50,980 at jeg ønsker at erklære en variabel der kommer til at gemme en int? 978 00:44:50,980 --> 00:44:55,470 Bogstaveligt talt, hvad skal jeg skrive, hvis jeg vil oprette en variabel, der gemmer en int 979 00:44:55,470 --> 00:44:58,270 ville du sige? 980 00:44:58,270 --> 00:44:59,650 int a er lig getint. 981 00:44:59,650 --> 00:45:00,485 Sikker på, så der virker. 982 00:45:00,485 --> 00:45:02,360 Og bare for konsistens med den kode, du skal 983 00:45:02,360 --> 00:45:04,485 se online, lad mig forandring dette til x, bare fordi x 984 00:45:04,485 --> 00:45:06,830 er en almindelig variabel navn at bruge i det mindste i algebra. 985 00:45:06,830 --> 00:45:08,720 Lad mig nu gå videre og gøre printf igen. 986 00:45:08,720 --> 00:45:10,692 Giv mig en anden heltal. 987 00:45:10,692 --> 00:45:12,900 Og nu vil jeg slags af lære af det mønster, 988 00:45:12,900 --> 00:45:14,490 Jeg har tænkt mig at sige int y får at GetInt. 989 00:45:14,490 --> 00:45:16,340 >> Og vi har ikke brugt GetInt før, men blot 990 00:45:16,340 --> 00:45:19,860 ligesom getString går og får en streng, ligesom Javier gjorde fra publikum, 991 00:45:19,860 --> 00:45:22,780 ligeledes gør GetInt begynder at blinke prompten. 992 00:45:22,780 --> 00:45:26,750 Og effektivt og venter på brugeren at give det et heltal, ved at skrive det i 993 00:45:26,750 --> 00:45:27,900 og trykke Enter. 994 00:45:27,900 --> 00:45:30,850 Nu endelig jeg har tænkt mig at gøre dette printf summen af-- 995 00:45:30,850 --> 00:45:36,080 og lad mig få lyst nu-- procent i og procent i er til stede 996 00:45:36,080 --> 00:45:39,270 Jeg udråbstegn backslash n. 997 00:45:39,270 --> 00:45:42,750 Og hvad tror du, jeg har tænkt mig at sat i nu, som de ekstra indgange 998 00:45:42,750 --> 00:45:44,620 at printf? 999 00:45:44,620 --> 00:45:47,380 >> Jeg ønsker ikke at sige bogstaveligt citerer ikke citere x. 1000 00:45:47,380 --> 00:45:52,210 Jeg ønsker at klassen i x og da, og lad os nu komme fancy 1001 00:45:52,210 --> 00:45:54,420 og lad os bare antage vi kan gøre hvad vi vil. 1002 00:45:54,420 --> 00:45:56,330 Hvad du ønsker at sige næste? 1003 00:45:56,330 --> 00:45:57,070 x plus y. 1004 00:45:57,070 --> 00:45:58,520 Og ja, der vil arbejde. 1005 00:45:58,520 --> 00:46:01,760 Det er minimalt programmeringssprog forstår grundlæggende aritmetik, 1006 00:46:01,760 --> 00:46:03,500 og så det bør faktisk arbejde. 1007 00:46:03,500 --> 00:46:06,730 >> Så lad mig gå videre og gør adder i min sorte og hvide vindue 1008 00:46:06,730 --> 00:46:08,090 hernede, Enter. 1009 00:46:08,090 --> 00:46:10,830 Cryptic linje, men ingen fejl budskab, så det er godt. 1010 00:46:10,830 --> 00:46:14,410 Dot skråstreg adder, giv mig et heltal, 1. 1011 00:46:14,410 --> 00:46:16,230 Giv mig en heltal, 2. 1012 00:46:16,230 --> 00:46:18,770 Summen af ​​1 og 2 er 3. 1013 00:46:18,770 --> 00:46:21,730 >> Okay, så en temmelig triviel program, men hvad gør man? 1014 00:46:21,730 --> 00:46:25,680 Det har tilladt mig at bruge en funktion call her, hent en anden funktion her, 1015 00:46:25,680 --> 00:46:29,260 to opkald til GetInt, en tredje indkaldelse til printf, 1016 00:46:29,260 --> 00:46:30,720 og derefter bruge disse eksempler. 1017 00:46:30,720 --> 00:46:33,160 Så det er lidt mere sofistikeret end sidste gang. 1018 00:46:33,160 --> 00:46:35,260 Men hvad hvis jeg ønsker at få en smule mere avanceret? 1019 00:46:35,260 --> 00:46:38,900 >> Lad mig gå videre og nu gør det. 1020 00:46:38,900 --> 00:46:42,890 Lad mig gå videre og skabe en ny fil kaldet betingelser nul. 1021 00:46:42,890 --> 00:46:44,890 Og jeg har tænkt mig at spare lidt tid for klasser skyld 1022 00:46:44,890 --> 00:46:48,260 og bare indsætte i det kode som udgangspunkt. 1023 00:46:48,260 --> 00:46:51,510 Og nu skal jeg bare kommer til at sætte noget nyt her i midten. 1024 00:46:51,510 --> 00:46:55,889 Så printf jeg vil gerne et heltal venligst. 1025 00:46:55,889 --> 00:46:58,180 Og alt denne kode er tilgængelig på kursets hjemmeside, 1026 00:46:58,180 --> 00:47:00,556 du behøver ikke skrive det hele ud i klasse, hvis du hellere vil ikke. 1027 00:47:00,556 --> 00:47:02,638 int, og nu jeg har tænkt mig at bruge, i stedet for x og y, 1028 00:47:02,638 --> 00:47:05,270 Jeg har tænkt mig at bruge n, hvilket er nok den mest almindelige navn 1029 00:47:05,270 --> 00:47:09,220 til et helt tal i et computerprogram. 1030 00:47:09,220 --> 00:47:12,060 Og nu jeg ønsker at gøre en lille dom her. 1031 00:47:12,060 --> 00:47:15,460 Jeg har tænkt mig at se, om n er større end 0, 1032 00:47:15,460 --> 00:47:23,670 Jeg har tænkt mig at sige printf-- hovsa, printf-- du valgte et positivt tal, 1033 00:47:23,670 --> 00:47:25,370 udråbstegn backslash n. 1034 00:47:25,370 --> 00:47:26,460 Luk det. 1035 00:47:26,460 --> 00:47:33,150 Else Jeg har tænkt mig at printe ud printf du valgte et negativt tal. 1036 00:47:33,150 --> 00:47:35,377 >> Nu, før du råber på mig, lad os køre dette program. 1037 00:47:35,377 --> 00:47:36,210 Lad mig gå ned her. 1038 00:47:36,210 --> 00:47:40,730 Og hvordan kan jeg kompilere et program kaldet betingelser Dash 0? 1039 00:47:40,730 --> 00:47:42,300 Gør betingelser Dash 0. 1040 00:47:42,300 --> 00:47:45,560 Slags en dum navn, men-- fanden. 1041 00:47:45,560 --> 00:47:47,560 OK, god undervisning øjeblik. 1042 00:47:47,560 --> 00:47:48,410 Hvorfor gik det i stykker? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Hvad gjorde jeg ved et uheld kalde denne fil? 1045 00:47:54,710 --> 00:47:56,876 Du kan slags udlede fra fanen heroppe. 1046 00:47:56,876 --> 00:47:58,750 Så det er ikke slemt, at jeg gjorde dette, fordi dette 1047 00:47:58,750 --> 00:48:00,208 vil ske måske til nogle af jer. 1048 00:48:00,208 --> 00:48:03,880 Så jeg ved et uheld opkaldt min kildekode tilstand 0. 1049 00:48:03,880 --> 00:48:09,950 Men min kilde kode ved konventionen, bør være i en fil kaldet tilstand 0 bindestreg C, 1050 00:48:09,950 --> 00:48:11,720 eller hvad prik c. 1051 00:48:11,720 --> 00:48:12,610 >> Så lad mig ordne dette. 1052 00:48:12,610 --> 00:48:16,880 Ligesom Microsoft Word jeg kan gå op Gem som og gøre betingelse 0 prik C. 1053 00:48:16,880 --> 00:48:20,100 Nu bare for at være ryddelig jeg kommer til at gå videre og fjerne 1054 00:48:20,100 --> 00:48:23,020 tilstand 0, hvilket var min gamle version. 1055 00:48:23,020 --> 00:48:26,550 Og lad os nu gør tilstand 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, synes godt. 1057 00:48:27,870 --> 00:48:29,510 >> Betingelse 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Jeg vil gerne have et heltal venligst, 50, du valgte et positivt tal. 1059 00:48:33,530 --> 00:48:35,390 Nu, hvordan om negativ 50? 1060 00:48:35,390 --> 00:48:37,660 Du valgte et negativt tal. 1061 00:48:37,660 --> 00:48:39,605 Hvad med nu, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Temmelig sikker 0 er ikke negativ. 1064 00:48:45,350 --> 00:48:47,780 >> Så dette er lidt af en logisk fejl. 1065 00:48:47,780 --> 00:48:50,680 Hvordan kan jeg løse dette? 1066 00:48:50,680 --> 00:48:57,260 Andet, hvis n er mindre end 0, skal du gøre dette, ellers vi kan få en trevejs filial her, 1067 00:48:57,260 --> 00:49:01,740 printf du valgte 0. 1068 00:49:01,740 --> 00:49:06,150 Så nu, hvis jeg kør dette program, efter at kompilere den 1069 00:49:06,150 --> 00:49:10,790 igen med fabrikat, og nu kør tilstand 0, hvad jeg vil se her 1070 00:49:10,790 --> 00:49:14,570 er 0 giver mig, at produktionen. 1071 00:49:14,570 --> 00:49:16,280 Så hvor skal vi hen med dette? 1072 00:49:16,280 --> 00:49:18,930 >> Jamen det er meget nemt at miste synet af skoven for bare træer. 1073 00:49:18,930 --> 00:49:23,590 Og så tillade os at konkludere med dette 2 og 1/2 minutters video 1074 00:49:23,590 --> 00:49:25,710 der i sidste ende er en smule af en annonce fra Google, 1075 00:49:25,710 --> 00:49:28,850 men det er virkelig bevis på hvad selv bruger disse grundlæggende bygning 1076 00:49:28,850 --> 00:49:33,020 blokke, vi i sidste ende kan gøre, når vi har en smule programmering 1077 00:49:33,020 --> 00:49:34,463 kyndige under vores bælter. 1078 00:49:34,463 --> 00:49:35,150 >> [Musik spiller] 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 lige ved at slå 5. 1082 00:49:42,470 --> 00:49:45,465 Vi fik til togstationen og vi bordede vores tog sammen. 1083 00:49:45,465 --> 00:49:48,010 Min bror sagde bare jeg vil bo her, og jeg vil vende tilbage. 1084 00:49:48,010 --> 00:49:51,140 Og jeg tænkte bare, godt du kender, Jeg kan lige så godt bare gå på vågeblus 1085 00:49:51,140 --> 00:49:52,690 og han vil bare vække mig op. 1086 00:49:52,690 --> 00:49:55,145 Og da jeg vågnede næste dag, hele transport 1087 00:49:55,145 --> 00:49:59,125 var tom på et løbsk tog, et spøgelse Toget tager mig, jeg ved ikke hvor. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Jeg blev vedtaget ud til Australien, til en australsk familie. 1090 00:50:06,280 --> 00:50:09,710 Og mor havde dekoreret min værelse med kortet over Indien, 1091 00:50:09,710 --> 00:50:11,950 som hun satte ved siden af ​​min seng. 1092 00:50:11,950 --> 00:50:15,830 Jeg vågnede hver morgen se, at kort, og dermed 1093 00:50:15,830 --> 00:50:18,530 det slags holdt minderne i live. 1094 00:50:18,530 --> 00:50:20,530 Folk ville sige, er du forsøger at finde en nål 1095 00:50:20,530 --> 00:50:23,560 i en høstak, Saroo du vil aldrig finde den. 1096 00:50:23,560 --> 00:50:28,540 >> Jeg ville have blinkede af de steder, jeg bruges til at gå, de glimt af min familie 1097 00:50:28,540 --> 00:50:29,890 ansigter. 1098 00:50:29,890 --> 00:50:34,060 Der var billedet af min mor, sidder med korslagte ben, 1099 00:50:34,060 --> 00:50:35,740 bare at se hende græde. 1100 00:50:35,740 --> 00:50:38,160 Livet er bare så hårdt. 1101 00:50:38,160 --> 00:50:41,237 Det var min skat. 1102 00:50:41,237 --> 00:50:44,320 Og jeg søgte på Google Map og indså, at der er Google Earth så godt. 1103 00:50:44,320 --> 00:50:48,140 I en verden, hvor du kan zoome ind, Jeg begyndte at have alle disse tanker 1104 00:50:48,140 --> 00:50:51,500 og hvilke muligheder at dette kunne gøre for mig. 1105 00:50:51,500 --> 00:50:54,890 Jeg sagde til mig selv, du ved, du har fik alle de fotografiske erindringer 1106 00:50:54,890 --> 00:50:58,590 og vartegn, hvor du er fra, og du ved, hvad byen ser ud. 1107 00:50:58,590 --> 00:51:03,060 Dette kunne være et program, der du kan bruge til at finde vej tilbage. 1108 00:51:03,060 --> 00:51:06,720 >> Jeg tænkte, jeg vil sætte en prik på Calcutta togstation, 1109 00:51:06,720 --> 00:51:10,890 og en radius linje, du ved, at du bør være at søge omkring dette område. 1110 00:51:10,890 --> 00:51:13,750 Jeg slags kom på tværs disse toget spor. 1111 00:51:13,750 --> 00:51:18,160 Og jeg begyndte at følge det, og Jeg kom til en togstation, som 1112 00:51:18,160 --> 00:51:22,228 afspejlede det samme billede der var i mine erindringer. 1113 00:51:22,228 --> 00:51:23,707 Alt matchet. 1114 00:51:23,707 --> 00:51:27,950 Jeg tænkte bare jep, jeg ved, hvor jeg skal hen. 1115 00:51:27,950 --> 00:51:30,116 Jeg vil bare lade kort, jeg har i mit hoved 1116 00:51:30,116 --> 00:51:33,080 lede mig og tage mig tilbage til min hjemby. 1117 00:51:33,080 --> 00:51:36,420 >> Jeg kom til døren af det hus, jeg blev født. 1118 00:51:36,420 --> 00:51:39,140 Og vandrede rundt omkring 15 meter rundt om hjørnet, 1119 00:51:39,140 --> 00:51:42,980 Der var tre damer stående udenfor, der støder op til hinanden. 1120 00:51:42,980 --> 00:51:47,830 Og den midterste trådte frem, og Jeg troede bare, det er din mor. 1121 00:51:47,830 --> 00:51:53,450 Hun kom frem, hun omfavnede mig, og vi var der i cirka fem minutter. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Hun greb min hånd og hun tog mig til huset 1124 00:51:59,000 --> 00:52:02,450 og fik på telefonen, hvor hun ringede min søster og min bror 1125 00:52:02,450 --> 00:52:05,600 at sige, at du ved, din bror har lige 1126 00:52:05,600 --> 00:52:09,340 alle pludselig lignede et spøgelse. 1127 00:52:09,340 --> 00:52:12,440 Og så blev familien genforenet igen. 1128 00:52:12,440 --> 00:52:15,110 Alt er alle gode, Jeg hjalp min mor ud, 1129 00:52:15,110 --> 00:52:17,110 hun ikke skal slider væk. 1130 00:52:17,110 --> 00:52:19,555 Hun kan leve resten af sit liv i fred. 1131 00:52:19,555 --> 00:52:23,460 >> Det var en nål i en høstak, 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, hvad vi har i verden er ved tryk på en knap. 1134 00:52:28,260 --> 00:52:32,010 Men du er nødt til at have viljen og viljen til at ville det. 1135 00:52:32,010 --> 00:52:32,950 >> [Musik spiller] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Vidunderligt sød vidnesbyrd 1138 00:52:38,170 --> 00:52:40,540 til lige hvad du kan nu gøre med teknologien. 1139 00:52:40,540 --> 00:52:43,390 Vi vil se dig i næste uge. 1140 00:52:43,390 --> 00:52:44,374