1 00:00:00,000 --> 00:00:11,375 2 00:00:11,375 --> 00:00:14,430 >> DAVID MALAN: Dette er CS50, og dette er starten av en uke. 3 00:00:14,430 --> 00:00:17,930 Og hva vi trodde vi skulle gjøre er å trekke tilbake teppet av en enhet som mange 4 00:00:17,930 --> 00:00:20,970 av dere har sikkert gått forbi nå for år, men kanskje aldri helt 5 00:00:20,970 --> 00:00:22,280 visst hva det er. 6 00:00:22,280 --> 00:00:26,000 Så denne enheten vil trolig se kjent for de fleste av dere nå. 7 00:00:26,000 --> 00:00:32,972 >> [VIDEOAVSPILLING] 8 00:00:32,972 --> 00:00:36,150 >> -En triumf av matematiske og mekaniske ferdigheter er denne flotte nye 9 00:00:36,150 --> 00:00:39,120 automatisk kalkulator på Harvard University. 10 00:00:39,120 --> 00:00:43,220 Intrikate problemer i matematikk sette gjennom maskinen i kodet form på 11 00:00:43,220 --> 00:00:47,840 tape er nøyaktig løst på et øyeblikk brøkdel av den tid som kreves for 12 00:00:47,840 --> 00:00:49,090 menneskelig beregning. 13 00:00:49,090 --> 00:01:00,090 14 00:01:00,090 --> 00:01:04,080 >> Designet for å fremskynde alle former for matematisk og vitenskapelig forskning, 15 00:01:04,080 --> 00:01:07,860 den gigantiske mekaniske hjernen vil arbeide for USA 16 00:01:07,860 --> 00:01:09,180 Navy fram til krigens slutt. 17 00:01:09,180 --> 00:01:18,180 18 00:01:18,180 --> 00:01:18,600 >> [END VIDEOAVSPILLING] 19 00:01:18,600 --> 00:01:21,980 >> DAVID MALAN: Så det er det du ser i Science Center, som er der 20 00:01:21,980 --> 00:01:23,540 at maskinen er nå plassert. 21 00:01:23,540 --> 00:01:25,910 Du faktisk bare se en del av det. 22 00:01:25,910 --> 00:01:28,800 Bare en del er for tiden utstilt, og det er en enhet som kalles 23 00:01:28,800 --> 00:01:31,970 Mark I, og det var i hovedsak en virkelig stor kalkulator. 24 00:01:31,970 --> 00:01:36,250 Det ble etterfulgt av Mark II, og det er fra Mark II at vi faktisk 25 00:01:36,250 --> 00:01:39,210 få en bit av leksikonet. 26 00:01:39,210 --> 00:01:43,780 >> Dette er den første innspilte forekomst av noe du er i ferd med å bli alt 27 00:01:43,780 --> 00:01:45,860 altfor kjent med over løpet av semesteret - 28 00:01:45,860 --> 00:01:48,460 nemlig en bug. 29 00:01:48,460 --> 00:01:52,030 Så viste det seg på ett punkt Mark II-enheten var ikke fungerer 30 00:01:52,030 --> 00:01:55,930 riktig, og ved nærmere ettersyn, det var faktisk en bug - en møll - 31 00:01:55,930 --> 00:01:56,910 som møll - 32 00:01:56,910 --> 00:01:57,610 innsiden. 33 00:01:57,610 --> 00:02:03,130 Og siden den gang har vi referert til feil i programmer som bugs. 34 00:02:03,130 --> 00:02:05,330 Så mer på det som kommer. 35 00:02:05,330 --> 00:02:08,919 >> Snakker av video i tillegg, hvis du ikke allerede har, vet at CS50 er 36 00:02:08,919 --> 00:02:09,669 åpenbart filmet. 37 00:02:09,669 --> 00:02:13,330 Forelesningene vanligvis gå opp rett etter klasse i form av en pre-release 38 00:02:13,330 --> 00:02:17,240 uredigert format, og deretter en dag eller to senere, satte vi opp en høyere oppløsning 39 00:02:17,240 --> 00:02:18,490 og høyere kvalitet versjon. 40 00:02:18,490 --> 00:02:21,800 Du husker kanskje Vanessa, som hadde formue av å spille med Google Glass, 41 00:02:21,800 --> 00:02:23,540 som jeg husket å lade denne gangen. 42 00:02:23,540 --> 00:02:26,450 Så hvis du ønsker å komme opp etter klasse og spille, de skal jobbe i dag. 43 00:02:26,450 --> 00:02:30,816 Og hvis du ønsker å se hva Vanessa så den andre dagen, hva du vil se 44 00:02:30,816 --> 00:02:35,260 her - la meg heve volumet her på min laptop. 45 00:02:35,260 --> 00:02:35,690 >> [VIDEOAVSPILLING] 46 00:02:35,690 --> 00:02:37,620 >> -Så la meg køen dette er opp. 47 00:02:37,620 --> 00:02:38,070 OK. 48 00:02:38,070 --> 00:02:40,930 Så ta på denne. 49 00:02:40,930 --> 00:02:41,720 OK. 50 00:02:41,720 --> 00:02:43,470 OK, Glass. 51 00:02:43,470 --> 00:02:44,720 Spill inn en video. 52 00:02:44,720 --> 00:02:47,240 53 00:02:47,240 --> 00:02:48,640 >> OK. 54 00:02:48,640 --> 00:02:50,446 Vanessa? 55 00:02:50,446 --> 00:02:50,870 >> [END VIDEOAVSPILLING] 56 00:02:50,870 --> 00:02:53,485 >> DAVID MALAN: All right, så grunnen at det ikke fungerte for de fleste av dere på 57 00:02:53,485 --> 00:02:56,540 slutten av klassen var fordi jeg fortsatte å spille en time av at 58 00:02:56,540 --> 00:02:59,505 opptakene peker på meg selv etter Jeg satte brillene ned. 59 00:02:59,505 --> 00:03:04,010 Så i dag vil jeg forlate dem, men takk du til Vanessa for å være en 60 00:03:04,010 --> 00:03:05,420 god sport. 61 00:03:05,420 --> 00:03:08,330 >> I mellomtiden, et par kunngjøringer før vi videre i dag. 62 00:03:08,330 --> 00:03:11,120 Så en, CS50 har en tradisjon for å gjøre hva vi kan for å prøve å gjøre en veldig 63 00:03:11,120 --> 00:03:12,630 stor klasse føles mindre. 64 00:03:12,630 --> 00:03:16,640 Og mot dette målet, de fleste hver fredag, vi samles på en restaurant i 65 00:03:16,640 --> 00:03:20,160 torget, Fire and Ice, med 30 eller 40 av dine klassekamerater, meg selv, noen av 66 00:03:20,160 --> 00:03:22,520 undervisningspersonalet, og vi bare har en svært uformell lunsj. 67 00:03:22,520 --> 00:03:26,280 Vi ofte invitere venner fra industri, alumni i klassen, alumni av 68 00:03:26,280 --> 00:03:30,340 college, egentlig bare for å chatte hver andre opp, snakke om livet etter 69 00:03:30,340 --> 00:03:32,260 college, livet på college, og lignende. 70 00:03:32,260 --> 00:03:35,570 Så hvis du ønsker å delta i dette første slike lunsj denne fredagen på 71 00:03:35,570 --> 00:03:38,640 13:15, leder til at URL på enkelte punkt. 72 00:03:38,640 --> 00:03:40,830 >> Plassen er begrenset, så vi vil gjøre først til mølla. 73 00:03:40,830 --> 00:03:43,880 Men vi vil gjøre dette på nytt på et tilbakevendende basis, så ikke bekymre deg hvis du ikke gjør det 74 00:03:43,880 --> 00:03:45,800 gjøre det i denne første batch. 75 00:03:45,800 --> 00:03:48,960 >> Nå, i form av ressursene gitt curricularly av kurset, 76 00:03:48,960 --> 00:03:51,500 det er en hel haug, og hvis du ikke har trakk opp kurset hjemmeside 77 00:03:51,500 --> 00:03:54,310 allerede, særlig i henhold til foredrag du vil finne at alt 78 00:03:54,310 --> 00:03:57,070 vi gjorde forrige uke er der, både i video og en slags 79 00:03:57,070 --> 00:03:58,435 av elektronisk form. 80 00:03:58,435 --> 00:04:01,210 Men utover videoer, vil du finne at det nå er hele teksten 81 00:04:01,210 --> 00:04:03,290 transkripter, for eksempel, av hver forelesning. 82 00:04:03,290 --> 00:04:08,260 >> Så hvis vi faktisk gå tilbake til dette skjermbildet her med Vanessa, og naviger 83 00:04:08,260 --> 00:04:12,010 til bunnen hjørne av skjermen, du vil finne at faktisk, ikke for 84 00:04:12,010 --> 00:04:15,060 Fredag ​​foredrag, men hvis vi går tilbake til Onsdag, siden denne funksjonen tar en 85 00:04:15,060 --> 00:04:17,870 noen dager, vil du finne at du kan faktisk trekker opp, for bedre eller 86 00:04:17,870 --> 00:04:22,260 verre, hvert ord som jeg eller en frivillig på scenen sa. 87 00:04:22,260 --> 00:04:23,270 Og mer enn bare det. 88 00:04:23,270 --> 00:04:25,700 Du kan faktisk søke det, kan du Klikk på noen av disse setningene, hoppe 89 00:04:25,700 --> 00:04:29,250 til det punktet i videoen, alle mot og slutt gjør materialet hele 90 00:04:29,250 --> 00:04:30,620 mer farbar. 91 00:04:30,620 --> 00:04:34,550 >> Men hvis du heller ikke følge det i slike detaljer, finner du, for 92 00:04:34,550 --> 00:04:39,710 eksempel denne lille menyen her for 1.5x hastighet, 2x hastighet, eller jeg f jeg allerede 93 00:04:39,710 --> 00:04:42,100 snakke for fort for deg, 0,75 x hastighet. 94 00:04:42,100 --> 00:04:45,190 Så skjønner alle som er tilgjengelig der for deg. 95 00:04:45,190 --> 00:04:49,120 >> Men utover det, for forelesninger, innser at vi også gjøre disse ressursene 96 00:04:49,120 --> 00:04:50,530 tilgjengelig. 97 00:04:50,530 --> 00:04:55,240 Lysbilder, eksempelkode, noe som jeg gjøre på scenen eller i forkant av klassen, 98 00:04:55,240 --> 00:04:58,160 vi skal legge det slik at du kan spille sammen hjemme eller i Sanders. 99 00:04:58,160 --> 00:05:01,280 Men det vi også trodde vi ville gjøre dette år for første gang er også 100 00:05:01,280 --> 00:05:04,240 gi deg walkthroughs av disse eksemplene. 101 00:05:04,240 --> 00:05:08,120 Økende grad, som jeg har reflektert på Verdien av CS50 foredrag, har jeg begynt 102 00:05:08,120 --> 00:05:11,450 å stille spørsmål ved hvor nyttig det er for dere å sitte der, for meg å stå 103 00:05:11,450 --> 00:05:15,020 her, og for meg å snakke på deg, særlig når materialet, 104 00:05:15,020 --> 00:05:17,020 eksempler, blir mer komplekse. 105 00:05:17,020 --> 00:05:20,790 Fordi alltid, etter et antall minutter, noen vil sone ut, og 106 00:05:20,790 --> 00:05:24,310 så du savner noen viktig innsikt av noen eksempel, og så er du i hovedsak 107 00:05:24,310 --> 00:05:27,720 ble satt til den gjenværende del av klassen, som ikke er den beste bruken av 108 00:05:27,720 --> 00:05:31,330 tiden din, eller, egentlig, ours samlet som en klasse. 109 00:05:31,330 --> 00:05:33,920 >> Og så hva vi tenkte vi skulle prøve å gjøre, særlig for noen av de mer 110 00:05:33,920 --> 00:05:37,700 komplekse eksempler som jeg ikke kan gjøre rettferdighet til i klassen, at vi kanskje ikke 111 00:05:37,700 --> 00:05:41,560 har tid til i klassen, eller du kanskje bare sone ut i løpet, er vi produsere 112 00:05:41,560 --> 00:05:45,500 en serie av gjennomganger av disse eksempler slik at hvis du går til, for 113 00:05:45,500 --> 00:05:51,410 eksempel, sist fredag ​​videoside her etter eksempler, vil du se at 114 00:05:51,410 --> 00:05:54,050 for fredag, er det nå dette koble til walkthroughs. 115 00:05:54,050 --> 00:05:55,780 Og formatet på disse vil endre seg over tid. 116 00:05:55,780 --> 00:05:58,080 For nå bruker vi en enkel YouTube-spilleliste. 117 00:05:58,080 --> 00:06:00,980 >> Men det jeg gjorde med vår produksjon team etterpå ble gå gjennom hver 118 00:06:00,980 --> 00:06:04,480 og hver og en av disse eksemplene igjen, forhåpentligvis peker ut i mye større 119 00:06:04,480 --> 00:06:07,550 klarhet nøyaktig hva takeaways kan være eller burde være fra hver. 120 00:06:07,550 --> 00:06:10,560 Så du vil finne, for eksempel fra sist uke, alle scratch eksempler 121 00:06:10,560 --> 00:06:12,950 vi gikk gjennom er gjort lineært på den måten. 122 00:06:12,950 --> 00:06:15,840 Så gjerne engasjere seg eller ikke engasjere seg i dette materialet. 123 00:06:15,840 --> 00:06:19,140 Virkelig et tema for dette kurset er at det er sannsynligvis mer 124 00:06:19,140 --> 00:06:21,870 i veien for ressurser enn du kunne absorbere i løpet 125 00:06:21,870 --> 00:06:23,260 løpet av et semester. 126 00:06:23,260 --> 00:06:23,980 >> Men det er bevisst. 127 00:06:23,980 --> 00:06:26,990 Det er ment å være slik at du som enkelte student velge selv 128 00:06:26,990 --> 00:06:28,070 basert på din læringsstil. 129 00:06:28,070 --> 00:06:29,790 Så hvis forelesninger fungere for deg, flott. 130 00:06:29,790 --> 00:06:31,090 Hvis seksjoner fungere for deg, flott. 131 00:06:31,090 --> 00:06:32,930 Hvis walkthroughs arbeide for du bedre, flott. 132 00:06:32,930 --> 00:06:36,980 Det virkelig vil være opp til deg å velge hvilke ressurser som fungerer best for deg. 133 00:06:36,980 --> 00:06:40,380 >> Til slutt, takk til en alumnus av Selvfølgelig, vi også gi en kanonisk 134 00:06:40,380 --> 00:06:41,890 sett av skriftlærd notater. 135 00:06:41,890 --> 00:06:46,270 Så i stedet har dere hoder ned i forelesninger skrible ned 136 00:06:46,270 --> 00:06:49,880 ting som kommer opp i klassen, vi, de ansatte, vil gi deg med det vi 137 00:06:49,880 --> 00:06:53,410 føler er en kanonisk sett med notater til frigjøre deg fra at distraksjon, slik at 138 00:06:53,410 --> 00:06:57,150 hvis du er her og engasjert, er du virkelig engasjert med hva som skjer, 139 00:06:57,150 --> 00:07:00,110 med klassekameratene gjør opp på scenen, med hva som skjer på skjermen, 140 00:07:00,110 --> 00:07:03,570 og ikke bare skrive ned ordrett hva har skjedd å ha blitt sagt. 141 00:07:03,570 --> 00:07:06,730 Så realisere alle disse ressursene er tilgjengelige for deg. 142 00:07:06,730 --> 00:07:09,210 >> Seksjonering, som svar på et spørsmål, vil begynne denne onsdagen. 143 00:07:09,210 --> 00:07:12,050 Vi egentlig vente til etter at de fleste andre klasser er gjort slik at vi kan 144 00:07:12,050 --> 00:07:14,420 minimere antall endringer at vi trenger å gjøre. 145 00:07:14,420 --> 00:07:20,010 Men til helga, som starter Søndag vil være en engangsavgift forekomst av 146 00:07:20,010 --> 00:07:21,360 det vi kaller super seksjoner. 147 00:07:21,360 --> 00:07:23,990 Disse vil bli filmet for de som ikke kan delta, og i hovedsak, 148 00:07:23,990 --> 00:07:28,880 kursets hoder vil lede oss gjennom noen av C-delen av emnet 149 00:07:28,880 --> 00:07:32,330 mot en ende av problemet sett en, hvilken kommer til å være vår første C basert 150 00:07:32,330 --> 00:07:33,140 oppgavesettet. 151 00:07:33,140 --> 00:07:36,240 Og disse vil bare være valgfrie inndelinger i påvente av hva som vil 152 00:07:36,240 --> 00:07:40,010 bli tilbakevendende seksjoner ledet med 50 kursets pluss 153 00:07:40,010 --> 00:07:41,600 undervise stipendiater ukentlig. 154 00:07:41,600 --> 00:07:45,130 På søndager eller mandager eller tirsdager, vi har 90 minutters seksjoner i en svært 155 00:07:45,130 --> 00:07:48,020 tradisjonell forstand, noe som vil bli muligheter for hands on og mer 156 00:07:48,020 --> 00:07:50,800 intim gjennomgang av Kursets materiale. 157 00:07:50,800 --> 00:07:53,820 >> Uten videre, la meg introdusere kursets hoder, som er 158 00:07:53,820 --> 00:07:57,380 bak kulissene med meg, gjør alt skje. 159 00:07:57,380 --> 00:08:02,670 Hvis de som er her i dag kunne bli med meg, Rob og Lauren og Josef og Lucas, alle 160 00:08:02,670 --> 00:08:05,770 av dem har vært med kurs for noen tid. 161 00:08:05,770 --> 00:08:08,450 RJ er den tredje medlem av teamet vårt. 162 00:08:08,450 --> 00:08:11,720 Han kunne ikke være her i dag, men han ba meg om å vise et bilde av ham. 163 00:08:11,720 --> 00:08:14,600 Jeg er ikke sikker på at han ønsket dette en, men det han er. 164 00:08:14,600 --> 00:08:18,350 >> Og la meg bare tillate teamet å si hei og presentere seg slik at 165 00:08:18,350 --> 00:08:22,260 du blir kjent med dem, samt din egen undervisning fellow dette begrepet. 166 00:08:22,260 --> 00:08:23,490 >> LAUREN CARVALHO: Hei. 167 00:08:23,490 --> 00:08:24,740 Mitt navn er Lauren Carvalho. 168 00:08:24,740 --> 00:08:26,900 Jeg er bosatt veileder i Leverett House. 169 00:08:26,900 --> 00:08:31,120 Jeg er også super glade for å være en hode TV for CS50 i år. 170 00:08:31,120 --> 00:08:35,830 >> CS50 er en svært utfordrende klassen også som en svært stor klasse, så hvis du 171 00:08:35,830 --> 00:08:38,780 har noen bekymringer, hvis du føler for du faller bak, gjerne 172 00:08:38,780 --> 00:08:43,840 nå ut til noen av oss på heads@cs50.het, eller til meg, hvis du hadde 173 00:08:43,840 --> 00:08:46,330 liker å leke med min golden retriever valp. 174 00:08:46,330 --> 00:08:48,060 Her er Lucas. 175 00:08:48,060 --> 00:08:48,560 >> LUCAS FREITAS: Hei, folkens. 176 00:08:48,560 --> 00:08:49,330 Mitt navn er Lucas Freitas. 177 00:08:49,330 --> 00:08:51,880 Jeg er en junior [uhørlig] 178 00:08:51,880 --> 00:08:53,630 informatikk og lingvistikk. 179 00:08:53,630 --> 00:08:58,030 Jeg er faktisk fra Brasil, og jeg også realisere østasiatiske studier. 180 00:08:58,030 --> 00:09:00,740 Så hvis du har spørsmål om informatikk eller språk eller 181 00:09:00,740 --> 00:09:01,870 noe, bare gi meg beskjed. 182 00:09:01,870 --> 00:09:05,630 Eller CS50, spesielt. 183 00:09:05,630 --> 00:09:05,880 >> JOSEPH Ong: Hei. 184 00:09:05,880 --> 00:09:06,265 Jeg er Joseph. 185 00:09:06,265 --> 00:09:11,360 Jeg er en senior studere datamaskin vitenskap i Elliott House. 186 00:09:11,360 --> 00:09:13,500 Så, la oss se. 187 00:09:13,500 --> 00:09:16,530 Du vil se meg rundt med ett av disse store kameraer. 188 00:09:16,530 --> 00:09:21,110 Jeg er bosatt stabsfotograf for 50 også, og studentene ofte 189 00:09:21,110 --> 00:09:25,140 noen ganger misforstå meg for en asiatisk turist. 190 00:09:25,140 --> 00:09:29,220 >> Så hvis du ser meg med et kamera, ikke løpe unna. 191 00:09:29,220 --> 00:09:32,960 Bare smile og ikke vær sjenert. 192 00:09:32,960 --> 00:09:34,870 Og jeg håper du liker 50. 193 00:09:34,870 --> 00:09:38,690 Jeg likte det veldig mye da jeg tok den, og det er derfor jeg har blitt TFing for 194 00:09:38,690 --> 00:09:41,164 disse tre årene. 195 00:09:41,164 --> 00:09:41,570 >> ROB BOWDEN: Hei. 196 00:09:41,570 --> 00:09:42,550 Jeg er Rob. 197 00:09:42,550 --> 00:09:46,240 Dette er min fjerde semester med CS50. 198 00:09:46,240 --> 00:09:47,430 Jeg nettopp uteksaminert i mai. 199 00:09:47,430 --> 00:09:49,650 Jeg var i Kirkland. 200 00:09:49,650 --> 00:09:53,670 Jeg er begeistret for dette semesteret, og jeg håper du også. 201 00:09:53,670 --> 00:09:56,650 >> DAVID MALAN: Takk til årets hoder, og til RJ også. 202 00:09:56,650 --> 00:09:59,910 203 00:09:59,910 --> 00:10:02,310 >> Så noen avsluttende merknader om ressurser. 204 00:10:02,310 --> 00:10:04,090 One, satt p 0 er allerede oppe. 205 00:10:04,090 --> 00:10:06,620 Denne eksisterer bare i standard utgave som er ment for 206 00:10:06,620 --> 00:10:07,610 Helheten av klassen. 207 00:10:07,610 --> 00:10:10,940 Fra og med p set 1, vil det være hacker utgaver av de fleste oppgavesett, 208 00:10:10,940 --> 00:10:14,660 som igjen, vil dekke materialet med litt mer av en utfordring, mens 209 00:10:14,660 --> 00:10:17,400 fortsatt berører et av de samme temaene. 210 00:10:17,400 --> 00:10:21,400 Må ta en titt på kursets hjemmeside for at spesifikasjonen for p settet 0. 211 00:10:21,400 --> 00:10:25,140 >> Kontortid vil også begynne denne uken, i kveld, i morgen, onsdag, 212 00:10:25,140 --> 00:10:27,670 og torsdag i ulike dining haller på campus. 213 00:10:27,670 --> 00:10:32,140 Sjekk ut cs50.net/ohs for kontoret timer for kurset, og innse dette 214 00:10:32,140 --> 00:10:34,430 vil være svært uformelle muligheter, sikkert, ved starten av 215 00:10:34,430 --> 00:10:37,190 semester, for å komme med din laptop under hjernen pause. 216 00:10:37,190 --> 00:10:40,500 Ta med noen venner og chatte opp kursets TFS og CAS med noen 217 00:10:40,500 --> 00:10:41,750 spørsmål som du måtte ha. 218 00:10:41,750 --> 00:10:45,320 >> Og jeg kan ikke understreke nok, selv for scratch og oppgavesettet 0, det 219 00:10:45,320 --> 00:10:47,110 virkelig er ingen dumt spørsmål. 220 00:10:47,110 --> 00:10:51,200 Det er ingen student for ubehagelig å stille spørsmål. 221 00:10:51,200 --> 00:10:53,940 Ta gjerne dra nytte av denne ressursen. 222 00:10:53,940 --> 00:10:56,430 Det vil være der recurringly gjennom hele semesteret, 223 00:10:56,430 --> 00:10:57,840 som vil CS50 Diskuter. 224 00:10:57,840 --> 00:11:00,900 Dette er kursets elektroniske diskusjonen fora på den adressen der. 225 00:11:00,900 --> 00:11:04,490 >> Hva vi vil også gjøre under forelesningene er også overvåke dette, takket være 226 00:11:04,490 --> 00:11:05,580 Kursets lærerteam. 227 00:11:05,580 --> 00:11:08,390 Og så hvis du har et spørsmål under forelese, fordi jeg sa noe 228 00:11:08,390 --> 00:11:11,690 dårlig eller ikke i det hele tatt, for all del, spør som i sanntid hvis du har din 229 00:11:11,690 --> 00:11:15,700 laptop eller telefon på nettstedet, og vi vil gjøre vårt beste i nær sanntid til 230 00:11:15,700 --> 00:11:17,410 svare på det. 231 00:11:17,410 --> 00:11:21,500 >> Er det noen spørsmål om CS 50? 232 00:11:21,500 --> 00:11:23,930 Så en siste notatene mine. 233 00:11:23,930 --> 00:11:25,530 At spørsmålet om SAT unsat. 234 00:11:25,530 --> 00:11:28,550 Som du ferdigstille studien kort, hvis du ikke allerede har, innser at 235 00:11:28,550 --> 00:11:32,360 overordnede visjon om SAT unsat, tilgjengelig for alle studenter, er virkelig 236 00:11:32,360 --> 00:11:36,350 å bidra til å ta kanten av av et kurs som dette, så å si, slik at hvis du 237 00:11:36,350 --> 00:11:40,510 finne deg selv sent på kvelden, 2 AM, 3 AM, virkelig stanger hodet opp mot 238 00:11:40,510 --> 00:11:43,960 veggen der du vet at du er 99% av veien dit til ferdigstillelse, men du 239 00:11:43,960 --> 00:11:47,510 har så mange andre ting å gjøre, Jeg tror en bedre bruk, ofte, av 240 00:11:47,510 --> 00:11:51,260 studentenes tid er å faktisk gå videre til de andre tingene, slik at du kan 241 00:11:51,260 --> 00:11:52,780 optimalisere din tid rundt. 242 00:11:52,780 --> 00:11:56,950 Og lør unsat er en mekanisme via der du kan ta trøst i det faktum 243 00:11:56,950 --> 00:12:00,530 at 99% av den måte det er fortsatt ganske darn bra. 244 00:12:00,530 --> 00:12:03,790 >> Tilsvarende, også, hvis du har kommet inn i kurs med ingen tidligere bakgrunn eller 245 00:12:03,790 --> 00:12:07,960 ikke på langt nær så mye bakgrunnsinformasjon som du tror klassekameratene dine kan ha, sant 246 00:12:07,960 --> 00:12:13,210 eller falsk, skjønner at dette er en mulighet til å få hendene skitne 247 00:12:13,210 --> 00:12:16,590 med kurset, sette tærne i vann, så å si, mye som jeg selv 248 00:12:16,590 --> 00:12:18,500 gjorde år siden med bestått / ikke bestått. 249 00:12:18,500 --> 00:12:21,850 Som jeg sa i forrige uke, hadde dette kurset, som andre, ikke vært tilgjengelig 250 00:12:21,850 --> 00:12:25,090 bestått / ikke bestått på den tiden, jeg sannsynligvis ville ikke noen gang har trappet foten i 251 00:12:25,090 --> 00:12:28,310 klassen, selv om jeg gjorde, fem uker senere ombestemmer meg, som du 252 00:12:28,310 --> 00:12:32,400 kan like godt, og bytte over til eller fra brev gradert status. 253 00:12:32,400 --> 00:12:32,990 >> OK. 254 00:12:32,990 --> 00:12:37,380 Så så vi på ting som dette på Fredag, og vi er veldig raskt kommer 255 00:12:37,380 --> 00:12:39,890 å gå over til noe som ser mer kryptisk i dag. 256 00:12:39,890 --> 00:12:42,300 Men det er likevel samme grunnleggende idé. 257 00:12:42,300 --> 00:12:45,540 Hva var generelt begrep som vi brukes til å beskrive et puslespill brikke 258 00:12:45,540 --> 00:12:47,690 som så ut som dette? 259 00:12:47,690 --> 00:12:48,510 >> Så, en uttalelse. 260 00:12:48,510 --> 00:12:50,020 Og du kan kalle dette noe rekke ting. 261 00:12:50,020 --> 00:12:51,870 Men vi vil bare kalle det en uttalelse, og en erklæring 262 00:12:51,870 --> 00:12:53,200 bare forteller programmet - 263 00:12:53,200 --> 00:12:55,290 eller i tilfelle av Scratch, sprite - 264 00:12:55,290 --> 00:12:56,520 å gjøre noe. 265 00:12:56,520 --> 00:12:58,430 Si hei i dette tilfellet. 266 00:12:58,430 --> 00:13:01,450 >> Noe sånt som dette vi stedet kalles hva? 267 00:13:01,450 --> 00:13:03,560 Ja, så et boolsk uttrykk. 268 00:13:03,560 --> 00:13:07,380 Et boolsk uttrykk er bare noe det er sant eller usant, og så Skrap 269 00:13:07,380 --> 00:13:10,530 trekker dem med denne form, men også med et spørsmålstegn å formidle 270 00:13:10,530 --> 00:13:14,510 Ideen om at svaret på dette spørsmålet er enten sant eller usant, ja eller nei 271 00:13:14,510 --> 00:13:15,910 ene, 1 eller 0. 272 00:13:15,910 --> 00:13:19,290 >> Og vi bruker disse boolske uttrykk innsiden av konstruksjoner som disse, som 273 00:13:19,290 --> 00:13:21,010 vi kalte det? 274 00:13:21,010 --> 00:13:22,460 Så, tilstand eller gren. 275 00:13:22,460 --> 00:13:25,600 Og tilstanden du ser her i Scratch har en liten plassholder for et 276 00:13:25,600 --> 00:13:28,260 puslespill stykke som form, formålet som er slik at du kan 277 00:13:28,260 --> 00:13:32,670 dra og slipp den på toppen og deretter diktere til programmet hvis dette Boolsk 278 00:13:32,670 --> 00:13:36,410 uttrykk er sant, gjør dette settet med instruksjoner, dette sett av oppgaver, 279 00:13:36,410 --> 00:13:39,320 andre gjøre dette andre settet med instruksjoner. 280 00:13:39,320 --> 00:13:41,270 >> Og minner om at du kan reir disse tingene. 281 00:13:41,270 --> 00:13:44,170 Selv om det er ikke mye plass visuelt i det puslespillet stykke, Scratch 282 00:13:44,170 --> 00:13:47,820 vil vokse og krympe å passe uansett Brikkene du dra og slippe i 283 00:13:47,820 --> 00:13:51,410 det slik at du faktisk kan reir dette og ha en treveis gaffel i veien. 284 00:13:51,410 --> 00:13:53,870 If, else if, else. 285 00:13:53,870 --> 00:13:58,100 Og du kan selv gå utover at ved nesting videre og videre etter behov. 286 00:13:58,100 --> 00:14:02,520 >> Så til slutt, så vi konstruerer som dette, også kjent som en løkke. 287 00:14:02,520 --> 00:14:05,690 Og dette er bare noe som gjør noe igjen og igjen og igjen. 288 00:14:05,690 --> 00:14:09,250 I dette tilfelle skjer det å være en endelig antall ganger, men vi har også 289 00:14:09,250 --> 00:14:12,890 så et eksempel der antall ganger kom fra en variabel, slik det 290 00:14:12,890 --> 00:14:13,690 kan endre seg. 291 00:14:13,690 --> 00:14:16,910 Og vi så også en annen blokk helt kalles en evig blokk som 292 00:14:16,910 --> 00:14:19,590 tillatt oss å sløyfe uendelig lang. 293 00:14:19,590 --> 00:14:23,300 >> Så en annen konstruksjon som Scratch 2.0 har - og de av dere mer 294 00:14:23,300 --> 00:14:26,330 komfortabel med tidligere bakgrunn er allerede godt kjent med dette 295 00:14:26,330 --> 00:14:27,080 konstruere - 296 00:14:27,080 --> 00:14:29,910 disse tingene vi kalte det? 297 00:14:29,910 --> 00:14:32,540 Så vi kalte disse funksjonene, ellers kjent som prosedyrer. 298 00:14:32,540 --> 00:14:35,030 Det er en svak semantisk forskjell, men vi kaller dem bare funksjoner. 299 00:14:35,030 --> 00:14:39,950 >> Og en funksjon, i tilfelle av bunnen, er en tilpasset puslespill brikke som 300 00:14:39,950 --> 00:14:43,670 du selv kan lage, slik at du har en ny oppgave stykke som, i denne 301 00:14:43,670 --> 00:14:47,190 tilfelle, ville bli kalt hoste, at kommer til syne mellom alle de andre 302 00:14:47,190 --> 00:14:48,730 tilgjengelige brikkene i Scratch. 303 00:14:48,730 --> 00:14:52,010 Selv om MIT ikke oppfinne dette puslespillet stykke, det gjorde du. 304 00:14:52,010 --> 00:14:57,600 >> Så en funksjon lar deg lage ny atferd, gi den en funksjon navn, og 305 00:14:57,600 --> 00:14:59,200 deretter ringe det, så å si. 306 00:14:59,200 --> 00:15:04,690 Virkelig bruke den i programmer igjen og igjen og igjen uten å måtte vente 307 00:15:04,690 --> 00:15:08,600 for en som MIT nedover veien til oppfinne ny funksjonalitet fra grunnen. 308 00:15:08,600 --> 00:15:12,460 Du selv kan bygge disse puslespill stykker selv, og deretter bruke dem 309 00:15:12,460 --> 00:15:13,600 i dine egne programmer. 310 00:15:13,600 --> 00:15:17,520 Og vi vil se et tilbakevendende eksempel av det i dag og framover. 311 00:15:17,520 --> 00:15:20,960 >> Så i dag, overgangen vi nå til noe mer uforståelige. 312 00:15:20,960 --> 00:15:24,350 Men ved slutten av dagen, noe kraftigere og uttrykksfulle og mer 313 00:15:24,350 --> 00:15:28,110 representant av banen som vi vil være på hele semesteret gjennom en rekke 314 00:15:28,110 --> 00:15:28,800 av språk - 315 00:15:28,800 --> 00:15:30,800 som av kode eller kildekoden. 316 00:15:30,800 --> 00:15:34,720 Og kildekode, det viser seg, er ikke hva en datamaskin 317 00:15:34,720 --> 00:15:37,400 vanligvis går faktisk. 318 00:15:37,400 --> 00:15:39,860 Kildekoden ser omtrent slik ut. 319 00:15:39,860 --> 00:15:43,010 >> Så dette er, igjen, kanskje den enkleste program vi kan skrive i en 320 00:15:43,010 --> 00:15:46,670 språk kalt C. Vi vil begynne å erte dette fra hverandre før lenge, og hvis 321 00:15:46,670 --> 00:15:49,260 dette virkelig ser ut som gresk for deg akkurat nå, stole på meg. 322 00:15:49,260 --> 00:15:54,040 Innenfor bare en uke eller to tid, dette vil bli alt for kjent og faktisk 323 00:15:54,040 --> 00:15:57,780 ganske representativ for stadig komplekse eksempler som du vil 324 00:15:57,780 --> 00:15:59,870 også få mer komfortable. 325 00:15:59,870 --> 00:16:03,100 >> Men du kan ikke bare kjøre denne slags kode vanligvis. 326 00:16:03,100 --> 00:16:06,750 Du må gjøre det til noe som selve datamaskinen forstår. 327 00:16:06,750 --> 00:16:09,840 Og så for det, vi trenger noe vi kommer til å kalle en kompilator. 328 00:16:09,840 --> 00:16:13,910 En kompilator er et program som tar kildekoden, som du nettopp så, som 329 00:16:13,910 --> 00:16:17,680 input, og den produserer og nuller de som utgang, ellers 330 00:16:17,680 --> 00:16:19,210 kjent som objektkode. 331 00:16:19,210 --> 00:16:23,190 Og det er disse nuller og enere som kan se ut som dette at 332 00:16:23,190 --> 00:16:26,310 til slutt blir forstått av din Mac eller PC. 333 00:16:26,310 --> 00:16:30,050 >> Hvis du noen gang har hørt markedsføring uttrykk Intel Inside, som bare 334 00:16:30,050 --> 00:16:32,800 betyr at et selskap kalt Intel har produsert den 335 00:16:32,800 --> 00:16:34,130 hjernen i datamaskinen - 336 00:16:34,130 --> 00:16:37,270 ellers kjent som CPU, central processing unit - 337 00:16:37,270 --> 00:16:39,640 og det er akkurat det som forstår mønstre 338 00:16:39,640 --> 00:16:40,880 av nuller og enere. 339 00:16:40,880 --> 00:16:46,330 Og så ved å konvertere kildekoden til objektkode gjennom denne prosessen her 340 00:16:46,330 --> 00:16:49,130 at vi vil gjøre med et par kommandoer i bare litt, er du 341 00:16:49,130 --> 00:16:53,070 skape mønstre av nuller og enere at de ansatte hos Intel har 342 00:16:53,070 --> 00:16:56,000 bestemte seg representere visse uttalelser. 343 00:16:56,000 --> 00:16:58,810 >> Nå vet jeg ikke helt vet hvilken er som ved bare å kaste et blikk på 344 00:16:58,810 --> 00:16:59,890 disse nuller og enere. 345 00:16:59,890 --> 00:17:01,420 De fleste mennesker i disse dager ikke. 346 00:17:01,420 --> 00:17:04,900 Men det er et eller annet sted i et mønster av nuller og enere som representerer 347 00:17:04,900 --> 00:17:06,349 statement print. 348 00:17:06,349 --> 00:17:10,460 Et sted der inne kan være en annen sett av nuller og enere som 349 00:17:10,460 --> 00:17:16,940 representerer forestillingen om evig eller gjenta 10 ganger eller enda meow, hvis det er 350 00:17:16,940 --> 00:17:20,000 faktisk et program som kan inneholde noen lyder. 351 00:17:20,000 --> 00:17:24,390 >> Så kort sagt, mennesker har nettopp besluttet, mye som vi gjorde for ASCII - 352 00:17:24,390 --> 00:17:27,480 for bokstavene i alfabetet forrige uke - mennesker har bestemt at selv 353 00:17:27,480 --> 00:17:32,200 mer komplekse mønstre av nuller og enere representerer mer kompleks oppførsel 354 00:17:32,200 --> 00:17:35,650 som å skrive eller si eller meowing. 355 00:17:35,650 --> 00:17:38,640 Og så for i dag, og i stor grad videre i semesteret, vil vi ta for 356 00:17:38,640 --> 00:17:41,820 gitt at noen har funnet ut hvordan du gjør det kartlegging. 357 00:17:41,820 --> 00:17:45,560 Men vi, i samsvar med denne ideen om lagvis på toppen av arbeidet til mennesker 358 00:17:45,560 --> 00:17:49,340 som har kommet før oss, vil ta for gitt det faktum at dette skjer 359 00:17:49,340 --> 00:17:50,300 under hetten. 360 00:17:50,300 --> 00:17:53,840 Men vi er mye mer interessert i bygge ting som er mer 361 00:17:53,840 --> 00:17:55,880 interessant på toppen av alt dette. 362 00:17:55,880 --> 00:17:58,900 >> Og så ja, det første programmet vi skrev i Scratch var dette super enkel 363 00:17:58,900 --> 00:18:00,600 ett, Hello World. 364 00:18:00,600 --> 00:18:05,100 Og du kan tenke på dette som den hovedprogram som styrer Scratch er 365 00:18:05,100 --> 00:18:07,280 atferd som forrige fredag. 366 00:18:07,280 --> 00:18:11,510 >> I dag skal vi begynne å oversette Skrap brikkene inn 367 00:18:11,510 --> 00:18:16,040 kildekoden i dette språket kalles C slik at det som så ut som dette på 368 00:18:16,040 --> 00:18:20,230 Fredag, starter i dag og framover, er nå kommer til å se slik ut. 369 00:18:20,230 --> 00:18:21,860 Riktignok mer kryptisk. 370 00:18:21,860 --> 00:18:25,010 Det er ganske distraherende og sortering av tankene lammende å se alle sitater 371 00:18:25,010 --> 00:18:27,760 og semikolon og parenteser og så videre. 372 00:18:27,760 --> 00:18:32,350 >> Men hvis du begynner å ignorere noe du ikke forstår, og virkelig se 373 00:18:32,350 --> 00:18:35,960 ved essensen av den hvite teksten på skjermen, sikkert du ser, som jeg gjør, 374 00:18:35,960 --> 00:18:40,360 "Hei, verden». At linje med lilla uttalelse opp toppen, og det viser 375 00:18:40,360 --> 00:18:44,790 ut at søkeordet viktigste kommer til å stille opp konseptuelt med når grønn 376 00:18:44,790 --> 00:18:46,350 flagg klikket. 377 00:18:46,350 --> 00:18:49,820 >> Så med andre ord, mens i Scratch, vi gjennomføre dette Hello World program 378 00:18:49,820 --> 00:18:53,360 med de to brikkene, i C, vi kommer til å gjennomføre det med disse 379 00:18:53,360 --> 00:18:55,510 fire noe kryptiske linjer. 380 00:18:55,510 --> 00:18:58,130 Men som vi dykke dypere inn i dette, vil du se at hver og en av dem 381 00:18:58,130 --> 00:19:02,730 hvite tegn på skjermen faktisk har noen vesentlig betydning, 382 00:19:02,730 --> 00:19:05,880 og de fleste av våre programmer skal se strukturelt helt det samme. 383 00:19:05,880 --> 00:19:08,980 Så en uttalelse, for å være klar, hva så ut som "si hello world" på 384 00:19:08,980 --> 00:19:12,020 Fredag ​​kommer til å begynne å lete liker dette på mandag. 385 00:19:12,020 --> 00:19:15,250 printf ("Hello, World"). 386 00:19:15,250 --> 00:19:17,700 Og det er noen rare backslash n, det er parenteser, er det 387 00:19:17,700 --> 00:19:18,490 semikolon. 388 00:19:18,490 --> 00:19:21,950 >> Men ved slutten av dagen, nøkkelen takeaway i dag er at alt vi gjør 389 00:19:21,950 --> 00:19:25,710 er å oversette ting fra bilde skjema for å tekstform. 390 00:19:25,710 --> 00:19:28,820 Så en loop som så ut som dette forrige uke skal nå se 391 00:19:28,820 --> 00:19:30,140 noe sånt som dette. 392 00:19:30,140 --> 00:19:33,020 >> Og la meg fraskrive, akkurat som i Scratch, det er forskjellige måter å 393 00:19:33,020 --> 00:19:34,110 oppnå samme mål. 394 00:19:34,110 --> 00:19:38,860 Samme i C. ikke jeg viser dere den eneste måten å gjøre ting, men en måte å 395 00:19:38,860 --> 00:19:43,230 oversette dette for alltid blokkere til en loop i C. 396 00:19:43,230 --> 00:19:44,980 >> Denne her, gjenta 10 ganger. 397 00:19:44,980 --> 00:19:47,580 Dette virkelig slags bøyer tankene første gang du ser den. 398 00:19:47,580 --> 00:19:49,860 Men å implementere det heretter, vi kommer til å bruke en 399 00:19:49,860 --> 00:19:51,990 for loop, så å si. 400 00:19:51,990 --> 00:19:56,150 Og klart det er noen syntaks som er et lite kompleks der med jeg og 401 00:19:56,150 --> 00:19:59,740 lik og 0, men når vi dykke inn i den i dag og fremover, du bare kommer 402 00:19:59,740 --> 00:20:04,260 å se at det er alt bare gjør noen grunnleggende aritmetikk å få oss fra 0 403 00:20:04,260 --> 00:20:07,720 på opptil 9 eller 10 i dette tilfellet. 404 00:20:07,720 --> 00:20:11,570 >> Til slutt, med variabler, vil du huske at en variabel er et stykke bagasje. 405 00:20:11,570 --> 00:20:14,290 Vel, hva vi hadde på venstre er det siste uke kommer til å se litt 406 00:20:14,290 --> 00:20:15,920 noe som dette denne uken. 407 00:20:15,920 --> 00:20:17,870 Men igjen, til mer på det framover. 408 00:20:17,870 --> 00:20:20,700 >> Vi hadde boolske uttrykk, som forrige uke, så ut som dette. 409 00:20:20,700 --> 00:20:23,370 Denne uken framover, de kommer til å begynner å se litt sånn. 410 00:20:23,370 --> 00:20:24,890 >> Og dette er faktisk litt betryggende. 411 00:20:24,890 --> 00:20:27,680 Det er faktisk nesten like enkelt som den grønne blokkene. 412 00:20:27,680 --> 00:20:31,115 Men her har vi, igjen, noen nye syntaks med-tegn, men du kan 413 00:20:31,115 --> 00:20:35,390 kanskje gjette mens i Scratch, du sier A-N-D, tilsynelatende i C, vi 414 00:20:35,390 --> 00:20:37,070 kommer til å si ampersand-tegnet. 415 00:20:37,070 --> 00:20:39,650 Men alt dette vil bli naturlig før lenge. 416 00:20:39,650 --> 00:20:40,680 >> Forhold. 417 00:20:40,680 --> 00:20:42,610 I forrige uke så det ut som dette til venstre. 418 00:20:42,610 --> 00:20:44,800 Denne uken, på høyre side, er det kommer til å se ut som. 419 00:20:44,800 --> 00:20:48,560 Men igjen, er nøkkelen takeaway her at som du ser sånne ting på 420 00:20:48,560 --> 00:20:51,950 høyre, og spesielt hvis det er mindre komfortabel, er det liksom over 421 00:20:51,950 --> 00:20:54,950 hode, får du litt overveldet at Jeg aner ikke hvordan jeg kunne 422 00:20:54,950 --> 00:20:58,420 muligens komme opp med som fra bunnen av - 423 00:20:58,420 --> 00:20:59,500 no pun intended - 424 00:20:59,500 --> 00:21:05,300 bare innse at det er egentlig det samme idé som trolig følte så mye mer 425 00:21:05,300 --> 00:21:06,760 naturlig forrige uke. 426 00:21:06,760 --> 00:21:10,960 Og selv om du ikke har prøvd seg på oppgavesettet 0, jeg daresay du finner 427 00:21:10,960 --> 00:21:13,790 at brikkene er ganske intuitiv, eller i det minste 428 00:21:13,790 --> 00:21:16,050 blitt så over tid. 429 00:21:16,050 --> 00:21:16,990 >> Så la oss dykke i. 430 00:21:16,990 --> 00:21:20,760 La oss få hendene skitne her med denne første enkle program. 431 00:21:20,760 --> 00:21:22,410 Og enkelt er selvsagt relativt. 432 00:21:22,410 --> 00:21:25,190 For å gjøre dette, jeg kommer til å endre skjermer til den enheten jeg ringte 433 00:21:25,190 --> 00:21:26,150 CS50 apparatet. 434 00:21:26,150 --> 00:21:29,700 Den CS50 apparatet er et stykke Programvaren som kjører inne i en 435 00:21:29,700 --> 00:21:33,920 vindu på min Mac, og du kan også kjøre den i et vindu inne i PCen, som 436 00:21:33,920 --> 00:21:38,720 tillater meg å ha de samme datamaskin miljø som hver TF, som 437 00:21:38,720 --> 00:21:40,940 hver CA, som hver student i klassen. 438 00:21:40,940 --> 00:21:44,590 Fordi CS50 apparatet er bokstavelig talt et annet operativsystem 439 00:21:44,590 --> 00:21:45,410 kalt Linux - 440 00:21:45,410 --> 00:21:47,160 spesielt Fedora Linux - 441 00:21:47,160 --> 00:21:51,320 og vi, de ansatte, har konfigurert installasjonsprosessen for denne 442 00:21:51,320 --> 00:21:55,200 Systemet opererer på en slik måte at man, det er en liten CS50 logo i 443 00:21:55,200 --> 00:21:59,240 midten, to, det er en egendefinert meny på bunnen, og tre, pedagogisk 444 00:21:59,240 --> 00:22:02,570 vi har forenklet brukergrensesnitt som mye som mulig, slik at når du 445 00:22:02,570 --> 00:22:05,540 først starte denne tingen opp på egen hånd Mac eller PC, har du det samme 446 00:22:05,540 --> 00:22:08,280 miljø som alle andre, og du har alle de verktøyene du trenger 447 00:22:08,280 --> 00:22:11,390 for kurset uten å måtte finne ut hvordan du installerer hver og 448 00:22:11,390 --> 00:22:13,280 alle verktøy individuelt. 449 00:22:13,280 --> 00:22:15,840 >> Så dette ser relativt som Mac OS eller Windows. 450 00:22:15,840 --> 00:22:18,760 I nedre venstre hjørne, du hovedsak har en Start-menyen i 451 00:22:18,760 --> 00:22:20,280 slag, eller en Apple-menyen. 452 00:22:20,280 --> 00:22:23,700 Og så har du det vi mistenker vil være dine tre mest vanlige ikoner. 453 00:22:23,700 --> 00:22:24,460 En er Chrome. 454 00:22:24,460 --> 00:22:26,460 Det er en nettleser inne av apparatet. 455 00:22:26,460 --> 00:22:29,970 >> To er et program som heter gedit, som vi så kort forrige uke, som er 456 00:22:29,970 --> 00:22:31,310 bare en grafisk editor. 457 00:22:31,310 --> 00:22:35,350 Og tre er et Terminal-programmet, som er en svart og hvit vindu fra 458 00:22:35,350 --> 00:22:39,860 yesteryear som tillater oss å skrive mer uforståelige men kraftigere kommandoer på 459 00:22:39,860 --> 00:22:40,660 våre tastatur. 460 00:22:40,660 --> 00:22:44,220 Så jeg kommer til å gå videre og klikk på gedit, og være trygg på at problemet 461 00:22:44,220 --> 00:22:48,520 sett 1, til å bli utgitt på fredag, vil gå gjennom alle de samme trinnene. 462 00:22:48,520 --> 00:22:51,730 >> Legg merke til at jeg har en ganske enkel brukergrensesnitt med tre deler. 463 00:22:51,730 --> 00:22:54,990 På venstre, jeg har en stor tomt vindu som heter kildekoden. 464 00:22:54,990 --> 00:22:58,930 Det er der jeg kommer til å se en oppsummering på noe kode som jeg skriver. 465 00:22:58,930 --> 00:23:01,990 På høyre side har jeg en stor kategorien er for tiden ufrelste, og at 466 00:23:01,990 --> 00:23:03,510 hvor koden min kommer til å gå. 467 00:23:03,510 --> 00:23:06,780 Og på bunnen, jeg har en innebygd Terminal-vinduet, en svart og hvit 468 00:23:06,780 --> 00:23:12,060 spør hvor jeg kan skrive kommandoer til kompilere og kjøre mine programmer - som 469 00:23:12,060 --> 00:23:14,110 er, for å lage og å kjøre min programmer. 470 00:23:14,110 --> 00:23:15,170 >> Så la oss begynne enkelt. 471 00:23:15,170 --> 00:23:17,700 La meg gå opp til Fil, Lagre. 472 00:23:17,700 --> 00:23:20,530 Jeg kommer til å gå videre og gå inn jharvard. 473 00:23:20,530 --> 00:23:24,320 Så apparatet, uansett hva navnet ditt er, tilhører en fyr som heter 474 00:23:24,320 --> 00:23:28,250 John Harvard, som har en jharvard hjem katalogen innsiden av som alle dine 475 00:23:28,250 --> 00:23:29,100 filer vil gå. 476 00:23:29,100 --> 00:23:31,640 Det er ditt eget eksemplar av sin konto, så vi er ikke alle deler 477 00:23:31,640 --> 00:23:33,530 samme harddisk. 478 00:23:33,530 --> 00:23:35,580 Du trenger bare en illusjon av John Harvard egen. 479 00:23:35,580 --> 00:23:38,350 >> På forhånd, faktisk jeg installert Dropbox. 480 00:23:38,350 --> 00:23:42,600 Apparatet leveres preprepared med Dropbox slik at hvis noe går galt 481 00:23:42,600 --> 00:23:45,950 i løpet av semesteret, hvis du har konfigurert apparatet med en gratis 482 00:23:45,950 --> 00:23:48,950 Dropbox-konto, alle filene dine vil automatisk sikkerhetskopiert, slik at du 483 00:23:48,950 --> 00:23:50,430 kan veldig enkelt kan gjenopprette dem. 484 00:23:50,430 --> 00:23:53,980 Og jeg kommer til å gå inn i min Dropbox katalog, og det er allerede kommer 485 00:23:53,980 --> 00:23:55,530 å være et par andre ting der. 486 00:23:55,530 --> 00:24:02,090 >> Men jeg kommer til å gå videre og gå til Fil, Lagre. 487 00:24:02,090 --> 00:24:05,930 Jeg kommer til å gå inn jharvard, Dropbox, og opp her, kommer jeg til å 488 00:24:05,930 --> 00:24:10,590 gi mitt program en super enkel navn, hello.c, og deretter lagre. 489 00:24:10,590 --> 00:24:11,810 Så jeg har det samme grensesnittet nå. 490 00:24:11,810 --> 00:24:14,190 Det eneste som har forandret seg er fanen opp toppen. 491 00:24:14,190 --> 00:24:17,170 Så jeg er veldig raskt kommer til å gjenskape at programmet fra 492 00:24:17,170 --> 00:24:19,060 glir en stund siden. 493 00:24:19,060 --> 00:24:25,690 >> Så inn i main (void), og deretter printf, "Hei, verden», en noe kryptisk 494 00:24:25,690 --> 00:24:29,920 backslash n, nær sitat, lukke parentes, semikolon, og 495 00:24:29,920 --> 00:24:32,030 deretter Ctrl S for å lagre. 496 00:24:32,030 --> 00:24:34,860 Og legg merke til som en side hva som nettopp dukket opp her på øverst til venstre. 497 00:24:34,860 --> 00:24:37,490 Og dette er ikke nyttig i dag, men vil være nyttig over tid. 498 00:24:37,490 --> 00:24:40,160 Du må bare se, igjen, en oppsummering av koden som du har skrevet. 499 00:24:40,160 --> 00:24:43,320 Og fordi jeg skrev noe som kalles viktigste, det er derfor ordet viktigste poppet 500 00:24:43,320 --> 00:24:44,030 opp over det. 501 00:24:44,030 --> 00:24:46,610 Men for det meste, vi trenger ikke det i dag. 502 00:24:46,610 --> 00:24:51,130 >> Greit, så jeg påstå at dette er min første program skrevet i et programmeringsspråk 503 00:24:51,130 --> 00:24:54,620 språk kalt C. Vi vet fra fredag at hva denne tingen kommer til å gjøre 504 00:24:54,620 --> 00:24:58,450 svært uninterestingly når jeg kjøre det viser bare - 505 00:24:58,450 --> 00:25:01,270 med andre ord, skrive ut, som en datamaskin vitenskapsmann vil si - 506 00:25:01,270 --> 00:25:03,310 hello world på skjermen. 507 00:25:03,310 --> 00:25:06,800 Så for å gjøre dette, vil du legge merke til at jeg har å gå ned her for å klemme min 508 00:25:06,800 --> 00:25:09,250 vindu, og nå har jeg en blinkende melding. 509 00:25:09,250 --> 00:25:15,480 Men dette er nå et tastatur versjon av min John Harvard hjemmeområde. 510 00:25:15,480 --> 00:25:19,610 Det er et tastatur måte via der å navigere harddisken min. 511 00:25:19,610 --> 00:25:25,380 >> Så jeg kan faktisk ikke skrive som jeg gjorde forrige uke gjør hallo, fordi det er 512 00:25:25,380 --> 00:25:27,230 kommer til å si nei regel å gjøre target - 513 00:25:27,230 --> 00:25:27,950 noe er galt. 514 00:25:27,950 --> 00:25:31,690 Jeg vet ikke helt hva den meldingen midler, men det er på grunn av retten, 515 00:25:31,690 --> 00:25:35,350 når denne svarte og hvite vinduet er åpnet, jeg er inne i John Harvards 516 00:25:35,350 --> 00:25:36,160 hjemmeområde. 517 00:25:36,160 --> 00:25:39,180 Men hvor kom jeg lagre det programmet? 518 00:25:39,180 --> 00:25:40,440 I min Dropbox-mappen. 519 00:25:40,440 --> 00:25:43,110 >> Nå har vi alle vokst opp med datamaskiner der du bare å dobbeltklikke 520 00:25:43,110 --> 00:25:45,610 på en mappe ikon, det åpner opp, og voila. 521 00:25:45,610 --> 00:25:48,280 Det er der filen som heter hello.c ville være. 522 00:25:48,280 --> 00:25:49,470 Så faktisk, la oss gjøre det. 523 00:25:49,470 --> 00:25:51,610 >> La meg gå videre og minimere gedit akkurat som du ville gjort på 524 00:25:51,610 --> 00:25:52,990 Windows eller Mac OS. 525 00:25:52,990 --> 00:25:56,160 La meg gå inn i Hjem mappen øverst til venstre. 526 00:25:56,160 --> 00:25:57,620 Jeg ser her en haug med mapper. 527 00:25:57,620 --> 00:25:58,870 Her er min Dropbox-mappen. 528 00:25:58,870 --> 00:26:00,770 Merkingen betyr at det er blitt synkronisert. 529 00:26:00,770 --> 00:26:04,040 Og det er et par ting her, men merker at hello.c er 530 00:26:04,040 --> 00:26:04,960 faktisk akkurat der. 531 00:26:04,960 --> 00:26:08,050 >> Og så i Mac OS eller Windows, normalt, Jeg vil dobbeltklikker du på, åpnes det opp i 532 00:26:08,050 --> 00:26:10,220 det programmet, og jeg er god til å gå. 533 00:26:10,220 --> 00:26:13,370 Men nå, i hvert fall starter i dag, vi må ta et skritt bakover bare for å 534 00:26:13,370 --> 00:26:16,960 gi deg noen grunnleggende verktøy for din verktøysett med å gjøre mer 535 00:26:16,960 --> 00:26:18,980 kraftige ting før lenge. 536 00:26:18,980 --> 00:26:22,280 >> Så på dette spørsmålet, må jeg gjøre det tilsvarende dobbeltklikke på 537 00:26:22,280 --> 00:26:23,560 Dropbox-mappen. 538 00:26:23,560 --> 00:26:29,900 Og for å gjøre det, kommer jeg til å skrive CD for endre katalog, Dropbox, inn. 539 00:26:29,900 --> 00:26:36,100 Og nå merke parentes på min såkalte prompt sier nå at jeg er i 540 00:26:36,100 --> 00:26:38,470 tilde, den lille snirklete symbol øverst til venstre på 541 00:26:38,470 --> 00:26:40,860 de fleste tastaturer, / Dropbox. 542 00:26:40,860 --> 00:26:45,200 Dette er bare korte notasjonen for sier menneskelig, du er nå inne i 543 00:26:45,200 --> 00:26:48,650 Dropbox-mappen, akkurat som om du hadde dobbelt klikket på den. 544 00:26:48,650 --> 00:26:54,610 >> Så nå hvis jeg går videre og skriver at hallo, kommer inn ser jeg en veldig kryptisk 545 00:26:54,610 --> 00:26:57,450 kommandoen, men ikke en feilmelding, det virker, og deretter 546 00:26:57,450 --> 00:26:59,020 en annen blinker hurtig. 547 00:26:59,020 --> 00:27:04,470 Og hvis du husker, aldri så raskt på fredag, vi gjorde dette. . / Hallo. 548 00:27:04,470 --> 00:27:10,000 >> Hva du er i ferd med å se er resultatet av min kjører dette programmet, eller, i Mac 549 00:27:10,000 --> 00:27:14,310 OS og PC termer, hvis jeg ville normalt doble Klikk på et program -. en app 550 00:27:14,310 --> 00:27:17,620 program eller en. exe, åpner det et vindu og går. 551 00:27:17,620 --> 00:27:21,920 Skrive. / Hallo er akkurat som dobbel klikke et program for å kjøre den, men 552 00:27:21,920 --> 00:27:23,280 bruker mitt tastatur. 553 00:27:23,280 --> 00:27:25,410 >> Enter, hello world. 554 00:27:25,410 --> 00:27:26,150 Og det er det. 555 00:27:26,150 --> 00:27:29,150 Så la oss erte dette fra hverandre for å så det føles ikke for mye som gresk. 556 00:27:29,150 --> 00:27:31,370 >> So. / Betyr det? 557 00:27:31,370 --> 00:27:34,120 Alle som noensinne har navigert et tastatur miljø som dette, hva er prikk 558 00:27:34,120 --> 00:27:36,690 henviser til? 559 00:27:36,690 --> 00:27:37,800 Gjeldende katalog. 560 00:27:37,800 --> 00:27:41,320 >> Så den nåværende katalogen er bare et synonym for en mappe. 561 00:27:41,320 --> 00:27:46,230 Så ved å si dot slash, jeg sier, se etter et program som heter hallo i 562 00:27:46,230 --> 00:27:47,250 gjeldende katalog - 563 00:27:47,250 --> 00:27:48,540 i den aktuelle mappen. 564 00:27:48,540 --> 00:27:50,480 Med andre ord, min Dropbox-mappen. 565 00:27:50,480 --> 00:27:54,220 Og det er derfor treffende Enter etterpå faktisk kjører det programmet. 566 00:27:54,220 --> 00:27:58,790 >> Hvis jeg nå skriver LS, merker at jeg ser alt i min Dropbox-mappen. 567 00:27:58,790 --> 00:28:02,000 Komme Started.pdf, som Dropbox gir deg gratis, mine bilder 568 00:28:02,000 --> 00:28:05,450 katalog, en offentlig katalog, Ulagret Dokument 1 som jeg har gjort ved en feil en 569 00:28:05,450 --> 00:28:09,730 øyeblikk siden, foo.c, som jeg har gjort tidligere i dag, og deretter to linjer - 570 00:28:09,730 --> 00:28:12,090 hello.c og hallo. 571 00:28:12,090 --> 00:28:17,280 >> Hello.c er det programmet jeg skrev med gedit, og hva som er hei på grønt? 572 00:28:17,280 --> 00:28:20,920 573 00:28:20,920 --> 00:28:22,940 Den hallo i grønt er kjørbar. 574 00:28:22,940 --> 00:28:27,020 Med andre ord, når jeg kjørte denne kommandoen et øyeblikk siden - la meg rulle 575 00:28:27,020 --> 00:28:28,040 tilbake i tid - 576 00:28:28,040 --> 00:28:32,400 når jeg kjørte gjøre hallo, det er midten skritt her. 577 00:28:32,400 --> 00:28:34,410 Og det tok hello.c som input - 578 00:28:34,410 --> 00:28:39,910 AKA kildekode - og det produseres en fil som heter Hei som utgang, som 579 00:28:39,910 --> 00:28:42,510 inneholder alle disse nuller og enere. 580 00:28:42,510 --> 00:28:47,640 Og det er derfor, til slutt, kan jeg faktisk kjøre en kommando som. / hallo. 581 00:28:47,640 --> 00:28:53,310 På grunn av Intel Inside, mitt operativsystem system, Linux, åpner opp de nuller 582 00:28:53,310 --> 00:28:55,820 og de, mater dem inn i hjernen i datamaskinen min - 583 00:28:55,820 --> 00:28:56,580 CPU - 584 00:28:56,580 --> 00:29:00,460 og at CPU vet, oh, her er et mønster av nuller og enere som sier 585 00:29:00,460 --> 00:29:02,800 skrive ut følgende ting på skjermen. 586 00:29:02,800 --> 00:29:04,450 >> Hva er følgende ting? 587 00:29:04,450 --> 00:29:07,650 Quote unquote, "hello world". 588 00:29:07,650 --> 00:29:12,100 >> Ok, så en rask oppsummering av noen av disse kommandoene slik at vi kan starte 589 00:29:12,100 --> 00:29:13,350 ta dem for gitt. 590 00:29:13,350 --> 00:29:15,550 La meg gå videre til der vi slapp. 591 00:29:15,550 --> 00:29:22,230 Og du husker at vi hadde CD på ryggen vår ende et øyeblikk siden. 592 00:29:22,230 --> 00:29:24,880 Disse er, tør jeg si, for dagens formål - 593 00:29:24,880 --> 00:29:29,010 kanskje denne uken - de eneste kommandoene vi kanskje skrive på kommando 594 00:29:29,010 --> 00:29:30,580 spør dessuten gjøre. 595 00:29:30,580 --> 00:29:34,510 >> Så CD sto for hva? 596 00:29:34,510 --> 00:29:35,180 Endre katalogen. 597 00:29:35,180 --> 00:29:38,010 Det er bare det samme som dobbel klikke på en mappe. 598 00:29:38,010 --> 00:29:41,320 Og som en side, hvis du får mistet noensinne innsiden av 599 00:29:41,320 --> 00:29:43,430 apparatet, slik at Dropbox - 600 00:29:43,430 --> 00:29:45,420 Jeg ønsker å komme tilbake til min jharvard katalog - 601 00:29:45,420 --> 00:29:50,490 når du er i tvil, CD, enter, med ingen andre ord, og det bare glidelåser deg tilbake 602 00:29:50,490 --> 00:29:53,110 til der du startet, noe som er en fin liten snarvei. 603 00:29:53,110 --> 00:29:54,840 >> Ok, så nå andre kommandoer. 604 00:29:54,840 --> 00:29:55,660 LS. 605 00:29:55,660 --> 00:29:56,840 Jeg skrev at et øyeblikk siden. 606 00:29:56,840 --> 00:29:59,500 Hva tror du LS står for? 607 00:29:59,500 --> 00:30:00,470 >> Så, liste, ikke sant? 608 00:30:00,470 --> 00:30:03,300 Tilbake i dag, når mennesker kom opp med disse kommandoene, de 609 00:30:03,300 --> 00:30:07,180 prøvde å være effektiv, og heller Skriv ut L-I-S-T enter, de 610 00:30:07,180 --> 00:30:08,470 besluttet LS. 611 00:30:08,470 --> 00:30:09,080 Det er bra. 612 00:30:09,080 --> 00:30:10,420 Det høres nok ut som listen. 613 00:30:10,420 --> 00:30:13,870 La oss bare skriver LS inn, og at lister opp filer eller mapper i min 614 00:30:13,870 --> 00:30:15,000 gjeldende mappe. 615 00:30:15,000 --> 00:30:17,530 >> mkdir, kan du sikkert gjette. 616 00:30:17,530 --> 00:30:18,440 Gjør katalogen. 617 00:30:18,440 --> 00:30:22,010 Så du trenger ikke gå til noen fil-menyen og velg Ny mappe i dette miljøet. 618 00:30:22,010 --> 00:30:27,410 Snarere, skriver du kommandoen mkdir plass og deretter navnet på mappen 619 00:30:27,410 --> 00:30:29,850 at du ønsker å opprette, og det vil bli gjort. 620 00:30:29,850 --> 00:30:32,380 >> rm, kan du sikkert gjette. 621 00:30:32,380 --> 00:30:33,480 Fjerne eller slette. 622 00:30:33,480 --> 00:30:36,740 Så hvis du ønsker å slette en fil, vil du se i oppgavesettet hvordan du 623 00:30:36,740 --> 00:30:37,240 kan gjøre dette. 624 00:30:37,240 --> 00:30:39,510 Og rmdir, fjerner katalogen. 625 00:30:39,510 --> 00:30:42,320 >> Så, igjen, jeg har en tendens til å fly gjennom noen av disse detaljene, en, fordi 626 00:30:42,320 --> 00:30:46,010 de er ikke så gøy å bruke tid på, men to, vil vi gi deg 627 00:30:46,010 --> 00:30:48,720 mye større detalj i en hvilken som helst av de Kursets problem setter, spesielt 628 00:30:48,720 --> 00:30:52,370 standard utgaver, noen av trinnene som du kanskje trenger å skrive så 629 00:30:52,370 --> 00:30:54,830 at du får mer og mer comfy med disse tingene. 630 00:30:54,830 --> 00:30:57,430 >> Men nå la meg erte hverandre en annen ting. 631 00:30:57,430 --> 00:31:02,580 Når vi skrev gjøre hallo et øyeblikk siden, vi så en kryptisk sekvens av kommandoer. 632 00:31:02,580 --> 00:31:04,805 Vi så, igjen, må hallo. 633 00:31:04,805 --> 00:31:07,640 634 00:31:07,640 --> 00:31:08,520 OK, la oss gjøre dette. 635 00:31:08,520 --> 00:31:11,840 Jeg var i ferd med å gjøre en feil, men [Uhørlig] nå innrømme at jeg var i ferd med å 636 00:31:11,840 --> 00:31:14,400 og gjør det med vilje. 637 00:31:14,400 --> 00:31:15,810 >> Hva har jeg gjort galt akkurat nå? 638 00:31:15,810 --> 00:31:18,680 639 00:31:18,680 --> 00:31:21,060 Ja, så jeg er ikke i Dropbox katalog, fordi et øyeblikk siden jeg 640 00:31:21,060 --> 00:31:22,720 maskinskrevet CD og bare trykke enter. 641 00:31:22,720 --> 00:31:25,480 Det zoomet meg tilbake til der jeg startet, som ikke er der min fil 642 00:31:25,480 --> 00:31:31,720 er, slik at jeg virkelig trenger å gjøre CD Dropbox inn, og nå kan jeg gjøre rm hallo 643 00:31:31,720 --> 00:31:34,060 inn, fjerne vanlig fil hallo. 644 00:31:34,060 --> 00:31:35,200 Jeg vet ikke hvorfor det er så kryptisk. 645 00:31:35,200 --> 00:31:37,600 Det betyr bare at du er sikker på du ønsker å slette hallo? 646 00:31:37,600 --> 00:31:41,510 Du kan skrive y for yes, enter, og nå er den borte. 647 00:31:41,510 --> 00:31:46,010 >> Og nå hvis jeg skriver gjøre hei igjen, det er kommer til å gjenskape min objektkode, 648 00:31:46,010 --> 00:31:47,460 gjenskape disse nuller og enere. 649 00:31:47,460 --> 00:31:51,070 Men hva er greia med dette svært lang kommando? 650 00:31:51,070 --> 00:31:53,960 Vel, vi erte dette fra hverandre før lenge, men gjør - 651 00:31:53,960 --> 00:31:55,500 Jeg fortalte litt av en hvit løgn før - 652 00:31:55,500 --> 00:31:56,880 er ikke en kompilator. 653 00:31:56,880 --> 00:32:00,350 Gjør er et program som automatisk tall ut hvordan du kjører en 654 00:32:00,350 --> 00:32:02,060 kompilatoren for deg. 655 00:32:02,060 --> 00:32:07,490 >> Så kommandoen du virkelig bør være kjører for å konvertere hello.c 656 00:32:07,490 --> 00:32:11,240 inn hallo faktisk ser litt mer som dette. 657 00:32:11,240 --> 00:32:15,900 Og Gud forby vi må faktisk husk å alltid skrive at hele 658 00:32:15,900 --> 00:32:17,280 sekvens av kommandoer ut. 659 00:32:17,280 --> 00:32:21,360 Formålet med ta i livet er å husk at graden av kompleksitet for 660 00:32:21,360 --> 00:32:24,470 oss og automatisere hva ellers ville være svært kjedelige trinn. 661 00:32:24,470 --> 00:32:26,040 >> Men jeg kan omtrentlig det. 662 00:32:26,040 --> 00:32:29,960 Så per denne lille jukselapp her, jeg kan omtrentlige hva den kommandoen er 663 00:32:29,960 --> 00:32:33,960 gjøre ved å skrive klang, som er navnet på kompilatoren vi vil være 664 00:32:33,960 --> 00:32:35,170 bruke dette semesteret. 665 00:32:35,170 --> 00:32:38,500 Hvis noen av dere har noen gang gjort iOS utvikling for iPhone eller iPad, 666 00:32:38,500 --> 00:32:42,930 Clang er programmet du har brukt innen Xcode for å gjøre dine apps. 667 00:32:42,930 --> 00:32:46,360 Klang, men er bare et annet program hvis navn vi kan skrive på kommando 668 00:32:46,360 --> 00:32:49,210 be, og ved å innføre dette nå, Jeg kan introdusere noe som er en 669 00:32:49,210 --> 00:32:52,410 lite representative med kommandoer som kommer. 670 00:32:52,410 --> 00:32:53,910 Så la meg gjøre dette manuelt. 671 00:32:53,910 --> 00:32:59,240 >> Så rm hei, og nå merker i tilfelle Jeg, akkurat som en tilregnelighet sjekk - 672 00:32:59,240 --> 00:33:03,180 . / Hallo, hva tror du jeg skal se om jeg gjør dette? 673 00:33:03,180 --> 00:33:04,060 Noen form for feil. 674 00:33:04,060 --> 00:33:05,110 Ingen slik fil katalog. 675 00:33:05,110 --> 00:33:06,740 Slik at man er faktisk ganske direkte. 676 00:33:06,740 --> 00:33:08,110 >> Så nå la meg tømme skjermen. 677 00:33:08,110 --> 00:33:11,370 Kontroll S klarner bare skjermen å fjerne noen distraksjoner. 678 00:33:11,370 --> 00:33:17,160 Og nå skal jeg til manuelt typen klang-o hei hello.c. 679 00:33:17,160 --> 00:33:18,890 Så hva er dette i ferd med å gjøre? 680 00:33:18,890 --> 00:33:23,820 Nøyaktig det samme som gjør gjorde for oss, men jeg gjorde kaste bort noen av 681 00:33:23,820 --> 00:33:25,430 de overflødige ord. 682 00:33:25,430 --> 00:33:28,570 >> Clang er programmet som kommer til å ta en. c fil som input og produserer 683 00:33:28,570 --> 00:33:30,110 nuller og enere som utgang. 684 00:33:30,110 --> 00:33:35,120 Men-o heretter vil kalle en bryter eller et flagg. 685 00:33:35,120 --> 00:33:39,080 Dette er bare teknikken sjargong for å si Dette er et ord du skriver på en melding 686 00:33:39,080 --> 00:33:42,590 som påvirker en eller annen måte atferden av programmet du kjører. 687 00:33:42,590 --> 00:33:47,180 Så ikke at noen skal gjette hva-o formidler? 688 00:33:47,180 --> 00:33:47,840 >> Utgang. 689 00:33:47,840 --> 00:33:52,670 Det er bare noen bestemte seg for-o betyr output en fil som heter hei og ta så 690 00:33:52,670 --> 00:33:56,440 inngang uansett det siste ordet i prompt er, hello.c, slik at hvis jeg treffer 691 00:33:56,440 --> 00:33:58,930 Bli med nå, ingenting synes å skje. 692 00:33:58,930 --> 00:34:02,010 Og merkelig nok, i denne verden av programmering, hvis ingenting skjer, 693 00:34:02,010 --> 00:34:03,980 det er sannsynligvis en god ting fordi det er ingen feil 694 00:34:03,980 --> 00:34:05,350 melding på skjermen. 695 00:34:05,350 --> 00:34:07,190 Hei, Enter. 696 00:34:07,190 --> 00:34:08,670 Mitt program er nå kjørt. 697 00:34:08,670 --> 00:34:14,517 >> Men jeg kan gjøre dumme små ting som dette. klang-o, hihihi, hello.c, 698 00:34:14,517 --> 00:34:18,590 inn, og nå har jeg en identisk Programmet heter hihihi. 699 00:34:18,590 --> 00:34:20,739 Den oppfører seg det samme, men navnet er forskjellig. 700 00:34:20,739 --> 00:34:23,360 >> Så dette er bare for å si at hvis du vil for å påvirke atferden til en 701 00:34:23,360 --> 00:34:25,909 program, skal vi stadig se ting som kalles 702 00:34:25,909 --> 00:34:27,739 kommandolinje argumenter. 703 00:34:27,739 --> 00:34:28,639 Dette er en linje. 704 00:34:28,639 --> 00:34:29,580 Du skriver kommandoer. 705 00:34:29,580 --> 00:34:30,969 Ergo, kommandolinje. 706 00:34:30,969 --> 00:34:35,690 Og kommandolinje argumenter er bare ord eller små biter av syntaks som 707 00:34:35,690 --> 00:34:40,840 eller annen måte påvirke atferden til programmene som vi kjører. 708 00:34:40,840 --> 00:34:44,639 >> Greit, det er kanskje det mest kjedelig program vi kan skrive og se. 709 00:34:44,639 --> 00:34:46,670 La oss nå gjøre noe mer interessant. 710 00:34:46,670 --> 00:34:49,420 La meg gå videre og opprette en ny fil. 711 00:34:49,420 --> 00:34:53,139 Jeg kommer til å gå videre og lagre dette i John Harvard hjemmekatalog som, 712 00:34:53,139 --> 00:34:58,670 la oss kalle det custom.c, for å være litt tilpasset program. 713 00:34:58,670 --> 00:35:01,920 Jeg kommer til å zoome inn på min topp av fanene her og starte på nytt. 714 00:35:01,920 --> 00:35:03,730 >> Inkluder standard stdio.h. 715 00:35:03,730 --> 00:35:04,990 Mer om det i et øyeblikk. 716 00:35:04,990 --> 00:35:08,240 int main (void), mer på det i et øyeblikk. 717 00:35:08,240 --> 00:35:09,490 printf ("hallo, David"). 718 00:35:09,490 --> 00:35:12,810 719 00:35:12,810 --> 00:35:14,560 Mye mer interessant, ikke sant? 720 00:35:14,560 --> 00:35:20,690 >> Så nå hvis - ikke på grunn av mitt navn, bare fordi det er annerledes - 721 00:35:20,690 --> 00:35:24,950 lage custom inn. 722 00:35:24,950 --> 00:35:26,780 Custom, hallo, David. 723 00:35:26,780 --> 00:35:28,020 Men selv om det også er en hvit løgn. 724 00:35:28,020 --> 00:35:30,850 Dette programmet kan like godt bli kalt david.c, fordi det ikke er tilpasset 725 00:35:30,850 --> 00:35:31,880 oppførsel i det hele tatt. 726 00:35:31,880 --> 00:35:35,080 Virkelig, jeg vil ha et program som spør brukeren for navnet sitt. 727 00:35:35,080 --> 00:35:36,320 >> Så hvordan gjør jeg det? 728 00:35:36,320 --> 00:35:38,520 Vel, la meg bla opp over her. 729 00:35:38,520 --> 00:35:42,960 Og før jeg bruker en uttalelse i Scratch, før jeg bruker printf, 730 00:35:42,960 --> 00:35:47,600 ellers kjent som en funksjon, la meg først spørre brukeren om noen innspill. 731 00:35:47,600 --> 00:35:49,690 >> Så for å gjøre dette, trenger jeg å gjøre et par ting. 732 00:35:49,690 --> 00:35:53,360 En, må jeg et sted å lagre brukerens navnet etter at jeg har bedt ham eller 733 00:35:53,360 --> 00:35:54,510 henne for det. 734 00:35:54,510 --> 00:36:00,120 Hva konstruere trenger jeg for å bruke nok å lagre en verdi sånn? 735 00:36:00,120 --> 00:36:00,910 En variabel. 736 00:36:00,910 --> 00:36:05,130 >> Så i motsetning til Scratch, hvor du bare får en fint puslespill stykke, her må vi 737 00:36:05,130 --> 00:36:07,620 bruke, selvsagt, ord til uttrykke oss. 738 00:36:07,620 --> 00:36:11,510 Og fra nå av, når du vil ha en ord eller en setning, i programmering, 739 00:36:11,510 --> 00:36:13,090 vi kommer til å kalle det en streng. 740 00:36:13,090 --> 00:36:14,990 Så en streng er et ord eller en setning. 741 00:36:14,990 --> 00:36:18,170 Det er en sekvens av null eller flere tegn, mer formelt. 742 00:36:18,170 --> 00:36:22,520 >> Og hvis du ønsker en slik variabel til eksistere, må du si gi meg en. 743 00:36:22,520 --> 00:36:27,490 Og måten som du gjør det på er å si string s semikolon, der s kan være 744 00:36:27,490 --> 00:36:28,740 alt du vil. 745 00:36:28,740 --> 00:36:30,510 Faktisk er s litt uimponerende. 746 00:36:30,510 --> 00:36:33,250 La meg gå videre og mer klart kalle det navnet. 747 00:36:33,250 --> 00:36:36,570 Gi meg en streng kalt navn. 748 00:36:36,570 --> 00:36:40,180 >> Men nå, hva er personens navn som standard? 749 00:36:40,180 --> 00:36:42,930 Ja, skulle menneske ikke skrive noe i, selvsagt, det kommer 750 00:36:42,930 --> 00:36:44,310 ikke å være noen verdi i firma. 751 00:36:44,310 --> 00:36:48,120 Og det viser seg i C, hvis du ikke gir en variabel en verdi, det kommer til å 752 00:36:48,120 --> 00:36:49,180 har en søppel verdi. 753 00:36:49,180 --> 00:36:51,650 Det kan ha noen tilfeldige nuller og seg, slik at du bare kommer til å se 754 00:36:51,650 --> 00:36:54,570 søppel, virkelig, på skjermen hvis du prøver å vise det. 755 00:36:54,570 --> 00:36:59,800 >> Men jeg kan fikse det ved å si, faktisk, butikken innsiden av navnet 756 00:36:59,800 --> 00:37:01,400 etter verdi. 757 00:37:01,400 --> 00:37:09,240 Måten du lagre verdier i variabler er hvis du har en variabel navn på 758 00:37:09,240 --> 00:37:13,370 igjen, må du liksom sette det du vil lagre i den på høyre, og 759 00:37:13,370 --> 00:37:17,650 syntaksen for det kommer å være som følger. 760 00:37:17,650 --> 00:37:22,120 >> Vi har ikke sett dette før, men ta på tro et øyeblikk at det 761 00:37:22,120 --> 00:37:26,270 Det finnes en annen uttalelse i verden at jeg kommer til å igjen ringe funksjon, 762 00:37:26,270 --> 00:37:28,310 og denne funksjonen er kalt får streng. 763 00:37:28,310 --> 00:37:29,670 Og det gjør bokstavelig talt det. 764 00:37:29,670 --> 00:37:34,680 Det blir liksom en sekvens av tegn fra menneskekroppen og deretter 765 00:37:34,680 --> 00:37:36,380 gjør noe med den. 766 00:37:36,380 --> 00:37:38,410 >> Og dette ser ut som kryptiske syntaks. 767 00:37:38,410 --> 00:37:40,880 Normalt, hvis du bruker like tegn - du er i verden av, sier 768 00:37:40,880 --> 00:37:43,740 algebra, og du er faktisk sier x er lik en. 769 00:37:43,740 --> 00:37:46,570 Her vi ikke si at Navnet er lik få streng. 770 00:37:46,570 --> 00:37:51,270 Vi sier butikk i navnet hva som er på høyre side 771 00:37:51,270 --> 00:37:52,400 av at likhetstegnet. 772 00:37:52,400 --> 00:37:55,030 Likhetstegnet representerer tilordningsoperatoren. 773 00:37:55,030 --> 00:37:58,240 Det er syntaksen som sier sette hva som skjer høyre side inne hva som er 774 00:37:58,240 --> 00:37:59,090 til venstre. 775 00:37:59,090 --> 00:38:03,040 Så får streng er et nytt stykke funksjonalitet som ikke bare gjør 776 00:38:03,040 --> 00:38:03,670 noe - 777 00:38:03,670 --> 00:38:05,000 spør brukeren om et string - 778 00:38:05,000 --> 00:38:08,500 den returnerer også det, så å si. 779 00:38:08,500 --> 00:38:10,690 >> Så la oss se hva som skjer å skje her. 780 00:38:10,690 --> 00:38:14,300 Jeg kommer til å gå videre nå og zoome ut, og jeg kommer til å få et par 781 00:38:14,300 --> 00:38:15,780 feil på min rask. 782 00:38:15,780 --> 00:38:18,750 Jeg kommer til å skrive lage custom, inn. 783 00:38:18,750 --> 00:38:19,230 Wow. 784 00:38:19,230 --> 00:38:20,500 En hel haug med feil. 785 00:38:20,500 --> 00:38:23,120 >> Ok, så dette er slags overveldende, sikkert i starten, men 786 00:38:23,120 --> 00:38:27,220 det viser seg alle disse svært riktignok kryptiske feilmeldinger 787 00:38:27,220 --> 00:38:30,700 henvise til noen mønstre som vi vil begynne å se seg over tid. 788 00:38:30,700 --> 00:38:32,600 Så dette skal jeg nappe av, fordi det er først. 789 00:38:32,600 --> 00:38:35,700 Bruk av undeclared identifikator streng. 790 00:38:35,700 --> 00:38:39,400 >> Det betyr bare at gedit eller Clang, i dette tilfellet, ikke vet 791 00:38:39,400 --> 00:38:40,780 hva jeg mener med streng. 792 00:38:40,780 --> 00:38:43,880 Og det er fordi i C, programmeringsspråket språket, er det faktisk 793 00:38:43,880 --> 00:38:47,750 er ingen variabel av type string. 794 00:38:47,750 --> 00:38:49,810 C vet ikke at strenger eksisterer. 795 00:38:49,810 --> 00:38:52,260 >> Men vi, CS50 ansatte, gjøre. 796 00:38:52,260 --> 00:38:57,080 Og så i forkant av klassen, vi opprettet en fil som heter CS50.h. 797 00:38:57,080 --> 00:39:00,060 Og inne i denne fila - og mer på syntaksen som kommer - 798 00:39:00,060 --> 00:39:03,730 innsiden av denne filen er en definisjon av det jeg nettopp definerte 799 00:39:03,730 --> 00:39:05,340 verbalt som en streng. 800 00:39:05,340 --> 00:39:09,100 Så bare ved å inngå denne ene linjen av koden i programmet mitt, er jeg nå 801 00:39:09,100 --> 00:39:14,620 undervisning gedit og gjøre og Clang alt i sin tur hva en streng er. 802 00:39:14,620 --> 00:39:15,475 >> Jeg vet ikke hvor ennå. 803 00:39:15,475 --> 00:39:17,110 I løpet av noen uker, vil vi skrelle tilbake det laget. 804 00:39:17,110 --> 00:39:20,340 Men for nå, vet at dette lærer kompilatoren hva en 805 00:39:20,340 --> 00:39:22,020 strengen er faktisk. 806 00:39:22,020 --> 00:39:24,230 >> Så nå la meg klare min terminal her nede. 807 00:39:24,230 --> 00:39:28,530 La meg re-run lage custom, og jeg løst alle disse problemene. 808 00:39:28,530 --> 00:39:30,210 Så også dette kommer til å være et tilbakevendende tema. 809 00:39:30,210 --> 00:39:34,190 Jeg bare skrev en ni linjer program, og men jeg hadde 18 linjer med feil. 810 00:39:34,190 --> 00:39:35,650 Det er ganske skremmende. 811 00:39:35,650 --> 00:39:39,260 Men innser at de ofte kaskade slik at en liten feil utløser 812 00:39:39,260 --> 00:39:43,070 forvirring for kompilatoren, og det ser mye verre ut enn det er. 813 00:39:43,070 --> 00:39:47,460 >> Så nå en slu observatør vil vite at jeg får en streng fra 814 00:39:47,460 --> 00:39:51,460 bruker, men jeg er faktisk ikke gjør hva med den? 815 00:39:51,460 --> 00:39:53,570 Jeg er faktisk ikke gjør noe med det. 816 00:39:53,570 --> 00:40:01,240 Så hvis jeg faktisk kjøre custom igjen, det kommer til å bare sitte der. 817 00:40:01,240 --> 00:40:03,380 Hva skjer? 818 00:40:03,380 --> 00:40:07,990 Mitt program ser ut til å bli sittende fast på hvilken linje, vil du si? 819 00:40:07,990 --> 00:40:09,860 >> Så det er faktisk fast på linje 7. 820 00:40:09,860 --> 00:40:13,600 Og vi har sett dette før, men på linje 7, det er, igjen, denne 821 00:40:13,600 --> 00:40:14,650 uttalelse, få streng. 822 00:40:14,650 --> 00:40:15,930 Og den gjør hva den sier. 823 00:40:15,930 --> 00:40:18,480 Det venter nå for den menneskelige å ta strengen. 824 00:40:18,480 --> 00:40:22,230 Dette er helt unintuitive til meg, det menneskelige, fordi jeg ikke har blitt fortalt 825 00:40:22,230 --> 00:40:23,040 hva de skal gjøre. 826 00:40:23,040 --> 00:40:27,320 >> Men la meg gå videre på tro og la meg later til å være Rob. 827 00:40:27,320 --> 00:40:28,500 Enter. 828 00:40:28,500 --> 00:40:30,930 Det er ikke det programmet jeg hadde tenkt. 829 00:40:30,930 --> 00:40:32,350 Så vi har vår første blogg. 830 00:40:32,350 --> 00:40:34,390 >> Men la oss prøve å resonnere gjennom hvorfor dette er tilfelle. 831 00:40:34,390 --> 00:40:36,940 Først, la meg fikse dette første problemet. 832 00:40:36,940 --> 00:40:44,690 La meg legge til en linje her som sier printf, hva er ditt navn? 833 00:40:44,690 --> 00:40:47,700 La oss bare gjøre nær sitat, lukke parentes. 834 00:40:47,700 --> 00:40:51,350 >> Nå la meg å kjøre programmet. 835 00:40:51,350 --> 00:40:51,760 Problemet. 836 00:40:51,760 --> 00:40:54,690 Jeg ser det. 837 00:40:54,690 --> 00:40:54,930 >> Høyre. 838 00:40:54,930 --> 00:40:55,990 Jeg har ikke rekompilere det. 839 00:40:55,990 --> 00:40:59,800 Så i et språk som C, fordi du endre kildekoden betyr ikke 840 00:40:59,800 --> 00:41:03,170 at du har endret objektkode å generere nye objektet kode, 841 00:41:03,170 --> 00:41:04,330 nye nuller og enere. 842 00:41:04,330 --> 00:41:05,590 Du må rekompilere. 843 00:41:05,590 --> 00:41:10,300 Hvis jeg nå re-run skikk, enter, ah, litt mer tydelig. 844 00:41:10,300 --> 00:41:11,890 Mitt navn er Rob. 845 00:41:11,890 --> 00:41:12,760 Fortsatt buggy. 846 00:41:12,760 --> 00:41:14,170 >> Og jeg vil påstå det er et par bugs nå. 847 00:41:14,170 --> 00:41:15,450 Dette ser bare heslig, ærlig. 848 00:41:15,450 --> 00:41:18,980 Liker, minimalt, burde jeg ha en plass der, eller flytte 849 00:41:18,980 --> 00:41:20,330 markøren til den nye linje. 850 00:41:20,330 --> 00:41:21,370 >> Og faktisk, ny linje. 851 00:41:21,370 --> 00:41:24,660 Det er litt av en nøkkel setning her at vi har sett, men ikke definert. 852 00:41:24,660 --> 00:41:28,560 Måten du får en tekst å gå til neste linje, 853 00:41:28,560 --> 00:41:29,480 du ikke gjør dette. 854 00:41:29,480 --> 00:41:31,070 Dette er forvirrende til datamaskinen. 855 00:41:31,070 --> 00:41:33,830 Dette ser ut som to separate linjer av koden, verken som 856 00:41:33,830 --> 00:41:35,010 er helt riktig. 857 00:41:35,010 --> 00:41:39,380 Du har i stedet for å være mer eksplisitt og si, gi meg en ny linje, som vi 858 00:41:39,380 --> 00:41:41,810 representerer i c med backslash n. 859 00:41:41,810 --> 00:41:43,230 >> Så det er noen slike tegn. 860 00:41:43,230 --> 00:41:45,080 Backslash n vil fikse det estetiske. 861 00:41:45,080 --> 00:41:49,640 862 00:41:49,640 --> 00:41:50,870 La meg rekompilere programmet mitt. 863 00:41:50,870 --> 00:41:52,300 La meg re-run mitt program. 864 00:41:52,300 --> 00:41:53,520 >> Dette ser bedre ut. 865 00:41:53,520 --> 00:41:56,960 Det er fortsatt ganske primitive, men det er også fortsatt buggy. 866 00:41:56,960 --> 00:41:58,090 Så det er ett - 867 00:41:58,090 --> 00:42:01,680 selv om du aldri har programmert før, du kan sikkert ta en gjetning 868 00:42:01,680 --> 00:42:04,960 på hvorfor dette programmet er fortsatt mangelfull. 869 00:42:04,960 --> 00:42:08,540 Hva må jeg gjøre det Jeg har ikke gjort ennå? 870 00:42:08,540 --> 00:42:10,450 >> Så jeg må faktisk gjøre noe med navnet. 871 00:42:10,450 --> 00:42:14,190 Akkurat som i grunnen, kan du faktisk tilordne en variabel som n eller 872 00:42:14,190 --> 00:42:16,150 motvirke som vi gjorde sist uke - en verdi. 873 00:42:16,150 --> 00:42:18,930 Men hvis du ikke gjør noe med det er ingenting kommer til å skje. 874 00:42:18,930 --> 00:42:20,210 >> Ok, så la fikse. 875 00:42:20,210 --> 00:42:23,670 La meg skrive min variabel der, og la meg gå ned her. 876 00:42:23,670 --> 00:42:29,120 La meg rekompilere, la meg re-run, Rob. 877 00:42:29,120 --> 00:42:30,540 Nå er jeg bare en idiot, ikke sant? 878 00:42:30,540 --> 00:42:33,280 >> Så dette er egentlig ikke får meg videre. 879 00:42:33,280 --> 00:42:35,850 Men det var en helt naturlig instinkt, vil jeg hevde, ikke sant? 880 00:42:35,850 --> 00:42:39,340 Hvis variabelen kalles navn, og jeg vil den skal gå der, hvorfor gjør jeg ikke bare 881 00:42:39,340 --> 00:42:40,200 skriv det der? 882 00:42:40,200 --> 00:42:42,210 >> Vel, selvfølgelig, har vi å skille nå 883 00:42:42,210 --> 00:42:44,070 mellom hva som er en streng? 884 00:42:44,070 --> 00:42:47,060 Legg merke til at sitatet unquote her, hallo navn? 885 00:42:47,060 --> 00:42:48,960 Dette faktisk i seg selv er en streng. 886 00:42:48,960 --> 00:42:49,820 Det er hardkodet. 887 00:42:49,820 --> 00:42:50,690 Det er ikke fra det menneskelige. 888 00:42:50,690 --> 00:42:54,020 Det er fra meg, den opprinnelige programmerer, men det er fortsatt en streng. 889 00:42:54,020 --> 00:42:58,300 >> Så hvis du bokstavelig talt skrive N-A-M-E innsiden av en streng, hva kommer til å 890 00:42:58,300 --> 00:42:59,120 få skrevet ut? 891 00:42:59,120 --> 00:43:03,660 Vel, N-A-M-E. Vi i stedet må å fortelle printf, ikke ut 892 00:43:03,660 --> 00:43:04,870 ut bokstavelig navngi. 893 00:43:04,870 --> 00:43:06,680 Skriv ut verdien av navnet. 894 00:43:06,680 --> 00:43:08,410 >> Og for å gjøre det, gjør vi følgende. 895 00:43:08,410 --> 00:43:09,800 Og dette er bare et menneske konvensjonen. 896 00:43:09,800 --> 00:43:14,990 Vi i stedet si% s, og at står for streng. 897 00:43:14,990 --> 00:43:19,810 Og så på slutten av mine nære sitater, Jeg kommer til å sette et komma og 898 00:43:19,810 --> 00:43:23,790 passere en andre argumentet inn i denne uttalelsen. 899 00:43:23,790 --> 00:43:25,970 Jeg kommer til å skrive navnet der. 900 00:43:25,970 --> 00:43:27,960 >> Så nå merker vi en litt ny syntaks. 901 00:43:27,960 --> 00:43:32,320 Vi har fortsatt to parenteser, og heretter la meg si at ting 902 00:43:32,320 --> 00:43:36,830 mellom parentes representerer argumenter i en funksjon - 903 00:43:36,830 --> 00:43:39,730 innganger som er en eller annen måte kommer å påvirke sin oppførsel. 904 00:43:39,730 --> 00:43:43,010 Så ved den logikken, hvor mange argumenter synes printf å være 905 00:43:43,010 --> 00:43:45,450 tar i dette øyeblikk? 906 00:43:45,450 --> 00:43:48,370 >> Så det ser ut å ta to, og det er faktisk underforstått 907 00:43:48,370 --> 00:43:49,570 av komma her. 908 00:43:49,570 --> 00:43:51,640 Så dette er ett argument i mellom anførselstegn. 909 00:43:51,640 --> 00:43:54,540 Selv om den har et komma i den, alt er i anførselstegn, noe som betyr 910 00:43:54,540 --> 00:43:56,230 det er en lang streng. 911 00:43:56,230 --> 00:43:58,280 Komma, variabelnavn. 912 00:43:58,280 --> 00:44:00,680 >> Så nå la meg zoome ut. 913 00:44:00,680 --> 00:44:02,240 La meg kjøre den. 914 00:44:02,240 --> 00:44:03,490 Rob. 915 00:44:03,490 --> 00:44:06,520 Faen, hva gjorde jeg galt? 916 00:44:06,520 --> 00:44:07,920 >> Ok, så du må rekompilere. 917 00:44:07,920 --> 00:44:11,030 Så igjen, til enkle feil gjør tidlig på igjen og igjen. 918 00:44:11,030 --> 00:44:15,280 Så nå re-run skikk, Rob, enter, og voila. 919 00:44:15,280 --> 00:44:17,110 Vi har nå et tilpasset program. 920 00:44:17,110 --> 00:44:21,660 >> Så jeg har nå et program som bruke noen kjennetegn 921 00:44:21,660 --> 00:44:22,520 som er verdt å merke seg. 922 00:44:22,520 --> 00:44:27,850 En, jeg bruker CS50.h, ellers kjent som CS50 biblioteket. 923 00:44:27,850 --> 00:44:33,050 Og innsiden av CS50 bibliotek er funksjoner som andre mennesker skrev - 924 00:44:33,050 --> 00:44:33,980 nemlig de ansatte - 925 00:44:33,980 --> 00:44:36,620 for deg å bruke, og få string er en av dem. 926 00:44:36,620 --> 00:44:41,310 >> Innsiden av linje 2 er stdio.h, og hvorfor er dette det? 927 00:44:41,310 --> 00:44:42,070 Ta en gjetning. 928 00:44:42,070 --> 00:44:46,200 Hva finnes innsiden av standard IO forelder? 929 00:44:46,200 --> 00:44:46,940 Printf. 930 00:44:46,940 --> 00:44:49,600 Så printf, ser du ikke det hvor som helst annet på skjermen. 931 00:44:49,600 --> 00:44:51,870 Det må komme med datamaskin eller annen måte. 932 00:44:51,870 --> 00:44:54,870 Hvor kommer den fra? 933 00:44:54,870 --> 00:44:57,660 Det er inne i - det er erklært, så å si, på innsiden av 934 00:44:57,660 --> 00:44:59,890 en fil som heter stdio.h. 935 00:44:59,890 --> 00:45:02,670 >> Nå, for slike ting, vil vi komme tilbake til slutt, fordi det er litt 936 00:45:02,670 --> 00:45:03,930 forstyrrende for nå. 937 00:45:03,930 --> 00:45:05,490 Dette refererer til vår retur type. 938 00:45:05,490 --> 00:45:07,660 Dette refererer til et argument. 939 00:45:07,660 --> 00:45:10,230 Men for i dag, vi fokusert her bare på disse linjene. 940 00:45:10,230 --> 00:45:13,280 >> Så string navn, bare for å gjenerobre, hva gjorde dette for meg? 941 00:45:13,280 --> 00:45:16,940 942 00:45:16,940 --> 00:45:19,560 Så det erklært en variabel av typen streng. 943 00:45:19,560 --> 00:45:22,630 Så det er ment å være for ord, ikke for tall. 944 00:45:22,630 --> 00:45:25,530 Akkurat som en side, hvis jeg hadde lyst det å være et tall, vil jeg si 945 00:45:25,530 --> 00:45:26,560 noe som int. 946 00:45:26,560 --> 00:45:29,740 Hvis jeg ønsket å være et flyttall verdi, noe med en desimal, 947 00:45:29,740 --> 00:45:30,600 Jeg vil si float. 948 00:45:30,600 --> 00:45:32,640 Men for i dag, jeg har nettopp sagt streng. 949 00:45:32,640 --> 00:45:35,940 >> Og jeg har gitt denne variabelen et navn på navn, men jeg kunne 950 00:45:35,940 --> 00:45:37,240 har kalt det noe. 951 00:45:37,240 --> 00:45:39,340 Faktisk, opprinnelig, jeg kalte det S. 952 00:45:39,340 --> 00:45:41,050 >> Dette her er bare en annen uttalelse. 953 00:45:41,050 --> 00:45:44,170 Hvor mange argumenter er dette uttalelse tar? 954 00:45:44,170 --> 00:45:47,890 Så det er bare å ta en, og at er rett og slett en estetisk detalj av 955 00:45:47,890 --> 00:45:49,610 vise noe på skjermen til meg. 956 00:45:49,610 --> 00:45:54,750 Hva er denne linjen åtte gjøre i lekmann vilkår? 957 00:45:54,750 --> 00:45:57,320 >> Det begynner å bli en verdi fra bruker - nemlig en string - 958 00:45:57,320 --> 00:45:58,770 og hva det gjør med det? 959 00:45:58,770 --> 00:46:02,450 Det er i hovedsak overlate det til fyren på venstre side av 960 00:46:02,450 --> 00:46:07,100 likhetstegnet slik at i dette tilfellet, navn variable faktisk kan lagre det. 961 00:46:07,100 --> 00:46:10,020 >> Og så er printf annen forekomst av en funksjon. 962 00:46:10,020 --> 00:46:11,870 Og vi sier å kalle en funksjon. 963 00:46:11,870 --> 00:46:13,870 For å bruke en funksjon er å kalle en funksjon. 964 00:46:13,870 --> 00:46:15,640 Denne saken tilsynelatende tar to argumenter. 965 00:46:15,640 --> 00:46:18,100 Denne, komma, denne. 966 00:46:18,100 --> 00:46:20,910 >> Dette i seg selv er bare en streng som inneholder en plassholder. 967 00:46:20,910 --> 00:46:23,860 % S del sette en annen streng her. 968 00:46:23,860 --> 00:46:27,360 Og så ved å sette navn etter komma, som er å sette inn 969 00:46:27,360 --> 00:46:29,420 den tingen for meg. 970 00:46:29,420 --> 00:46:31,300 >> Slik at jeg kan gjøre andre ting fortsatt. 971 00:46:31,300 --> 00:46:36,820 La meg gå videre nå og gjøre litt av en dumt program, men la meg slette denne, 972 00:46:36,820 --> 00:46:38,880 og la meg lage en loop. 973 00:46:38,880 --> 00:46:41,390 Mens sant. 974 00:46:41,390 --> 00:46:45,210 Symbolet sant er åpenbart alltid kommer til å være sant. 975 00:46:45,210 --> 00:46:49,830 Så hva slags løkke jeg indusere ved å skrive en linje som dette? 976 00:46:49,830 --> 00:46:51,070 >> Så en uendelig loop, ikke sant? 977 00:46:51,070 --> 00:46:52,090 Akkurat mens sant. 978 00:46:52,090 --> 00:46:56,210 Det er ingen måte jeg kan endre ordet sant til å være noe annet, så dette er 979 00:46:56,210 --> 00:46:57,310 bare kommer til å kjøre for alltid. 980 00:46:57,310 --> 00:46:59,960 Så hvis du noen gang faktisk hadde et program i din Mac eller PC som virker 981 00:46:59,960 --> 00:47:02,480 å ha låst opp, eller det gjør noe og noe, og du bare 982 00:47:02,480 --> 00:47:05,500 kan ikke få ting til å slutte med mindre du starte datamaskinen på nytt eller trekke opp 983 00:47:05,500 --> 00:47:08,360 Task Manager eller lignende, her er et slikt eksempel. 984 00:47:08,360 --> 00:47:14,340 >> Jeg kan si: "Jeg er en buggy program." Lukk sitat, lukke 985 00:47:14,340 --> 00:47:15,780 parentes, semikolon. 986 00:47:15,780 --> 00:47:17,010 Så igjen, legge merke til mønstre. 987 00:47:17,010 --> 00:47:21,440 Selv om noen av syntaks vår er ny, søkeordet stund, søkeordet sant, 988 00:47:21,440 --> 00:47:23,590 merker jeg har den samme slags klammeparentes. 989 00:47:23,590 --> 00:47:25,890 Jeg har fått et semikolon og parenteser. 990 00:47:25,890 --> 00:47:28,000 >> Så nå la oss gå videre og kompilere dette. 991 00:47:28,000 --> 00:47:29,630 Gjør skikk, sedvane. 992 00:47:29,630 --> 00:47:32,690 993 00:47:32,690 --> 00:47:36,660 Så på dette punktet, trenger du ikke å starte apparatet, ok? 994 00:47:36,660 --> 00:47:39,925 Så lett lærdommen her er med to fingre, Kontroll C, 995 00:47:39,925 --> 00:47:41,230 Vi vil avslutte dette programmet. 996 00:47:41,230 --> 00:47:45,430 Men du kan se nøyaktig hvorfor denne tingen var å gjenta seg igjen og igjen. 997 00:47:45,430 --> 00:47:48,080 >> Jeg kan gjøre noe litt mer komplisert som en teaser. 998 00:47:48,080 --> 00:47:49,600 Jeg kommer til å gå videre og si følgende. 999 00:47:49,600 --> 00:47:55,210 For int, som er et heltall, er jeg bare et generisk navn vi gir til de fleste 1000 00:47:55,210 --> 00:47:59,500 variabler i programmering når du er bare å telle, er lik 0.. 1001 00:47:59,500 --> 00:48:08,640 La meg gå videre og si mens jeg er, la oss si, mindre enn 100, i pluss pluss. 1002 00:48:08,640 --> 00:48:10,240 Vi vil tilbake til dette syntaks, men dette betyr bare 1003 00:48:10,240 --> 00:48:12,270 øke jeg igjen og igjen. 1004 00:48:12,270 --> 00:48:14,200 >> Og hva ønsker jeg å gjøre her? 1005 00:48:14,200 --> 00:48:21,130 Printf, "Jeg kan telle til jeg." Dette er en avlytting program. 1006 00:48:21,130 --> 00:48:22,450 Hva gjorde jeg faktisk tenkt her? 1007 00:48:22,450 --> 00:48:25,220 1008 00:48:25,220 --> 00:48:30,940 >> Prosent ikke s, men du ville ikke gjette dette. % D er et Desimalheltallet. 1009 00:48:30,940 --> 00:48:32,720 Komma jeg. 1010 00:48:32,720 --> 00:48:34,340 La meg rulle tilbake. 1011 00:48:34,340 --> 00:48:37,170 >> La meg nå rekompilere med make. 1012 00:48:37,170 --> 00:48:39,280 La meg nå kjøre med tilpasset. 1013 00:48:39,280 --> 00:48:42,410 Jeg kan telle egentlig jævla fort når Jeg skriver et program som dette. 1014 00:48:42,410 --> 00:48:45,480 >> Nå la oss gjøre noe Litt utilsiktet. 1015 00:48:45,480 --> 00:48:51,220 Hva med la oss gjøre dette mens jeg er større enn eller lik 0.. 1016 00:48:51,220 --> 00:48:53,630 Hva dette kommer til å indusere? 1017 00:48:53,630 --> 00:49:01,030 Så logisk, dette er ikke så lurt, fordi nå hvis jeg kjøre dette, fortelle, 1018 00:49:01,030 --> 00:49:05,050 Jeg kan nå telle veldig, veldig høy. 1019 00:49:05,050 --> 00:49:08,850 Dessverre, omtrent like høyt som jeg kan teller er 4 milliarder kroner, så dette kommer 1020 00:49:08,850 --> 00:49:10,140 å ta en stund. 1021 00:49:10,140 --> 00:49:13,440 >> Så hvorfor ikke vi la dette som vår cliffhanger, lovende at på 1022 00:49:13,440 --> 00:49:15,650 Onsdag skal vi se om dette programmet er gjort. 1023 00:49:15,650 --> 00:49:19,260 To, vil vi presentere hvordan du selv skrive din egen funksjon slik at svært 1024 00:49:19,260 --> 00:49:22,930 raskt, innen onsdag, vil vi, som vi Overgangen fra Scratch inn C, starter 1025 00:49:22,930 --> 00:49:25,880 skriver stadig mer komplekse programmer som gjør mye, 1026 00:49:25,880 --> 00:49:27,070 mye mer enn dette. 1027 00:49:27,070 --> 00:49:28,766 Vi vil se deg da. 1028 00:49:28,766 --> 00:49:31,580 >> [APPLAUSE] 1029 00:49:31,580 --> 00:49:34,690 >> SPEAKER 1: Ved neste CS50, Puzzle Day ble en suksess. 1030 00:49:34,690 --> 00:49:39,690