1 00:00:00,000 --> 00:00:01,500 >> [Muziek] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Oke dit is CS50 en dit is het einde van een week. 4 00:00:16,110 --> 00:00:20,760 Dus ik zou graag willen introduceren mijn vroegere advisee, Andel Duff, die maakt niet alleen 5 00:00:20,760 --> 00:00:25,460 iPhone 5 staat, alsmede deze lessenaar, hij maakt ook auto's. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 ANSEL DUFF: Hoe gaat het, iedereen? 8 00:00:29,510 --> 00:00:31,980 Ik wil gewoon om je een beetje te vertellen beetje over Formula SAE, waarvan ik 9 00:00:31,980 --> 00:00:32,604 ben de kapitein. 10 00:00:32,604 --> 00:00:33,437 Het is een MIT-team. 11 00:00:33,437 --> 00:00:35,520 Ik wil gewoon om u te vertellen jongens een beetje over het 12 00:00:35,520 --> 00:00:37,520 en hopelijk het genereren van enige interesse. 13 00:00:37,520 --> 00:00:41,590 >> Dus laat me gewoon lopen door een paar dingen over ons team. 14 00:00:41,590 --> 00:00:43,640 Dus we zijn helemaal student run, waarin alle 15 00:00:43,640 --> 00:00:47,300 van de leden ontwerp, simuleren test, en fabrikant van een subsysteem 16 00:00:47,300 --> 00:00:48,090 van de auto. 17 00:00:48,090 --> 00:00:51,240 Wij hebben onze eigen werkplaats en garages, en N52-- of sorry, 18 00:00:51,240 --> 00:00:54,140 N51-- die hetzelfde gebouw als het MIT Science Museum. 19 00:00:54,140 --> 00:00:55,990 En wij zijn het volk dat de auto rijden. 20 00:00:55,990 --> 00:00:58,340 Er is een nationale wedstrijd in het begin van de zomer, 21 00:00:58,340 --> 00:01:01,215 en dan zijn er nog kleinere shootout wedstrijden gedurende het hele jaar. 22 00:01:01,215 --> 00:01:04,400 En dan doen we rijopleiding dagen te krijgen nieuwe leden kennis te maken. 23 00:01:04,400 --> 00:01:08,280 >> Onze build dagen zijn op Zaterdag 11:00-20:00. 24 00:01:08,280 --> 00:01:11,060 Lunch en diner zijn het verzorgen van, van Bertucci's en Beantown 25 00:01:11,060 --> 00:01:12,130 respectievelijk. 26 00:01:12,130 --> 00:01:15,260 We hebben een wekelijkse vergadering en seminar, dat is voor de cursus krediet. 27 00:01:15,260 --> 00:01:18,560 Die nieuw is met ingang van dit semester, en Het zal ook voor volgend semester, 28 00:01:18,560 --> 00:01:19,940 dus je kunt oversteken-reg voor. 29 00:01:19,940 --> 00:01:22,960 En dan hebben we het ontwerpen, winkel, en CAD dagen in de week, 30 00:01:22,960 --> 00:01:26,870 terwijl leden zal onafhankelijk CAD-onderdelen, om voorraad et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Dus voor elektrische bouwkunde aan het team 32 00:01:29,200 --> 00:01:31,110 we hebben onze trekkracht, hoogspanningsinstallatie, 33 00:01:31,110 --> 00:01:33,390 die een nominale loopt 300 volts, waaronder 34 00:01:33,390 --> 00:01:35,360 motoren, motor controllers, en accu's. 35 00:01:35,360 --> 00:01:37,235 Dan hebben we een laag voltage systeem, dat loopt 36 00:01:37,235 --> 00:01:40,180 bij 12 volt, waaronder controles, CAN-knooppunten, de hersenen 37 00:01:40,180 --> 00:01:41,570 doos, en het dashboard. 38 00:01:41,570 --> 00:01:43,890 Voor zover CS gaat, we doen hebben website onderhoud 39 00:01:43,890 --> 00:01:47,940 dat hoeven we gedaan voor evenementen, het lidmaatschap veranderingen, nieuwe foto's, en PR-materiaal. 40 00:01:47,940 --> 00:01:51,540 En dan hebben we code die het controleert auto voor onze traction control, launch 41 00:01:51,540 --> 00:01:55,750 controle, dash controle, torque vectoring, en een regeneratief remsysteem, dat 42 00:01:55,750 --> 00:01:59,170 loopt gewoonlijk in MATLAB, Simulink en LabView. 43 00:01:59,170 --> 00:02:00,910 >> Vertel je een beetje over de auto. 44 00:02:00,910 --> 00:02:02,470 Dus het is ongeveer 500 kilo. 45 00:02:02,470 --> 00:02:04,285 Het is de regels beperkt tot 85 kilowatt. 46 00:02:04,285 --> 00:02:08,310 Het heeft 2 EMRAX 207 motoren in de back, een voor elk achterwiel. 47 00:02:08,310 --> 00:02:11,880 Het heeft op maat gemaakte accu's van Prismatic A123 pouch cellen, 48 00:02:11,880 --> 00:02:14,780 een totaal van 300 volt en 5.6 kilowattuur. 49 00:02:14,780 --> 00:02:17,950 En het is direct drive met een 2,64-1 aandrijving verhouding. 50 00:02:17,950 --> 00:02:20,970 Hier zijn een aantal foto's die we nam van het bij de concurrentie. 51 00:02:20,970 --> 00:02:25,820 Hier is de achterkant, neuskegel, en hier zijn de motoren, 52 00:02:25,820 --> 00:02:29,682 die grote zwarte schijven onder de et heren manus. 53 00:02:29,682 --> 00:02:32,140 Hier is een foto die ik trok uit onze competitie schema. 54 00:02:32,140 --> 00:02:35,389 En dit is slechts het vergelijken van onze auto naar een aantal commercieel beschikbare auto, 55 00:02:35,389 --> 00:02:38,380 zoals de KTM XBOW, Ariel Atoom, en Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Als u bekend bent met de prijs bent, macht Trek gewicht, dollars per pk, 57 00:02:42,110 --> 00:02:44,930 dollar per koppel, en onze auto blaast ze allemaal uit het water. 58 00:02:44,930 --> 00:02:47,520 Als u vragen heeft, noteer dit e-mailadres. 59 00:02:47,520 --> 00:02:50,800 Stuur ons een e-mail op fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> We zijn blij om te praten over alles wat je zou willen. 61 00:02:53,350 --> 00:02:55,600 Harvard studenten zijn soort van de minderheid op het team. 62 00:02:55,600 --> 00:02:58,350 Als u vragen heeft over dat doe stuur ons een e-mail, 63 00:02:58,350 --> 00:03:00,810 blij om te praten, en ik ga terug naar David het hoofd. 64 00:03:00,810 --> 00:03:01,550 Bedankt. 65 00:03:01,550 --> 00:03:02,466 Ik waardeer het, jongens. 66 00:03:02,466 --> 00:03:03,615 [Applaus] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel bracht de zomer werken met ons hier op de campus in CS50 69 00:03:10,980 --> 00:03:11,480 deze zomer. 70 00:03:11,480 --> 00:03:13,505 En behalve aan dingen zoals de binaire bollen, 71 00:03:13,505 --> 00:03:16,090 hij eigenlijk echt opende onze eyes-- en mijn in particular-- 72 00:03:16,090 --> 00:03:20,535 wat werkelijk het kruispunt van niet die van hardware en software zijn. 73 00:03:20,535 --> 00:03:23,410 In feite is een groot deel van de dingen die hij net toerde je door bent uiteindelijk 74 00:03:23,410 --> 00:03:26,030 gecreëerd voor het eerst in de software, en dan uiteindelijk gefabriceerde 75 00:03:26,030 --> 00:03:27,299 in de echte wereld in hardware. 76 00:03:27,299 --> 00:03:29,590 Dus als je geïnteresseerd bent het verkennen van dat kruispunt, 77 00:03:29,590 --> 00:03:31,430 misschien wel het nemen van die groep. 78 00:03:31,430 --> 00:03:34,140 >> Nu ondertussen, die van u die zijn fans van de technologie, 79 00:03:34,140 --> 00:03:36,140 en Apple-producten in vooral weten dat er 80 00:03:36,140 --> 00:03:37,860 waren een paar aankondigingen van gisteren. 81 00:03:37,860 --> 00:03:39,776 Maar we dachten dat we zouden zien je er een dat kwam 82 00:03:39,776 --> 00:03:43,590 een paar dagen voor die u misschien niet hebben gezien. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Je weet wel, af en toe iets 84 00:03:46,150 --> 00:03:49,540 komt langs die verandert de manier waarop we leven. 85 00:03:49,540 --> 00:03:53,479 Een apparaat zo eenvoudig en intuïtief met behulp van het voelt bijna vertrouwd. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Introductie van 2015 IKEA catalogus. 88 00:04:04,138 --> 00:04:10,420 Het is niet een digitaal boek of een e-boek, het is een boek-boek. 89 00:04:10,420 --> 00:04:14,440 >> Het eerste wat opvalt, is geen kabels, zelfs een voedingskabel. 90 00:04:14,440 --> 00:04:18,519 2015 IKEA catalogus komt volledig opgeladen, 91 00:04:18,519 --> 00:04:20,550 en de levensduur van de batterij is eeuwig. 92 00:04:20,550 --> 00:04:27,300 De interface is 7,5 bij 8 inch, maar kan worden uitgebreid tot 15 bij 8 inch. 93 00:04:27,300 --> 00:04:32,410 De navigatie is gebaseerd op tactiele aanraking technologie die je daadwerkelijk kunt voelen. 94 00:04:32,410 --> 00:04:37,120 >> Content wordt geleverd met vooraf geïnstalleerde via 328 high-definition pagina's 95 00:04:37,120 --> 00:04:40,180 inspirerende woninginrichting ideeën. 96 00:04:40,180 --> 00:04:43,740 Om te beginnen met surfen, gewoon aanraken en slepen. 97 00:04:43,740 --> 00:04:50,870 Rechts naar links om vooruit te komen, links naar rechts om terug te keren. 98 00:04:50,870 --> 00:04:52,770 >> Merkt iets anders? 99 00:04:52,770 --> 00:04:53,780 Dat klopt. 100 00:04:53,780 --> 00:04:55,190 Geen vertraging. 101 00:04:55,190 --> 00:04:58,400 Elke kristalheldere pagina ladingen ogenblikkelijk, 102 00:04:58,400 --> 00:05:00,586 het maakt niet uit hoe snel je scrollen. 103 00:05:00,586 --> 00:05:03,710 Wilt u snel een overzicht te krijgen, gewoon houd hem in de palm van je hand, 104 00:05:03,710 --> 00:05:06,816 en met de duim, snelheid surfen op het gehalte. 105 00:05:06,816 --> 00:05:10,930 >> Als je iets vindt dat u wilt opslaan voor later, kun je gewoon een bladwijzer. 106 00:05:10,930 --> 00:05:17,620 En zelfs als je de toepassing te sluiten, kunt u gemakkelijk vinden de bladwijzer opnieuw. 107 00:05:17,620 --> 00:05:18,490 Geweldig. 108 00:05:18,490 --> 00:05:20,434 >> [Lachen] 109 00:05:20,434 --> 00:05:21,406 [Applaus] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Dus dat brengt ons bij het einde van een week. 112 00:05:29,870 --> 00:05:31,760 Een paar aankondigingen nu. 113 00:05:31,760 --> 00:05:33,440 Dus snijden is nu in volle gang. 114 00:05:33,440 --> 00:05:36,860 Ga naar deze URL hier ergens tussen nu en vrijdag 's middags 115 00:05:36,860 --> 00:05:39,960 om daadwerkelijk te geven of u bent onder die minder comfortabel, meer 116 00:05:39,960 --> 00:05:41,690 comfortabel, of ergens tussenin. 117 00:05:41,690 --> 00:05:44,511 >> Dit is typisch zo'n dingen die je gewoon een soort van weten. 118 00:05:44,511 --> 00:05:47,510 En in feite degenen die minder comfortabele waarschijnlijk weet zo veel, 119 00:05:47,510 --> 00:05:49,634 degenen onder u die meer comfortabele weet zo veel, 120 00:05:49,634 --> 00:05:54,960 en weer als je niet helemaal zeker welke van die emmers je valt in je 121 00:05:54,960 --> 00:05:56,210 waarschijnlijk ergens tussenin. 122 00:05:56,210 --> 00:05:59,810 Maar wees gerust je kunnen ruilen na een paar weken als dat nodig is. 123 00:05:59,810 --> 00:06:02,620 >> Ondertussen, voor de komende week we niet secties per se starten 124 00:06:02,620 --> 00:06:04,760 maar super secties, die staan ​​open voor alle studenten. 125 00:06:04,760 --> 00:06:08,220 Komende zondag op een locatie te worden bekend gemaakt op de cursus website 126 00:06:08,220 --> 00:06:10,190 we zullen een voor hebben die minder comfortabel, 127 00:06:10,190 --> 00:06:12,470 en een voor die meer comfortabel. 128 00:06:12,470 --> 00:06:15,460 En die ergens tussen kan kiezen welke van die twee, 129 00:06:15,460 --> 00:06:17,360 of allebei als je wilt, om te zitten-in op. 130 00:06:17,360 --> 00:06:19,630 En de focus van deze uiteindelijk op C, 131 00:06:19,630 --> 00:06:22,440 waar we blijven onze gesprek van vandaag. 132 00:06:22,440 --> 00:06:25,070 >> Probleem set 0 ondertussen is hopelijk in jouw handen. 133 00:06:25,070 --> 00:06:27,500 Officieel moet morgen, Donderdag op de middag. 134 00:06:27,500 --> 00:06:29,490 Tenzij u contant geld in een van je 5 dagen te laat, 135 00:06:29,490 --> 00:06:31,780 die het zou brengen tot en met vrijdag 's middags. 136 00:06:31,780 --> 00:06:34,420 Probleem set 1 ondertussen zal zijn geplaatst op de website van de cursus. 137 00:06:34,420 --> 00:06:37,381 Dit zal onze eerste uitstapje als een klasse in C. 138 00:06:37,381 --> 00:06:40,630 En dat probleem stellen spec zal u door veel van de mechanica van wat 139 00:06:40,630 --> 00:06:43,960 we begonnen te praten over op maandag, en we blijven praten over vandaag. 140 00:06:43,960 --> 00:06:46,770 C, Linux, de CS50 apparaat dat alles 141 00:06:46,770 --> 00:06:48,990 zal op je wachten in de specificatie. 142 00:06:48,990 --> 00:06:52,840 >> Kantooruren ondertussen aan de gang zijn, in het undergraduate eetzaal. 143 00:06:52,840 --> 00:06:56,240 Ga naar deze URL hier om het te zien plannen voor vanavond en morgen, 144 00:06:56,240 --> 00:06:57,930 Als u wilt deelnemen. 145 00:06:57,930 --> 00:07:01,920 Vragen ondertussen, zodat u hebben mogelijkheden om vragen te stellen 146 00:07:01,920 --> 00:07:05,860 asynchroon, 24/7, besef je bent niet beperkt tot profielen en kantoor 147 00:07:05,860 --> 00:07:09,530 uur, maar deze tool hier, CS50 Bespreek op die URL 148 00:07:09,530 --> 00:07:12,150 zal online de cursus zijn bulletin board software, via welke 149 00:07:12,150 --> 00:07:15,030 U kunt vragen of vragen klasgenoten en ook personeel. 150 00:07:15,030 --> 00:07:18,492 Dus hou er rekening mee dat resource ook. 151 00:07:18,492 --> 00:07:20,200 Inmiddels is er een traditie begint deze vrijdag. 152 00:07:20,200 --> 00:07:23,200 Zoals u wellicht een glimp hebben opgevangen van afgelopen woensdag de teaser video, 153 00:07:23,200 --> 00:07:25,510 We hebben een traditie meest elke vrijdag tijdens de looptijd 154 00:07:25,510 --> 00:07:28,750 van het nemen van ongeveer 50 studenten en personeel naar een lokaal restaurant genaamd 155 00:07:28,750 --> 00:07:31,510 Fire and Ice, waar we meestal vergezeld door een aantal alumni 156 00:07:31,510 --> 00:07:33,850 of vrienden uit de industrie om in het algemeen streven 157 00:07:33,850 --> 00:07:35,780 om een ​​grote klasse kleiner voelen. 158 00:07:35,780 --> 00:07:37,560 Dus het is een heel informele lunch. 159 00:07:37,560 --> 00:07:40,160 Een aantal van ons, het personeel vooral, zal stoelendans spelen 160 00:07:40,160 --> 00:07:43,360 en chatten met studenten over 50, het leven buiten de 50, 161 00:07:43,360 --> 00:07:46,510 leven in de toekomst, de echte wereld, Ik heb het over kansen op werk 162 00:07:46,510 --> 00:07:47,680 met vrienden in de industrie. 163 00:07:47,680 --> 00:07:51,110 >> Dus als je zou willen om mee te doen deze vrijdag, het hoofd naar deze URL hier. 164 00:07:51,110 --> 00:07:54,180 De ruimte is beperkt, maar we zullen dit doen recurringly gedurende de looptijd. 165 00:07:54,180 --> 00:07:57,380 Ga er naar cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 En als je niet in dit keer, geen zorgen te maken. 167 00:07:59,380 --> 00:08:02,390 We zullen het opnieuw doen in de komende weken ook. 168 00:08:02,390 --> 00:08:05,434 >> Dus dit is het beeld We schilderde vorige week, 169 00:08:05,434 --> 00:08:07,350 en je hebt waarschijnlijk al ploeteren in tot nu toe. 170 00:08:07,350 --> 00:08:10,360 Maar laten we proberen om dit nu aan te sluiten aan wat we gaan doen vandaag 171 00:08:10,360 --> 00:08:11,440 en verder. 172 00:08:11,440 --> 00:08:14,760 Mag ik een vrijwilliger? 173 00:08:14,760 --> 00:08:16,000 Goed, of meerdere. 174 00:08:16,000 --> 00:08:18,460 Hoe zit het hier op de einde, in het blauw shirt. 175 00:08:18,460 --> 00:08:20,329 Kom op, wat is uw naam? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Dus Alana, voor slechts een moment-- leuk om je-- ontmoeten 179 00:08:25,100 --> 00:08:28,260 zal de rol van deze functie hier. 180 00:08:28,260 --> 00:08:31,290 De paarse blok we hebben genoemd dusver functie. 181 00:08:31,290 --> 00:08:34,830 Dus wat ik ga om te gaan vooruit hier en bieden Alana 182 00:08:34,830 --> 00:08:38,380 is een klein naamplaatje, om ervoor te duidelijk welke rol je speelt. 183 00:08:38,380 --> 00:08:39,753 >> Zo zult gij het woord blok. 184 00:08:39,753 --> 00:08:41,419 Als u wilt doorgaan en we deze op. 185 00:08:41,419 --> 00:08:43,169 En we gaan Houd dit super simpel. 186 00:08:43,169 --> 00:08:46,180 Als het doel bij de hand is gewoon nu te implementeren met Alana, 187 00:08:46,180 --> 00:08:49,710 deze zogenaamde zeggen blok, Hier is hoe het gaat werken. 188 00:08:49,710 --> 00:08:52,574 Ik have-- laten we noemen het een argument of parameter, 189 00:08:52,574 --> 00:08:54,240 het is eigenlijk gewoon een blanco vel papier. 190 00:08:54,240 --> 00:08:57,239 En het is wit tot soort denken zijn van de witte doos waarin u 191 00:08:57,239 --> 00:08:58,080 kan woorden te schrijven. 192 00:08:58,080 --> 00:09:00,660 >> Ondertussen ga ik hier gaan. 193 00:09:00,660 --> 00:09:06,560 Ik ga om te gaan en Schrijf H-E-L-L-O komma wereld. 194 00:09:06,560 --> 00:09:09,972 En nu heb ik, als zeggen dat de programmeur, niet eigenlijk weten hoe iets te zeggen. 195 00:09:09,972 --> 00:09:12,180 Ik kan komen met de woorden: maar dat doe ik niet per se 196 00:09:12,180 --> 00:09:15,220 weten hoe om mezelf uit te drukken mondeling of op het scherm. 197 00:09:15,220 --> 00:09:17,280 En dus wat ik ga te doen is dit stuk 198 00:09:17,280 --> 00:09:21,157 functionaliteit, waarvan input-- of argument, zoals we het zullen noemen, 199 00:09:21,157 --> 00:09:23,990 Ik heb op dit stuk van paper-- geschreven en ik ga het uit te besteden. 200 00:09:23,990 --> 00:09:26,831 >> En inderdaad dat is de rol die functies in een programmeertaal 201 00:09:26,831 --> 00:09:27,330 kunnen spelen. 202 00:09:27,330 --> 00:09:29,246 Zoiets als de inspraak blok kan worden uitbesteed 203 00:09:29,246 --> 00:09:32,074 aan iemand die echt weet wat hij of zij het over heeft. 204 00:09:32,074 --> 00:09:33,990 Dus als je stap over hier slechts voor een ogenblik, 205 00:09:33,990 --> 00:09:40,092 Ik ga deze input te geven aan Alana, en vragen dat u deze ingang zeggen. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Hallo, wereld. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Dat is het. 208 00:09:42,160 --> 00:09:43,326 Zodat er een functie. 209 00:09:43,326 --> 00:09:46,556 Nu kunnen we het een beetje meer te nemen, kunnen we een stap voorwaarts te nemen hier. 210 00:09:46,556 --> 00:09:48,180 Want dat was duidelijk underwhelming. 211 00:09:48,180 --> 00:09:51,670 Dus laten we nu deze om te zetten in iets een beetje meer verfijnd. 212 00:09:51,670 --> 00:09:53,630 >> Dus dit is natuurlijk onze C-versie. 213 00:09:53,630 --> 00:09:56,760 Dus als je nu wilt nemen dat eenmalige, dat naamplaatje af, 214 00:09:56,760 --> 00:09:58,530 en laten we u op een nieuwe naam. 215 00:09:58,530 --> 00:10:00,850 Maar fundamenteel je bent spelen dezelfde rol, 216 00:10:00,850 --> 00:10:03,400 het gewoon zo gebeurt te worden nu genoemd printf. 217 00:10:03,400 --> 00:10:06,930 >> Het verhaal is natuurlijk gaat waarschijnlijk be-- 218 00:10:06,930 --> 00:10:09,317 zoals is underwhelming-- ga naar de volgende te zijn. 219 00:10:09,317 --> 00:10:10,650 U bent nu de functie printf. 220 00:10:10,650 --> 00:10:13,300 Ik ben de beller, of de programmeur, die wil 221 00:10:13,300 --> 00:10:15,745 de schouders aan te staan mensen in het verleden net als u, 222 00:10:15,745 --> 00:10:18,670 die al bedacht hebben hoe om daadwerkelijk iets opschrijven. 223 00:10:18,670 --> 00:10:20,650 En dus deze keer, in plaats van zeggen dat het laten 224 00:10:20,650 --> 00:10:22,255 daadwerkelijk gebruik maken van ons scherm hier. 225 00:10:22,255 --> 00:10:24,130 Dus als je wilt naar stap hier, ik ga 226 00:10:24,130 --> 00:10:27,196 om ook dit doorgaan als input voor mijn printf vriend. 227 00:10:27,196 --> 00:10:29,320 Als je je gang kon gaan en te drukken die op het scherm, 228 00:10:29,320 --> 00:10:31,611 simpelweg door het tekenen met uw vinger op het zwarte scherm. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Excellent. 231 00:10:44,180 --> 00:10:47,350 Oke, dus veel spanning voor hoe dat zou gaan om uit te spelen. 232 00:10:47,350 --> 00:10:51,390 >> Dus nu laten we de dingen nemen een laatste notch, als we konden, als volgt. 233 00:10:51,390 --> 00:10:53,980 Dit is een C programma zoals we al zeiden de vorige keer. 234 00:10:53,980 --> 00:10:57,460 En dit alleen maar doet wat je deed, het drukt om het scherm, hello, wereld. 235 00:10:57,460 --> 00:11:00,290 Hoewel er duidelijk veel afleidende dingen daar. 236 00:11:00,290 --> 00:11:03,630 Maar laten we de dingen nemen een inkeping en invoering van deze versie, die herinneren 237 00:11:03,630 --> 00:11:06,160 was de derde versie belandden we met de vorige keer. 238 00:11:06,160 --> 00:11:09,120 >> En nu is er duidelijk twee vormen van gebruik van printf. 239 00:11:09,120 --> 00:11:12,280 Er is 2 gesprekken naar Alana in dit geval voor printf, 240 00:11:12,280 --> 00:11:14,740 maar er is ook een oproep een andere functie. 241 00:11:14,740 --> 00:11:17,150 Wat is die functie duidelijk? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Kunnen we nog een vrijwilliger? 244 00:11:18,980 --> 00:11:20,980 OK, kom op. 245 00:11:20,980 --> 00:11:21,805 Wat is je naam? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, kom op. 248 00:11:24,750 --> 00:11:27,270 Dus rol Javier is op dit stuk papier. 249 00:11:27,270 --> 00:11:28,860 Die ik ga noemen generiek s. 250 00:11:28,860 --> 00:11:32,250 Nu is dit een variabele, het is van het type String, zoals wordt gesuggereerd 251 00:11:32,250 --> 00:11:34,290 door deze tweede lijn in het midden is. 252 00:11:34,290 --> 00:11:36,540 En ik wil graag dat je me halen een string. 253 00:11:36,540 --> 00:11:40,120 Specifiek hoofd naar beneden naar het orkest sectie en krijg me de naam van iemand, 254 00:11:40,120 --> 00:11:43,142 en kom terug met een variabele met die waarde. 255 00:11:43,142 --> 00:11:44,225 Het kan iedereen die je wilt zijn. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Hier gaan we. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Oke, Javier is het opschrijven van de naam. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Oke. 262 00:12:03,280 --> 00:12:05,740 We kunnen allemaal wel raden hoe dit gaat om uit te spelen. 263 00:12:05,740 --> 00:12:07,489 We zijn misschien belaboring het punt van wat 264 00:12:07,489 --> 00:12:10,320 een functie is te doen, maar toch heel erg bedankt. 265 00:12:10,320 --> 00:12:13,890 >> Dus Javier heeft deze string terug hier, die niet helemaal zien, 266 00:12:13,890 --> 00:12:15,800 Jonathan is de string dat we hebben gekregen. 267 00:12:15,800 --> 00:12:18,330 Dus nu wat ik eigenlijk aan de hand Alana wel te voorzien 268 00:12:18,330 --> 00:12:20,150 is iets anders. 269 00:12:20,150 --> 00:12:23,800 Omdat in deze versie van de programma, de eerste is er uw naam. 270 00:12:23,800 --> 00:12:26,160 Dus de allereerste argument Ik moet Alana bieden 271 00:12:26,160 --> 00:12:33,030 met gaat worden letterlijk uw naam te vermelden. 272 00:12:33,030 --> 00:12:35,280 Oke, zo simpel is dat Ik zou dit je nageven. 273 00:12:35,280 --> 00:12:36,730 En terwijl ik dit schrijf de volgende argument, als je 274 00:12:36,730 --> 00:12:39,230 wil om vooruit te gaan en schrijf dit op het bord, laten we gaan vooruit 275 00:12:39,230 --> 00:12:42,659 en doen hier de laatste voorbeeld maken duidelijk wat er uiteindelijk moet gebeuren. 276 00:12:42,659 --> 00:12:44,450 Dus je naam, schrijf het in de richting van de top 277 00:12:44,450 --> 00:12:47,220 als je het niet erg, gewoon zo dat We hebben ruimte voor een tweede lijn. 278 00:12:47,220 --> 00:12:52,890 Want het laatste wat ik ga om u nu te voorzien van niet een, 279 00:12:52,890 --> 00:12:57,220 maar twee vellen papier. 280 00:12:57,220 --> 00:12:58,074 >> Oke. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O komma en vervolgens een lege regel. 282 00:13:01,920 --> 00:13:04,780 Dus wat ik ga nu overhandigen Alana is iets anders. 283 00:13:04,780 --> 00:13:08,600 Niet alleen is ze het krijgen van deze, waar in de lege vulling vertegenwoordigt 284 00:13:08,600 --> 00:13:12,050 dat percent-- wat was de placeholder We gebruiken? 285 00:13:12,050 --> 00:13:13,890 Ja, dus procent s. 286 00:13:13,890 --> 00:13:16,530 Ondertussen ga ik voorbij haar in een tweede argument, dat 287 00:13:16,530 --> 00:13:19,290 is precies wat Javier opgehaald van Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Dus laat me je deze twee. 289 00:13:20,534 --> 00:13:22,575 Als je wilt, ga je gang en af ​​te drukken dat effect. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Wat er uiteindelijk gebeurt is nu, Alana weer 292 00:13:28,130 --> 00:13:29,410 speelt de rol van printf. 293 00:13:29,410 --> 00:13:32,160 Javier speelde de rol van GetString. 294 00:13:32,160 --> 00:13:34,700 Dus dat zal uw souvenir zijn. 295 00:13:34,700 --> 00:13:39,910 En uiteindelijk wat er gebeurt, ondanks Dit hello-- yep ga je gang en komma. 296 00:13:39,910 --> 00:13:41,410 ALANA: Heb ik deze nog of nee? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Yep, je ontving ze allebei tegelijk. 298 00:13:43,451 --> 00:13:45,740 Dus het idee is dat je kan nu flip de pagina 299 00:13:45,740 --> 00:13:50,000 de tweede verwerken van deze twee ingangen. 300 00:13:50,000 --> 00:13:53,280 Dus dit is alleen maar om thuis de hamer wijzen dat terwijl Alana uitgevoerd 301 00:13:53,280 --> 00:13:55,830 deze groene lijn hier, en dan Javier deed dit voor ons 302 00:13:55,830 --> 00:13:57,820 en terug te keren naar me iets we s noemen, maar het was echt 303 00:13:57,820 --> 00:13:59,520 net dat stukje papier van zijn eigen. 304 00:13:59,520 --> 00:14:02,320 En nu Alana heeft deze derde lijn gedaan. 305 00:14:02,320 --> 00:14:06,010 >> En hoewel dit alles ziet zo ongelooflijk cryptisch misschien 306 00:14:06,010 --> 00:14:08,870 op het eerste gezicht, het is echt is zo simpel als dat. 307 00:14:08,870 --> 00:14:11,390 Passen ingangen rond, krijgen uitgangen, hetzij 308 00:14:11,390 --> 00:14:14,560 fysiek overhandigd iets terug, of het zien van een bijwerking als deze. 309 00:14:14,560 --> 00:14:17,170 Iets visueel geschreven op het scherm. 310 00:14:17,170 --> 00:14:19,990 Dus laten we verder gaan en bedanken Alana en Javier, 311 00:14:19,990 --> 00:14:25,012 die hier beneden was, voor bij ons hier. 312 00:14:25,012 --> 00:14:25,934 >> [Applaus] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Dus laten we nu voor lief nemen hoe eenvoudig dat alles kunnen zijn. 315 00:14:33,480 --> 00:14:36,775 En laten we overgaan tot daadwerkelijk iets in de eigenlijke code doen. 316 00:14:36,775 --> 00:14:40,620 Dus op het scherm hier is een screenshot van de zogenaamde CS50 apparaat. 317 00:14:40,620 --> 00:14:43,980 En als je moest bij, als een 02:00 op woensdagmiddag, 318 00:14:43,980 --> 00:14:46,602 uit te leggen aan een aantal vriend wat CS50 apparaat, 319 00:14:46,602 --> 00:14:48,185 Hoe zou je het omschrijven in een zin? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Iemand zin? 322 00:14:53,240 --> 00:14:54,876 Yeah? 323 00:14:54,876 --> 00:14:57,334 STUDENT: Het is als een programma dat maakt ieders computer 324 00:14:57,334 --> 00:14:58,460 uitgevoerd met hetzelfde systeem. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Goed! 326 00:14:59,210 --> 00:15:02,810 Het is een programma dat iedereen in staat stelt computer om te draaien met hetzelfde systeem. 327 00:15:02,810 --> 00:15:04,920 Het is een soort van je eigen kopie van een operationele 328 00:15:04,920 --> 00:15:07,540 systeem dat overkomt worden genoemd Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 En het loopt effectief binnenin een venster op je eigen Mac of pc, 330 00:15:11,070 --> 00:15:15,080 zodat op deze manier recht uit de poort in week 1, iedereen hier in de klas 331 00:15:15,080 --> 00:15:17,590 heeft toegang tot dezelfde middelen, dezelfde configuratie, 332 00:15:17,590 --> 00:15:21,250 en er is geen leercurve specifieke naar een Mac of een PC in het bijzonder. 333 00:15:21,250 --> 00:15:25,620 >> Nu zijn we geopend, de binnenkant van de CS50 toestel op maandag, het programma hier. 334 00:15:25,620 --> 00:15:27,040 Het gebeurt gedit genoemd te worden. 335 00:15:27,040 --> 00:15:29,050 Maar dat is eigenlijk alleen maar een grafische editor. 336 00:15:29,050 --> 00:15:33,170 Het is iets zoals Notepad of tekst Bewerken op Windows of Mac OS respectievelijk. 337 00:15:33,170 --> 00:15:36,720 En ik stelde voor dat er echt drie belangrijke onderdelen van dit scherm. 338 00:15:36,720 --> 00:15:39,560 De bovenkant is waar je zou je code te schrijven. 339 00:15:39,560 --> 00:15:44,080 En dat is waar we veel van onze drie voorbeelden in de lezing van maandag. 340 00:15:44,080 --> 00:15:47,650 De onderste belden we wat, deze zwart venster, ja? 341 00:15:47,650 --> 00:15:48,640 >> STUDENT: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Compiler we toegankelijk door middel van dat venster. 343 00:15:51,500 --> 00:15:53,040 Maar meer in het algemeen. 344 00:15:53,040 --> 00:15:54,540 Ja, het was gewoon een terminal venster. 345 00:15:54,540 --> 00:15:57,780 Dit is een eeuwenoude term die net beschrijft in wezen een knipperend 346 00:15:57,780 --> 00:16:01,910 prompt, die jaren geleden gebruikt om aan te zijn een van die grote CRT-monitoren stijl. 347 00:16:01,910 --> 00:16:04,300 Maar tegenwoordig is het een soort virtuele software. 348 00:16:04,300 --> 00:16:06,710 En de terminal vensters Laten we ons opdrachten in te voeren. 349 00:16:06,710 --> 00:16:11,750 Het soort van de vereenvoudigde versie van de gebruikersinterface of UI. 350 00:16:11,750 --> 00:16:14,060 Het is niet een grafische gebruikersinterface of GUI, 351 00:16:14,060 --> 00:16:17,250 het is een op tekst gebaseerde interface of een command line interface. 352 00:16:17,250 --> 00:16:20,770 >> En inderdaad dat is waar uiteindelijk Ik was in staat om wat code te schrijven. 353 00:16:20,770 --> 00:16:24,200 Zodra ik wat code al geschreven had, herinner me dat ik vroeger deze opdracht. 354 00:16:24,200 --> 00:16:26,210 En als het de naam soort doet vermoeden, 355 00:16:26,210 --> 00:16:29,860 kan ik een te maken programma genaamd Hello. 356 00:16:29,860 --> 00:16:33,400 Maar wat is het eigenlijk? 357 00:16:33,400 --> 00:16:36,180 Nou maak was met mijn input, mijn source code, 358 00:16:36,180 --> 00:16:39,380 geconverteerd naar wat uiteindelijk? 359 00:16:39,380 --> 00:16:40,060 >> Objectcode. 360 00:16:40,060 --> 00:16:42,790 En object code is gewoon een fancy manier om te zeggen nullen en enen. 361 00:16:42,790 --> 00:16:46,420 En dan een keer wilde ik om dat object code uit te voeren, 362 00:16:46,420 --> 00:16:50,940 zodra ik wilde passeren als input die nullen en enen in mijn computer 363 00:16:50,940 --> 00:16:54,430 hersenen, de zogenaamde CPU of centrale verwerkingseenheid, 364 00:16:54,430 --> 00:16:55,730 Ik moest het programma uit te voeren. 365 00:16:55,730 --> 00:16:59,042 Maar het was niet helemaal een eenvoudige op maandag als gewoon dubbel te klikken op een aantal pictogram. 366 00:16:59,042 --> 00:17:01,375 Wat in plaats daarvan moest ik doen om een ​​programma uit te voeren? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Wat was dat tweede bevel? 369 00:17:07,890 --> 00:17:09,619 Ik hoor een beetje schuine strepen? 370 00:17:09,619 --> 00:17:10,544 Ja, ja? 371 00:17:10,544 --> 00:17:12,474 >> STUDENT: Dot slash en de naam van het programma. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Precies. 373 00:17:13,349 --> 00:17:15,030 Dot slash en de naam van het programma. 374 00:17:15,030 --> 00:17:16,210 Nu, wat deed dit betekenen? 375 00:17:16,210 --> 00:17:19,470 Goed punt is slechts een geheimzinnige manier zeggen de huidige directory. 376 00:17:19,470 --> 00:17:23,440 Welke map u zich in genoemd, wordt weergegeven als dot. 377 00:17:23,440 --> 00:17:26,680 De schuine streep is net wat je hebt gezien in Mac OS en Windows op jaar, 378 00:17:26,680 --> 00:17:30,329 het is een scheiding tussen een directory of de map en de rest van een naam. 379 00:17:30,329 --> 00:17:32,620 In Windows het gebeurt om te gaan achteruit, in Linux en Mac 380 00:17:32,620 --> 00:17:34,210 OS het gebeurt om vooruit te gaan. 381 00:17:34,210 --> 00:17:37,560 Maar het is gewoon de separator, dus het is gewoon een oninteressante syntactische detail. 382 00:17:37,560 --> 00:17:40,440 >> De sappige deel is natuurlijk de naam van het programma, Hello. 383 00:17:40,440 --> 00:17:42,650 En dat is wat maken voor ons gecreëerd. 384 00:17:42,650 --> 00:17:44,910 Het uitgestuurd dat bestand voor ons. 385 00:17:44,910 --> 00:17:46,700 Maar hoe komen we aan op dat punt? 386 00:17:46,700 --> 00:17:48,870 Laten we nu vragen de vraag, wat was echt 387 00:17:48,870 --> 00:17:52,470 hier aan de hand, althans met aanzien van enkele van deze syntax? 388 00:17:52,470 --> 00:17:57,000 >> Dus in een zin of zo, hoe hebben we wegredeneren 389 00:17:57,000 --> 00:17:59,020 deze eerste regel dat groen gemarkeerd? 390 00:17:59,020 --> 00:18:02,998 Wat was die eerste lijn te doen, met respect voor mijn programma? 391 00:18:02,998 --> 00:18:03,974 Yeah? 392 00:18:03,974 --> 00:18:05,067 >> STUDENT: [onverstaanbaar]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Zeg het nog eens? 394 00:18:06,150 --> 00:18:08,734 STUDENT: Inclusief en downloaden verleden functies [onverstaanbaar]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Goed. 396 00:18:09,483 --> 00:18:11,900 Inbegrip van, zal ik niet zeggen downloaden, maar laten we zeggen 397 00:18:11,900 --> 00:18:15,500 waaronder functies die mensen hebben geschreven in het verleden. 398 00:18:15,500 --> 00:18:18,260 En die functies zijn geïmplementeerd ergens in mijn computer. 399 00:18:18,260 --> 00:18:20,470 Iemand schreef een bestand jaar geleden, en dat bestand 400 00:18:20,470 --> 00:18:23,490 ergens binnen het CS50 apparaat, of op mijn harde schijf 401 00:18:23,490 --> 00:18:24,480 meer in het algemeen. 402 00:18:24,480 --> 00:18:27,810 En dus is deze lijn is in wezen zeggen, gaan zoeken dat bestand standaard I / O dot 403 00:18:27,810 --> 00:18:31,740 h, en kopieer en plak de inhoud ervan hier op de top van mijn dossier 404 00:18:31,740 --> 00:18:33,860 zodat ik niet hoeft te dat handmatig doen mezelf. 405 00:18:33,860 --> 00:18:40,970 >> En onder de sappigste stukjes binnenkant van dat bestand we beweerden was welke functie? 406 00:18:40,970 --> 00:18:45,740 Welke functie hebben wij zeggen werd verklaard of standaard I / O dot h genoemde 407 00:18:45,740 --> 00:18:47,120 waarschijnlijk? 408 00:18:47,120 --> 00:18:47,900 Printf, toch? 409 00:18:47,900 --> 00:18:50,797 We hebben niet te schrijven printf op Maandag, het is gewoon bestaan. 410 00:18:50,797 --> 00:18:52,880 Net als Alana kwam net op het podium en ze gewoon 411 00:18:52,880 --> 00:18:55,540 bestond en wist hoe te tekenen iets op het scherm, 412 00:18:55,540 --> 00:18:58,660 zo werkt printf bestaan ​​al vele jaren. 413 00:18:58,660 --> 00:19:00,240 En dus dit is hoe we er toegang toe. 414 00:19:00,240 --> 00:19:03,280 Nu, als we hier verder gaan, main was analoog we 415 00:19:03,280 --> 00:19:06,620 zei tegen de puzzelstukje aangeroepen als groene vlag geklikt 416 00:19:06,620 --> 00:19:07,620 in de wereld van Scratch. 417 00:19:07,620 --> 00:19:10,130 Het is gewoon een soort van de standaardnaam die de mens 418 00:19:10,130 --> 00:19:13,340 besloten zou het vertegenwoordigen standaard toegangspoort tot een programma. 419 00:19:13,340 --> 00:19:16,540 De brok van programmeercode dat wordt eerst uitgevoerd. 420 00:19:16,540 --> 00:19:19,700 >> Ondertussen deze accolades zijn net zoiets als de gebogen vorm 421 00:19:19,700 --> 00:19:21,410 van veel van die gele kras stukken. 422 00:19:21,410 --> 00:19:24,860 Het soort inkapselen geheel stelletje instructies samen. 423 00:19:24,860 --> 00:19:28,350 Dus het gewoon een soort van samenbindt sommige gerelateerde functionaliteit. 424 00:19:28,350 --> 00:19:33,750 printf natuurlijk is een functie die drukt het scherm, zoals we net gedaan. 425 00:19:33,750 --> 00:19:35,190 >> Hoe zit het met deze haakjes? 426 00:19:35,190 --> 00:19:38,770 Hoe zou u define-- zelfs als u hebt nooit eerder geprogrammeerd, maar alleen gebaseerd 427 00:19:38,770 --> 00:19:41,320 nu een stijgende hopelijk intuïtie, wat 428 00:19:41,320 --> 00:19:43,290 worden de haakjes voor ons doet hier? 429 00:19:43,290 --> 00:19:45,450 Of wat zijn ze rond? 430 00:19:45,450 --> 00:19:46,360 Yeah? 431 00:19:46,360 --> 00:19:49,360 >> STUDENT: Ze zeggen wat je gaat om af te drukken met printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Ja, ze zeggen wat je gaat om af te drukken met printf. 433 00:19:52,401 --> 00:19:56,260 Of meer in het algemeen, zij rondom de ingangen naar de functie. 434 00:19:56,260 --> 00:19:58,530 Dus je kunt bijna denken van deze haakjes 435 00:19:58,530 --> 00:20:01,620 als zijnde als het metaal clip op dit klembord. 436 00:20:01,620 --> 00:20:05,940 Het is wat houdt, het is wat zal worden gebruikt om argumenten aan 437 00:20:05,940 --> 00:20:08,500 in de functie die dit geval heet printf. 438 00:20:08,500 --> 00:20:12,390 >> Dus in het algemeen vrijwel elke tijd een functie noemen we, 439 00:20:12,390 --> 00:20:14,280 we gaan een paar haakjes te zien. 440 00:20:14,280 --> 00:20:17,000 Misschien met iets erin, zoals nu, misschien niets in. 441 00:20:17,000 --> 00:20:19,770 Maar dat is waar je zou zetten de ingangen of zogenaamde argumenten 442 00:20:19,770 --> 00:20:20,680 een functie. 443 00:20:20,680 --> 00:20:22,470 >> Hier is een dergelijk argument. 444 00:20:22,470 --> 00:20:24,467 Ik heb gewezen op alles tussen de aanhalingstekens, 445 00:20:24,467 --> 00:20:26,300 omdat het blijkt in deze taal genaamd 446 00:20:26,300 --> 00:20:29,950 C, als je wilt een vertegenwoordigen string-- dat een woord of een zin 447 00:20:29,950 --> 00:20:33,470 of zelfs een paragraph-- moet je omringen met dubbele aanhalingstekens. 448 00:20:33,470 --> 00:20:35,420 Geen enkele aanhalingstekens, dubbele aanhalingstekens. 449 00:20:35,420 --> 00:20:37,460 En dat is precies wat ik hier heb gedaan. 450 00:20:37,460 --> 00:20:39,900 >> Ondertussen is er een funky symbool in de richting van het einde daar. 451 00:20:39,900 --> 00:20:41,600 De backslash n. 452 00:20:41,600 --> 00:20:43,460 Wat hebben we te zeggen dat vertegenwoordigd? 453 00:20:43,460 --> 00:20:44,093 Yeah? 454 00:20:44,093 --> 00:20:44,980 >> STUDENT: Een nieuwe lijn. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: Nieuwe lijn. 456 00:20:45,896 --> 00:20:47,910 Juist, je doet niet over het algemeen druk op Enter als 457 00:20:47,910 --> 00:20:50,430 u het programma wilt uit te spugen een nieuwe regel. 458 00:20:50,430 --> 00:20:54,210 Liever dat je het expliciet vertellen met deze weliswaar mysterieuze stuk 459 00:20:54,210 --> 00:20:58,770 van syntax, backslash n, dat U wilt een nieuwe lijn naar daar te gaan. 460 00:20:58,770 --> 00:20:59,810 Tot slot de puntkomma. 461 00:20:59,810 --> 00:21:01,560 We hebben niet echt praten te veel over dit, 462 00:21:01,560 --> 00:21:04,893 en veruit dit zal de vloek van sommigen van je bestaan ​​voor het eerste probleem 463 00:21:04,893 --> 00:21:07,990 ingesteld, als je gewoon niet te realiseren je iets zo dom bent vergeten 464 00:21:07,990 --> 00:21:08,614 als een puntkomma. 465 00:21:08,614 --> 00:21:11,600 En in het algemeen zetten het daar zal dat probleem op te lossen. 466 00:21:11,600 --> 00:21:13,511 Maar wat doet het voor ons, zou je dan zeggen? 467 00:21:13,511 --> 00:21:15,670 >> STUDENT: [onverstaanbaar]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Sorry? 469 00:21:17,484 --> 00:21:18,532 >> STUDENT: [onverstaanbaar]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Afbouw een verklaring. 471 00:21:19,990 --> 00:21:22,770 Het is een soort als de periode van het einde van een Engels zin, 472 00:21:22,770 --> 00:21:25,790 terwijl in deze taal C dat het beëindigen van een verklaring. 473 00:21:25,790 --> 00:21:29,250 Een instructie van de programmering code die je gewoon wilt zeggen, 474 00:21:29,250 --> 00:21:30,500 Ik ben klaar met dit. 475 00:21:30,500 --> 00:21:32,240 Merk nu dat is de enige hier. 476 00:21:32,240 --> 00:21:34,614 Dus je wilt niet in krijgen een gewoonte om een ​​puntkomma 477 00:21:34,614 --> 00:21:36,190 na elke gesloten haakjes. 478 00:21:36,190 --> 00:21:38,610 Zo is er geen naast vervallen, en we zullen 479 00:21:38,610 --> 00:21:40,430 terug te komen in de toekomst wat betekent void. 480 00:21:40,430 --> 00:21:44,080 Maar in dit geval uw printf is een functie, of een verklaring wordt gebruikt, 481 00:21:44,080 --> 00:21:47,420 en dus we willen hebben dat eindpunt aan het einde van het. 482 00:21:47,420 --> 00:21:50,980 >> En ik opzettelijk plukken op C. En gezegd veel talen zoals C, C ++, 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript, en een willekeurig aantal andere talen hebben veel van deze 484 00:21:55,000 --> 00:21:56,730 soort van syntactische details. 485 00:21:56,730 --> 00:22:00,120 Dat zeker als je nieuw bent programmering kunt u echt struikelen. 486 00:22:00,120 --> 00:22:02,307 En je zal, let op mijn woorden, sommigen van jullie zal 487 00:22:02,307 --> 00:22:04,140 hebben deze ervaring spreekuur of laat 488 00:22:04,140 --> 00:22:07,554 nachts aan een p-set, waarbij je verdomde programma werkt gewoon niet compileren, 489 00:22:07,554 --> 00:22:09,470 het loopt niet, je hebt geen idee wat er mis is, 490 00:22:09,470 --> 00:22:11,513 lijkt volledig logisch juiste voor jou. 491 00:22:11,513 --> 00:22:13,596 En het is omdat je vergeten iets als het raken 492 00:22:13,596 --> 00:22:15,250 een puntkomma aan het einde van een regel. 493 00:22:15,250 --> 00:22:17,590 >> Maar dit zijn de soorten dingen die je bent zal meteen leren zien. 494 00:22:17,590 --> 00:22:20,048 En inderdaad, dit zijn de dingen dat en TF van de CA's hebben 495 00:22:20,048 --> 00:22:23,210 zijn soort opgeleid om te zien veel sneller dan jij. 496 00:22:23,210 --> 00:22:26,610 En dus dit is alleen maar om te zeggen, als je duik in probleem set 1 met name, 497 00:22:26,610 --> 00:22:28,217 niet gefrustreerd door dit spul. 498 00:22:28,217 --> 00:22:30,050 Zodra je een soort van wennen aan de wereld, je 499 00:22:30,050 --> 00:22:35,130 beginnen om dingen te zien die je misschien niet zie op het eerste gezicht deze eerste week. 500 00:22:35,130 --> 00:22:37,440 >> Dus de broncode is zoiets. 501 00:22:37,440 --> 00:22:40,370 We willen het overgaan in de zogenaamde compiler. 502 00:22:40,370 --> 00:22:42,850 En dat compiler als we zeiden biedt uitgang 503 00:22:42,850 --> 00:22:45,660 bekend als objectcode, de zogenaamde nullen en enen. 504 00:22:45,660 --> 00:22:47,747 Maar van daar, wat zegt dat ons? 505 00:22:47,747 --> 00:22:49,080 Nou, het geeft ons deze patronen. 506 00:22:49,080 --> 00:22:52,020 En nogmaals uw computer, uw Intel inside, 507 00:22:52,020 --> 00:22:54,350 begrijpt deze patronen van nullen en enen. 508 00:22:54,350 --> 00:22:57,300 Soms het patroon vertegenwoordigt een werkelijke decimaal getal 509 00:22:57,300 --> 00:22:59,770 zoals we zagen vorige week, soms het een letter staat 510 00:22:59,770 --> 00:23:02,730 zoals we zagen vorige week, soms vertegenwoordigt een instructie, 511 00:23:02,730 --> 00:23:05,460 als iets af te drukken om het scherm. 512 00:23:05,460 --> 00:23:08,782 >> Dus printf voor instance-- maar, laat me terug te spoelen. 513 00:23:08,782 --> 00:23:11,240 Hebben we zo voor lief dat die nullen en enen zijn 514 00:23:11,240 --> 00:23:14,200 geproduceerd door dit commando make. 515 00:23:14,200 --> 00:23:16,050 Maar zorg is niet een compiler. 516 00:23:16,050 --> 00:23:19,370 Maken is niet het ding in het midden dat is het produceren van de nullen en enen. 517 00:23:19,370 --> 00:23:23,780 Plaats te maken is gewoon een zeer gunstig noemde programma waarvan het doel in het leven 518 00:23:23,780 --> 00:23:27,267 is in wezen om erachter te komen hoe u uw programma te compileren. 519 00:23:27,267 --> 00:23:29,350 En we gebruiken het in deze eerste weken omdat het net 520 00:23:29,350 --> 00:23:30,910 bespaart ons een hoop ellende. 521 00:23:30,910 --> 00:23:34,080 >> Maar wat maakt is echt doet als je compileren hello, 522 00:23:34,080 --> 00:23:36,690 is, zoals we al zeiden de vorige keer, het is zoek op uw harde schijf 523 00:23:36,690 --> 00:23:40,620 of in de huidige map, voor bestand genaamd wat blijkbaar? 524 00:23:40,620 --> 00:23:41,815 Hello.c, toch? 525 00:23:41,815 --> 00:23:43,190 Dat is gewoon een soort van een conventie. 526 00:23:43,190 --> 00:23:45,620 Het is willekeurig, maar dat is de manier waarop dingen zijn. 527 00:23:45,620 --> 00:23:48,620 Maak, als je gewoon de naam op van een programma dat nog niet bestaat, 528 00:23:48,620 --> 00:23:52,200 het gaat op zoek naar de broncode in een bestand, standaard betekent hello.c. 529 00:23:52,200 --> 00:23:53,530 En indien hij constateert het, geweldig. 530 00:23:53,530 --> 00:23:56,650 Het gaat om die bron te zetten code in object code voor u. 531 00:23:56,650 --> 00:23:59,670 >> Maar elke keer dat ik druk op Enter na het uitvoeren van maken hello, 532 00:23:59,670 --> 00:24:03,560 Herinnert u zich het zien van de laatste keer dat een vrij lange en cryptische sequentie 533 00:24:03,560 --> 00:24:06,430 andere witte letters en tekens op het scherm? 534 00:24:06,430 --> 00:24:11,220 Nou dat was de eigenlijke opdracht, de werkelijke compiler, dat werd uitgevoerd. 535 00:24:11,220 --> 00:24:15,500 Dus de werkelijke compiler we zullen het grootste deel van gebruiken het semester is iets genaamd clang. 536 00:24:15,500 --> 00:24:19,280 Sommigen van u zou kunnen hebben gebruikt Visual Studio vóór of GCC, 537 00:24:19,280 --> 00:24:21,340 of een aantal andere compilers. 538 00:24:21,340 --> 00:24:22,620 We zullen gebruik maken van klank. 539 00:24:22,620 --> 00:24:26,950 >> En clang stelt ons in staat om daadwerkelijk te zetten dat broncode code bezwaar. 540 00:24:26,950 --> 00:24:29,430 Wat doet dit eigenlijk in de praktijk? 541 00:24:29,430 --> 00:24:33,390 Nou laat me gaan in een van mijn mappen van de vorige keer. 542 00:24:33,390 --> 00:24:35,760 Binnenkant van de CS50 apparaat. 543 00:24:35,760 --> 00:24:42,080 En laat me ga je gang en maak deze hetzelfde bestand bevatten standaard I / O dot h. 544 00:24:42,080 --> 00:24:42,875 Int main leegte. 545 00:24:42,875 --> 00:24:46,000 En we zullen terugkomen in de toekomst als wat int betekent en wat void middelen. 546 00:24:46,000 --> 00:24:49,130 Maar voor nu laten we het doen hello wereld backslash n, 547 00:24:49,130 --> 00:24:50,500 net zoals we deden op het bord. 548 00:24:50,500 --> 00:24:53,930 >> Laat me dit bestand genaamd hello.c slaan. 549 00:24:53,930 --> 00:24:58,280 En nu als ik wil dit compileren Ik could-- laat me zoomen in-- run 550 00:24:58,280 --> 00:25:00,450 maken hello voeren. 551 00:25:00,450 --> 00:25:02,645 En dit was weer dat zeer cryptisch lijn. 552 00:25:02,645 --> 00:25:05,120 Maar nu tenminste een woord waarschijnlijk uit bij u springt. 553 00:25:05,120 --> 00:25:07,087 Clang is die lijn we eerder zagen. 554 00:25:07,087 --> 00:25:10,420 Nu is er een heleboel andere dingen eerlijk gezegd dat we onze handen zullen zwaaien voor vandaag. 555 00:25:10,420 --> 00:25:14,020 Maar er is een aantal subgroepen, een paar letters in hier 556 00:25:14,020 --> 00:25:14,907 die van belang zijn. 557 00:25:14,907 --> 00:25:16,490 Maar ik ga je gang gaan en doen dit. 558 00:25:16,490 --> 00:25:18,281 Ik ga naar de eerste run hallo, gewoon om te bewijzen 559 00:25:18,281 --> 00:25:20,320 dat dit werkt zoals het was maandag. 560 00:25:20,320 --> 00:25:22,330 Maar nu ga ik naar het programma te verwijderen. 561 00:25:22,330 --> 00:25:25,870 En net als we hadden deze korte namen de laatste tijd, 562 00:25:25,870 --> 00:25:29,787 het commando voor het verwijderen iets is rm, te verwijderen, in te voeren. 563 00:25:29,787 --> 00:25:31,870 Je gaat om wat te krijgen vrij cryptische vragen. 564 00:25:31,870 --> 00:25:35,210 Moeilijk te geloven dat je kunt maken zelfs deze vraag moeilijk te begrijpen. 565 00:25:35,210 --> 00:25:38,100 Maar verwijder regelmatig file hello gewoon middelen te doen die u wilt verwijderen hello. 566 00:25:38,100 --> 00:25:42,650 >> En ik kan gaan en typ y voor ja, Enter, en nu is het weg. 567 00:25:42,650 --> 00:25:45,130 Wat betekent dit nu, als ik mijn scherm te wissen, 568 00:25:45,130 --> 00:25:47,301 is dat in plaats van doen make hello-- u 569 00:25:47,301 --> 00:25:48,800 Weet je wat, ik ben hier goed in. 570 00:25:48,800 --> 00:25:50,690 Ik ga aan de compiler zelf uit te voeren. 571 00:25:50,690 --> 00:25:53,330 Ik weet niet wat het programma nodig te hebben erachter te komen wat mijn bestand heet. 572 00:25:53,330 --> 00:25:55,370 Ik schreef hello.c, I weet hoe het heet, 573 00:25:55,370 --> 00:25:57,640 Ik ben duidelijk in staat dat te typen. 574 00:25:57,640 --> 00:26:02,620 Dus ik ga om verder te gaan en weet Clang hello.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Lijkt te werken. 576 00:26:03,264 --> 00:26:05,930 En er is geen extra output, omdat clang is de compiler. 577 00:26:05,930 --> 00:26:08,590 Het is wat het omzetten van de broncode om nullen en enen. 578 00:26:08,590 --> 00:26:12,870 Dus als ik nu dot slash hallo Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Nieuw foutmelding vandaag. 580 00:26:14,630 --> 00:26:17,610 Dus bash is gewoon de naam van de knipperende prompt die we gebruiken. 581 00:26:17,610 --> 00:26:20,360 Dat is een grove oversimplificatie, maar voor nu is dat al wat is, 582 00:26:20,360 --> 00:26:21,401 het is de knipperende prompt. 583 00:26:21,401 --> 00:26:22,880 En dat is waarom het is schreeuwen tegen ons. 584 00:26:22,880 --> 00:26:25,690 >> Onbekend bestand of map is iets eenvoudiger. 585 00:26:25,690 --> 00:26:28,190 Maar toch heb ik dat object code. 586 00:26:28,190 --> 00:26:30,930 Maar de vangst is, dat als ik typ het commando 587 00:26:30,930 --> 00:26:34,650 om de inhoud van deze directory, wat is wat? 588 00:26:34,650 --> 00:26:36,210 ls voor de lijst. 589 00:26:36,210 --> 00:26:39,332 Er is een heleboel dingen in hier, waarvan sommige kwam met het apparaat, 590 00:26:39,332 --> 00:26:42,040 zoals mijn Desktop map Downloads map Dropbox-map, en alle 591 00:26:42,040 --> 00:26:42,850 dat spul. 592 00:26:42,850 --> 00:26:45,410 Maar wat interessant is is hello.c, die 593 00:26:45,410 --> 00:26:47,286 Ik heb daarnet met gedit. 594 00:26:47,286 --> 00:26:49,160 En wat is de vreemdste zoek naam hier, 595 00:26:49,160 --> 00:26:53,110 misschien dat we niet zie de laatste tijd bij allen? 596 00:26:53,110 --> 00:26:54,710 >> a.out, toch? 597 00:26:54,710 --> 00:26:56,920 Dus terug in de dag, het was net besloten dat wanneer 598 00:26:56,920 --> 00:26:58,760 een programma gecompileerd voor de eerste keer, 599 00:26:58,760 --> 00:27:02,360 en je hoeft niet de naam op te geven van een bestand, laten we noemen het een. 600 00:27:02,360 --> 00:27:05,800 En a.out betekent alleen deze was de output van de compiler. 601 00:27:05,800 --> 00:27:07,790 Dus het is een verschrikkelijke naam voor een programma. 602 00:27:07,790 --> 00:27:12,820 Maar tegen die logica, dot slash voor huidige directory, slash a.out, 603 00:27:12,820 --> 00:27:16,102 zou betekenen dat er in feite mijn Hello World programma. 604 00:27:16,102 --> 00:27:17,560 Nu een beetje op te warmen oefening, ook. 605 00:27:17,560 --> 00:27:20,420 Als ik wil deze hernoemen bestand, blijkt dat je 606 00:27:20,420 --> 00:27:23,000 Een bestand van de ene naar de andere naam. 607 00:27:23,000 --> 00:27:28,750 Dus mv a.out, en dan heb ik kunnen noemen hello Enter. 608 00:27:28,750 --> 00:27:30,940 Dus dit is een Linux-commando. 609 00:27:30,940 --> 00:27:34,370 DOS had dit jaren geleden, Windows heeft een terminal venster 610 00:27:34,370 --> 00:27:36,460 van een soort dat eruit ziet als dit, Linux en Mac 611 00:27:36,460 --> 00:27:38,140 computers hebben dit knipperen prompt. 612 00:27:38,140 --> 00:27:41,490 Hoewel de meeste van ons waarschijnlijk zelden of nooit gebruik van maken. 613 00:27:41,490 --> 00:27:44,590 >> Maar wat ik heb gedaan is het uitvoeren van een programma, waarvan de naam is mv, 614 00:27:44,590 --> 00:27:47,900 en ik heb het voorzien van twee argumenten, om zo te zeggen. 615 00:27:47,900 --> 00:27:48,630 Twee ingangen. 616 00:27:48,630 --> 00:27:50,260 a.out is de oorspronkelijke naam. 617 00:27:50,260 --> 00:27:51,630 Hallo is de nieuwe naam. 618 00:27:51,630 --> 00:27:55,670 Dus als ik nu dot slash hello, Enter, dat bestaat. 619 00:27:55,670 --> 00:28:00,770 En als ik dat doe dot slash a.out, wat verwacht je dan ik zou moeten zien? 620 00:28:00,770 --> 00:28:02,250 >> Bash, no such file of directory. 621 00:28:02,250 --> 00:28:03,350 Omdat ik net noemde het. 622 00:28:03,350 --> 00:28:04,975 Dus dit is even wennen. 623 00:28:04,975 --> 00:28:06,977 Maar het probleem set 1 specificatie zal echt 624 00:28:06,977 --> 00:28:08,810 Houd uw hand door sommige van deze feitjes. 625 00:28:08,810 --> 00:28:11,050 Omdat dit een volledig intellectuele afleiding 626 00:28:11,050 --> 00:28:12,966 van de meer interessante ideeën bij de hand, die 627 00:28:12,966 --> 00:28:15,310 eigenlijk creëren iets uit code. 628 00:28:15,310 --> 00:28:18,830 Maar laten we een modificatie nu op dit programma. 629 00:28:18,830 --> 00:28:23,150 >> Bedenk dat laatste keer dat ik iets deed als dit, printf uw naam. 630 00:28:23,150 --> 00:28:25,790 En inderdaad hebben we alleen deze hebben op het grote scherm daar. 631 00:28:25,790 --> 00:28:30,640 En dan deed ik touwtje s krijgt GetString geopend paren, dicht paren. 632 00:28:30,640 --> 00:28:33,430 En paren gewoon steno notatie voor haakjes. 633 00:28:33,430 --> 00:28:36,460 Dus doet GetString nemen alle argumenten? 634 00:28:36,460 --> 00:28:38,440 Geen ingangen nee, maar het moet de haakjes, 635 00:28:38,440 --> 00:28:41,830 want dat is wat afbakent de roeping van een functie. 636 00:28:41,830 --> 00:28:46,440 >> Dus ik ga om verder te gaan en proberen te lopen de compiler over dit programma nu. 637 00:28:46,440 --> 00:28:50,774 Clang hello.c, omdat ik heeft zijn naam niet veranderen voor nu. 638 00:28:50,774 --> 00:28:51,940 En ik heb een heleboel fouten. 639 00:28:51,940 --> 00:28:53,570 Laten zoomen hier uit. 640 00:28:53,570 --> 00:28:55,420 Als ik scroll weer op, zoals ik al zei vorige keer, 641 00:28:55,420 --> 00:28:58,420 de eerste, dezelfde fout dat ik de vorige keer. 642 00:28:58,420 --> 00:29:04,210 Op lijn 6 van hello.c had ik een zwartwerk identifier string 643 00:29:04,210 --> 00:29:05,590 heb ik bedoel standaard in? 644 00:29:05,590 --> 00:29:06,750 Dat deed ik niet. 645 00:29:06,750 --> 00:29:10,050 Want wat fout heb ik gemaakt in deze programma, als u zich herinneren van de vorige keer? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Ja, moeten we de zogenaamde zijwieltjes 648 00:29:15,010 --> 00:29:16,510 dat we gewoon zullen gebruiken voor een paar weken. 649 00:29:16,510 --> 00:29:19,480 Maar ik moet ook aangeven dat, ergens binnenkant van het apparaat, 650 00:29:19,480 --> 00:29:22,720 is een bestand dat we schreven slechts een paar jaar geleden. 651 00:29:22,720 --> 00:29:26,500 Binnen waarvan functies zoals blijkbaar getString. 652 00:29:26,500 --> 00:29:35,160 Dus nu als ik ga hier terug naar beneden, opnieuw in, en de re-run clang hello.c. 653 00:29:35,160 --> 00:29:36,500 Damn, een andere fout. 654 00:29:36,500 --> 00:29:38,590 Maar we hebben niet dit eerder gezien. 655 00:29:38,590 --> 00:29:41,900 >> Deze is een beetje meer esoterische te achterhalen. 656 00:29:41,900 --> 00:29:46,910 Maar dit is bewust op het scherm, want we wilden om dit verhaal te vertellen. 657 00:29:46,910 --> 00:29:51,280 Wanneer u hello.c compileren, net zoals het beeld van vóór gesuggereerd, 658 00:29:51,280 --> 00:29:54,650 je bent alleen het omzetten van dat broncode om nullen en enen. 659 00:29:54,650 --> 00:30:00,340 Nu CS50 personeel een paar jaar geleden schreef CS50.h, en een bijbehorende bestand, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 En wij, een paar jaar geleden, samengesteld die bestanden 662 00:30:04,490 --> 00:30:07,290 in een bestand dat gebeurt genoemd te worden CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Of het kan worden omgedoopt tot een paar verschillende dingen. 664 00:30:09,180 --> 00:30:11,054 Maar dat is een eenvoudige manier van het denken over het. 665 00:30:11,054 --> 00:30:14,960 Dus we samengesteld CS50's bibliotheek in nullen en enen. 666 00:30:14,960 --> 00:30:20,340 Maar nergens heb ik opgegeven dat ik wil mijn nullen combineren 667 00:30:20,340 --> 00:30:24,030 en degenen voor mijn hello wereld programma met nullen en enen 668 00:30:24,030 --> 00:30:29,760 dat CS50 personeel creëerde een paar jaar geleden in een compleet programma. 669 00:30:29,760 --> 00:30:34,100 Alles wat ik heb opgegeven door het schrijven clang hello.c is compileren hello.c. 670 00:30:34,100 --> 00:30:38,380 >> Ik heb niet verteld clang aan schakel in de nullen en enen 671 00:30:38,380 --> 00:30:41,650 dat CS50 personeel aangemaakt voor u enige tijd geleden. 672 00:30:41,650 --> 00:30:48,280 Dus het is een makkelijke oplossing, dash l voor link, CS50. 673 00:30:48,280 --> 00:30:52,600 En we zullen ook dit zien het duurde niet lang opnieuw en opnieuw. 674 00:30:52,600 --> 00:30:54,420 Maar merk nu toe was er geen klachten. 675 00:30:54,420 --> 00:30:59,770 Dus nu als ik zonder dot slash hallo, nu het werkt. 676 00:30:59,770 --> 00:31:03,840 Hoewel dat is een beetje misleidend aangezien ik net herschapen welk bestand? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Dus laat me terugspoelen voor slechts een moment. 679 00:31:07,930 --> 00:31:10,900 Het programma dat we gewoon gecompileerd heeft de drie regels code. 680 00:31:10,900 --> 00:31:14,710 Toen ik liep hallo wereld, hallo even geleden, heb ik niet gezien je naam. 681 00:31:14,710 --> 00:31:17,080 En dat komt omdat ik liep de oude versie van het programma. 682 00:31:17,080 --> 00:31:22,700 Maar als ik inderdaad lopen dot slash a.out Voer, uw naam, Rob, hello, 683 00:31:22,700 --> 00:31:23,370 wereld. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Dat is een soort van een bug. 686 00:31:26,110 --> 00:31:28,560 Waarschijnlijk bedoelde te zeggen Rob, toch? 687 00:31:28,560 --> 00:31:30,997 Dus wat is de oplossing hier in code. 688 00:31:30,997 --> 00:31:31,872 STUDENT: [onverstaanbaar]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Precies. 691 00:31:39,290 --> 00:31:43,160 Dus ik moet gewoon die laatste tweak maken zodat ik passeren in een tijdelijke aanduiding, 692 00:31:43,160 --> 00:31:45,690 net als in de blanco een vulling, zoals we deden een moment geleden. 693 00:31:45,690 --> 00:31:47,870 Maar procent en is nu in het lege dat invullen. 694 00:31:47,870 --> 00:31:52,100 Dus tot slot laten we onthullen een laatste detail, zodat er geen magie. 695 00:31:52,100 --> 00:31:54,090 Ik ga om te gaan en zich te ontdoen van hellow. 696 00:31:54,090 --> 00:31:56,070 Ik ga om te gaan en zich te ontdoen van a.out. 697 00:31:56,070 --> 00:31:58,410 Dus nu heb ik geen programma's, gewoon mijn broncode. 698 00:31:58,410 --> 00:32:01,100 En ik ga een run iets langer commando, clang 699 00:32:01,100 --> 00:32:05,650 dash o hello hello.c dash LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Nu dit begint een soort van gaan het ene oor in en het andere misschien wel. 701 00:32:08,700 --> 00:32:10,366 Maar plagen elkaar wat dit doet. 702 00:32:10,366 --> 00:32:14,910 Clang is de compiler, dash LCS50 bewust aan het einde 703 00:32:14,910 --> 00:32:18,330 wat doet in een zin? 704 00:32:18,330 --> 00:32:19,607 Links naar de CS50 bibliotheek. 705 00:32:19,607 --> 00:32:21,440 Grijpt de nullen en degenen die het personeel heeft 706 00:32:21,440 --> 00:32:23,310 en propt ze in mijn eigen programma. 707 00:32:23,310 --> 00:32:27,040 Dus de laatste vraag bij de hand is, wat is dash o hello waarschijnlijk 708 00:32:27,040 --> 00:32:30,530 te doen, zelfs als je nog nooit hebt eerder gezien deze syntax? 709 00:32:30,530 --> 00:32:34,920 >> Het uitvoeren van een programma dat is niet de naam van de standaard a.out. 710 00:32:34,920 --> 00:32:37,330 Veeleer is genoemd hello. 711 00:32:37,330 --> 00:32:39,460 Dus nu is er geen a.out. 712 00:32:39,460 --> 00:32:42,660 Onbekend bestand of map, omdat ik zei expliciet 713 00:32:42,660 --> 00:32:46,720 noemen dit programma hello, zodat Ik kan nu een naam in als dat 714 00:32:46,720 --> 00:32:47,790 en het hebben gedragen. 715 00:32:47,790 --> 00:32:50,180 >> Nu eerlijk gezegd, jongen, is dat oninteressant om te hebben 716 00:32:50,180 --> 00:32:52,170 alle herinner weinig munitia, toch? 717 00:32:52,170 --> 00:32:54,180 Dus laten we verder gaan en krijgen weer ontdoen van hello. 718 00:32:54,180 --> 00:32:57,880 En laten we nu terugkeren naar een wereld in die volstaat om te zeggen hallo maken. 719 00:32:57,880 --> 00:33:00,410 Maar dat is de magie die maken voor u doet, 720 00:33:00,410 --> 00:33:02,320 dat is de verveling die het doet voor je. 721 00:33:02,320 --> 00:33:04,630 En als onze programma's en problemen krijgen meer complexe, 722 00:33:04,630 --> 00:33:06,142 maken zal echt je vriend zijn. 723 00:33:06,142 --> 00:33:07,850 Omdat niet al te lang vanaf nu gaan we 724 00:33:07,850 --> 00:33:11,150 programma's die zijn geschreven hebben niet met een bestand, maar een aantal bestanden, 725 00:33:11,150 --> 00:33:16,310 en maken de werkwijze te automatiseren samenstellen dat alles voor ons samen. 726 00:33:16,310 --> 00:33:20,620 >> Dus nu afdrukken. 727 00:33:20,620 --> 00:33:24,960 printf is de binnenkant van dit bestand, standaard I / O punt h, dat we al eerder hebben gezien, 728 00:33:24,960 --> 00:33:26,980 maar er is meer aan printf dan dat. 729 00:33:26,980 --> 00:33:30,482 Er is backslash n, maar er is ook een heleboel andere escape sequences. 730 00:33:30,482 --> 00:33:32,940 En escape is slechts een mooie manier om iets te zeggen 731 00:33:32,940 --> 00:33:35,990 die begint met een backslash, niet een slash, een backslash, 732 00:33:35,990 --> 00:33:37,920 en doet een aantal speciale dingen. 733 00:33:37,920 --> 00:33:43,770 En we zullen niet stilstaan ​​bij de meeste van deze, maar waarom is er backslash dubbel aanhalingsteken, 734 00:33:43,770 --> 00:33:44,830 denk je? 735 00:33:44,830 --> 00:33:48,010 Waarom is er dit rare opeenvolging van karakters, backslash dubbel aanhalingsteken, 736 00:33:48,010 --> 00:33:50,505 waarom zou dat nuttig zijn? 737 00:33:50,505 --> 00:33:51,380 STUDENT: [onverstaanbaar]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Precies, toch? 740 00:33:57,760 --> 00:34:01,830 Denk terug aan onze Hello World programma dat we wel een paar keer nu heb gezien, 741 00:34:01,830 --> 00:34:05,880 elke keer dat we dat hello wereld gezien programma dat we hebben dubbel aanhalingsteken binnen had 742 00:34:05,880 --> 00:34:08,210 van die hello komma wereld backslash n. 743 00:34:08,210 --> 00:34:10,070 Maar denk je bij jezelf, wat als je eigenlijk 744 00:34:10,070 --> 00:34:12,520 wilde het afdrukken van een aanhalingsteken? 745 00:34:12,520 --> 00:34:16,100 Je eerste instinct zou kunnen zijn, dat doe ik niet weten waarom ik zou willen hier doen--, 746 00:34:16,100 --> 00:34:18,780 kunnen we een beetje passief agressief, hello friend. 747 00:34:18,780 --> 00:34:21,350 Willen we misschien zoiets doen. 748 00:34:21,350 --> 00:34:25,230 >> Maar waarom is dit nu een probleem? 749 00:34:25,230 --> 00:34:28,730 Het negeren van de gekrulde aanhalingstekens terzijde dat keynote maakte voor ons automatisch. 750 00:34:28,730 --> 00:34:29,730 Waarom is dit een probleem? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Precies. 753 00:34:37,270 --> 00:34:39,022 Want we hebben net 4 aanhalingstekens. 754 00:34:39,022 --> 00:34:41,230 Nou, de eerste waarschijnlijk gaat met het tweede, 755 00:34:41,230 --> 00:34:43,271 en misschien de vierde gaat met de derde, 756 00:34:43,271 --> 00:34:46,170 of, ik bedoel, ik weet niet eens zeker, noch is de computer zal zijn. 757 00:34:46,170 --> 00:34:48,352 Computers weer, compilers weer, zijn vrij dom. 758 00:34:48,352 --> 00:34:50,060 Ze zullen alleen maar doen wat je vertelt te doen. 759 00:34:50,060 --> 00:34:54,270 En als je niet eenduidig ​​ze zijn waarschijnlijk gaan om een ​​fout te gooien. 760 00:34:54,270 --> 00:34:57,700 >> Als je niet eenduidig ​​over hoe om te maak een pindakaas en jam sandwich 761 00:34:57,700 --> 00:34:59,510 rare dingen kunnen komen. 762 00:34:59,510 --> 00:35:00,580 Het is hetzelfde idee. 763 00:35:00,580 --> 00:35:03,100 Volstaan ​​nu te zeggen dat er sommige andere escape sequences, 764 00:35:03,100 --> 00:35:04,820 maar we zullen die komen voordat lang. 765 00:35:04,820 --> 00:35:07,410 Wezen deze ontsnapping sequenties iets vertegenwoordigen 766 00:35:07,410 --> 00:35:10,480 dat je misschien niet in staat te gemakkelijk naar het toetsenbord, 767 00:35:10,480 --> 00:35:12,010 zonder verwarrende de computer. 768 00:35:12,010 --> 00:35:15,733 >> Nu ondertussen hebben we placeholders in printf. 769 00:35:15,733 --> 00:35:19,630 Procent d, die ook kan worden geschreven in bijna alle gevallen procent i, 770 00:35:19,630 --> 00:35:21,610 is een tijdelijke aanduiding voor het soort gegevens? 771 00:35:21,610 --> 00:35:23,920 Welk type van waarde? 772 00:35:23,920 --> 00:35:24,920 Een decimaal getal. 773 00:35:24,920 --> 00:35:27,234 Dus eigenlijk we beginnen behulp procent i, want het is 774 00:35:27,234 --> 00:35:28,650 iets eenvoudiger, als een integer. 775 00:35:28,650 --> 00:35:29,550 Procent i. 776 00:35:29,550 --> 00:35:31,320 Een geheel getal dat gebeurt te zijn decimaal. 777 00:35:31,320 --> 00:35:35,690 >> Procent s we al gezegd was een tijdelijke aanduiding voor een string. 778 00:35:35,690 --> 00:35:38,630 Dat is gewoon een woord, een zin, een paragraaf, een essay, wat dan ook. 779 00:35:38,630 --> 00:35:40,830 Het is een reeks tekens uiteenzetten. 780 00:35:40,830 --> 00:35:42,820 En we zullen zien voordat lang sommige anderen. 781 00:35:42,820 --> 00:35:45,950 Maar procent c is voor een enkel teken. 782 00:35:45,950 --> 00:35:48,500 Procent f is voor een floating point getal, 783 00:35:48,500 --> 00:35:50,860 als een reëel getal dat moet een decimale punt in, die 784 00:35:50,860 --> 00:35:52,550 is natuurlijk geen geheel getal. 785 00:35:52,550 --> 00:35:54,670 En er is een hele bos van anderen. 786 00:35:54,670 --> 00:35:56,990 >> Ondertussen in C, en in veel talen, 787 00:35:56,990 --> 00:35:58,650 we hebben verschillende soorten data. 788 00:35:58,650 --> 00:36:00,650 Verschillende soorten glazen kommen als je wil. 789 00:36:00,650 --> 00:36:03,830 De kom ik de vorige keer was voor ping pong ballen, 790 00:36:03,830 --> 00:36:06,990 maar we kunnen ook slaan verschillende waarden als chars en strijkers 791 00:36:06,990 --> 00:36:10,820 en integers in een container, als een variabele, en C heeft deze. 792 00:36:10,820 --> 00:36:14,020 Char is de aard van de gegevens, het type variabele, 793 00:36:14,020 --> 00:36:15,700 waarin je kunt een karakter op te slaan. 794 00:36:15,700 --> 00:36:19,560 Float is een soort variabele waarin u een reëel getal kan opslaan. 795 00:36:19,560 --> 00:36:21,220 >> Int is natuurlijk voor een int. 796 00:36:21,220 --> 00:36:23,760 En nogal belachelijk noemde een lange lange 797 00:36:23,760 --> 00:36:26,830 is waar je wezen kunt opslaan een hele lange nummer, met zelfs 798 00:36:26,830 --> 00:36:29,930 meer cijfers dan een typische int macht winkel. 799 00:36:29,930 --> 00:36:32,420 Maar we komen terug om dat vóór lang. 800 00:36:32,420 --> 00:36:35,520 >> In CS50 dot h ondertussen de andere header file 801 00:36:35,520 --> 00:36:37,630 dat we een paar hebt gezien keer in gebruik, is er 802 00:36:37,630 --> 00:36:41,350 twee andere gegevenstypen die niet bestaan ​​in C meestal. 803 00:36:41,350 --> 00:36:45,000 Een daarvan is string en we zullen zien in een paar weken wat touwtjes echt 804 00:36:45,000 --> 00:36:46,610 zijn onder de motorkap. 805 00:36:46,610 --> 00:36:47,950 En een is bool. 806 00:36:47,950 --> 00:36:51,650 En bool is een variabele die kan alleen op bepaalde waarden. 807 00:36:51,650 --> 00:36:54,370 En net op basis van vorige week uitleg van Scratch, 808 00:36:54,370 --> 00:36:56,680 en meer recent C, wat zou u raden 809 00:36:56,680 --> 00:37:01,770 zijn de twee mogelijke waarden voor enkele container die is van het type bool? 810 00:37:01,770 --> 00:37:02,860 >> Ja en nee. 811 00:37:02,860 --> 00:37:03,870 Een en nul. 812 00:37:03,870 --> 00:37:04,502 Waar of niet waar. 813 00:37:04,502 --> 00:37:07,460 En inderdaad het is de laatste die de neiging conventioneel in een programmeertaal te 814 00:37:07,460 --> 00:37:10,030 taal, iets te zeggen als waar of onwaar. 815 00:37:10,030 --> 00:37:13,160 >> Ondertussen komt de CS50 bibliotheek met een heleboel functionaliteit 816 00:37:13,160 --> 00:37:16,640 dat het personeel u geschreven heeft, dan alleen het krijgen van een string. 817 00:37:16,640 --> 00:37:20,910 We schreven vooraf functies die kan een geheel getal te krijgen van de gebruiker, 818 00:37:20,910 --> 00:37:22,990 krijgen een enkel karakter, krijgen een vlotter, die 819 00:37:22,990 --> 00:37:25,160 is maar een getal met de decimale punt. 820 00:37:25,160 --> 00:37:28,290 Hier krijg je een lang lang, een echt grote waarde voor de gebruiker. 821 00:37:28,290 --> 00:37:30,930 Dus we hebben alleen dit gezien in actie in de vorm van GetString. 822 00:37:30,930 --> 00:37:33,230 Maar via deze functies zal binnenkort in staat zijn om te schrijven 823 00:37:33,230 --> 00:37:36,070 programma dat invoer van de gebruiker. 824 00:37:36,070 --> 00:37:39,230 >> Ondertussen overwegen deze programma, en te overwegen 825 00:37:39,230 --> 00:37:42,600 hoe we nu kunnen beginnen te voegen om met nieuwe constructen. 826 00:37:42,600 --> 00:37:44,530 Een snelle wervelwind tour en dan zullen we kijken 827 00:37:44,530 --> 00:37:47,340 bij sommige schrijven van sommige programma's handmatig onszelf. 828 00:37:47,340 --> 00:37:49,700 Voortaan als we willen implementeren van een staat, 829 00:37:49,700 --> 00:37:52,790 het gaat niet om te kijken als een leuke kleine mooie puzzelstukje. 830 00:37:52,790 --> 00:37:54,460 Het zal een beetje meer mysterieuze kijken. 831 00:37:54,460 --> 00:37:57,620 Maar dit is de canonieke structuur van een aandoening C. 832 00:37:57,620 --> 00:38:00,380 >> Het woord indien twee haakjes binnenste gedeelte 833 00:38:00,380 --> 00:38:02,590 gaat om een ​​soort te zijn van Booleaanse expressie. 834 00:38:02,590 --> 00:38:04,999 Nu is de slash slash in het midden, dit is 835 00:38:04,999 --> 00:38:07,290 op het moment een beetje als pseudocode placeholder code. 836 00:38:07,290 --> 00:38:11,576 Maar goed, elke regel code in C, dat begint met een slash slash 837 00:38:11,576 --> 00:38:12,850 is een reactie. 838 00:38:12,850 --> 00:38:15,920 >> Het is als een notitie die je misschien gezet op een essay, gedrukt op papier. 839 00:38:15,920 --> 00:38:17,290 Het is een briefje aan jezelf. 840 00:38:17,290 --> 00:38:20,100 Het heeft geen functionele effect op het programma. 841 00:38:20,100 --> 00:38:23,580 Het is een soort van een herinnering, het is je eigen documentatie over wat er gaande is. 842 00:38:23,580 --> 00:38:25,720 Dus dit momenteel is een soort van een tijdelijke aanduiding 843 00:38:25,720 --> 00:38:27,560 voor wat er in zit van die accolades 844 00:38:27,560 --> 00:38:29,810 uiteindelijk gaat om iets te doen. 845 00:38:29,810 --> 00:38:35,160 >> Ondertussen heb je twee vorken in de weg, een if else als deze. 846 00:38:35,160 --> 00:38:37,024 Je kunt als, elseif, anders. 847 00:38:37,024 --> 00:38:39,690 Nu is het vermeldenswaard, vooral als je hebt Googlen rond 848 00:38:39,690 --> 00:38:42,480 online bronnen van nieuwsgierigheid, of als je pick-up 849 00:38:42,480 --> 00:38:44,575 een van de cursus aanbevolen boeken over C, 850 00:38:44,575 --> 00:38:48,430 je zult zien dat mensen veel van verschillende voorkeuren voor de manier waarop 851 00:38:48,430 --> 00:38:50,510 om zich te uiten in de code. 852 00:38:50,510 --> 00:38:53,800 Sommige mensen willen op de vragen accolades zoals ik hier gedaan. 853 00:38:53,800 --> 00:38:57,760 Sommige mensen willen de curly zetten bretels bijvoorbeeld hier. 854 00:38:57,760 --> 00:39:01,700 >> Sommige mensen willen de elses te zetten hier en dan dit hier. 855 00:39:01,700 --> 00:39:05,120 Er zijn een aantal manieren om code schrijven, en geen van hen 856 00:39:05,120 --> 00:39:06,566 gelijk per se. 857 00:39:06,566 --> 00:39:08,440 Hoewel er een paar dat zijn behoorlijk mis. 858 00:39:08,440 --> 00:39:11,315 Maar er zijn no-- als dit uiteindelijk een zeer religieus debat. 859 00:39:11,315 --> 00:39:13,940 In feite is een van de meest vervelende dingen over informatica 860 00:39:13,940 --> 00:39:16,310 is hoe eigenwijs informatici kan zijn. 861 00:39:16,310 --> 00:39:19,880 En u zult zien in de tijd dat zelfs je persoonlijke voorkeuren te ontwikkelen 862 00:39:19,880 --> 00:39:22,130 over hoe de code eruit moet zien. 863 00:39:22,130 --> 00:39:27,162 >> Niet alleen gedragen, niet alleen creëren output, maar hoe het moet esthetisch kijken. 864 00:39:27,162 --> 00:39:30,120 Dus wat we zullen doen is u begeleiden langs de weg naar, voor nu althans, 865 00:39:30,120 --> 00:39:34,825 standaard CS50 stijl die minstens houdt het uniform en gemakkelijk te lezen. 866 00:39:34,825 --> 00:39:37,330 Maar meer op die onderscheidingen voor lang. 867 00:39:37,330 --> 00:39:41,830 >> Een Booleaanse expressie in C, als je wil zeggen als deze voorwaarde waar 868 00:39:41,830 --> 00:39:44,650 en deze andere voorwaarde is waar, je hoeft het woord niet schrijven 869 00:39:44,650 --> 00:39:46,610 en, zoals je zou doen in het Engels. 870 00:39:46,610 --> 00:39:50,580 U in plaats daarvan gebruik ampersand-teken, om redenen die we zullen terug te komen. 871 00:39:50,580 --> 00:39:54,520 Als je wilt zeggen of je twee gebruiken verticale balken, die op een Amerikaans toetsenbord 872 00:39:54,520 --> 00:39:57,650 is over het algemeen boven de Enter toets naast de backslash. 873 00:39:57,650 --> 00:40:03,080 En dit betekent gewoon dat als deze situatie of die andere voorwaarde waar doen. 874 00:40:03,080 --> 00:40:05,210 >> Ondertussen is er dit gekke ding, dat 875 00:40:05,210 --> 00:40:07,760 je zult gelegenheid hebben een keer gebruiken in een tijdje. 876 00:40:07,760 --> 00:40:10,390 Maar het is gewoon een alternatief manier om jezelf te uiten. 877 00:40:10,390 --> 00:40:12,400 Dit, voor nu, laten we bepalen, het is gewoon 878 00:40:12,400 --> 00:40:16,880 een andere funky manier van uiten if, elseif, elseif, elseif, elseif. 879 00:40:16,880 --> 00:40:19,720 Het is gewoon geformatteerd in termen van de gevallen, waar je letterlijk 880 00:40:19,720 --> 00:40:23,420 opsomming gegeven van de waarden die je zou willen om te controleren op. 881 00:40:23,420 --> 00:40:24,410 >> Ondertussen loops. 882 00:40:24,410 --> 00:40:26,842 We zagen vergelijkt Kras met een lus. 883 00:40:26,842 --> 00:40:29,550 En ik ga mijn hand zwaaien wat elk van deze dingen betekent. 884 00:40:29,550 --> 00:40:33,520 Maar merk op dat er een lus zal zeer vaak beginnen met het sleutelwoord voor. 885 00:40:33,520 --> 00:40:36,350 Of het zal beginnen met het trefwoord tijdje. 886 00:40:36,350 --> 00:40:41,360 Of het zal beginnen met het trefwoord doen, en eindigen met het trefwoord tijdje. 887 00:40:41,360 --> 00:40:43,920 >> Maar wat we op het punt om te zien is er meer als dit. 888 00:40:43,920 --> 00:40:47,950 Hier is, in het algemeen in C, hoe je misschien verklaren een variabele en geef het een waarde. 889 00:40:47,950 --> 00:40:50,610 In C is niet voldoende, zoals in Scratch, je gewoon 890 00:40:50,610 --> 00:40:52,810 zeggen geef me een variabele genaamd iets. 891 00:40:52,810 --> 00:40:55,960 Je moet C vertellen, en vertellen compiler, meer specifiek, 892 00:40:55,960 --> 00:40:58,680 wat voor soort waarde die u doen willen in de glazen kom te zetten. 893 00:40:58,680 --> 00:40:59,610 >> Is het een integer? 894 00:40:59,610 --> 00:41:02,210 Als dat zo is, moet je int en dan letterlijk zeggen 895 00:41:02,210 --> 00:41:04,220 de naam van de variabele, vervolgens een puntkomma. 896 00:41:04,220 --> 00:41:08,050 Als u in plaats daarvan wilde snaar en riep het s zoals ik deed mijn code hier vandaag, 897 00:41:08,050 --> 00:41:10,920 zou je touwtje s puntkomma zeggen. 898 00:41:10,920 --> 00:41:14,200 Zodra je het wilt geven een waarde u kunt dan gebruik maken van de gelijk-teken, 899 00:41:14,200 --> 00:41:16,211 oftewel de opdracht operator. 900 00:41:16,211 --> 00:41:17,960 En merk op hoe elk van deze regels code 901 00:41:17,960 --> 00:41:20,650 heeft de puntkomma aan het einde ervan. 902 00:41:20,650 --> 00:41:22,550 >> Maar eerlijk gezegd dit gewoon ziet er een beetje lelijk. 903 00:41:22,550 --> 00:41:26,580 Waarom kan ik niet zeggen tegen de computer, geven me een variabele en initialiseren op nul. 904 00:41:26,580 --> 00:41:28,380 Dat wil zeggen, geef me een lege glazen kom. 905 00:41:28,380 --> 00:41:28,980 Terwijl u kunt. 906 00:41:28,980 --> 00:41:32,250 En zo een van de uitspraak vraagt ​​je moeten stilistisch te maken over de tijd 907 00:41:32,250 --> 00:41:36,290 is, hoeft u uw code als dit te schrijven, of heb je soort van opruimen en imponeren 908 00:41:36,290 --> 00:41:39,040 mensen door het schrijven van twee lijnen als slechts een. 909 00:41:39,040 --> 00:41:41,830 Dit zou worden beschouwd algemeen een elegante manier 910 00:41:41,830 --> 00:41:43,870 van het schrijven van uw code stilistisch. 911 00:41:43,870 --> 00:41:45,200 >> Functies zijn we natuurlijk gezien. 912 00:41:45,200 --> 00:41:46,340 Ze gaan dit formaat te nemen. 913 00:41:46,340 --> 00:41:48,881 De naam van een functie, wat haakjes, en dan misschien wat 914 00:41:48,881 --> 00:41:49,910 spul binnen. 915 00:41:49,910 --> 00:41:52,540 Of u misschien gebruik van te zien meerdere functies side 916 00:41:52,540 --> 00:41:55,980 aan zij, als iets als dit. 917 00:41:55,980 --> 00:41:59,390 Nu als een tangent, doet deze grap zinvol nu? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [Lachen] 920 00:42:04,960 --> 00:42:09,360 Het betekent niet dat het grappig is, maar het heeft misschien te maken een beetje meer zin. 921 00:42:09,360 --> 00:42:12,140 Dus laten we nu gaan in de CS50 apparaat voor een moment. 922 00:42:12,140 --> 00:42:14,640 En laat me hier openstellen een teaser. 923 00:42:14,640 --> 00:42:17,470 >> En inderdaad een van de redenen voor de invoering van IKEA catalogus 924 00:42:17,470 --> 00:42:20,080 en knipperen de foto van de iPhone een beetje geleden 925 00:42:20,080 --> 00:42:24,700 was om daadwerkelijk te binden aan elkaar de feit dat slechts een paar jaar geleden, in 2007, 926 00:42:24,700 --> 00:42:26,540 Dit stukje code was model, dat 927 00:42:26,540 --> 00:42:29,820 een van de eerste uitvoering van een stuk software 928 00:42:29,820 --> 00:42:31,494 dat doet wat jailbreaken genoemd. 929 00:42:31,494 --> 00:42:34,410 Voor wie niet vertrouwd, jailbreaken iets als een telefoon of een iPhone 930 00:42:34,410 --> 00:42:37,680 betekent in wezen uitzoeken hoe om dingen te doen 931 00:42:37,680 --> 00:42:39,864 mee dat de vennootschap die maakte het niet van plan. 932 00:42:39,864 --> 00:42:42,780 Net als u wilt installeren bepaalde software die niet in de app store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking uw telefoon die je dingen doen als dat en nog veel meer. 934 00:42:45,405 --> 00:42:47,447 Maar wat was het leuk in 2007-- en er is al 935 00:42:47,447 --> 00:42:49,780 tientallen verschillende versies van deze dingen sindsdien, 936 00:42:49,780 --> 00:42:53,540 in allerlei languages-- dat het programma hier, genaamd iUnlock, 937 00:42:53,540 --> 00:42:57,036 was eigenlijk in C. En zo geschreven ik trok de broncode voor deze, 938 00:42:57,036 --> 00:42:59,910 alleen maar om soort te tonen u enkele van de overeenkomsten met de constructen 939 00:42:59,910 --> 00:43:01,450 we hebben tot nu toe te bespreken. 940 00:43:01,450 --> 00:43:05,150 Nu is er veel meer complexiteit hier dan hebben we al in de klas gezien. 941 00:43:05,150 --> 00:43:07,160 Laat me u omhoog een beetje hier. 942 00:43:07,160 --> 00:43:11,520 >> Maar let these-- goed merken we een paar dingen-- maar merken deze lijnen hier, 943 00:43:11,520 --> 00:43:14,090 waaronder standaard I / O dot h. 944 00:43:14,090 --> 00:43:17,660 En alle-- lijn 24, please-- merkt standaard I / O 945 00:43:17,660 --> 00:43:21,380 dot h en een hele hoop andere bestanden die blijkbaar anderen 946 00:43:21,380 --> 00:43:22,160 hebben geschreven. 947 00:43:22,160 --> 00:43:24,850 En als we naar beneden scrollen door dit, beetje willekeurig, 948 00:43:24,850 --> 00:43:27,910 Let op, ik weet niet hoe te schrijven dit alles nog zelf per se, 949 00:43:27,910 --> 00:43:28,880 maar er is zo. 950 00:43:28,880 --> 00:43:30,400 Dus blijkbaar is dit een tak. 951 00:43:30,400 --> 00:43:33,210 >> En als ik naar beneden scrollen een beetje verder is er nog een als. 952 00:43:33,210 --> 00:43:38,210 Als ik blader omhoog, denk ik rond regel 100 zag ik voor. 953 00:43:38,210 --> 00:43:40,020 Dus ik ben niet helemaal zeker hoe dit werkt nog niet, 954 00:43:40,020 --> 00:43:43,180 maar dit is een lus die gaat laat me herhalen wat aantal keren. 955 00:43:43,180 --> 00:43:45,230 En als ik scroll helemaal helemaal naar beneden 956 00:43:45,230 --> 00:43:51,020 Ik zie dat er een functioneren hier beneden geroepen 957 00:43:51,020 --> 00:43:54,570 main en enige aanvullende kredieten voor uw leesplezier. 958 00:43:54,570 --> 00:43:57,830 >> Dus dit is alleen te zeggen-- en we zetten deze online bij de bron van de cursus 959 00:43:57,830 --> 00:44:01,480 code today-- dat zelfs een aantal van deze apparaten die we voor lief nemen, 960 00:44:01,480 --> 00:44:05,130 aan het eind van de dag ben je nog steeds met behulp van deze eenvoudige constructies die we hebben 961 00:44:05,130 --> 00:44:07,430 is de invoering al tot nu toe. 962 00:44:07,430 --> 00:44:08,620 Dat is genoeg van die ene. 963 00:44:08,620 --> 00:44:11,480 Oke, dus nu laten we iets daadwerkelijk te bouwen. 964 00:44:11,480 --> 00:44:15,640 >> Laten we gaan dan iets als hello.c, en open deze, 965 00:44:15,640 --> 00:44:17,170 laten we schrijven het programma hier. 966 00:44:17,170 --> 00:44:19,850 Ik ga om te gaan en schrijf een programma genaamd adder.c, 967 00:44:19,850 --> 00:44:23,310 waarvan het doel in het leven gaat worden zoals mijn eerste super eenvoudige rekenmachine 968 00:44:23,310 --> 00:44:24,840 dat draagt ​​een paar nummers. 969 00:44:24,840 --> 00:44:27,050 Niet want dat is een harde probleem, maar omdat het 970 00:44:27,050 --> 00:44:29,390 kan ik nu binden samen een paar dingen. 971 00:44:29,390 --> 00:44:33,100 Dus ik ga om verder te gaan en omvatten standaard I / O dot h en CS50 dot h. 972 00:44:33,100 --> 00:44:34,670 Ik ga int main leegte zeggen. 973 00:44:34,670 --> 00:44:36,545 En in de toekomst weer we zullen terug te komen 974 00:44:36,545 --> 00:44:38,560 in deze context en nietig middelen. 975 00:44:38,560 --> 00:44:43,340 >> En nu ga ik iets zeggen zoals printf, geef me een integer. 976 00:44:43,340 --> 00:44:47,610 En nu op mijn tweede lijn, hoe kan ik mezelf uitdruk dergelijke 977 00:44:47,610 --> 00:44:50,980 dat wil ik een variabele verklaren dat gaat om een ​​int slaan? 978 00:44:50,980 --> 00:44:55,470 Letterlijk wat typ ik als ik wil maak een variabele die een int opslaat 979 00:44:55,470 --> 00:44:58,270 zou je dan zeggen? 980 00:44:58,270 --> 00:44:59,650 int een evenaart getint. 981 00:44:59,650 --> 00:45:00,485 Tuurlijk, dus dat werkt. 982 00:45:00,485 --> 00:45:02,360 En net voor de consistentie met de code die u zult 983 00:45:02,360 --> 00:45:04,485 zie online, laat me verandering dit naar x, alleen maar omdat x 984 00:45:04,485 --> 00:45:06,830 een gemeenschappelijke variabele te gebruiken, althans in algebra. 985 00:45:06,830 --> 00:45:08,720 Laat me nu ga je gang en doen weer printf. 986 00:45:08,720 --> 00:45:10,692 Geef me nog een integer. 987 00:45:10,692 --> 00:45:12,900 En nu ga ik naar soort van leren van dat patroon, 988 00:45:12,900 --> 00:45:14,490 Ik ga zeggen int y krijgt getInt. 989 00:45:14,490 --> 00:45:16,340 >> En we hebben niet gebruikt GetInt voor, maar net 990 00:45:16,340 --> 00:45:19,860 zoals GetString gaat en krijgt een string, zoals Javier deed uit het publiek, 991 00:45:19,860 --> 00:45:22,780 evenzo doet getInt knipperen de prompt. 992 00:45:22,780 --> 00:45:26,750 En effectief wachten op de gebruiker te geven het een geheel getal, door deze in te typen 993 00:45:26,750 --> 00:45:27,900 en slaan op Enter. 994 00:45:27,900 --> 00:45:30,850 Nu tot slot ga ik doen dit, printf de som van-- 995 00:45:30,850 --> 00:45:36,080 en laat me fantasie nu-- procent i en i procent aanwezig is 996 00:45:36,080 --> 00:45:39,270 i uitroepteken backslash n. 997 00:45:39,270 --> 00:45:42,750 En wat denk je dat ik ga zet zich nu in als de extra ingangen 998 00:45:42,750 --> 00:45:44,620 printf? 999 00:45:44,620 --> 00:45:47,380 >> Ik wil niet zeggen letterlijk citeren unquote x. 1000 00:45:47,380 --> 00:45:52,210 Ik wil naar de klas in x en toen, en nu laten we mooie 1001 00:45:52,210 --> 00:45:54,420 en laten we gewoon aannemen we kunnen doen wat we willen. 1002 00:45:54,420 --> 00:45:56,330 Wat je wilt zeggen de volgende stap? 1003 00:45:56,330 --> 00:45:57,070 x plus y. 1004 00:45:57,070 --> 00:45:58,520 En inderdaad, dat zal werken. 1005 00:45:58,520 --> 00:46:01,760 Het is minimaal programmeertalen begrijp elementaire rekenkundige, 1006 00:46:01,760 --> 00:46:03,500 en dus dit moet in feite werk. 1007 00:46:03,500 --> 00:46:06,730 >> Dus laat me gaan en weet te maken adder in mijn zwart-wit venster 1008 00:46:06,730 --> 00:46:08,090 hier beneden, Enter. 1009 00:46:08,090 --> 00:46:10,830 Cryptische lijn, maar geen fout bericht, dus dat is goed. 1010 00:46:10,830 --> 00:46:14,410 Dot slash adder, geef mij een geheel getal, 1. 1011 00:46:14,410 --> 00:46:16,230 Geef me nog een geheel getal, 2. 1012 00:46:16,230 --> 00:46:18,770 De som van 1 en 2 is 3. 1013 00:46:18,770 --> 00:46:21,730 >> Oke, dus een vrij triviale programma, maar wat heeft het gedaan? 1014 00:46:21,730 --> 00:46:25,680 Het stond me toe om een ​​functie te gebruiken hier noemen, een andere functie oproepen hier, 1015 00:46:25,680 --> 00:46:29,260 twee gesprekken te getInt, een derde oproep printf, 1016 00:46:29,260 --> 00:46:30,720 en vervolgens met behulp van deze plaatsaanduidingen. 1017 00:46:30,720 --> 00:46:33,160 Dus het is een beetje meer verfijnder dan de vorige keer. 1018 00:46:33,160 --> 00:46:35,260 Maar wat als ik wil een beetje liefhebber? 1019 00:46:35,260 --> 00:46:38,900 >> Laat me gaan en nu dit te doen. 1020 00:46:38,900 --> 00:46:42,890 Laat me ga je gang en maak een nieuw bestand genaamd omstandigheden nul. 1021 00:46:42,890 --> 00:46:44,890 En ik ga sparen enige tijd voor de klassen omwille 1022 00:46:44,890 --> 00:46:48,260 en gewoon plakken in dat code als uitgangspunt. 1023 00:46:48,260 --> 00:46:51,510 En nu ben ik gewoon gaan zetten iets nieuws hier in het midden. 1024 00:46:51,510 --> 00:46:55,889 Dus printf zou ik graag een geheel getal alstublieft. 1025 00:46:55,889 --> 00:46:58,180 En al deze code is beschikbaar op de website van de cursus, 1026 00:46:58,180 --> 00:47:00,556 u niet hoeft te typen het allemaal uit in de klas als je liever niet. 1027 00:47:00,556 --> 00:47:02,638 int, en nu ga ik naar , in plaats van x en y, 1028 00:47:02,638 --> 00:47:05,270 Ik ga gebruik maken van n, dat is Waarschijnlijk de meest voorkomende naam 1029 00:47:05,270 --> 00:47:09,220 een integer in een computerprogramma. 1030 00:47:09,220 --> 00:47:12,060 En nu wil ik een doen weinig vonnis hier. 1031 00:47:12,060 --> 00:47:15,460 Ik ga om te zien of n groter is dan 0, dan 1032 00:47:15,460 --> 00:47:23,670 Ik ga printf-- whoops zeggen, printf-- je pakte een positief getal, 1033 00:47:23,670 --> 00:47:25,370 uitroepteken backslash n. 1034 00:47:25,370 --> 00:47:26,460 Sluiten dat. 1035 00:47:26,460 --> 00:47:33,150 Anders ga ik uitprinten printf u een negatief getal opgehaald. 1036 00:47:33,150 --> 00:47:35,377 >> Nu voordat je tegen me te schreeuwen, laten we lopen dit programma. 1037 00:47:35,377 --> 00:47:36,210 Laat me hier beneden gaan. 1038 00:47:36,210 --> 00:47:40,730 En hoe kan ik een programma te compileren noemde voorwaarden dash 0? 1039 00:47:40,730 --> 00:47:42,300 Maak omstandigheden dash 0. 1040 00:47:42,300 --> 00:47:45,560 Soort van een domme naam, maar-- dammit. 1041 00:47:45,560 --> 00:47:47,560 OK, goed leermoment. 1042 00:47:47,560 --> 00:47:48,410 Waarom heeft die breken? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Wat heb ik per ongeluk dit bestand noemen? 1045 00:47:54,710 --> 00:47:56,876 U kunt soort afleiden vanuit het tabblad hierboven. 1046 00:47:56,876 --> 00:47:58,750 Dus het is niet slecht dat ik deed dit, omdat dit 1047 00:47:58,750 --> 00:48:00,208 zal wellicht gebeuren met een aantal van jullie. 1048 00:48:00,208 --> 00:48:03,880 Dus ik per ongeluk de naam van mijn broncode toestand 0. 1049 00:48:03,880 --> 00:48:09,950 Maar mijn broncode volgens afspraak moeten worden in een bestand met de naam aandoening 0 dash c, 1050 00:48:09,950 --> 00:48:11,720 of wat punt c. 1051 00:48:11,720 --> 00:48:12,610 >> Dus laat me dit op te lossen. 1052 00:48:12,610 --> 00:48:16,880 Net zoals Microsoft Word ik kan gaan Opslaan als en doe voorwaarde 0 dot c. 1053 00:48:16,880 --> 00:48:20,100 Nu alleen te netjes ben ik zijn gaan om verder te gaan en te verwijderen 1054 00:48:20,100 --> 00:48:23,020 toestand 0, wat mijn oude versie was. 1055 00:48:23,020 --> 00:48:26,550 En laten we nu niet te maken toestand 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, lijkt goed. 1057 00:48:27,870 --> 00:48:29,510 >> Toestand 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Ik wil graag een integer alstublieft, 50, je een positief getal opgehaald. 1059 00:48:33,530 --> 00:48:35,390 Nu hoe zit het negatieve 50? 1060 00:48:35,390 --> 00:48:37,660 Je pakte een negatief getal. 1061 00:48:37,660 --> 00:48:39,605 Hoe zit het nu, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Vrij zeker 0 is niet negatief. 1064 00:48:45,350 --> 00:48:47,780 >> Dus dit is een soort van een logische fout. 1065 00:48:47,780 --> 00:48:50,680 Hoe kan ik dit oplossen? 1066 00:48:50,680 --> 00:48:57,260 Anders als n kleiner is dan 0, doe dit, anders kunnen we een drieweg tak hier hebben, 1067 00:48:57,260 --> 00:49:01,740 printf je geplukt 0. 1068 00:49:01,740 --> 00:49:06,150 Dus nu als ik deze opnieuw uitvoeren programma, na het compileren van het 1069 00:49:06,150 --> 00:49:10,790 opnieuw met merk, en nu opnieuw uitvoeren toestand 0, wat ik hier zie 1070 00:49:10,790 --> 00:49:14,570 0 is geeft mij dat de output. 1071 00:49:14,570 --> 00:49:16,280 Dus waar gaan we heen met dit? 1072 00:49:16,280 --> 00:49:18,930 >> Nou, het is heel gemakkelijk om het oog te verliezen van het bos door de bomen. 1073 00:49:18,930 --> 00:49:23,590 En dus kunnen we concluderen met deze 2 en 1/2 minuten durende video 1074 00:49:23,590 --> 00:49:25,710 dat uiteindelijk een beetje van een advertentie van Google, 1075 00:49:25,710 --> 00:49:28,850 maar dat is echt een bewijs van wat zelfs het gebruik van deze fundamentele gebouw 1076 00:49:28,850 --> 00:49:33,020 blokken kunnen we uiteindelijk een keer te doen we hebben een beetje van de programmering 1077 00:49:33,020 --> 00:49:34,463 savvy onder onze riemen. 1078 00:49:34,463 --> 00:49:35,150 >> [Muziek] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO BRIERLEY (VoiceOver): Het was 26 jaar geleden, 1081 00:49:40,540 --> 00:49:42,470 en ik stond op het punt te draaien 5. 1082 00:49:42,470 --> 00:49:45,465 We kwamen aan bij het station en We stapten onze trein samen. 1083 00:49:45,465 --> 00:49:48,010 Mijn broer zei gewoon ik zal blijf hier, en ik kom terug. 1084 00:49:48,010 --> 00:49:51,140 En ik dacht, nou weet je, Ik kan net zo goed gaan slapen 1085 00:49:51,140 --> 00:49:52,690 en hij zal gewoon me wakker. 1086 00:49:52,690 --> 00:49:55,145 En toen ik wakker werd de volgende dag, de hele wagen 1087 00:49:55,145 --> 00:49:59,125 was leeg op een op hol geslagen trein, een spook trein met me ik weet niet waar. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Ik werd aangenomen, naar Australië, een Australische familie. 1090 00:50:06,280 --> 00:50:09,710 En moeder had versierd mijn kamer met de kaart van India, 1091 00:50:09,710 --> 00:50:11,950 die zette ze naast mijn bed. 1092 00:50:11,950 --> 00:50:15,830 Ik werd wakker elke ochtend aangezien map, en dus 1093 00:50:15,830 --> 00:50:18,530 het soort hield de herinnering levend. 1094 00:50:18,530 --> 00:50:20,530 Mensen zouden zeggen, je bent probeert een naald te 1095 00:50:20,530 --> 00:50:23,560 in een hooiberg, Saroo je zult het nooit vinden. 1096 00:50:23,560 --> 00:50:28,540 >> Ik zou hebben geflitst van de plaatsen die ik gebruikt om te gaan, het flitsen van mijn familie 1097 00:50:28,540 --> 00:50:29,890 gezichten. 1098 00:50:29,890 --> 00:50:34,060 Er was het beeld van mijn moeder, zitten met haar benen gekruist, 1099 00:50:34,060 --> 00:50:35,740 alleen maar kijken naar haar huilen. 1100 00:50:35,740 --> 00:50:38,160 Het leven is net zo hard. 1101 00:50:38,160 --> 00:50:41,237 Dat was mijn schat. 1102 00:50:41,237 --> 00:50:44,320 En ik keek naar Google Map en realiseerde er is Google Earth ook. 1103 00:50:44,320 --> 00:50:48,140 In een wereld waar je kan inzoomen op, Ik begon al deze gedachten hebben 1104 00:50:48,140 --> 00:50:51,500 en welke mogelijkheden dat dit voor mij kon doen. 1105 00:50:51,500 --> 00:50:54,890 Ik zei tegen mezelf, je weet wel, je hebt kreeg al die fotografische herinneringen 1106 00:50:54,890 --> 00:50:58,590 en monumenten waar je vandaan komt, en je weet wat de stad eruit ziet. 1107 00:50:58,590 --> 00:51:03,060 Dit zou een toepassing kunnen zijn dat u kunt gebruiken om je weg terug te vinden. 1108 00:51:03,060 --> 00:51:06,720 >> Ik dacht, nou ik zal een zet stip op Calcutta treinstation, 1109 00:51:06,720 --> 00:51:10,890 en een straal lijn, weet je, dat je hierbij is echter dat in dit gebied. 1110 00:51:10,890 --> 00:51:13,750 Ik kwam een ​​soort van over deze treinrails. 1111 00:51:13,750 --> 00:51:18,160 En ik begon na het, en Ik kwam bij een treinstation dat 1112 00:51:18,160 --> 00:51:22,228 weerspiegeld hetzelfde beeld dat was in mijn herinneringen. 1113 00:51:22,228 --> 00:51:23,707 Alles op elkaar afgestemd. 1114 00:51:23,707 --> 00:51:27,950 Ik dacht alleen maar yep, ik weet waar ik heen ga. 1115 00:51:27,950 --> 00:51:30,116 Ik ga gewoon naar het laten kaart die ik in mijn hoofd 1116 00:51:30,116 --> 00:51:33,080 leid mij en neem me terug naar mijn woonplaats. 1117 00:51:33,080 --> 00:51:36,420 >> Ik kwam tot de drempel van het huis, waar ik ben geboren. 1118 00:51:36,420 --> 00:51:39,140 En liep rond ongeveer 15 meter om de hoek, 1119 00:51:39,140 --> 00:51:42,980 er drie dames staan buiten naast elkaar. 1120 00:51:42,980 --> 00:51:47,830 En de middelste stapte naar voren, en Ik dacht, dit is je moeder. 1121 00:51:47,830 --> 00:51:53,450 Ze kwam naar voren, ze omhelsde me, en we waren er voor ongeveer vijf minuten. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Ze pakte mijn hand en Ze nam me mee naar het huis 1124 00:51:59,000 --> 00:52:02,450 en kreeg aan de telefoon, waar ze belde mijn zus en mijn broer 1125 00:52:02,450 --> 00:52:05,600 om te zeggen dat, je weet wel, je broer heeft net 1126 00:52:05,600 --> 00:52:09,340 opeens verscheen als een geest. 1127 00:52:09,340 --> 00:52:12,440 En dan is de familie werd herenigd. 1128 00:52:12,440 --> 00:52:15,110 Alles is al goed, Ik hielp mijn moeder uit, 1129 00:52:15,110 --> 00:52:17,110 ze hoeft niet weg te zwoegen. 1130 00:52:17,110 --> 00:52:19,555 Ze kan de rest wonen van haar leven in vrede. 1131 00:52:19,555 --> 00:52:23,460 >> Het was een naald in een hooiberg, maar de naald was. 1132 00:52:23,460 --> 00:52:24,400 Alles is er. 1133 00:52:24,400 --> 00:52:28,260 Alles hebben we in de wereld is aan de kraan van een knop. 1134 00:52:28,260 --> 00:52:32,010 Maar je moet de wil hebben en de wil om het te willen. 1135 00:52:32,010 --> 00:52:32,950 >> [Muziek] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Heerlijk zoete testimonial 1138 00:52:38,170 --> 00:52:40,540 om gewoon wat je kunt nu doen met de technologie. 1139 00:52:40,540 --> 00:52:43,390 We zullen volgende week zien. 1140 00:52:43,390 --> 00:52:44,374