1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. MALAN: Dus dit is CS50. 3 00:00:13,800 --> 00:00:18,970 En dit was CS50 eigen Colton Ogden, voor meer van wie is de muziek die u kunt 4 00:00:18,970 --> 00:00:22,820 downloaden op soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Dus vandaag richten we ons des te meer over de kunst van het programmeren. 6 00:00:26,690 --> 00:00:28,980 En we nemen waar we gebleven waren off van vorige week, met de nadruk 7 00:00:28,980 --> 00:00:31,660 op Scratch, dat dit was grafische programmeertaal. 8 00:00:31,660 --> 00:00:35,490 En neem dingen naar een lager niveau, met een meer traditionele programmering 9 00:00:35,490 --> 00:00:38,420 taal bekend als C. Maar langs de weg, het realiseren van 10 00:00:38,420 --> 00:00:40,730 dat dezelfde ideeën die we sprak over afgelopen vrijdag 11 00:00:40,730 --> 00:00:44,390 zal niet alleen in deze herhaling taal C, maar in vrijwel elke andere 12 00:00:44,390 --> 00:00:46,350 dat we dit semester. 13 00:00:46,350 --> 00:00:50,247 >> Dus we belden dit ding hier wat de vorige keer? 14 00:00:50,247 --> 00:00:51,830 Dit is representatief voor een verklaring. 15 00:00:51,830 --> 00:00:53,080 Dus we belden dit een verklaring. 16 00:00:53,080 --> 00:00:54,100 En het doet iets. 17 00:00:54,100 --> 00:00:56,910 Het is een instructie die een computer of Scratch kunnen uitvoeren. 18 00:00:56,910 --> 00:00:59,910 En voortaan, laten we ook beginnen zoiets als dit een functie roepen, 19 00:00:59,910 --> 00:01:02,070 om redenen die we zullen snel te zien. 20 00:01:02,070 --> 00:01:03,681 >> Ondertussen zagen we dit soort dingen. 21 00:01:03,681 --> 00:01:05,680 En deze zijn over het algemeen wel wat construct? 22 00:01:05,680 --> 00:01:06,240 >> PUBLIEK: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. MALAN: Dus een lus. 24 00:01:06,860 --> 00:01:07,943 Dus vrij eenvoudig. 25 00:01:07,943 --> 00:01:09,470 Het doet letterlijk wat het zegt. 26 00:01:09,470 --> 00:01:12,210 En in Scratch, als je wilt proppen meer puzzelstukjes in daar, 27 00:01:12,210 --> 00:01:13,950 het stuk zal groeien om het te passen. 28 00:01:13,950 --> 00:01:16,790 En we zullen zien in C dat We kunnen hetzelfde doen. 29 00:01:16,790 --> 00:01:20,000 >> Ander type lus, hoewel, in Scratch misschien voor altijd, 30 00:01:20,000 --> 00:01:21,820 of er is een willekeurig aantal andere benaderingen. 31 00:01:21,820 --> 00:01:24,150 Maar laten we eens een meer generalistische blik, met een gezicht 32 00:01:24,150 --> 00:01:27,402 dat is waarschijnlijk heel vertrouwd, bij lussen meer in het algemeen. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Een ding dat computers 34 00:01:29,110 --> 00:01:31,860 echt goed in is herhalen opdrachten. 35 00:01:31,860 --> 00:01:33,910 Als een persoon, zou je krijgen echt vervelen als je 36 00:01:33,910 --> 00:01:36,730 moest hetzelfde doen veel keer op een rij. 37 00:01:36,730 --> 00:01:40,530 Maar een computer kan hetzelfde doen miljoenen of zelfs miljarden malen, 38 00:01:40,530 --> 00:01:43,290 en niet te vervelen, en in staat zijn die uit te voeren heel goed. 39 00:01:43,290 --> 00:01:45,650 >> Dus bijvoorbeeld, als ik wilde iedereen wensen 40 00:01:45,650 --> 00:01:48,840 op Facebook een gelukkige verjaardag door ze een e-mail, 41 00:01:48,840 --> 00:01:51,550 het zou me meer dan een nemen eeuw om daadwerkelijk uit te schrijven 42 00:01:51,550 --> 00:01:53,000 al die e-mails naar iedereen. 43 00:01:53,000 --> 00:01:57,780 Maar met slechts een paar regels code, kan ik hebben een systeem stuurt u een e-mail naar iedereen 44 00:01:57,780 --> 00:01:59,930 op Facebook wensen hen een gelukkige verjaardag. 45 00:01:59,930 --> 00:02:02,730 Dus dat is wat loops zijn en waarom ze zijn waardevol en iets 46 00:02:02,730 --> 00:02:04,740 dat computers erg goed kan doen. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. MALAN: Dus als u de ontvanger bent geweest 48 00:02:05,630 --> 00:02:07,820 sommige van CS50 en Dropbox ruimte laat, 49 00:02:07,820 --> 00:02:10,590 dat is eigenlijk precies wat we doen, met behulp van code heel graag dat. 50 00:02:10,590 --> 00:02:12,600 We hebben in wezen een groot spreadsheet waarin 51 00:02:12,600 --> 00:02:15,016 mensen zijn het invoeren van hun namen en e-mailadressen. 52 00:02:15,016 --> 00:02:18,160 En schreven we een klein stukje code dat kunnen itereren over die adressen 53 00:02:18,160 --> 00:02:21,860 en spuwde unieke adressen in geval iemand meerdere keren voorgelegd. 54 00:02:21,860 --> 00:02:25,120 En daarna, een sturen we geautomatiseerde e-mail van CS50's bot, 55 00:02:25,120 --> 00:02:27,190 inclusief de coupon code. 56 00:02:27,190 --> 00:02:29,290 >> Nu ook hebben we gekeken naar Dit construct laatste keer. 57 00:02:29,290 --> 00:02:33,100 En dit is een bijzondere voorbeeld van wat? 58 00:02:33,100 --> 00:02:35,050 Dus, ja, een Booleaanse expressie. 59 00:02:35,050 --> 00:02:37,050 En de vorm bedoeld vastleggen dat ook. 60 00:02:37,050 --> 00:02:39,966 Al dit soort vragen van de vormen waar of onwaar in Scratch 61 00:02:39,966 --> 00:02:41,590 zal een beetje iets als dit. 62 00:02:41,590 --> 00:02:43,200 En we noemen dit een Booleaanse expressie. 63 00:02:43,200 --> 00:02:46,170 Dat is inderdaad waar of onwaar, ja of nee. 64 00:02:46,170 --> 00:02:49,150 Het is een manier van het beantwoorden van een vraag. 65 00:02:49,150 --> 00:02:52,420 >> En ondertussen kunt u deze Booleaanse gebruiken Uitdrukkingen tussen constructen 66 00:02:52,420 --> 00:02:54,720 soort, welke Natuurlijk zijn aandoeningen 67 00:02:54,720 --> 00:02:57,259 of takken, spreekwoordelijke vorken in de weg. 68 00:02:57,259 --> 00:02:59,550 Ze kunnen niet alleen als dit, maar ze kunnen ook 69 00:02:59,550 --> 00:03:02,080 hebben elses met hen verbonden. 70 00:03:02,080 --> 00:03:05,820 En je kunt eigenlijk een drieweg vork in de weg of een vier manier vork 71 00:03:05,820 --> 00:03:08,340 in de weg, gewoon door nestelen deze dingen, 72 00:03:08,340 --> 00:03:10,510 zoals u zult zien in Scratch als je nog niet hebt. 73 00:03:10,510 --> 00:03:13,550 En zoals je kunt doen in C ook. 74 00:03:13,550 --> 00:03:16,810 >> Laten we eens een andere generalistische kijken naar een alumnist, evenals die 75 00:03:16,810 --> 00:03:21,490 misschien een andere aanpak te presenteren om deze dingen genoemd voorwaarden. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: Mensen maken elke dag beslissingen. 77 00:03:24,060 --> 00:03:27,530 Bijvoorbeeld, voordat je gaat buiten je soort hebben een if-statement dat zegt, 78 00:03:27,530 --> 00:03:31,480 als het regent dan heb ik nodig om mijn jas te krijgen. 79 00:03:31,480 --> 00:03:36,820 En computers zijn geweldig als je eenmaal beslissen dat soort uitspraken, 80 00:03:36,820 --> 00:03:42,280 dat ze betrouwbaar kunnen uitvoeren die dingen op ongelooflijke snelheid. 81 00:03:42,280 --> 00:03:48,240 En dus een computerprogramma echt is een beetje wiskunde en een aantal 82 00:03:48,240 --> 00:03:53,050 if-statements waar de beslissing wordt gemaakt. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. MALAN: Dus als u wellicht weet, het was 84 00:03:55,020 --> 00:03:57,880 mensen zoals Bill Gates, Paul Allen, en anderen 85 00:03:57,880 --> 00:04:00,240 die echt de aftrap voor de zogenaamde personal computer 86 00:04:00,240 --> 00:04:01,990 revolutie enkele jaren geleden. 87 00:04:01,990 --> 00:04:04,140 Ik dacht, voordat we duiken in sommige Administratieve zaken, 88 00:04:04,140 --> 00:04:09,920 we een verhaal zou betreffen van de Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 en wetenschap, waar een aantal van Bill Gates ' en vroegste verhalen van Paul Allen 90 00:04:13,650 --> 00:04:17,470 worden verhaald hoe we nu hebben de hedendaagse pc's en Macs en meer. 91 00:04:17,470 --> 00:04:22,390 Hiervoor echter moeten we twee vrijwilligers die hebben zeer goede vertelling stemmen 92 00:04:22,390 --> 00:04:23,735 een script voorlezen. 93 00:04:23,735 --> 00:04:25,530 >> Oke, wat dacht je daar terug. 94 00:04:25,530 --> 00:04:26,120 Kom maar naar boven. 95 00:04:26,120 --> 00:04:27,770 En hoe zit het aan de voorkant hier. 96 00:04:27,770 --> 00:04:28,340 Kom naar beneden. 97 00:04:28,340 --> 00:04:29,600 Neem hier uw plaatsen. 98 00:04:29,600 --> 00:04:32,444 Als jullie komen, een paar van de administratieve mededelingen. 99 00:04:32,444 --> 00:04:34,360 snijden, het proces het kiezen van een gedeelte, 100 00:04:34,360 --> 00:04:36,068 zal deze beginnen Woensdag tot en met vrijdag. 101 00:04:36,068 --> 00:04:38,400 Meer op dat deze komende Woensdag in collegezalen. 102 00:04:38,400 --> 00:04:41,770 >> Super secties, ondertussen, zijn iets dat wij bieden volgende week 103 00:04:41,770 --> 00:04:45,310 waarbij de hele klas wordt uitgenodigd deelnemen aan vrij grote schaal 104 00:04:45,310 --> 00:04:47,690 delen, een meer comfortabele, een minder comfortabel. 105 00:04:47,690 --> 00:04:51,340 En we zullen de gegevens aan te kondigen van dat, evenals, later deze week. 106 00:04:51,340 --> 00:04:53,310 >> Ondertussen secties, zelf begint 107 00:04:53,310 --> 00:04:57,241 in week drie van de cursus, nul-index, wat betekent dat zijn een paar weken 108 00:04:57,241 --> 00:04:57,740 uit. 109 00:04:57,740 --> 00:04:58,450 Dus geen zorgen te maken. 110 00:04:58,450 --> 00:05:01,014 Je hebt nog niet gemist iets in die richting. 111 00:05:01,014 --> 00:05:03,930 Ondertussen in de tussentijd, als je Voor vragen administratief, 112 00:05:03,930 --> 00:05:08,120 e-mail mij en Devon en Gabe en Rob op dit adres hier. 113 00:05:08,120 --> 00:05:10,320 >> Tenslotte probleem vastgesteld 0 is natuurlijk uit. 114 00:05:10,320 --> 00:05:12,320 Je mag het hebben gemerkt op de website van de cursus. 115 00:05:12,320 --> 00:05:14,840 Het moet u voorzien van Alle antwoorden op vragen 116 00:05:14,840 --> 00:05:18,250 je zou langs de weg te hebben aan de slag met het probleem set. 117 00:05:18,250 --> 00:05:21,430 Maar als je merkt dat je behoefte aan een helpende hand, 118 00:05:21,430 --> 00:05:25,020 met alle middelen te wonen kantooruren, Maandag, Dinsdag, Woensdag, Donderdag 119 00:05:25,020 --> 00:05:27,290 van deze week in de avond in vier eetzalen. 120 00:05:27,290 --> 00:05:31,650 Zie je die URL er voor de gegevens van waar de kantooruren zijn. 121 00:05:31,650 --> 00:05:34,000 >> Nu laten we voldoen aan onze twee gasten hier vandaag. 122 00:05:34,000 --> 00:05:34,740 Wat is je naam? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. MALAN: Jay Paul, leuk je te ontmoeten. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Leuk om je te ontmoeten. 130 00:05:39,790 --> 00:05:42,123 Jay Paul en Hikari hebben in voor hen op deze muziek 131 00:05:42,123 --> 00:05:45,100 staat twee scripts die ik gedrukt vanmorgen uit de New Mexico 132 00:05:45,100 --> 00:05:46,692 Museum of Natural History and Science. 133 00:05:46,692 --> 00:05:48,400 En wat ik dacht Ik zou doen op de overhead 134 00:05:48,400 --> 00:05:52,830 wordt begeleiden uw recitatie van het script en deze geschiedenis 135 00:05:52,830 --> 00:05:54,700 met een aantal visuele beelden, geen verrassingen. 136 00:05:54,700 --> 00:05:57,512 >> En wat ik heb gedaan op voorhand wordt prehighlight op je script 137 00:05:57,512 --> 00:05:59,470 wat je moet lezen, en wat je zou moeten lezen. 138 00:05:59,470 --> 00:06:00,920 En we zullen in wezen gewoon alternatieve paragrafen. 139 00:06:00,920 --> 00:06:03,211 Dus het is net zoals je misschien hebben gedaan in het Engels les. 140 00:06:03,211 --> 00:06:06,875 Dat is echt te dwingen het publiek om te geloven in je verhaal hier. 141 00:06:06,875 --> 00:06:07,600 Zullen we? 142 00:06:07,600 --> 00:06:13,272 Dus het verhaal hier is, hebben we een BASIC, en het begint in Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Het was de winter van 1974, in Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 waar de winters koud kan zijn. 145 00:06:20,240 --> 00:06:22,800 Een bebaarde, langharige college dropout vernoemd 146 00:06:22,800 --> 00:06:27,280 Paul Allen is drudging over Harvard Vierkant, verdiept in zijn gedachten. 147 00:06:27,280 --> 00:06:31,050 Zijn voornaamste zorg in die dagen was hoe hij zijn vriend, Bill Gates krijgen, 148 00:06:31,050 --> 00:06:34,974 stoppen met school en gaan in zaken met hem. 149 00:06:34,974 --> 00:06:37,890 HIKARI: De twee waren al weg door middel van een aantal business ventures 150 00:06:37,890 --> 00:06:40,850 elkaar, te beginnen bij Lakeside school in Seattle waar 151 00:06:40,850 --> 00:06:45,220 zij werden betaald in gratis computer de tijd om test een PDP-10 computer een lokale tijd 152 00:06:45,220 --> 00:06:46,580 sharing bedrijf. 153 00:06:46,580 --> 00:06:50,930 Het meest recente plan was om te stoppen school en vormen een software bedrijf. 154 00:06:50,930 --> 00:06:53,440 Allen had Washington vertrokken State University. 155 00:06:53,440 --> 00:06:58,380 Maar op het laatste moment, Gates besloten aan de stok met Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Die dag, het oversteken van de Harvard Vierkant, Allen zag de januari 157 00:07:02,080 --> 00:07:07,530 1975 nummer van Popular Electronics met de aarde stoppen kop, 158 00:07:07,530 --> 00:07:11,900 'S Werelds eerste minicomputer Kit om commerciële modellen rivaal. 159 00:07:11,900 --> 00:07:14,430 Onder de kop was een foto van een klein doosje 160 00:07:14,430 --> 00:07:16,160 versierd met lampjes en schakelaars. 161 00:07:16,160 --> 00:07:19,770 Het werd de MITS Altair 8800 genoemd. 162 00:07:19,770 --> 00:07:24,100 En Allen wisten dat dit was wat Hij was op zoek naar. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Days of discussie volgde. 164 00:07:26,350 --> 00:07:30,170 Allen en Gates begrepen de betekenis van de Altair. 165 00:07:30,170 --> 00:07:32,480 Ze hadden vaak gesproken over microprocessors 166 00:07:32,480 --> 00:07:35,250 en zaten te wachten om te zien wat zou gedaan wordt. 167 00:07:35,250 --> 00:07:39,770 Nu was er een minicomputer kit op de cover van Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Het had nog blijkbaar geen software. 169 00:07:42,830 --> 00:07:46,830 Ze stelde zich een natie van programmeurs aflopend op MITS. 170 00:07:46,830 --> 00:07:49,590 En dus belden ze Ed Roberts, het hoofd van het bedrijf, 171 00:07:49,590 --> 00:07:53,330 beweert een versie van het hebben BASIC programmeertaal bijna klaar 172 00:07:53,330 --> 00:07:54,710 voor de Altair. 173 00:07:54,710 --> 00:07:55,570 Dat deden ze niet. 174 00:07:55,570 --> 00:07:58,910 En Roberts moet hebben geweten dat deden ze niet. 175 00:07:58,910 --> 00:08:03,170 Hij kreeg 10 oproepen per dag van mensen die een BASIC bijna klaar had. 176 00:08:03,170 --> 00:08:05,570 En zijn voorraad reactie was: "De eerste persoon 177 00:08:05,570 --> 00:08:11,090 die toont met een werkende BASIC krijgt het contract. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates en Allen had nog nooit een Altair. 179 00:08:13,910 --> 00:08:17,600 Ze had nog nooit de Intel 8080 microprocessor 180 00:08:17,600 --> 00:08:19,060 in het hart van de Altair. 181 00:08:19,060 --> 00:08:21,470 Maar een paar jaar eerder Allen hadden een programma geschreven 182 00:08:21,470 --> 00:08:25,220 op een mainframe computer die geëmuleerd de werking van een eerdere Intel 183 00:08:25,220 --> 00:08:26,217 microprocessor. 184 00:08:26,217 --> 00:08:28,300 En deze keer ze zou hetzelfde doen. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Met een Intel 8080 handleiding aan zijn zijde, 187 00:08:34,380 --> 00:08:37,770 Allen zitten op een Harvard PDP-10 computer 188 00:08:37,770 --> 00:08:42,010 en schreef de emulator en software instrumenten die nodig zijn om de programmering te doen. 189 00:08:42,010 --> 00:08:45,820 Ondertussen Gates ging niet meer klassen en wijdde zich 190 00:08:45,820 --> 00:08:48,120 het ontwerpen van de BASIC, met behulp van elke truc 191 00:08:48,120 --> 00:08:53,130 Hij wist op de maat te krijgen beneden 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out in Albuquerque, Ed Roberts kreeg een telefoontje van Gates 193 00:08:55,870 --> 00:08:59,754 vragen voor meer informatie over hoe de Altair behandeld specifieke routines. 194 00:08:59,754 --> 00:09:01,170 Niemand had ooit gevraagd dat vóór. 195 00:09:01,170 --> 00:09:02,670 En Roberts begon interesse te krijgen. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Met de ontwikkeling hulpmiddelen en het ontwerp klaar is, 198 00:09:07,970 --> 00:09:10,780 Gates en Allen schreef de code op de PDP-10, 199 00:09:10,780 --> 00:09:16,060 enlisting andere Harvard student, Monte Davidoff, om wiskunde routines te schrijven. 200 00:09:16,060 --> 00:09:19,450 Na een laatste nacht programmering, Allen kreeg op een vliegtuig 201 00:09:19,450 --> 00:09:22,970 te leveren in hun basisbehoeften te MITS. 202 00:09:22,970 --> 00:09:25,800 Hij bracht het vliegtuig rijden uit zorgwekkend. 203 00:09:25,800 --> 00:09:28,490 En terug in Cambridge Gates is zorgwekkend. 204 00:09:28,490 --> 00:09:32,100 Ze had getest hun BASIC en hij had gewerkt op de emulator. 205 00:09:32,100 --> 00:09:35,444 Maar wat als de emulator was verkeerd? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Toen het vliegtuig benaderd Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen realiseerden dat hun BASIC, nu netjes bevatte 208 00:09:40,070 --> 00:09:42,460 op een klein rolletje geperforeerd papier tape, zou 209 00:09:42,460 --> 00:09:44,970 zijn nutteloos zonder een aparte programma, genaamd een loader, dat 210 00:09:44,970 --> 00:09:47,550 zou de Altair hoe vertellen aan de papieren rompslomp wordt gelezen 211 00:09:47,550 --> 00:09:49,620 toegevoerd aan de teletype machine. 212 00:09:49,620 --> 00:09:52,970 Hij haalde zijn notitieboekje en snel krabbelde een loader programma 213 00:09:52,970 --> 00:09:56,819 in assembler, vervolgens handmatig vertaalde dat in de 1s en 0s 214 00:09:56,819 --> 00:09:57,985 de Altair zouden begrijpen. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen verwachtte een schone, kleine, high tech bedrijf 217 00:10:03,830 --> 00:10:05,470 gerund door mannen in pakken. 218 00:10:05,470 --> 00:10:09,210 Dus hij was verbaasd toen Roberts ontmoette hem op de luchthaven op zoek als een ranch 219 00:10:09,210 --> 00:10:10,270 de hand. 220 00:10:10,270 --> 00:10:12,070 Roberts was ook verbaasd. 221 00:10:12,070 --> 00:10:16,340 Toen liet hij de Harvard programmeur bij een duur hotel, 222 00:10:16,340 --> 00:10:20,790 Allen moest bekennen dat hij zich niet kon veroorloven de kamer. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, zelf, was gelegen in een stoffige strip mall. 224 00:10:24,510 --> 00:10:27,040 Binnen op een rommelige werkbank was een Altair 225 00:10:27,040 --> 00:10:30,390 geladen met 5 kilobyte geheugen en verbonden door een kabel 226 00:10:30,390 --> 00:10:32,030 een telex machine. 227 00:10:32,030 --> 00:10:37,200 Roberts en Chief Engineer, Bill Yates, wachtte vol verwachting 228 00:10:37,200 --> 00:10:40,660 als Allen geschakeld zijn loader programma in de Altair. 229 00:10:40,660 --> 00:10:44,980 De telex begonnen puffend als het getrokken het papier tape door de tape reader. 230 00:10:44,980 --> 00:10:47,215 Het duurde misschien 15 minuten het programma te laden. 231 00:10:47,215 --> 00:10:52,110 Dan is de telex abrupt drukte een geheugen prompt, dan een kant en klaar prompt, 232 00:10:52,110 --> 00:10:55,340 en Allen begon te typen een paar testen commando. 233 00:10:55,340 --> 00:10:57,400 Tot ieders verbazing, de software werkt. 234 00:10:57,400 --> 00:10:58,525 Er waren insecten, natuurlijk. 235 00:10:58,525 --> 00:11:02,070 Maar het belangrijkste was het werkte. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Later, op weg naar een $ 3,00 lunch bij Pancho's, een wesp vloog 237 00:11:06,570 --> 00:11:10,470 in het raam van de pick-up vrachtwagen en gestoken Allen op de arm. 238 00:11:10,470 --> 00:11:13,070 Maar op dat punt niets kon de stemming bederven. 239 00:11:13,070 --> 00:11:17,210 De Altair nu had zijn BASIC, de eerste commerciële software voor een huis 240 00:11:17,210 --> 00:11:23,260 computer, gemaakt door Paul Allen en Bill Gates, zaken doen als Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. MALAN: Veel dankzij onze twee lezers. 242 00:11:25,336 --> 00:11:30,690 >> [Applaus] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. MALAN: Nu U hebt uw keuze, 244 00:11:32,520 --> 00:11:35,880 voordat u vertrekt, of een sprankelende of een gloed in de dark-- oh, 245 00:11:35,880 --> 00:11:40,810 wacht een seconde, wait-- sparkly en een glow in the dark olifant 246 00:11:40,810 --> 00:11:42,534 van CS50 eigen Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, dank je wel. 248 00:11:43,450 --> 00:11:45,324 DAVID J. MALAN: Alle rechts, dank je wel. 249 00:11:45,324 --> 00:11:49,855 [Applaus] 250 00:11:49,855 --> 00:11:51,105 DAVID J. MALAN: So true story. 251 00:11:51,105 --> 00:11:54,380 Dit wil zeggen dat al deze machines en het gemak waarmee we 252 00:11:54,380 --> 00:11:56,270 gebruik ze nu en neem voor lief, echt 253 00:11:56,270 --> 00:12:00,070 begon hier, op slechts een paar passen van deze eigenlijke theater. 254 00:12:00,070 --> 00:12:03,930 En nu vandaag de dag, als je niet bent geweest, Dit is Maxwell Dworkin, de computer 255 00:12:03,930 --> 00:12:05,810 wetenschappen gebouw, ook om de hoek. 256 00:12:05,810 --> 00:12:09,760 En op de tweede verdieping van dit gebouw doet hangen drie pagina's 257 00:12:09,760 --> 00:12:12,740 van de oorspronkelijke broncode die Bill Gates en Paul Allen schreef. 258 00:12:12,740 --> 00:12:14,770 In feite, als je gebruik te zoomen in u niet alleen kunt zien 259 00:12:14,770 --> 00:12:17,350 hun namen in de oorspronkelijke type, maar ook 260 00:12:17,350 --> 00:12:22,100 hun handtekeningen die ze versierd een paar jaar terug toen ze laatst bezocht. 261 00:12:22,100 --> 00:12:25,800 >> Maar wat was bijzonder overtuigend over dit is wat ze uiteengezet te doen 262 00:12:25,800 --> 00:12:29,760 was om een ​​programma dat zou schrijven in staat andere mensen te schrijven 263 00:12:29,760 --> 00:12:30,950 hun eigen programma's. 264 00:12:30,950 --> 00:12:34,280 Op het moment dat alles was er met deze Altair machine gemaakt door MITS. 265 00:12:34,280 --> 00:12:40,020 En alles wat ze nodig had was een manier van waardoor het gemakkelijk is voor hobbyisten en mensen 266 00:12:40,020 --> 00:12:45,300 dat wij in deze kamer om daadwerkelijk programma dat zonder noodzakelijkerwijs begrijpen 267 00:12:45,300 --> 00:12:49,060 Montage-code, of machine code, of God verhoede, 0 en 1. 268 00:12:49,060 --> 00:12:51,190 We programmeurs, zoals die in deze kamer, we 269 00:12:51,190 --> 00:12:54,070 willen kunnen uitdrukken onszelf veel meer als pseudo-code 270 00:12:54,070 --> 00:12:57,330 zelfs als het een beetje meer nit kieskeurig dan spraken we vorige week. 271 00:12:57,330 --> 00:13:00,970 We willen niet om code te schrijven als dit, die Paul Allen en Bill Gates deed. 272 00:13:00,970 --> 00:13:04,850 Wij, in plaats daarvan, wil om code te schrijven die ziet er een beetje meer gebruikersvriendelijk. 273 00:13:04,850 --> 00:13:07,150 >> Nu is dit een taal die bekend staat als BASIC. 274 00:13:07,150 --> 00:13:11,497 En de lijnnummers zijn er wat je Gebruik eenvoudig nummeren coderegels 275 00:13:11,497 --> 00:13:12,330 dat je aan het schrijven bent. 276 00:13:12,330 --> 00:13:14,038 We hoeven niet eens te dat doen deze dagen. 277 00:13:14,038 --> 00:13:16,060 Maar je kunt hier zien hoe PRINT "hello, world" 278 00:13:16,060 --> 00:13:18,660 zou inderdaad vermoedelijk printen alleen dat. 279 00:13:18,660 --> 00:13:22,710 En wat Bill en Paul deed was mensen in staat stellen om code te schrijven als dit 280 00:13:22,710 --> 00:13:27,240 plaats van-- als je een kijkje nemen op de te nemen informatica wall-- code als deze. 281 00:13:27,240 --> 00:13:29,290 >> In feite, CS50 onlangs had een kans 282 00:13:29,290 --> 00:13:32,540 te gaan zitten met Professor Harry Lewis in de Informatica-afdeling, die 283 00:13:32,540 --> 00:13:34,640 eigenlijk leerde Bill Gates enkele jaren geleden, 284 00:13:34,640 --> 00:13:38,460 en staat hier voor die drie pagina's van fragmenten. 285 00:13:38,460 --> 00:13:39,560 Laten we eens een kijkje nemen. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Wat je hier hebt is een vermelding van een vroege stuk software 287 00:13:45,520 --> 00:13:50,240 geschreven door Bill Gates en Paul Allen, de oprichters van Microsoft. 288 00:13:50,240 --> 00:13:52,570 Dus de code is interessant om twee redenen. 289 00:13:52,570 --> 00:13:55,480 Allereerst werd Het eerste product van Microsoft, 290 00:13:55,480 --> 00:14:01,810 die een tolk was de programmeertaal BASIC. 291 00:14:01,810 --> 00:14:04,940 En ten tweede, dat was een van de eerste pogingen 292 00:14:04,940 --> 00:14:10,580 een tolk zo gewoon maken mensen konden personal computers gebruiken. 293 00:14:10,580 --> 00:14:12,670 >> Dus Bill Gates was een undergraduate op Harvard. 294 00:14:12,670 --> 00:14:14,820 Ik begonnen met lesgeven aan Harvard in 1974. 295 00:14:14,820 --> 00:14:16,560 Dit werd gedaan in 1975. 296 00:14:16,560 --> 00:14:20,180 Zo was het in het begin van zijn carrière en in het begin van mijn carrière. 297 00:14:20,180 --> 00:14:23,790 Ik heb eigenlijk geleerd Bill in een cursus rond deze tijd. 298 00:14:23,790 --> 00:14:27,130 Paul Allen was geen Harvard student, maar hij 299 00:14:27,130 --> 00:14:31,020 had een middelbare school geweest klasgenoot van Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Als je komen kijken op de lijst, zult u 301 00:14:33,740 --> 00:14:36,230 eigenlijk vinden een derde naam, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 die Gates klasgenoot was hier op Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, dus hier is een interessant commentaar hier boven. 304 00:14:41,340 --> 00:14:47,150 Het zegt "In 4K kan vierkantswortel verwijderen maar voor loops moet nog steeds werken. " 305 00:14:47,150 --> 00:14:53,080 OK, dus wat dat betekent is dat er waren twee manieren om dit programma te compileren. 306 00:14:53,080 --> 00:14:57,860 Een daarvan was om te draaien op een versie van deze Altair computer 307 00:14:57,860 --> 00:15:04,310 dat alleen had 4K woorden geheugen, 4096 woorden geheugen. 308 00:15:04,310 --> 00:15:07,050 Maar de grote versie had 8K. 309 00:15:07,050 --> 00:15:09,770 En dus wat dit zegt is dat de 4K versie 310 00:15:09,770 --> 00:15:12,770 je moest een aantal verwijderen code om het passend te maken. 311 00:15:12,770 --> 00:15:14,790 En een van de dingen dat zou worden geschrapt 312 00:15:14,790 --> 00:15:16,290 zou de vierkantswortel routine. 313 00:15:16,290 --> 00:15:20,360 Maar blijkbaar de lussen moeten nog 314 00:15:20,360 --> 00:15:26,392 werken, zelfs als je het compileren naar beneden voor alleen de 4K-versie van de computer. 315 00:15:26,392 --> 00:15:29,350 DAVID J. MALAN: Dus een van de thema's, zoals we zullen zien in de informatica, 316 00:15:29,350 --> 00:15:31,430 Hierdoor begrip gelaagdheid en abstractie, 317 00:15:31,430 --> 00:15:34,670 en echt op de schouders van mensen die ons voorgingen, niet 318 00:15:34,670 --> 00:15:37,890 in tegenstelling tot sommige van de Bill Gates en Paul Allen verhaal hier. 319 00:15:37,890 --> 00:15:40,080 En wat dit betekent is dat we vandaag kunnen nemen voor 320 00:15:40,080 --> 00:15:43,490 vanzelfsprekend dat de dingen zijn eigenlijk makkelijker voor ons om code te schrijven. 321 00:15:43,490 --> 00:15:47,170 Inderdaad code, zoals gezegd op vrijdag, is meer technisch bekend als broncode. 322 00:15:47,170 --> 00:15:52,210 En het is dit Engels achtige syntax dat is meer een goede en meer goed gedefinieerd 323 00:15:52,210 --> 00:15:55,480 dan iets als pseudo-code, voor waarvoor er geen formele definitie. 324 00:15:55,480 --> 00:15:58,320 >> En vandaag wat we gaan scherpstellen zich broncode 325 00:15:58,320 --> 00:16:01,010 dat ziet er zo uit, dat weliswaar op het eerste gezicht 326 00:16:01,010 --> 00:16:02,690 ziet er heel cryptisch. 327 00:16:02,690 --> 00:16:08,540 En eerlijk gezegd, het is veel meer esthetisch complex dan de onderliggende programma. 328 00:16:08,540 --> 00:16:13,300 Al deze programma doet, recall, is wat hebben wij dan zeggen? 329 00:16:13,300 --> 00:16:14,990 Hij drukt gewoon "hallo wereld". 330 00:16:14,990 --> 00:16:19,600 En toch kijken naar alle van de dingen die we nodig hebben te wikkelen rond die zeer eenvoudige zin. 331 00:16:19,600 --> 00:16:21,750 Maar het duurde niet lang allemaal deze lijnen en meer 332 00:16:21,750 --> 00:16:24,800 zal veel beter gevoel te maken voor jou. 333 00:16:24,800 --> 00:16:26,940 >> En de stroom is als volgt. 334 00:16:26,940 --> 00:16:31,220 Wat we nodig hebben tot onze beschikking is code nemen als bron 335 00:16:31,220 --> 00:16:32,340 code die we net zagen. 336 00:16:32,340 --> 00:16:35,060 En we een nieuw programma nodig om het uit te voeren door. 337 00:16:35,060 --> 00:16:39,130 We moeten algoritmen die kunnen zet broncode, zoals deze, 338 00:16:39,130 --> 00:16:41,932 in object code, 0 en 1. 339 00:16:41,932 --> 00:16:43,890 Met andere woorden, wat we gaan vandaag leren 340 00:16:43,890 --> 00:16:46,620 is hoe dit te doen, schrijven broncode up top, 341 00:16:46,620 --> 00:16:49,930 doorgeven als invoer voor een speciale programma bekend als een compiler, 342 00:16:49,930 --> 00:16:52,140 en we gaan naar object code te produceren. 343 00:16:52,140 --> 00:16:54,600 Dat is gewoon een mooie manier om zeggen dat we iets nemen 344 00:16:54,600 --> 00:16:58,350 dat ziet er zo uit, geef het een programma genaamd een compiler, 345 00:16:58,350 --> 00:17:01,210 producerende objectcode dat ziet er zo uit. 346 00:17:01,210 --> 00:17:04,720 >> Dit zijn dus letterlijk de patronen van 0s en 1s 347 00:17:04,720 --> 00:17:08,550 die worden begrepen door een Intel computer deze dagen, 348 00:17:08,550 --> 00:17:12,480 dat, als geïnterpreteerd door de CPU, de hersenen binnenkant van een computer, 349 00:17:12,480 --> 00:17:16,130 wordt letterlijk afgedrukt, heel eenvoudig, "hallo wereld". 350 00:17:16,130 --> 00:17:19,670 Nu is er veel meer 0s en 1s dan u zou hopen wellicht nodig is om dat te zijn. 351 00:17:19,670 --> 00:17:22,520 Maar dat komt omdat we bouwen op een groot deel van de complexiteit 352 00:17:22,520 --> 00:17:24,270 dat we voortaan kunnen voor lief nemen. 353 00:17:24,270 --> 00:17:27,869 Met andere woorden, veel slimme mensen hebben ons een heleboel coole gereedschappen gegeven 354 00:17:27,869 --> 00:17:32,480 en krachtige software waarmee we kan nu projecten van onze eigen te maken. 355 00:17:32,480 --> 00:17:33,400 >> Dus laten we beginnen. 356 00:17:33,400 --> 00:17:36,640 Overwegende dat afgelopen vrijdag, en voor Probleemverzameling 0 deze week, 357 00:17:36,640 --> 00:17:39,000 je zult spelen in een wereld die er zo uitziet. 358 00:17:39,000 --> 00:17:42,180 Vanaf vandaag en voor Problem Set 1 volgende week, de code 359 00:17:42,180 --> 00:17:45,410 gaat een beetje meer kijken cryptisch, maar functioneel is 360 00:17:45,410 --> 00:17:46,940 zal hetzelfde zijn. 361 00:17:46,940 --> 00:17:50,770 Dus kennisgeving, top is Scratch, bodem is C. Eerlijk gezegd Scratch 362 00:17:50,770 --> 00:17:52,780 is een stuk gebruiksvriendelijker vriendelijk en toegankelijk. 363 00:17:52,780 --> 00:17:56,890 Maar als je nu vergelijkt visueel boven naar bodem, er is een soort van een 1-1 364 00:17:56,890 --> 00:17:59,690 correspondentie tussen de puzzelstukjes en de taal 365 00:17:59,690 --> 00:18:00,870 we staan ​​op het punt om mee te spelen. 366 00:18:00,870 --> 00:18:04,420 Met name zeggen de blauwe puzzel stuk tot boven, 367 00:18:04,420 --> 00:18:08,370 is blijkbaar evenveel als trefwoord of speciale zin in deze taal 368 00:18:08,370 --> 00:18:09,062 genaamd C? 369 00:18:09,062 --> 00:18:09,770 PUBLIEK: Printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. MALAN: Printf. 371 00:18:10,728 --> 00:18:12,140 Dat betekent geformatteerde afdrukken. 372 00:18:12,140 --> 00:18:15,240 En dat is gewoon een fancy manier om te zeggen printf in C 373 00:18:15,240 --> 00:18:18,615 gaat om een ​​verklaring of een functie te zijn dat drukt iets naar het scherm. 374 00:18:18,615 --> 00:18:19,990 Wat betekent het afdrukken op het scherm? 375 00:18:19,990 --> 00:18:23,627 Hoe je het ook zeggen naar binnen citaten, de binnenkant van haakjes. 376 00:18:23,627 --> 00:18:25,460 Dus nogmaals, toegegeven, er is een heleboel dingen 377 00:18:25,460 --> 00:18:27,990 dat je moet in gedachten te houden, haakjes, aanhalingstekens, puntkomma's, 378 00:18:27,990 --> 00:18:28,656 en dit alles. 379 00:18:28,656 --> 00:18:30,600 Maar dat is een soort van naast de kwestie. 380 00:18:30,600 --> 00:18:33,660 Het interessant om mee te nemen voor nu is dat de inspraak blok in Scratch 381 00:18:33,660 --> 00:18:37,520 is vrijwel gelijk aan de printf statement in C. 382 00:18:37,520 --> 00:18:41,390 >> Intussen is de gele puzzelstukje tot boven, als groene vlag klikt, 383 00:18:41,390 --> 00:18:44,736 waarschijnlijk gelijk wat keyword hier? 384 00:18:44,736 --> 00:18:45,360 PUBLIEK: Main. 385 00:18:45,360 --> 00:18:46,359 DAVID J. MALAN: Dus belangrijkste. 386 00:18:46,359 --> 00:18:47,410 Misschien int, misschien leegte. 387 00:18:47,410 --> 00:18:51,280 Maar de belangrijkste soort klinkt als het is belangrijk, en het is inderdaad. 388 00:18:51,280 --> 00:18:54,080 Dus als groene vlag geklikt is, nogmaals, het puzzelstukje 389 00:18:54,080 --> 00:18:56,390 dat begint een hele Scratch programma. 390 00:18:56,390 --> 00:19:02,140 Maar we gaan nu beginnen bellen dat de belangrijkste, deze functie bekend als de belangrijkste. 391 00:19:02,140 --> 00:19:06,410 >> Nu ondertussen zullen we generaliseren dit als volgt. 392 00:19:06,410 --> 00:19:08,780 We kunnen noemen zeggen een functie. 393 00:19:08,780 --> 00:19:10,580 En het ziet er misschien dit specifiek als. 394 00:19:10,580 --> 00:19:11,770 Nou, hoe zit het met lussen? 395 00:19:11,770 --> 00:19:16,540 Als we willen beginnen met het omzetten of meer in Scratch vertalen naar C, 396 00:19:16,540 --> 00:19:19,400 dit ding hier blijkbaar net zegt "hello world" voor altijd. 397 00:19:19,400 --> 00:19:23,060 Dus als je deze associëren scripts met een kat in de Scratch, 398 00:19:23,060 --> 00:19:26,560 het is gewoon te blijven zeggen in een soort van cartoon zeepbel, 399 00:19:26,560 --> 00:19:29,922 "Hallo wereld, hallo wereld, hello wereld ", tot vervelens toe, voor altijd. 400 00:19:29,922 --> 00:19:33,130 Willen we iets dergelijks in te doen C, het gaat om een ​​beetje cryptisch kijken. 401 00:19:33,130 --> 00:19:35,463 Maar we kunnen hetzelfde bereiken leidt, zoals we zullen uiteindelijk 402 00:19:35,463 --> 00:19:36,861 erachter te komen, met syntax als deze. 403 00:19:36,861 --> 00:19:39,360 Ik ga printf opnieuw te gebruiken, want aan het eind van de dag 404 00:19:39,360 --> 00:19:42,040 Ik wil afdrukken "hallo wereld". 405 00:19:42,040 --> 00:19:45,610 En ik ben blijkbaar met behulp van een trefwoord dat is niet voor altijd. 406 00:19:45,610 --> 00:19:47,320 Het is in plaats daarvan het woord tijd. 407 00:19:47,320 --> 00:19:49,650 Maar net semantisch in Engels, terwijl soort 408 00:19:49,650 --> 00:19:52,120 suggereert een soort van lus of fietsen. 409 00:19:52,120 --> 00:19:55,070 >> Dus dat gebeurt te zijn het zoekwoord dat C gebruikt. 410 00:19:55,070 --> 00:20:00,700 En terwijl het waar is, waarom doet terwijl waar effectief voor altijd betekenen? 411 00:20:00,700 --> 00:20:04,240 Nou, terwijl, zoals we zullen binnenkort waardeer des te meer, 412 00:20:04,240 --> 00:20:08,140 heeft deze haakjes ernaast waar je een Booleaanse uitdrukking kan brengen. 413 00:20:08,140 --> 00:20:11,360 En zolang dat expressie waar is, deze code, 414 00:20:11,360 --> 00:20:14,750 zoals aangegeven tussen deze twee accolades zoals we ze zullen noemen, 415 00:20:14,750 --> 00:20:16,880 zal gewoon blijven opnieuw en weer te lopen. 416 00:20:16,880 --> 00:20:18,410 >> Zo waar is waar. 417 00:20:18,410 --> 00:20:20,900 Dus terwijl de echte middelen gewoon dit te doen voor altijd. 418 00:20:20,900 --> 00:20:23,480 Het is bijna een domme bouwen om jezelf te uiten. 419 00:20:23,480 --> 00:20:26,590 Maar er was geen eeuwig trefwoord in C. Er was tijdje. 420 00:20:26,590 --> 00:20:29,390 En er was een zeer eenvoudige Booleaanse uitdrukking als waar. 421 00:20:29,390 --> 00:20:32,210 En dus dit, we zullen zien, bereikt hetzelfde resultaat. 422 00:20:32,210 --> 00:20:33,890 >> Hoe anders zou je een lus uit te voeren? 423 00:20:33,890 --> 00:20:36,980 Nou, in Scratch je misschien harde code een bepaald aantal 424 00:20:36,980 --> 00:20:39,430 iteraties in de loop hier. 425 00:20:39,430 --> 00:20:43,210 En dat is dus precies wat we zou kunnen doen in deze versie van C, 426 00:20:43,210 --> 00:20:46,140 waarbij we een zogenaamde lus. 427 00:20:46,140 --> 00:20:49,850 En de lus hier gaat te herhalen, enigszins cryptisch, 428 00:20:49,850 --> 00:20:54,100 van de waarde 0 op maximaal aan maar minder dan 10. 429 00:20:54,100 --> 00:20:55,955 >> Nu variabelen in Scratch. 430 00:20:55,955 --> 00:20:57,830 Je zou niet hebben gehad gelegenheid om deze te gebruiken. 431 00:20:57,830 --> 00:21:02,516 Maar wat is het punt, in het algemeen, van een variabele hebben we vorige week zeggen? 432 00:21:02,516 --> 00:21:03,015 Wat is dat? 433 00:21:03,015 --> 00:21:03,780 >> PUBLIEK: Points. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. MALAN: Naar punt? 435 00:21:05,200 --> 00:21:05,700 Oh, punten. 436 00:21:05,700 --> 00:21:07,620 OK, het bijhouden van de punten, bijvoorbeeld in een spel. 437 00:21:07,620 --> 00:21:09,510 Of meer in het algemeen te doen wat de variabele? 438 00:21:09,510 --> 00:21:10,450 Wat is het nut ervan? 439 00:21:10,450 --> 00:21:10,825 >> PUBLIEK: Memory. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. MALAN: Ja, dus het geheugen. 441 00:21:11,750 --> 00:21:13,000 Het is voor iets op te slaan. 442 00:21:13,000 --> 00:21:17,336 En het soort domme visuele Ik gebruikte laatste keer was als deze glazen kom. 443 00:21:17,336 --> 00:21:19,710 En als we wilden slaan iets in een variabele, 444 00:21:19,710 --> 00:21:21,918 bijvoorbeeld op dit moment de waarde zes omdat 445 00:21:21,918 --> 00:21:23,450 zijn zes pingpongballen in hier. 446 00:21:23,450 --> 00:21:26,158 Het is gewoon een soort van opslag container die onder de motorkap 447 00:21:26,158 --> 00:21:30,030 wordt uitgevoerd met stukjes, 0 en 1, echter een computer gebeurt dat doen. 448 00:21:30,030 --> 00:21:32,900 >> Dus in Scratch, als we een variabele wilt hebben, 449 00:21:32,900 --> 00:21:34,840 kunnen we een oranje blok, zoals deze te gebruiken. 450 00:21:34,840 --> 00:21:37,050 We zullen dat teller noemen in dit geval. 451 00:21:37,050 --> 00:21:38,890 Ik geïnitialiseerd op 0. 452 00:21:38,890 --> 00:21:41,080 En wat ik dan doen? 453 00:21:41,080 --> 00:21:44,780 Altijd, zeggen teller, die als je speelt met die in Scratch, 454 00:21:44,780 --> 00:21:45,780 je zult net zien Scratch. 455 00:21:45,780 --> 00:21:49,920 De kat of wat kostuum je op dien zal het aantal spreken betrokken. 456 00:21:49,920 --> 00:21:52,840 >> Verandering teller door 1 is zoals verhogen met 1. 457 00:21:52,840 --> 00:21:56,580 En dus dit gaat tellen van wat so what? 458 00:21:56,580 --> 00:21:59,114 Van 0 til oneindig, of totdat Scratch pauzes, 459 00:21:59,114 --> 00:22:01,030 of totdat je een soort van verliezen interesse in het kijken naar 460 00:22:01,030 --> 00:22:02,650 hoe hoog hij eigenlijk kan tellen. 461 00:22:02,650 --> 00:22:04,800 >> Dus hoe kunnen we dit omzetten naar C? 462 00:22:04,800 --> 00:22:06,480 Het zal een beetje cryptisch kijken. 463 00:22:06,480 --> 00:22:08,896 Maar nogmaals, als je kijkt naar elkaar van deze lijnen individueel 464 00:22:08,896 --> 00:22:10,410 ze soort van line-up over het algemeen. 465 00:22:10,410 --> 00:22:13,526 Dus blijkbaar int gaat hebben een aantal speciale betekenis in C. 466 00:22:13,526 --> 00:22:14,400 We zullen zien dat het opnieuw. 467 00:22:14,400 --> 00:22:15,810 Even terzijde: het betekent integer. 468 00:22:15,810 --> 00:22:16,990 Dus het betekent gewoon nummer. 469 00:22:16,990 --> 00:22:18,920 Dus dat is de aard van de glazen kom ik wil, een 470 00:22:18,920 --> 00:22:21,120 die nummers op te slaan, niet pingpongballen. 471 00:22:21,120 --> 00:22:25,520 En ik ga het gelijk-teken te gebruiken daar om het toewijzen van een waarde van 0. 472 00:22:25,520 --> 00:22:29,440 Dus dat is vrij als set tegen 0, maar in C. 473 00:22:29,440 --> 00:22:32,840 >> Ondertussen, terwijl waar dat was gelijk, natuurlijk, voor altijd, 474 00:22:32,840 --> 00:22:35,980 ook al is het een beetje cryptisch, en dan de binnenkant van de accolades. 475 00:22:35,980 --> 00:22:39,188 En u kunt denken van deze accolades, waar u kunt typen op je toetsenbord, 476 00:22:39,188 --> 00:22:43,110 zo echt zijn als de kromming in deze gele lus blokken in Scratch. 477 00:22:43,110 --> 00:22:45,700 Het omvat meerdere regels code. 478 00:22:45,700 --> 00:22:48,120 >> Printf is het krijgen van een beetje eng nu, omdat ik 479 00:22:48,120 --> 00:22:51,120 zie niet alleen citeert haakjes. 480 00:22:51,120 --> 00:22:55,160 Maar wat nieuw is syntactisch in dit voorbeeld? 481 00:22:55,160 --> 00:22:57,300 Er is een procent d. 482 00:22:57,300 --> 00:22:58,551 En dan backslash n is er. 483 00:22:58,551 --> 00:23:00,883 We zagen dat eerder, zelfs hoewel ik niet vermelden. 484 00:23:00,883 --> 00:23:01,886 Dan is er een komma. 485 00:23:01,886 --> 00:23:03,010 En dan is er nog een teller. 486 00:23:03,010 --> 00:23:05,010 >> Maar we zullen zien in slechts een ogenblik dat dit slechts 487 00:23:05,010 --> 00:23:09,080 een standaard manier om te zeggen druk een "Decimaal getal," quote, unquote, 488 00:23:09,080 --> 00:23:10,500 een decimaal getal. 489 00:23:10,500 --> 00:23:13,370 Maar ik ga je later vertellen wat dat decimaal getal is. 490 00:23:13,370 --> 00:23:16,835 Dus het feit dat er een komma in deze lijn gezegde printf, 491 00:23:16,835 --> 00:23:18,710 betekent ga je gang en afdrukken een decimaal getal. 492 00:23:18,710 --> 00:23:23,110 Oh, en door de manier, het nummer is ongeacht de waarde van deze variabele. 493 00:23:23,110 --> 00:23:25,880 En dus om dit meer te maken duidelijk, zullen we een voorbeeld zien 494 00:23:25,880 --> 00:23:30,930 het duurde niet lang met precies printf in de context van echte C programma. 495 00:23:30,930 --> 00:23:33,472 >> Nu alleen in te pakken wat Deze constructen. 496 00:23:33,472 --> 00:23:36,680 Booleaanse uitdrukkingen, hebt u wellicht niet gelegenheid om deze te gebruiken in uw programma 497 00:23:36,680 --> 00:23:39,450 maar je misschien heel goed, vooral als gebruiksomstandigheden. 498 00:23:39,450 --> 00:23:43,460 En dus deze twee voorbeelden uit Scratch bedoel als x kleiner dan y, 499 00:23:43,460 --> 00:23:48,770 of als x kleiner is dan y en y minder dan z, hoe kunnen we dat vertalen? 500 00:23:48,770 --> 00:23:50,810 >> Nou, in C is het gewoon gaan uitzien. 501 00:23:50,810 --> 00:23:55,300 Iets cryptisch, meer haakjes wat rare ampersands, maar fundamenteel 502 00:23:55,300 --> 00:23:59,160 de ideeën zijn zo simpel als ze zijn in het puzzelstukje wereld. 503 00:23:59,160 --> 00:24:02,690 We zijn gewoon te controleren of er iets lager is dan iets anders. 504 00:24:02,690 --> 00:24:03,910 >> Hoe zit het met de voorwaarden? 505 00:24:03,910 --> 00:24:09,710 In een notendop in het Engels, wat dit doet brok van Scratch code weet zou je dan zeggen? 506 00:24:09,710 --> 00:24:11,050 >> PUBLIEK: Vergelijkt twee getallen. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. MALAN: Vergelijkt twee getallen en als x kleiner is dan y 508 00:24:13,760 --> 00:24:14,860 het zegt zoveel. 509 00:24:14,860 --> 00:24:18,080 Als x is groter dan y het zo veel, anders zegt 510 00:24:18,080 --> 00:24:20,740 als x gelijk is aan y het zegt zoveel. 511 00:24:20,740 --> 00:24:22,180 Nu waar heb x en y vandaan? 512 00:24:22,180 --> 00:24:22,680 Wie weet. 513 00:24:22,680 --> 00:24:25,380 Deze brok van Scratch code is uit de context. 514 00:24:25,380 --> 00:24:29,050 Maar wat wij willen doen is nu te vertalen dit voor slechts een moment om te zien. 515 00:24:29,050 --> 00:24:31,660 >> Dus als je je comfortabel krijgen deze week in Probleemverzameling 516 00:24:31,660 --> 00:24:34,190 0 spelen in deze wereld aan de linkerkant, te realiseren 517 00:24:34,190 --> 00:24:36,940 dat de ideeën niet veranderen deze week of volgende of daarbuiten. 518 00:24:36,940 --> 00:24:38,690 We gaan gewoon naar beginnen met het schrijven dingen 519 00:24:38,690 --> 00:24:41,240 op een andere manier met onze toetsenbord in plaats van onze muis. 520 00:24:41,240 --> 00:24:44,577 >> Als x minder is dan y, en er is wat tussen haakjes er, 521 00:24:44,577 --> 00:24:47,160 dan is er een aantal accolades nogmaals soort te kapselen 522 00:24:47,160 --> 00:24:48,970 net als de gele puzzelstukjes te doen. 523 00:24:48,970 --> 00:24:53,000 En ik ga printf x minder dan y enzovoort. 524 00:24:53,000 --> 00:24:56,540 >> Wat leuk is aan C, zoals je hier kunt zien, 525 00:24:56,540 --> 00:25:00,480 is dat je niet deze nesten krijgen, nesten, nesten, dat is noodzakelijk 526 00:25:00,480 --> 00:25:02,220 gaat om uw code te duwen naar rechts. 527 00:25:02,220 --> 00:25:04,990 U kunt in plaats daarvan hebben alles lineup dit netjes wilt. 528 00:25:04,990 --> 00:25:08,960 Maar dat is slechts een esthetische detail zullen we weer zien voordat lang. 529 00:25:08,960 --> 00:25:09,660 >> Oke. 530 00:25:09,660 --> 00:25:13,290 Dus dat brengt ons terug naar Deze cryptische kijken programma. 531 00:25:13,290 --> 00:25:15,180 Laten we eigenlijk wat code schrijven. 532 00:25:15,180 --> 00:25:16,830 Nu hoe ga je over het schrijven van code? 533 00:25:16,830 --> 00:25:21,310 Al die jaren dat u in handen een Mac of pc, desktop of laptop, 534 00:25:21,310 --> 00:25:24,520 je daadwerkelijk hebt gehad de mogelijkheid om te beginnen met het schrijven van programmacode. 535 00:25:24,520 --> 00:25:27,050 Maar je bent waarschijnlijk missen een speciaal soort programma. 536 00:25:27,050 --> 00:25:28,470 U kunt zeker code schrijven. 537 00:25:28,470 --> 00:25:30,740 Maar je kunt niet per se, uit de doos, 538 00:25:30,740 --> 00:25:34,210 zetten dat de broncode in object code, 0 en 1 539 00:25:34,210 --> 00:25:35,619 zonder wat op je computer? 540 00:25:35,619 --> 00:25:36,410 PUBLIEK: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. MALAN: Dus een compiler, rechts. 542 00:25:37,630 --> 00:25:39,730 Nu de meeste van jullie waarschijnlijk heb een compiler niet de eigenaar, 543 00:25:39,730 --> 00:25:41,259 heb nog nooit een compiler gedownload. 544 00:25:41,259 --> 00:25:44,300 Maar je zult zien je kunt het downloaden zoals de meeste andere stuk software. 545 00:25:44,300 --> 00:25:47,470 In de wereld van Mac OS, zou je downloaden of reeds gedownload 546 00:25:47,470 --> 00:25:50,437 iets genaamd Xcode of GCC of Clang. 547 00:25:50,437 --> 00:25:52,270 Als je uit de Windows wereld die je misschien 548 00:25:52,270 --> 00:25:56,190 Visual Studio hebt gedownload, Visual Basic, omgevingen, zoals dat. 549 00:25:56,190 --> 00:25:59,200 Er is tientallen compilers deze dagen dat je zou kunnen gebruiken. 550 00:25:59,200 --> 00:26:01,940 Maar de korte van het hier is dat het lastig zou zijn 551 00:26:01,940 --> 00:26:04,480 en, eerlijk gezegd, een technologisch nachtmerrie voor de honderden 552 00:26:04,480 --> 00:26:07,680 personen met verschillende computer configuraties om alle 553 00:26:07,680 --> 00:26:09,800 hun machines te configureren op dezelfde manier 554 00:26:09,800 --> 00:26:11,700 zodat we kunnen allemaal op dezelfde pagina. 555 00:26:11,700 --> 00:26:15,240 >> Dus wat we in plaats daarvan doen in CS50 is geven wij u 556 00:26:15,240 --> 00:26:18,349 een standaard omgeving, een Linux omgeving die 557 00:26:18,349 --> 00:26:20,140 ga een beetje kijken iets als dit. 558 00:26:20,140 --> 00:26:22,980 Je zult meer van dit in het zien Probleem Set 1 specificatie die 559 00:26:22,980 --> 00:26:25,330 zal online gaan deze vrijdagavond. 560 00:26:25,330 --> 00:26:28,360 >> En wat dit betekent is dat u voortaan 561 00:26:28,360 --> 00:26:32,060 zullen in staat zijn om downloaden en installeren van een programma 562 00:26:32,060 --> 00:26:33,650 riep de CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 En je gaat downloaden en een ander programma genaamd installeren 564 00:26:36,275 --> 00:26:40,300 een hypervisor, dat is gewoon een mooie manier om dit te bereiken. 565 00:26:40,300 --> 00:26:44,600 Of u nu eigenaar bent van een Mac of pc of een Linux-computer of een Solaris-computer, 566 00:26:44,600 --> 00:26:46,830 of wat gekke operating waarop je draait, 567 00:26:46,830 --> 00:26:49,820 je gaat naar een programma te downloaden heet de hypervisor dat is 568 00:26:49,820 --> 00:26:53,350 ga naar de CS50 run Toestel op uw computer 569 00:26:53,350 --> 00:26:55,430 maakt niet uit wat uw besturingssysteem is. 570 00:26:55,430 --> 00:27:00,640 Een hypervisor met andere woorden zet onze spullen naar welke taal dan ook, 571 00:27:00,640 --> 00:27:03,850 wat instructies van uw eigen computer begrijpt. 572 00:27:03,850 --> 00:27:04,962 >> Dus dit is een gelaagdheid. 573 00:27:04,962 --> 00:27:06,920 En nogmaals, dit is een soort thematische in computer 574 00:27:06,920 --> 00:27:08,722 wetenschap, het gebouw op de top van de dingen. 575 00:27:08,722 --> 00:27:09,680 Je zou kunnen hebben Windows. 576 00:27:09,680 --> 00:27:10,710 Misschien heb je Mac OS. 577 00:27:10,710 --> 00:27:12,960 Maar vanaf volgende week ben je gaan te hebben gedownload 578 00:27:12,960 --> 00:27:14,980 een vrij stuk software heet de hypervisor. 579 00:27:14,980 --> 00:27:17,800 Je gaat een stuk te hebben gedownload van software genaamd de CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Dat gaat draaien in de hypervisor, die zal draaien op uw computer. 581 00:27:21,050 --> 00:27:23,030 En het eindresultaat dat ieder van ons zal 582 00:27:23,030 --> 00:27:26,220 hebben een eenvoudig venster zoals deze op uw Mac of pc 583 00:27:26,220 --> 00:27:30,160 dat geeft ons de illusie van alle draait hetzelfde besturingssysteem, 584 00:27:30,160 --> 00:27:32,800 zonder andere impact op uw computer. 585 00:27:32,800 --> 00:27:34,870 En je kan het volledige scherm en het wezen gedragen 586 00:27:34,870 --> 00:27:37,550 alsof u werkt met een besturingssysteem genaamd Linux, 587 00:27:37,550 --> 00:27:40,270 dat is wat de CS50 Apparaat is gebaseerd op. 588 00:27:40,270 --> 00:27:42,930 >> Dus laten we eigenlijk dit gebruiken nu om een ​​programma te schrijven. 589 00:27:42,930 --> 00:27:45,450 U kunt een programma schrijven met behulp van Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 U kunt een programma schrijven TextEdit, of Notepad, 591 00:27:48,160 --> 00:27:51,880 of WordPad, of vrijwel elk woord verwerking programma die je ooit hebt gebruikt. 592 00:27:51,880 --> 00:27:55,174 Maar de realiteit is dat je niet moet Gebruik echt een van deze programma's. 593 00:27:55,174 --> 00:27:57,840 Je moet zeker niet gebruiken iets als Microsoft Word, die 594 00:27:57,840 --> 00:28:01,120 heeft gewaagde facing en cursief, en groter lettertypen en kleinere lettertypen, 595 00:28:01,120 --> 00:28:03,560 omdat de computer niet zorg over een van die. 596 00:28:03,560 --> 00:28:05,600 Alle computer gaat de zorg over is 597 00:28:05,600 --> 00:28:09,040 Engels als instructies geschreven in C. 598 00:28:09,040 --> 00:28:12,050 >> Dus wat we zullen doen binnen van de CS50 Appliance 599 00:28:12,050 --> 00:28:14,290 wordt vrijelijk gebruik maken van een programma beschikbaar zijn, en het is 600 00:28:14,290 --> 00:28:17,360 voorgemonteerde deze apparaat, genaamd Gedit. 601 00:28:17,360 --> 00:28:22,280 En Gedit is gewoon een super eenvoudige teksteditor, zoals Mac OS's TextEdit 602 00:28:22,280 --> 00:28:26,200 zoals Windows Notepad dat gaat kijk een beetje zoiets als dit. 603 00:28:26,200 --> 00:28:28,910 >> Dus laten we eigenlijk niet kijken naar dia's van deze. 604 00:28:28,910 --> 00:28:32,580 Maar laten we ook daadwerkelijk in de omgeving zelf. 605 00:28:32,580 --> 00:28:36,090 Ik ga om te gaan en aanmelden, in deze andere venster, 606 00:28:36,090 --> 00:28:40,910 mijn CS50 Appliance, die ik heb vooraf geïnstalleerd op mijn laptop hier. 607 00:28:40,910 --> 00:28:43,771 >> Merk op dat, zoals Windows en Mac OS, het heeft een aantal menu's. 608 00:28:43,771 --> 00:28:45,520 Net zoals Windows het brengt neer er in plaats 609 00:28:45,520 --> 00:28:47,020 van Mac OS, dat het daar neerzet. 610 00:28:47,020 --> 00:28:48,930 Maar de realiteit is dat het allerlei hetzelfde. 611 00:28:48,930 --> 00:28:50,770 En hier is een geheel bos van software. 612 00:28:50,770 --> 00:28:51,770 Er is Dropbox. 613 00:28:51,770 --> 00:28:54,780 Er is een hele hoop accessoires, grafische programma's die we zullen 614 00:28:54,780 --> 00:28:56,430 later te gebruiken in de term voor probleem sets. 615 00:28:56,430 --> 00:28:59,650 Er is een web-browser ingebouwd, zodat dat dit een volwaardige computer 616 00:28:59,650 --> 00:29:01,240 binnenkant van een computer. 617 00:29:01,240 --> 00:29:04,170 >> Maar ik ga dit klik meest linkse witte pictogram hier, 618 00:29:04,170 --> 00:29:05,890 dat is het icoon voor Gedit. 619 00:29:05,890 --> 00:29:09,650 En het gaat om een ​​venster te openen dat drie panelen te, 620 00:29:09,650 --> 00:29:12,590 een linker, een bovenste en een onderste. 621 00:29:12,590 --> 00:29:16,071 >> Nu is het in deze top juiste is dat Ik ga eigenlijk wat code schrijven. 622 00:29:16,071 --> 00:29:16,820 Dus laten we dit doen ,. 623 00:29:16,820 --> 00:29:19,040 Ik ga naar Bestand, Opslaan. 624 00:29:19,040 --> 00:29:22,100 En je zou niet ooit heb gezien dit venster heen. 625 00:29:22,100 --> 00:29:23,620 Maar dit is als Mac OS of Windows. 626 00:29:23,620 --> 00:29:25,490 Het is gewoon een raam met alle folders 627 00:29:25,490 --> 00:29:27,290 dat ik de binnenkant van deze computer. 628 00:29:27,290 --> 00:29:30,320 >> En ik ga sparen het bestand als hello.c. 629 00:29:30,320 --> 00:29:32,690 En ik ga om te gaan vooruit en klik op Opslaan. 630 00:29:32,690 --> 00:29:36,364 En nu merk ik heb een tab linksboven genaamd hello.c. 631 00:29:36,364 --> 00:29:38,280 Dus waarschijnlijk vrij vertrouwd, zelfs als u hebt niet 632 00:29:38,280 --> 00:29:40,240 eerder gebruikt dit bijzondere programma. 633 00:29:40,240 --> 00:29:44,890 >> En nu ga ik te typen in de vrij cryptische reeks van commando's 634 00:29:44,890 --> 00:29:46,360 dat zagen we een moment geleden. 635 00:29:46,360 --> 00:29:49,330 Omvatten, standaard I / O.h. 636 00:29:49,330 --> 00:29:50,600 Meer daarover binnenkort. 637 00:29:50,600 --> 00:29:55,670 Int main leegte, geopend krullend brace, gesloten accolade. 638 00:29:55,670 --> 00:30:01,570 En dan de binnenkant van daar denk ik waar we hadden "hallo wereld", puntkomma. 639 00:30:01,570 --> 00:30:03,100 En nu slaan. 640 00:30:03,100 --> 00:30:08,780 >> Dus dit is een programma geschreven in C, geschreven, dus in de broncode. 641 00:30:08,780 --> 00:30:10,720 Maar ik kan niet alleen draaien dit programma. 642 00:30:10,720 --> 00:30:13,390 Ik wil dat soort verdubbelen Klik op een icoon ergens, 643 00:30:13,390 --> 00:30:16,390 maar andere geen pictogram bestaat dan het broncodebestand. 644 00:30:16,390 --> 00:30:20,359 Wat, nogmaals, het proces nu Ik moet dit bestand uit te voeren door middel van? 645 00:30:20,359 --> 00:30:21,150 PUBLIEK: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. MALAN: Dus een compiler. 647 00:30:22,399 --> 00:30:24,890 Dus op verschillende computers kunt doen dit op verschillende manieren. 648 00:30:24,890 --> 00:30:27,480 Maar wat we hier hebben gedaan in de CS50 Appliance dat is 649 00:30:27,480 --> 00:30:31,260 representatief voor hoe je zou doen op vele verschillende systemen, 650 00:30:31,260 --> 00:30:34,036 wordt ik gewoon naar voert een commando genaamd make. 651 00:30:34,036 --> 00:30:35,660 En make gaat letterlijk om dat te doen. 652 00:30:35,660 --> 00:30:36,640 Maak me een programma. 653 00:30:36,640 --> 00:30:39,060 >> Dus zorg gaat uitvoeren van een compiler voor mij. 654 00:30:39,060 --> 00:30:42,160 En de naam van het programma Ik wil maken is hello. 655 00:30:42,160 --> 00:30:43,510 Nu maken is een programma. 656 00:30:43,510 --> 00:30:47,170 En zorg is slim genoeg om beseffen dat als ik zeg maken hello, 657 00:30:47,170 --> 00:30:50,980 het zal automatisch zoeken naar een bestand genaamd hello.c 658 00:30:50,980 --> 00:30:53,420 gewoon omdat dat is de manier waarop het is geconfigureerd. 659 00:30:53,420 --> 00:31:00,300 >> Dus als ik nu druk op Enter hier, dit crazy cryptische lijn ben net uitgevoerd. 660 00:31:00,300 --> 00:31:02,720 En geloof me, voordat lang, binnen enkele dagen, 661 00:31:02,720 --> 00:31:05,590 u zult begrijpen wat er allemaal van die nonsense middelen. 662 00:31:05,590 --> 00:31:11,150 Maar voor nu, weet alleen dat te maken getriggerde uitvoering van een compiler. 663 00:31:11,150 --> 00:31:13,290 Met andere woorden, vastgesteld een compiler op mijn computer 664 00:31:13,290 --> 00:31:14,820 dat vooraf geïnstalleerde op de CS50 Appliance 665 00:31:14,820 --> 00:31:16,560 dat we overhandigen aan u in Probleem Set 1. 666 00:31:16,560 --> 00:31:20,990 En toen nam hello.c als input, en blijkbaar geproduceerd 667 00:31:20,990 --> 00:31:23,040 0 en 1 als output. 668 00:31:23,040 --> 00:31:29,410 >> En standaard wat het doet is het bespaart die 0 en 1 in een bestand met de naam hello. 669 00:31:29,410 --> 00:31:33,180 En hoewel deze syntaxis ook zou nieuw voor u zijn, simpelweg door te zeggen dot 670 00:31:33,180 --> 00:31:37,110 slash hallo gaat het worden middelen waarmee ik dit programma uit te voeren. 671 00:31:37,110 --> 00:31:40,360 >> Voor nu en voor ten minste een paar weken, bijna alle van de programma's 672 00:31:40,360 --> 00:31:44,230 We schrijven zullen zijn in zwarte en witte tekst ramen. 673 00:31:44,230 --> 00:31:47,006 Geen muizen, geen klikken, geen ramen, geen pictogrammen. 674 00:31:47,006 --> 00:31:49,630 We gaan om het simpel te houden en zich richten op de achterliggende ideeën 675 00:31:49,630 --> 00:31:52,490 aanvankelijk voordat we iets hoger niveau, bijvoorbeeld 676 00:31:52,490 --> 00:31:56,410 zoals de break out spel dat we gesproken over in de eerste les van vorige week. 677 00:31:56,410 --> 00:32:00,820 >> Dus toen ik op Enter hier, het is equivalent in een text-only omgeving 678 00:32:00,820 --> 00:32:03,272 te dubbelklikken op een icoon genaamd hello. 679 00:32:03,272 --> 00:32:05,480 Wat wil je verwachten gebeuren als ik druk op Enter dan? 680 00:32:05,480 --> 00:32:07,120 >> PUBLIEK: Het zal "hallo wereld". Afdrukken 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. MALAN: Hopelijk het zal "hallo wereld". afdrukken 682 00:32:10,000 --> 00:32:11,370 En inderdaad het deed. 683 00:32:11,370 --> 00:32:13,690 Nu er is al een aantal cryptische syntax hier. 684 00:32:13,690 --> 00:32:15,950 Laten we terugspoelen voor slechts een moment en kijken of we 685 00:32:15,950 --> 00:32:19,530 kan niet starten inferring gewoon door knutselen, proberen en falen, 686 00:32:19,530 --> 00:32:21,130 over wat er aan de hand hier. 687 00:32:21,130 --> 00:32:23,609 Wat als ik te ontdoen van de backslash n? 688 00:32:23,609 --> 00:32:25,650 Nu sommigen van jullie die hebben geprogrammeerd voor waarschijnlijk 689 00:32:25,650 --> 00:32:27,054 weet meteen wat dat betekent. 690 00:32:27,054 --> 00:32:29,220 Maar voor degenen onder u die hebben nooit geprogrammeerd 691 00:32:29,220 --> 00:32:34,052 tenminste denk je bij jezelf wat er gaande te veranderen toen ik opnieuw uitvoeren van dit programma? 692 00:32:34,052 --> 00:32:37,010 Dus ik ga terug naar beneden te gaan naar mijn kleine zwarte en witte venster, waarin 693 00:32:37,010 --> 00:32:39,290 is het venster waarin Ik kan dit compileren. 694 00:32:39,290 --> 00:32:41,130 Ik ga hello opnieuw te compileren. 695 00:32:41,130 --> 00:32:43,520 We gaan om hetzelfde te zien cryptische reeks opdrachten. 696 00:32:43,520 --> 00:32:45,719 En ik ga dot slash doen hello. 697 00:32:45,719 --> 00:32:48,260 En nu iemand, als je dat zou doen, die nog nooit eerder heeft geprogrammeerd, 698 00:32:48,260 --> 00:32:49,770 wat zou deze keer anders zijn? 699 00:32:49,770 --> 00:32:50,020 Yeah. 700 00:32:50,020 --> 00:32:51,840 >> Publiek: Het zal niet stoppen printing "hallo wereld". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. MALAN: Het gaat om-- spijt? 702 00:32:52,660 --> 00:32:54,210 >> Publiek: Het zal niet stoppen met printen? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. MALAN: Het zal niet stoppen met afdrukken "hallo wereld". 704 00:32:55,810 --> 00:32:56,560 Dus geen slecht idee. 705 00:32:56,560 --> 00:32:58,633 Andere ideeën? 706 00:32:58,633 --> 00:32:59,132 Yeah. 707 00:32:59,132 --> 00:33:00,060 >> PUBLIEK: Foutmelding? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. MALAN: Fout bericht, OK, zijn. 709 00:33:01,750 --> 00:33:02,250 Wat anders? 710 00:33:02,250 --> 00:33:05,479 Publiek: Het kan afdrukken van de beugel met de puntkomma ook? 711 00:33:05,479 --> 00:33:08,270 DAVID J. MALAN: Mogelijk drukt de beugel met de puntkomma ook. 712 00:33:08,270 --> 00:33:11,950 Dus misschien is dat backslash dan is enige soort terminous dat is belangrijk. 713 00:33:11,950 --> 00:33:14,860 Elke andere gedachten? 714 00:33:14,860 --> 00:33:16,412 >> Dus alle goede ideeën. 715 00:33:16,412 --> 00:33:18,370 En in feite gaat het tot een foutmelding. 716 00:33:18,370 --> 00:33:20,400 Dat is waarschijnlijk het meest waarschijnlijk het antwoord in het algemeen 717 00:33:20,400 --> 00:33:22,420 voor de komende weken als we leren om hier te coderen. 718 00:33:22,420 --> 00:33:27,680 >> Maar voor nu vergeet niet dat computers alleen doen wat je ze vertelt te doen. 719 00:33:27,680 --> 00:33:30,400 Net als de belachelijke pinda boter en jam bijvoorbeeld. 720 00:33:30,400 --> 00:33:33,860 Onze menselijke computers werden pas verondersteld om te doen wat je ze verteld om te doen. 721 00:33:33,860 --> 00:33:36,250 Dus in dit geval, als u hoeft de computer niet te vertellen 722 00:33:36,250 --> 00:33:41,190 dat knipperende cursor naar de volgende regel, het is niet van plan om het te doen. 723 00:33:41,190 --> 00:33:45,390 Dus toen ik dit programma uit te voeren nu, het verschil merken. 724 00:33:45,390 --> 00:33:46,900 >> Ziet eruit als een bug. 725 00:33:46,900 --> 00:33:49,190 Het is een esthetische bug, misschien. 726 00:33:49,190 --> 00:33:53,310 Maar wat anders is aan dit als functie van de laatste natuurlijk? 727 00:33:53,310 --> 00:33:53,810 Yeah. 728 00:33:53,810 --> 00:33:54,920 >> Publiek: Het duurde een nieuwe regel niet. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. MALAN: Het heeft niet een nieuwe regel te maken. 730 00:33:56,586 --> 00:33:58,740 Nu degenen onder u die hebben misschien maakte webpagina's 731 00:33:58,740 --> 00:34:01,910 was, kan jij het BR-tag of de paragraaf tag, 732 00:34:01,910 --> 00:34:03,120 zeer vergelijkbaar in de geest. 733 00:34:03,120 --> 00:34:06,680 Een web browser zal je negeren totdat u precies vertellen wat te doen. 734 00:34:06,680 --> 00:34:10,020 Evenzo is een taal zoals C Alleen gaan doen wat je hem vertelt wat te doen. 735 00:34:10,020 --> 00:34:12,730 >> Dus de reden dat al deze voorbeelden, 736 00:34:12,730 --> 00:34:15,350 dusver hebben dergelijke terloops had dit backslash 737 00:34:15,350 --> 00:34:18,560 daar, dat is het middel waardoor je jezelf te uiten 738 00:34:18,560 --> 00:34:21,380 als een nieuwe regel karakter, zo te zeggen. 739 00:34:21,380 --> 00:34:26,219 En je kunt soort waarderen, misschien, dat dit soort dom zou kijken 740 00:34:26,219 --> 00:34:27,070 als niets anders. 741 00:34:27,070 --> 00:34:29,150 Als ik een nieuwe lijn, net raken van Enter en vervolgens soort 742 00:34:29,150 --> 00:34:32,219 van het afslachten van de code zoals die moet niet je echt wrijf de juiste manier. 743 00:34:32,219 --> 00:34:33,830 En zelfs als je dat niet doet echt zorg op dit punt, 744 00:34:33,830 --> 00:34:35,830 zul je je realiseren dat Dit is niet een bijzonder 745 00:34:35,830 --> 00:34:37,870 knap stukje code. 746 00:34:37,870 --> 00:34:39,969 >> En dus wat de wereld besloot jaren geleden is 747 00:34:39,969 --> 00:34:43,420 dat als je wilt op de vragen cursor op een nieuwe regel expliciet, 748 00:34:43,420 --> 00:34:46,332 je moet expliciet zeggen nieuwe lijn, backslash n. 749 00:34:46,332 --> 00:34:48,040 En er is een andere symbolen zoals dat. 750 00:34:48,040 --> 00:34:50,719 Maar voor nu zullen we gewoon richten op backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Laten we nu te maken van het programma een beetje meer interessant. 752 00:34:53,790 --> 00:34:59,200 Ik ga om te gaan en dit keer openen van een nieuw bestand. 753 00:34:59,200 --> 00:35:02,520 Ik ga dit zo hello-1.c redden. 754 00:35:02,520 --> 00:35:05,540 En gewoon voor de kick, ik ga gaan zet het in mijn Dropbox-map. 755 00:35:05,540 --> 00:35:09,030 >> Zoals u zult zien in de CS50 documentatie voor het apparaat, 756 00:35:09,030 --> 00:35:11,210 later deze week voor Problem Set 1, we moedigen 757 00:35:11,210 --> 00:35:13,230 je Dropbox te gebruiken of sommige vergelijkbare dienst, 758 00:35:13,230 --> 00:35:15,430 omdat dan al je code's gaat worden automatisch een backup gemaakt. 759 00:35:15,430 --> 00:35:17,830 En dat is dus de reden waarom ik heb gegaan in deze map hier. 760 00:35:17,830 --> 00:35:20,230 >> En nu ga ik naar een schrijven enigszins ander programma. 761 00:35:20,230 --> 00:35:24,740 Omvatten, standaard I / O.h, int main leegte. 762 00:35:24,740 --> 00:35:29,660 En dan hier printf, hallo wereld, dat is precies hetzelfde als voorheen. 763 00:35:29,660 --> 00:35:32,450 >> Maar nu wil ik iets af te drukken dat is een beetje anders. 764 00:35:32,450 --> 00:35:34,800 Ik wil om uit te printen, zeggen: "Hallo, David." 765 00:35:34,800 --> 00:35:37,590 Oke, zo duidelijk, het moet hopelijk 766 00:35:37,590 --> 00:35:40,360 het geval dat als ik opnieuw compileren Dit programma, start het opnieuw, 767 00:35:40,360 --> 00:35:41,840 het gaat om te zeggen "hallo, David." 768 00:35:41,840 --> 00:35:45,160 >> Maar wat als ik wil introduceren Dit soort variabele 769 00:35:45,160 --> 00:35:49,240 de notie van een container dat gaat op te slaan D-een-v-i-d en niet moeilijk code het 770 00:35:49,240 --> 00:35:50,600 in mijn programma. 771 00:35:50,600 --> 00:35:53,430 Tja, wat als ik start iets als dit te doen? 772 00:35:53,430 --> 00:35:57,120 >> String s, dus dit is een variabele. 773 00:35:57,120 --> 00:36:00,250 Als u wilt dat een string, alias een woord of een zin. 774 00:36:00,250 --> 00:36:03,485 Een opeenvolging van karakters is wat we in de programmering noemen een string. 775 00:36:03,485 --> 00:36:06,610 We gaan gewoon generiek oproep het s, want het is een mooie eenvoudige naam. 776 00:36:06,610 --> 00:36:08,010 Maar ik kon het even noemen. 777 00:36:08,010 --> 00:36:12,920 >> Ik ga naar een string s gelijken zeggen citaat unquote "David," puntkomma. 778 00:36:12,920 --> 00:36:18,330 En nu wil ik invoegen D-een-v-i-d in wat ik ben druk. 779 00:36:18,330 --> 00:36:23,720 En voordat we zagen een teaser op het scherm van een aantal speciale syntax 780 00:36:23,720 --> 00:36:26,050 dat liet ons toe om substituut in een waarde. 781 00:36:26,050 --> 00:36:29,250 Wat was de speciale symbool een paar slides geleden? 782 00:36:29,250 --> 00:36:30,040 >> Zo procent. 783 00:36:30,040 --> 00:36:33,830 Op dat moment was het percentage d voor decimaal nummer. 784 00:36:33,830 --> 00:36:35,850 Dat niet echt relevant lijken hier. 785 00:36:35,850 --> 00:36:38,650 Blijkt er's een ander percentage symbool, 786 00:36:38,650 --> 00:36:42,810 die percent s, wat staat voor een tijdelijke aanduiding voor een string. 787 00:36:42,810 --> 00:36:49,350 >> Dus nu, heel eenvoudig, ik ben ga maken hello-1, 788 00:36:49,350 --> 00:36:54,210 omdat dit bestand heet hello-1.c, en druk op Enter. 789 00:36:54,210 --> 00:36:56,230 En Ik heb het verknald. 790 00:36:56,230 --> 00:36:57,394 Wat is er aan de hand? 791 00:36:57,394 --> 00:37:00,560 Nou, hier is waar we moeten beginnen met het waarderen dat we in deze opdracht 792 00:37:00,560 --> 00:37:02,810 line omgeving, dit tekst alleen milieu. 793 00:37:02,810 --> 00:37:06,114 Er is geen op te klikken zoals mappen nu. 794 00:37:06,114 --> 00:37:07,280 En denk terug een moment geleden. 795 00:37:07,280 --> 00:37:10,740 In welke map heb ik gezegd Ik spaarde mijn code? 796 00:37:10,740 --> 00:37:11,657 Dus de Dropbox-map. 797 00:37:11,657 --> 00:37:12,989 Kon zijn iets geroepen. 798 00:37:12,989 --> 00:37:14,530 Maar het gebeurt te noemen Dropbox. 799 00:37:14,530 --> 00:37:18,380 Dus heb ik een of andere manier moet dubbelklikken op dat Dropbox-map om te krijgen 800 00:37:18,380 --> 00:37:21,657 erin en krijgen op mijn code genaamd hello-1.c. 801 00:37:21,657 --> 00:37:24,490 In feite, laat me gaan en zoveel mogelijk te beperken dit venster voor slechts een moment. 802 00:37:24,490 --> 00:37:27,560 Net zoals Windows en Mac OS, Er zijn mappen in Linux. 803 00:37:27,560 --> 00:37:29,410 Er zijn folders in de CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 Het is precies goed nu zijn we beperken ons tot deze tekst omgeving. 805 00:37:32,380 --> 00:37:34,700 >> Maar als ik dubbelklik op Dropbox, ziet er 806 00:37:34,700 --> 00:37:37,210 is het bestand dat ik wil compileren. 807 00:37:37,210 --> 00:37:41,430 Maar ik heb dit zwart-wit terminal venster, bij wijze van spreken. 808 00:37:41,430 --> 00:37:45,750 Maar ik moet dan ook te bewegen in die map of directory. 809 00:37:45,750 --> 00:37:48,290 Dus niet alledaagse, maar je zult ook gebruikte om dit te krijgen. 810 00:37:48,290 --> 00:37:50,430 >> In de wereld van Linux, die weer is het bedrijfsresultaat 811 00:37:50,430 --> 00:37:54,860 systeem we lopen binnenkant van de CS50 Apparaat, is er een commando genaamd CD. 812 00:37:54,860 --> 00:37:58,310 Wat betekent dat ik kan CD, ruimte, Dropbox doen. 813 00:37:58,310 --> 00:37:59,900 CD, change directory. 814 00:37:59,900 --> 00:38:00,400 Rechts. 815 00:38:00,400 --> 00:38:02,890 Terug in de dag wanneer mensen waren uitvinden van computers en exploitatie 816 00:38:02,890 --> 00:38:05,806 systemen als dit, wilden ze typt u de minste toetsaanslagen mogelijk. 817 00:38:05,806 --> 00:38:08,760 Dus de gemakkelijkste manier om te zeggen change directory was CD. 818 00:38:08,760 --> 00:38:13,910 >> Dus als ik hit CD, ruimte Dropbox, let op wat er hier veranderd. 819 00:38:13,910 --> 00:38:16,480 Binnenkant van haakjes Het apparaat is een soort 820 00:38:16,480 --> 00:38:19,360 van humoring mij en herinneren me waar ik ben. 821 00:38:19,360 --> 00:38:21,480 Dus de geopende map is Dropbox. 822 00:38:21,480 --> 00:38:24,950 Als ik nu typ ls voor lijst, nogmaals beknopt, 823 00:38:24,950 --> 00:38:27,540 omdat mensen niet willen typt u terug in de dag l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Zodat ze in plaats daarvan maakte het ls. 825 00:38:29,300 --> 00:38:30,110 >> Enter. 826 00:38:30,110 --> 00:38:35,740 Let op, ik zie twee dingen, hello-1.c, en dan deze cryptische ding, bron 1m. 827 00:38:35,740 --> 00:38:38,310 Dat is gewoon mijn manier om te zeggen broncode voor week 1 maandag. 828 00:38:38,310 --> 00:38:42,020 Dat is een map die ik heb gedownload van CS50's website die ik eerder vandaag gemaakt 829 00:38:42,020 --> 00:38:43,990 en zet ze gewoon in de apparaat vooraf. 830 00:38:43,990 --> 00:38:47,550 >> Maar voor nu het enige wat we zorg over is het maken van dit programma. 831 00:38:47,550 --> 00:38:50,440 Dus toen ik typ maken hello-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Damn it. 833 00:38:51,320 --> 00:38:53,060 Er ging iets mis. 834 00:38:53,060 --> 00:38:54,580 Dus laten we deze plagen elkaar. 835 00:38:54,580 --> 00:38:58,489 En helaas is dit waar de dingen een beetje stressvol op het eerste, 836 00:38:58,489 --> 00:39:00,280 tenminste als je hebt nooit geprogrammeerd. 837 00:39:00,280 --> 00:39:00,980 >> Mijn god. 838 00:39:00,980 --> 00:39:04,990 Ik schreef een twee line programma en Ik heb vier lijnen van fouten. 839 00:39:04,990 --> 00:39:07,180 Dus wat is hier aan de hand. 840 00:39:07,180 --> 00:39:11,370 Eerst en vooral altijd terug te bladeren up en vind de eerste foutmelding, 841 00:39:11,370 --> 00:39:15,730 want vaak compilers gewoon raken in de war door wat jij en ik doen. 842 00:39:15,730 --> 00:39:17,000 Compilers zijn behoorlijk dom. 843 00:39:17,000 --> 00:39:18,360 Ze zullen alleen maar doen wat je vertelt te doen. 844 00:39:18,360 --> 00:39:21,484 En als je ze verwarren, ze zijn gewoon gaat soort gooien hun handen 845 00:39:21,484 --> 00:39:25,010 en misschien gooi meer foutmeldingen dan eigenlijk relevant. 846 00:39:25,010 --> 00:39:26,380 >> Dus laten we eens kijken naar de eerste. 847 00:39:26,380 --> 00:39:27,540 Super cryptisch op het eerste. 848 00:39:27,540 --> 00:39:31,050 Maar let op, hier is de naam van de bestand waarin ik verpest blijkbaar. 849 00:39:31,050 --> 00:39:36,570 Colon 5, colon 5 betekent gewoon op lijn 5 in het vijfde teken. 850 00:39:36,570 --> 00:39:39,760 Dus vijfde kolom van tekens, als je wil, fout. 851 00:39:39,760 --> 00:39:41,870 Het gebruik van niet-aangegeven identifier string. 852 00:39:41,870 --> 00:39:43,120 Bedoelde u standaard n? 853 00:39:43,120 --> 00:39:44,850 >> Nee, ik bedoelde string. 854 00:39:44,850 --> 00:39:47,640 En dan is het soort kopiëren en plakken 855 00:39:47,640 --> 00:39:50,700 wat ik typte echt trek ik mijn aandacht naar de plaats waar ik het verpest. 856 00:39:50,700 --> 00:39:54,260 Dus andere reden C, althans de compiler 857 00:39:54,260 --> 00:39:56,470 begrijpt niet het woord string. 858 00:39:56,470 --> 00:39:57,890 En dat komt omdat we het verzonnen. 859 00:39:57,890 --> 00:40:01,440 Dus reeks bestaat niet in C. Wat CS50 doet, 860 00:40:01,440 --> 00:40:03,380 de eerste paar weken alleen van de klasse, 861 00:40:03,380 --> 00:40:05,700 is bieden wij een aantal trainingen wielen, bij wijze van spreken. 862 00:40:05,700 --> 00:40:11,160 En we deze zijwieltjes binnenkant van een speciaal bestand genaamd CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Dus dit is de tweede van twee bestand namen die blijkbaar eindigen in punt h. 864 00:40:14,970 --> 00:40:16,300 Laten we terug te spoelen. 865 00:40:16,300 --> 00:40:19,360 Printf is een verklaring of functie dat blijkbaar drukt iets 866 00:40:19,360 --> 00:40:20,580 het scherm. 867 00:40:20,580 --> 00:40:23,470 Maar je zag me niet implementeren printf, rechts. 868 00:40:23,470 --> 00:40:26,360 Iemand jaar geleden geïmplementeerd printf. 869 00:40:26,360 --> 00:40:30,420 In welk bestand zou je dat hij inzet of zij zet de implementatie 870 00:40:30,420 --> 00:40:34,270 voor printf, de code voor printf? 871 00:40:34,270 --> 00:40:36,860 >> In een bestand met de naam standaard I / O.h. 872 00:40:36,860 --> 00:40:39,930 In feite, is het waarschijnlijk in twee bestanden, standaard I / O.h, 873 00:40:39,930 --> 00:40:42,650 wat staat voor header bestand, en standaard I / O.c, 874 00:40:42,650 --> 00:40:44,060 wat staat voor C-broncode. 875 00:40:44,060 --> 00:40:48,220 Zodat hij of zij een aantal jaren geleden plofte de code die ze schreef in dat bestand 876 00:40:48,220 --> 00:40:51,240 zodat mensen zoals wij jaar later kunnen opnemen, 877 00:40:51,240 --> 00:40:53,040 zogezegd in de eigen programma. 878 00:40:53,040 --> 00:40:56,320 >> En inderdaad, dat is wat het hekje gevolgd door het woord omvatten doet. 879 00:40:56,320 --> 00:41:00,250 Het ziet er op de lokale harde schijf, vindt het bestand met de naam standaard I / O.h, 880 00:41:00,250 --> 00:41:03,840 en dan effectief kopieën en plakt het binnen mijn eigen bestand. 881 00:41:03,840 --> 00:41:07,210 Dus nu mijn programma kent hoe u kunt afdrukken op het scherm. 882 00:41:07,210 --> 00:41:11,120 >> Dus tegen die logica, waar wordt tekenreeks die is gedefinieerd? 883 00:41:11,120 --> 00:41:12,260 >> PUBLIEK: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 En inderdaad, dat is wat wij, de kern personeel, hebben gedaan. 886 00:41:15,540 --> 00:41:19,590 We hebben een paar soorten data uitgevonden, zogezegd als een snoer, 887 00:41:19,590 --> 00:41:22,370 in aanvulling op degene die je gratis te krijgen, zoals een int. 888 00:41:22,370 --> 00:41:26,010 En we zullen anderen zien als een char voor een karakter en een paar meer. 889 00:41:26,010 --> 00:41:30,670 Binnenkant van CS50.h blijkbaar is ten minste enkele vermelding van string. 890 00:41:30,670 --> 00:41:34,980 >> Dus nu laat ik doorgaan en herhaling make hello-1. 891 00:41:34,980 --> 00:41:37,100 Ik zal weer zoomen en steek mijn vingers. 892 00:41:37,100 --> 00:41:41,370 Nu door te hebben gemaakt een veranderen ik vast de meeste dingen. 893 00:41:41,370 --> 00:41:42,100 Maar damn it. 894 00:41:42,100 --> 00:41:44,290 Meer procenten dan data argumenten. 895 00:41:44,290 --> 00:41:45,980 Wat heb ik fout gedaan deze keer? 896 00:41:45,980 --> 00:41:47,420 >> Dus het is nog steeds behoorlijk cryptisch. 897 00:41:47,420 --> 00:41:51,560 Maar deze fout is lijn 7 en karakter 21. 898 00:41:51,560 --> 00:41:53,880 Dus laten we eens gaan kijken hier. 899 00:41:53,880 --> 00:41:55,350 Het is een beetje subtiel. 900 00:41:55,350 --> 00:41:59,167 Maar als je nadenkt over wat de fundamentele ideeën hier zijn, 901 00:41:59,167 --> 00:42:00,500 misschien kunnen we deze plagen elkaar. 902 00:42:00,500 --> 00:42:02,300 >> Dus printf is de naam van de functie. 903 00:42:02,300 --> 00:42:04,960 Haakjes tot dusver is net als wat we zetten rond 904 00:42:04,960 --> 00:42:07,005 de spullen die we passeren als input voor een functie. 905 00:42:07,005 --> 00:42:08,921 Oke, gewoon een arbitraire menselijke conventie. 906 00:42:08,921 --> 00:42:09,919 Gebruik haakjes. 907 00:42:09,919 --> 00:42:12,460 Binnenkant van de haakjes we zijn zetten dubbele aanhalingstekens, 908 00:42:12,460 --> 00:42:14,810 en dan een string zoals "hallo wereld". 909 00:42:14,810 --> 00:42:18,160 >> Maar in dat eerdere voorbeeld zeer kort deden we kijken met Scratch. 910 00:42:18,160 --> 00:42:22,590 En we hadden het percentage d, wat anders was binnenkant van de haakjes 911 00:42:22,590 --> 00:42:23,730 dat riep ik verbaal? 912 00:42:23,730 --> 00:42:24,230 Yeah. 913 00:42:24,230 --> 00:42:28,166 >> Publiek: Dus het is wat je neemt [Onverstaanbaar] vanuit [onverstaanbaar] 914 00:42:28,166 --> 00:42:30,200 wat deze [onverstaanbaar]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. MALAN: Precies. 916 00:42:31,200 --> 00:42:32,700 Dus hadden we het percentage d. 917 00:42:32,700 --> 00:42:36,620 Maar toen hadden we dicht citaat, komma, toonbank. 918 00:42:36,620 --> 00:42:37,120 Rechts. 919 00:42:37,120 --> 00:42:40,680 We gespecificeerd wat we willen te doen als de tijdelijke aanduiding. 920 00:42:40,680 --> 00:42:44,621 Dus wat ik ga doen hier is komma, wat wil je dat ik te zetten? 921 00:42:44,621 --> 00:42:45,120 PUBLIEK: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. MALAN: S, omdat in deze zaak 923 00:42:46,828 --> 00:42:48,700 is de naam van de opslaghouder. 924 00:42:48,700 --> 00:42:50,180 Het is de naam van die glazen kom. 925 00:42:50,180 --> 00:42:53,610 Terwijl voor het teller in dat eenvoudige Scratch voorbeeld hebben we gekeken. 926 00:42:53,610 --> 00:42:56,630 Dus nu hebben twee gemaakt veranderingen, laat me in te zoomen 927 00:42:56,630 --> 00:42:59,800 en probeer het nog een keer te dit programma te compileren. 928 00:42:59,800 --> 00:43:01,596 >> Nu zie ik dat cryptische lijn. 929 00:43:01,596 --> 00:43:03,470 Maar dat is eigenlijk de naam van de compiler. 930 00:43:03,470 --> 00:43:04,886 Clang is de naam van de compiler. 931 00:43:04,886 --> 00:43:07,100 Zorg wordt alleen bespaart me de hoofdpijn van het ooit 932 00:43:07,100 --> 00:43:09,830 het typen van die lange gek commando uit. 933 00:43:09,830 --> 00:43:14,900 Dus nu als ik dot slash hello-1, Ik moet zien "hello, David." 934 00:43:14,900 --> 00:43:16,450 >> Pretty underwhelming, toch? 935 00:43:16,450 --> 00:43:18,158 We hadden kunnen doen dit een stuk eenvoudiger 936 00:43:18,158 --> 00:43:20,940 zonder te praten over variabelen en CS50.h en dat alles. 937 00:43:20,940 --> 00:43:23,080 Dus laten we het een iets interessanter. 938 00:43:23,080 --> 00:43:31,010 >> Naast CS50.h, met dingen als touwtje 939 00:43:31,010 --> 00:43:34,550 verklaard, de CS50 bibliotheek heeft een aantal functies. 940 00:43:34,550 --> 00:43:38,520 Dus net als jaren geleden, schreef iemand printf en zet het in de standaard I / O.h 941 00:43:38,520 --> 00:43:39,530 en een ander bestand. 942 00:43:39,530 --> 00:43:44,010 >> Wij, de CS50 personeel, schreef een functie riep getchar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, en we zet die in een bestand 944 00:43:47,610 --> 00:43:49,890 riep CS50.h en CS50.c. 945 00:43:49,890 --> 00:43:51,880 En we zetten ze in van de CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 En mensen kunnen ook download ze online als ze 947 00:43:53,880 --> 00:43:55,880 wil om ze op hun eigen computers ook. 948 00:43:55,880 --> 00:44:00,880 Dat wil zeggen dat we hebben gecreëerd functies invoer van de gebruiker. 949 00:44:00,880 --> 00:44:02,930 Ik weet niet wat er allemaal van deze gegevens types zijn. 950 00:44:02,930 --> 00:44:06,490 GetInt is een soort van eenvoudig, zoals krijgt een geheel getal of andere manier van de gebruiker. 951 00:44:06,490 --> 00:44:09,980 En GetString is waarschijnlijk net als get een woord of een zin van de gebruiker. 952 00:44:09,980 --> 00:44:11,770 >> Dus laten we focussen op dat. 953 00:44:11,770 --> 00:44:14,710 En ik ga om terug te gaan naar de apparaat en ik ga om verder te gaan 954 00:44:14,710 --> 00:44:20,790 en sla dit bestand op als, laten we noemen het hello-2.c als mijn tweede versie. 955 00:44:20,790 --> 00:44:23,030 En laten we een paar veranderingen. 956 00:44:23,030 --> 00:44:25,800 >> Deze tijd in plaats van harde codering David, die 957 00:44:25,800 --> 00:44:29,120 maakt een ongelooflijk consistente maar underwhelming programma, 958 00:44:29,120 --> 00:44:32,640 wat als ik in plaats daarvan doen GetString? 959 00:44:32,640 --> 00:44:35,660 Let nu op GetString heeft een open haakje, 960 00:44:35,660 --> 00:44:38,500 gesloten haakjes, omdat het heeft geen inbreng nodig. 961 00:44:38,500 --> 00:44:40,850 Het zal alleen maar gaan halen een string van de gebruiker. 962 00:44:40,850 --> 00:44:42,460 >> En nu een woord op andere syntax. 963 00:44:42,460 --> 00:44:45,439 Puntkomma eindigen slechts een regel code. 964 00:44:45,439 --> 00:44:46,730 Je ze niet overal nodig. 965 00:44:46,730 --> 00:44:48,896 Maar dat betekent dat ik ben gedaan met deze regel code. 966 00:44:48,896 --> 00:44:51,080 Laat me verplaatsen naar een andere verklaring of functie. 967 00:44:51,080 --> 00:44:53,010 String verklaart een variabele. 968 00:44:53,010 --> 00:44:55,920 String is hetzelfde als zeggen geef me een kom, alstublieft. 969 00:44:55,920 --> 00:44:57,940 En laat ik een string in. 970 00:44:57,940 --> 00:44:59,430 >> En nu is de gelijk-teken. 971 00:44:59,430 --> 00:45:03,510 Wat is de gelijk-teken hoofdzaak gelijk aan? 972 00:45:03,510 --> 00:45:04,500 >> PUBLIEK: Wijs. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. MALAN: Ja, het toewijzen van een waarde. 974 00:45:06,190 --> 00:45:09,872 Als ik bijvoorbeeld call deze functie GetString, 975 00:45:09,872 --> 00:45:12,830 en we zullen zien in een moment dat is gaat naar de gebruiker voor een string prompt. 976 00:45:12,830 --> 00:45:17,810 Dit is als het laten schrijf me dan D-a-v-i-d op een stuk papier. 977 00:45:17,810 --> 00:45:21,060 En als ik touwtje zeggen s gelijk aan GetString, 978 00:45:21,060 --> 00:45:24,140 gelijk niet echt zeggen gelijk in C programmeren. 979 00:45:24,140 --> 00:45:27,880 Het betekent toewijzen van de juiste kant aan de linkerkant. 980 00:45:27,880 --> 00:45:29,510 >> Dus ik heb een string gekregen. 981 00:45:29,510 --> 00:45:32,785 En de gelijk-teken betekent zet het in de opbergruimte genaamd s. 982 00:45:32,785 --> 00:45:36,730 En dan gaan deze uit te printf om daadwerkelijk zijn ding doen. 983 00:45:36,730 --> 00:45:39,790 >> Dus het eindresultaat dan gaat een beetje anders uitzien. 984 00:45:39,790 --> 00:45:40,840 Laten we niet te maken hello-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Ofwel zou kunnen werken. 987 00:45:45,260 --> 00:45:46,450 Je volgt samen. 988 00:45:46,450 --> 00:45:47,940 Maak hello-2 werkte. 989 00:45:47,940 --> 00:45:52,640 Dot slash hello-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Ik schijn een oneindige hebben lus of iets. 991 00:45:54,620 --> 00:45:55,453 Er gebeurt niets. 992 00:45:55,453 --> 00:45:56,134 Waarom? 993 00:45:56,134 --> 00:45:57,805 >> Publiek: Het maken van een oneindige lus. 994 00:45:57,805 --> 00:45:59,430 DAVID J. MALAN: Het is een oneindige lus. 995 00:45:59,430 --> 00:46:02,710 Het is een soort van te wachten tot ik daadwerkelijk te voorzien van wat input. 996 00:46:02,710 --> 00:46:05,800 Dus laat me gaan en typt in David, en druk op Enter. 997 00:46:05,800 --> 00:46:07,230 En nu zegt "hello, David." 998 00:46:07,230 --> 00:46:09,040 Als ik zonder het opnieuw. 999 00:46:09,040 --> 00:46:11,530 Laten we eens in Rob, "hallo, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Nu is dit de slechtste gebruikersinterface ooit. 1001 00:46:13,900 --> 00:46:16,110 De gebruiker is blijkbaar verondersteld te weten wat te doen. 1002 00:46:16,110 --> 00:46:17,120 Maar maakt niet uit. 1003 00:46:17,120 --> 00:46:19,570 Met deze zelfde gebouw blokken, net als in Scratch, 1004 00:46:19,570 --> 00:46:24,980 kunnen we dat probleem op te lossen en te zeggen iets zoals uw naam aub, dikke darm, 1005 00:46:24,980 --> 00:46:27,820 ruimte, gesloten citaat, dicht haakjes, puntkomma. 1006 00:46:27,820 --> 00:46:30,680 Dus veel weer onnozelheid met de syntaxis. 1007 00:46:30,680 --> 00:46:34,040 >> Maar let op ik heb net een puzzelstukje boven deze 1008 00:46:34,040 --> 00:46:35,280 en boven deze. 1009 00:46:35,280 --> 00:46:38,870 Dus nu als ik dit opnieuw uit te voeren, hello-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Wacht eens even. 1011 00:46:41,180 --> 00:46:41,830 Wat is er mis? 1012 00:46:41,830 --> 00:46:43,570 Het is niet gedraagt ​​elk verschillend. 1013 00:46:43,570 --> 00:46:44,200 Yeah. 1014 00:46:44,200 --> 00:46:46,010 >> PUBLIEK: Je liep niet opnieuw te maken. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. MALAN: ik deed het niet lopen maken weer, rechts. 1016 00:46:47,968 --> 00:46:49,430 Dus ik heb mijn broncode veranderd. 1017 00:46:49,430 --> 00:46:50,638 Maar nogmaals, er is die stroom. 1018 00:46:50,638 --> 00:46:54,530 Broncode door de compiler geeft je nieuw object code, of 0 en 1. 1019 00:46:54,530 --> 00:47:00,209 Dus ik moet eigenlijk herneming make hello-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, iets wat lijkt te zijn gebeurd. 1021 00:47:01,750 --> 00:47:04,220 Dot slash hello-2. 1022 00:47:04,220 --> 00:47:05,390 Uw naam aub. 1023 00:47:05,390 --> 00:47:09,990 En om nu duidelijk zijn, waarom is de cursor op dezelfde lijn? 1024 00:47:09,990 --> 00:47:10,490 Precies. 1025 00:47:10,490 --> 00:47:13,020 Ik heb niet zet de backslash n hier in mijn code. 1026 00:47:13,020 --> 00:47:16,110 Dus nu kan ik schrijven iets als Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Ik kan het opnieuw uitvoeren en typ iets als Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 en krijgen we een ander programma opnieuw en opnieuw en opnieuw. 1029 00:47:22,250 --> 00:47:28,940 >> Nu uiteindelijk gaan we nodig hebben een paar verschillende vermogens te gebruiken. 1030 00:47:28,940 --> 00:47:32,860 We hoeven in te voeren uiteindelijk enkele voorwaarden om dingen voorwaardelijk doen. 1031 00:47:32,860 --> 00:47:35,550 Misschien loops dus we kunnen doen dingen opnieuw en opnieuw. 1032 00:47:35,550 --> 00:47:38,220 >> Misschien zou het leuk zijn als we zijn onze eigen functies kan uitvoeren, 1033 00:47:38,220 --> 00:47:41,355 alsof we konden onze eigen implementeren printf of onze eigen versie van GetString 1034 00:47:41,355 --> 00:47:45,870 en GetFlow, want uiteindelijk zelfs het gebruik van deze command line omgeving 1035 00:47:45,870 --> 00:47:49,780 kunnen we doen zelfs de meest visueel interessante dingen. 1036 00:47:49,780 --> 00:47:51,950 >> Inderdaad tot slot wil ik dit doen. 1037 00:47:51,950 --> 00:47:54,020 Ik ga om te gaan en sluit deze vensters 1038 00:47:54,020 --> 00:47:57,400 en open dit icoon hier, dat is gewoon een groter 1039 00:47:57,400 --> 00:48:00,020 versie van dat ingebed terminal-venster. 1040 00:48:00,020 --> 00:48:02,329 Dus Gedit heeft niet alleen de plek voor mijn code, 1041 00:48:02,329 --> 00:48:05,620 maar ook een ingebouwde terminal venster, de zwart en wit venster waar ik kan lopen 1042 00:48:05,620 --> 00:48:06,230 commando. 1043 00:48:06,230 --> 00:48:08,600 >> Ik was toevallig openen een grotere versie van deze. 1044 00:48:08,600 --> 00:48:11,170 En nu ga ik in te gaan de map die ik heb al 1045 00:48:11,170 --> 00:48:13,150 zet vooraf via de website van de cursus. 1046 00:48:13,150 --> 00:48:16,720 En ik ga om verder te gaan en opent u een bestand met de naam thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 dat werd geschreven door iemand anders. 1048 00:48:18,710 --> 00:48:21,220 >> En als we kijken naar dit, Dit is niet het soort code 1049 00:48:21,220 --> 00:48:24,370 we zullen schrijven sinds het doel van deze code 1050 00:48:24,370 --> 00:48:28,450 was om de mooiste te schrijven zoek code dat hij of zij kon, 1051 00:48:28,450 --> 00:48:31,290 ongeacht of niet een ander mens ooit zou kunnen 1052 00:48:31,290 --> 00:48:33,660 begrijpen deze code. 1053 00:48:33,660 --> 00:48:37,050 >> Inderdaad, elk jaar is er wat riep een versluierd C wedstrijd, die 1054 00:48:37,050 --> 00:48:39,570 is voor de echte geeks die schrijven code die niemand anders kan lezen, 1055 00:48:39,570 --> 00:48:42,050 maar dat doet iets ofwel echt eenvoudig of echt geweldig. 1056 00:48:42,050 --> 00:48:43,890 En we dachten dat we zouden sluiten met deze look 1057 00:48:43,890 --> 00:48:48,300 naar iets dat is nogal verbazingwekkend u misschien al eens eerder hebben gezien. 1058 00:48:48,300 --> 00:48:52,650 Maar we zullen eindigen op deze nota, dot slash, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Dit is dan wat te wachten staat. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Dat is het voor CS50. 1062 00:48:58,500 --> 00:48:59,935 Wij zullen u op woensdag. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [Muziek] 1065 00:49:10,016 --> 00:53:31,883