1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [VIDEO AFSPELEN] 3 00:00:16,626 --> 00:00:19,410 >> -Een Triomf van wiskundige en mechanische vaardigheid 4 00:00:19,410 --> 00:00:23,270 is deze grote nieuwe automatische rekenmachine aan de Harvard University. 5 00:00:23,270 --> 00:00:27,140 Ingewikkelde problemen in de wiskunde gebracht door middel van de machine in gecodeerde vorm 6 00:00:27,140 --> 00:00:31,710 op band nauwkeurig opgelost in een minute fractie van de tijd die nodig is 7 00:00:31,710 --> 00:00:32,819 menselijke berekening. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Ontworpen om alle vormen van bespoedigen wiskundige en wetenschappelijk onderzoek, 10 00:00:48,220 --> 00:00:53,840 de gigantische mechanische hersenen zal werken voor de Amerikaanse marine tot eind van de oorlog. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [END AFSPELEN] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. MALAN: Dit is CS50. 14 00:01:08,590 --> 00:01:10,590 Het verleden was een magische plek, maar als je ooit 15 00:01:10,590 --> 00:01:13,366 vroeg zich af wat dat apparaat is in Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 het is inderdaad een deel van de Harvard Mark I, en het is 17 00:01:16,150 --> 00:01:18,710 op het display er nu de afgelopen jaren. 18 00:01:18,710 --> 00:01:20,590 En wat je ziet ingebed in probleem set 19 00:01:20,590 --> 00:01:24,416 een is een kijkje achter de schermen wat dat apparaat deed en doet, 20 00:01:24,416 --> 00:01:27,540 van professor Harry Lewis, die in de informatica-afdeling hier. 21 00:01:27,540 --> 00:01:29,440 Zodat meer op dat in slechts een beetje. 22 00:01:29,440 --> 00:01:33,990 >> Maar vandaag beginnen we om de overgang van vorige week aan deze, 23 00:01:33,990 --> 00:01:37,290 en we zullen noemen brengen van een foto hier 24 00:01:37,290 --> 00:01:38,630 Dat is eigenlijk heel beroemd. 25 00:01:38,630 --> 00:01:42,270 Heeft iemand wat dit weten is hier op het scherm? 26 00:01:42,270 --> 00:01:43,880 Althans volgens de mythe. 27 00:01:43,880 --> 00:01:44,837 Ja. 28 00:01:44,837 --> 00:01:45,920 Publiek: De eerste virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: Dus het was zogenaamd de eerste echte bug in een computer. 30 00:01:49,570 --> 00:01:52,490 Nu in werkelijkheid het woord bug, voor een fout in een programma, 31 00:01:52,490 --> 00:01:55,250 is bij ons voor een aantal tijd in de fysieke wereld 32 00:01:55,250 --> 00:01:58,190 en dit was een van de eerste gedocumenteerde tijden waarin iemand daadwerkelijk 33 00:01:58,190 --> 00:02:02,280 plukte een grote nachtvlinder uit de Mark II computer, zet het in het bindmiddel, 34 00:02:02,280 --> 00:02:05,006 en dan nam het als de eerste bekende bug 35 00:02:05,006 --> 00:02:06,630 om daadwerkelijk fysiek gevonden. 36 00:02:06,630 --> 00:02:10,104 Dus zo werd ingevoerd dat in de lore van vandaag. 37 00:02:10,104 --> 00:02:12,020 Alles van de laatste week is online beschikbaar. 38 00:02:12,020 --> 00:02:14,840 In het bijzonder middelen die je misschien niet noodzakelijk merken, vooral 39 00:02:14,840 --> 00:02:15,881 Als hier te komen in persoon. 40 00:02:15,881 --> 00:02:20,230 Dus een van de leer fellows per jaar maakt een canonieke set van noten, 41 00:02:20,230 --> 00:02:22,010 dus je moet niet te houden je hoofd naar beneden, in een poging 42 00:02:22,010 --> 00:02:24,410 om bijna alles transcriberen dat zou kunnen gebeuren hier in de klas. 43 00:02:24,410 --> 00:02:25,940 Dus beseffen dat degenen zogenaamde [? Scribd?] Notities 44 00:02:25,940 --> 00:02:29,350 zijn online, zeker de glijbanen en source code die we gebruiken in de klas. 45 00:02:29,350 --> 00:02:31,436 Wij maken volledige tekst transcripties ook verkrijgbaar. 46 00:02:31,436 --> 00:02:34,310 Dus als je vaag herinneren wat termijn en wil het een beetje opzoeken 47 00:02:34,310 --> 00:02:37,280 gemakkelijker, beseffen dat alle daarvan is online doorzoekbaar. 48 00:02:37,280 --> 00:02:38,930 Evenals walkthroughs ook. 49 00:02:38,930 --> 00:02:42,710 Inderdaad, vandaag beginnen we om naar te kijken een lager niveau programmeertaal, 50 00:02:42,710 --> 00:02:45,290 binnenkort ons bekend als C, en het is heel gemakkelijk 51 00:02:45,290 --> 00:02:48,820 om een ​​soort van verloren na een paar momenten tijd, en dan een soort van verwondering 52 00:02:48,820 --> 00:02:52,370 hoe kregen we eigenlijk wat meer complex voorbeeld van de eenvoudigste. 53 00:02:52,370 --> 00:02:54,975 En dus realiseren we zullen cherry pick tijdens de les een aantal 54 00:02:54,975 --> 00:02:57,850 van de representatieve voorbeelden, maar beseffen dat er zo veel meer is ook 55 00:02:57,850 --> 00:03:01,140 online beschikbaar, zodat u kunt werken door het op uw eigen tempo, 56 00:03:01,140 --> 00:03:02,950 maar je bent het meest comfortabel. 57 00:03:02,950 --> 00:03:05,200 >> Maar we vertrokken af ​​met programma's die alleen deze waren. 58 00:03:05,200 --> 00:03:09,690 Dus ik klik op de groene vlag, en wat doet dit programma doen? 59 00:03:09,690 --> 00:03:10,710 Zegt, hello, wereld. 60 00:03:10,710 --> 00:03:13,180 Het maakt de kat zeggen hallo in zijn kleine wereld 61 00:03:13,180 --> 00:03:15,990 op de bovenste linkerkant van de gebruikersinterface Scratch's. 62 00:03:15,990 --> 00:03:18,810 Maar we begonnen in te voeren sommige terminologie vorige week. 63 00:03:18,810 --> 00:03:23,614 En ja, dit soort dingen we wat genoemd? 64 00:03:23,614 --> 00:03:25,280 Wat zou de algemene term voor dit zijn? 65 00:03:25,280 --> 00:03:26,266 Ja. 66 00:03:26,266 --> 00:03:28,210 Een methode of een verklaring. 67 00:03:28,210 --> 00:03:29,280 Tuurlijk, het is een actie. 68 00:03:29,280 --> 00:03:30,140 Doe dit. 69 00:03:30,140 --> 00:03:32,400 En toch waren er andere vormen te krabben, 70 00:03:32,400 --> 00:03:35,360 Naast deze zogenaamde statement, waren ze ook 71 00:03:35,360 --> 00:03:38,221 dit soort dingen, dat we wat genoemd? 72 00:03:38,221 --> 00:03:38,720 Ja. 73 00:03:38,720 --> 00:03:39,634 Dus een lus. 74 00:03:39,634 --> 00:03:42,050 En in dit geval, deze zaak repeats, uiteraard, 10 keer. 75 00:03:42,050 --> 00:03:43,040 Er is een eeuwig blok. 76 00:03:43,040 --> 00:03:44,164 Er zijn een paar van anderen. 77 00:03:44,164 --> 00:03:48,309 En vandaag gaan we om te zien hoe vertaalt dit naar een meer moderne wereld, 78 00:03:48,309 --> 00:03:50,850 als je wil, ook al is het zal verschijnen op het eerste gezicht 79 00:03:50,850 --> 00:03:52,024 veel meer mysterieuze zijn. 80 00:03:52,024 --> 00:03:53,190 Maar die waren inderdaad loops. 81 00:03:53,190 --> 00:03:56,182 En dan hebben we dingen als Dit die deze vorm had, 82 00:03:56,182 --> 00:03:57,515 en in wezen vragen. 83 00:03:57,515 --> 00:03:58,890 En we aangeduid om deze als wat? 84 00:03:58,890 --> 00:03:59,762 >> PUBLIEK: Boolean expressie. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Ja. 86 00:04:00,320 --> 00:04:01,340 Boolean expressie. 87 00:04:01,340 --> 00:04:04,502 Iets dat is waar of onwaar, ja of nee, één of nul, 88 00:04:04,502 --> 00:04:05,960 maar je wilt de wereld te bekijken. 89 00:04:05,960 --> 00:04:08,335 Maar we noemden die Boole uitdrukkingen, en wij hen plug 90 00:04:08,335 --> 00:04:09,900 in omstandigheden, of filialen. 91 00:04:09,900 --> 00:04:12,170 En in de wereld van Scratch, alles netjes 92 00:04:12,170 --> 00:04:15,460 vergrendelingen in termen van zijn vorm, als het maakt logisch daartoe, 93 00:04:15,460 --> 00:04:18,490 maar je hoeft niet te stoppen bij alleen doet een ding voorwaardelijk, 94 00:04:18,490 --> 00:04:20,450 kunt u een spreekwoordelijke hebben vork in de weg 95 00:04:20,450 --> 00:04:24,040 en doe dit of dat, als de voorwaarde waar is of niet. 96 00:04:24,040 --> 00:04:26,040 En dan, zoals u zult zien, als je nog niet hebt gedaan, 97 00:04:26,040 --> 00:04:27,480 U kunt nest zelfs deze blokken. 98 00:04:27,480 --> 00:04:32,110 Dus Scratch groeit om de vormen te vullen dat je zou willen voegen in het, 99 00:04:32,110 --> 00:04:35,330 dus je kunt eigenlijk uitdrukken meest elke logica die je zou willen doen. 100 00:04:35,330 --> 00:04:38,220 >> Nu een paar woorden van de aankondiging voor zowel hier en New Haven. 101 00:04:38,220 --> 00:04:39,370 Dus snijden begint vandaag. 102 00:04:39,370 --> 00:04:42,120 De URL hiervoor is op de cursus website, voor degenen die niet bekend. 103 00:04:42,120 --> 00:04:43,970 Secties zal een gelegenheid om samen te komen 104 00:04:43,970 --> 00:04:46,553 in een veel meer intieme omgeving dan [? Sanders?] Maakt, 105 00:04:46,553 --> 00:04:50,347 met 10 om 20 klasgenoten met een lesgeven fellow bij verschillende tracks, 106 00:04:50,347 --> 00:04:51,930 en verschillend tempo, als je daarvoor kiest. 107 00:04:51,930 --> 00:04:54,080 Inderdaad de cursus aanbiedingen secties 108 00:04:54,080 --> 00:04:57,340 voor degenen die minder comfortabel, meer comfortabel, en ergens tussenin, 109 00:04:57,340 --> 00:04:59,860 en de rol Bealngrijkste is er is geen formele definitie, 110 00:04:59,860 --> 00:05:04,600 maar als je minder comfortabel, je soort van weet. 111 00:05:04,600 --> 00:05:07,470 Je bent een beetje onverschrokken over de idee van het stappen voet, misschien, terug 112 00:05:07,470 --> 00:05:10,130 in de klas, of het tonen tot een tussendoor gedeelte. 113 00:05:10,130 --> 00:05:12,770 Als u de programmering geweest aangezien u waren zes jaar oud, comfortabeler, 114 00:05:12,770 --> 00:05:13,400 misschien voor jou. 115 00:05:13,400 --> 00:05:16,150 En als het is een soort van een toss-up, dat is precies wat de tussenin 116 00:05:16,150 --> 00:05:17,190 is bedoeld om te worden. 117 00:05:17,190 --> 00:05:18,410 >> Nu, in de tussentijd, voor een klasse deze omvang, 118 00:05:18,410 --> 00:05:21,326 het kost ons heel wat tijd om sectie iedereen, dus hebben we de zogenaamde, 119 00:05:21,326 --> 00:05:24,030 super secties, komen deze weekeinde en begin volgende week, 120 00:05:24,030 --> 00:05:26,570 dus neem een ​​kijkje op de website van de cursus voor degenen die zijn natuurlijk breed, 121 00:05:26,570 --> 00:05:28,610 en ook gefilmd voor degenen die ze niet kunnen maken. 122 00:05:28,610 --> 00:05:33,470 En secties zelf zullen beginnen in week drie CS50 nul index. 123 00:05:33,470 --> 00:05:35,880 Probleem set 0 is al op de website van de cursus. 124 00:05:35,880 --> 00:05:40,010 En beseffen dat je hebt negen dagen te laat dit semester. 125 00:05:40,010 --> 00:05:43,240 Dus dit is een upgrade van de laatste jaar, toen we vijf dagen te laat. 126 00:05:43,240 --> 00:05:46,210 >> Dus als je je afvraagt, We hebben negen probleem sets. 127 00:05:46,210 --> 00:05:53,200 Je hebt late negen dagen, die elk je kunt alleen doorbrengen één per week. 128 00:05:53,200 --> 00:05:56,089 Dat al maakt effectief het probleem stelt wijten vrijdag 129 00:05:56,089 --> 00:05:58,630 maar het doel is om een ​​beetje zetten beetje psychologische druk 130 00:05:58,630 --> 00:06:01,100 op u om te proberen te krijgen dingen op donderdag 131 00:06:01,100 --> 00:06:03,960 want zoals u zult snel ontdekken, voor beter of slechter, de meeste 132 00:06:03,960 --> 00:06:07,820 alles in de software-wereld eindigt nemen veel langer dan u verwacht. 133 00:06:07,820 --> 00:06:10,620 Dus beschouwen het als een soort van de kans om te helpen 134 00:06:10,620 --> 00:06:13,880 jezelf te richten donderdag, maar neem comfort in dat, ja, 135 00:06:13,880 --> 00:06:14,950 alles is het gevolg van vrijdag. 136 00:06:14,950 --> 00:06:17,590 En als je ze in te dienen over Donderdag, dat is geweldig. 137 00:06:17,590 --> 00:06:21,020 Er is geen bonus punten of extra krediet voor het voldoen aan deze termijn. 138 00:06:21,020 --> 00:06:23,250 Het is bedoeld om slechts een kruk zijn. 139 00:06:23,250 --> 00:06:25,810 >> En kantooruren, zowel hier en in New Haven, 140 00:06:25,810 --> 00:06:28,840 in persoon, als je wilt een ontmoeting met een van onze cursussen 141 00:06:28,840 --> 00:06:31,060 onderwijs fellows en CA's voor hulp. 142 00:06:31,060 --> 00:06:31,640 >> Prima. 143 00:06:31,640 --> 00:06:33,110 Dus nu, laten we deze meer echt. 144 00:06:33,110 --> 00:06:35,470 En voor een moment dat het gaat om te beginnen om een ​​beetje meer mysterieuze, maar zeer 145 00:06:35,470 --> 00:06:37,310 snel op vrijdag en Volgende week zullen we 146 00:06:37,310 --> 00:06:41,230 in staat om zo veel meer te doen dan we konden tot nu toe in de Scratch. 147 00:06:41,230 --> 00:06:44,350 Dus we code laatste geïntroduceerd week, zij het picturale. 148 00:06:44,350 --> 00:06:45,620 Het was puzzelstukjes. 149 00:06:45,620 --> 00:06:48,800 En we geformaliseerd dat het iets genaamd broncode, 150 00:06:48,800 --> 00:06:50,330 maar zou niet eruit? 151 00:06:50,330 --> 00:06:52,550 Nou, het leek een beetje iets zoals dit. 152 00:06:52,550 --> 00:06:55,410 En in feite alleen maar om soort plagen waar we kunnen gaan met dit. 153 00:06:55,410 --> 00:06:57,800 Ik ga om te gaan en het openen van een raam hier, 154 00:06:57,800 --> 00:06:59,810 en ik ga gewoon Nieuw bestand kiezen. 155 00:06:59,810 --> 00:07:03,200 En ik ga dit bestand op te slaan zo iets als hallo dot c. 156 00:07:03,200 --> 00:07:05,700 Meer op dat de keuze van woorden in slechts een moment. 157 00:07:05,700 --> 00:07:08,630 En dit is hoe iemand zou kunnen gaan over het schrijven van een programma. 158 00:07:08,630 --> 00:07:13,990 Zijn standaard I / O punt h, int main leegte, en open accolade, dicht 159 00:07:13,990 --> 00:07:19,430 accolade, printf hello komma wereld, backslash n, puntkomma, Opslaan gedaan. 160 00:07:19,430 --> 00:07:19,930 OK. 161 00:07:19,930 --> 00:07:21,670 Ik heb geschreven mijn eerste programma, maar het gaat 162 00:07:21,670 --> 00:07:23,878 ongelooflijk underwhelmed te zijn want als ik eigenlijk 163 00:07:23,878 --> 00:07:27,352 Dit programma, uiteraard, door eerst schriftelijk kenbaar te maken hello, 164 00:07:27,352 --> 00:07:30,310 en dan dot slash hallo, en we zullen door dit in veel meer detail 165 00:07:30,310 --> 00:07:31,730 in een moment, dat is alles wat het doet. 166 00:07:31,730 --> 00:07:33,270 Geen pop geopend alle vensters. 167 00:07:33,270 --> 00:07:35,070 Het doet niets bijzonder luxe. 168 00:07:35,070 --> 00:07:38,830 Alles wat het doet is wat ik vertelde het aan doen, maar hoe krijgen we dat? 169 00:07:38,830 --> 00:07:40,560 En hoe kunnen we bouwen op dat? 170 00:07:40,560 --> 00:07:43,430 Nou, laten we introduceren een paar verschillende concepten here. 171 00:07:43,430 --> 00:07:47,170 >> Zo een, we staan ​​op het punt om te beginnen een programma genaamd compiler. 172 00:07:47,170 --> 00:07:51,470 Een compiler bestaat voor Mac OS, Windows, Linux elk aantal gebruikers, 173 00:07:51,470 --> 00:07:54,540 en we zullen je snel kennismaken met de omgeving die we zullen gebruiken, 174 00:07:54,540 --> 00:07:57,410 maar een compiler is gewoon een algemene term voor een stukje software 175 00:07:57,410 --> 00:08:01,940 dat neemt broncode en produceert objectcode van. 176 00:08:01,940 --> 00:08:03,940 Met andere woorden, als je hebben als input uw bron 177 00:08:03,940 --> 00:08:08,250 code, iets wat ik net getypt, het uiteindelijk produceert object code. 178 00:08:08,250 --> 00:08:11,780 En object code is eigenlijk gewoon een mooie manier om te zeggen dat uitgangen 179 00:08:11,780 --> 00:08:12,926 nul en één's. 180 00:08:12,926 --> 00:08:14,800 Met andere woorden, source code, ook al is het 181 00:08:14,800 --> 00:08:17,240 ga een beetje mysterieuze kijken, en een beetje minder vriendelijk 182 00:08:17,240 --> 00:08:19,590 Scratch dan op het eerste gezicht, het is tenminste iets 183 00:08:19,590 --> 00:08:21,120 dat wij mensen kunnen begrijpen. 184 00:08:21,120 --> 00:08:24,360 Het ziet er soort en klinkt als Engels ook al is het zeer beknopt. 185 00:08:24,360 --> 00:08:28,040 Overwegende dat de programmering in de nul en je, als onze voorgangers moest doen, 186 00:08:28,040 --> 00:08:30,920 enkele jaren geleden, was niet een bijzonder leuke uitdaging. 187 00:08:30,920 --> 00:08:33,710 En toch, dit is wat de computer nog begrijpt. 188 00:08:33,710 --> 00:08:37,010 Dus compiler krijgt ons uit broncode code bezwaar. 189 00:08:37,010 --> 00:08:39,860 Het is als het openen van een bestand met de compiler, en als je het op te slaan, 190 00:08:39,860 --> 00:08:41,419 je die nullen en enen. 191 00:08:41,419 --> 00:08:43,419 Dus we zullen zien hoe dat te doen dat in slechts een moment. 192 00:08:43,419 --> 00:08:47,400 >> Maar laten we nu proberen om een ​​te bieden Brug tussen vorige week en dit, 193 00:08:47,400 --> 00:08:50,660 zodat zelfs als we opgehangen op zaken als accolades, 194 00:08:50,660 --> 00:08:54,100 en puntkomma's en haakjes, en al deze intellectueel interessant 195 00:08:54,100 --> 00:08:57,620 aspecten van de programmering, die zeer begrijpelijkerwijs struikelen mensen vroeg op, 196 00:08:57,620 --> 00:09:00,930 beseffen dat alle ideeën vandaag, zijn dezelfde als laatste. 197 00:09:00,930 --> 00:09:03,975 Dus laatste, dit voorbeeld zagen we hier, Hello World programma. 198 00:09:03,975 --> 00:09:07,500 Nou, vanaf vandaag, als we willen de uitvoering van die hetzelfde programma, 199 00:09:07,500 --> 00:09:10,800 het gaat om een ​​kijkje iets als dit. 200 00:09:10,800 --> 00:09:14,040 En we zullen uitleggen wat het duurde niet lang int, en de belangrijkste, en leegte, en dat alles 201 00:09:14,040 --> 00:09:18,770 is, maar in ieder geval zie ik hier al het bekende Hello World. 202 00:09:18,770 --> 00:09:20,860 >> Ondertussen, dingen zoals functie, zeg hallo, 203 00:09:20,860 --> 00:09:23,570 is heel eenvoudig gaat om een ​​te zijn heel eenvoudige uitspraak als deze. 204 00:09:23,570 --> 00:09:26,930 Printf hello wereld, met enkele citeert, met een backslash, 205 00:09:26,930 --> 00:09:29,780 met een puntkomma, maar meer daarover te komen. 206 00:09:29,780 --> 00:09:34,066 Loops, ondertussen, is een lus die, Natuurlijk, zegt hallo wereld voor altijd, 207 00:09:34,066 --> 00:09:36,690 en dit zal een kijken beetje vreemder dan in de vorige, 208 00:09:36,690 --> 00:09:39,530 maar als ik iets te zeggen als, terwijl waar, ik 209 00:09:39,530 --> 00:09:44,050 Vervolgens kunt uitprinten Hallo wereld opnieuw en opnieuw en opnieuw en opnieuw. 210 00:09:44,050 --> 00:09:46,660 En dan als je kan soort van start hier afleiden 211 00:09:46,660 --> 00:09:49,070 dit verdrag van het gebruik van accolades is een soort 212 00:09:49,070 --> 00:09:52,050 van, zoals het omarmen van de ingesprongen regel code daar. 213 00:09:52,050 --> 00:09:55,840 De printf regel code net als de gele puzzelstukje boven. 214 00:09:55,840 --> 00:09:58,740 Dus we gaan niet altijd zeggen, we gaan om te zeggen, terwijl ware, 215 00:09:58,740 --> 00:10:01,020 maar we zullen zien waarom dat in slechts een beetje. 216 00:10:01,020 --> 00:10:04,210 >> Ondertussen, als we een lus als deze, waar u iets een eindige herhalen 217 00:10:04,210 --> 00:10:07,730 aantal keren, deze ook het gaan om een ​​beetje te nemen wennen 218 00:10:07,730 --> 00:10:12,820 aan, maar het gaat te zeggen int i krijgt nul, ik minder dan 10, i ++, 219 00:10:12,820 --> 00:10:14,056 en vervolgens weer printf. 220 00:10:14,056 --> 00:10:15,430 Maar er gaat patronen. 221 00:10:15,430 --> 00:10:18,434 En voor degenen onder u bekend met AP Informatica, of Java, 222 00:10:18,434 --> 00:10:21,100 of elk aantal andere talen, Bijna al deze constructen 223 00:10:21,100 --> 00:10:23,820 tot nu toe moet vooral bekend voor. 224 00:10:23,820 --> 00:10:24,680 >> Zo variabel. 225 00:10:24,680 --> 00:10:29,270 Dus hier is een eenvoudige Scratch fragment dat stelt een variabele genaamd teller op nul, 226 00:10:29,270 --> 00:10:33,150 en dan altijd zegt dat de teller, en dan verandert de teller met één. 227 00:10:33,150 --> 00:10:37,030 Zo begint met nul, en één, twee, drie. 228 00:10:37,030 --> 00:10:42,560 Nou, hoe kunnen we introduceren dat in Deze nieuwe taal een beetje op dezelfde manier? 229 00:10:42,560 --> 00:10:45,460 Int teller gelijk nul, terwijl waar die 230 00:10:45,460 --> 00:10:48,100 is dat hetzelfde idee van voor om iets te doen voor altijd, 231 00:10:48,100 --> 00:10:49,530 en ik ga gewoon printf. 232 00:10:49,530 --> 00:10:53,310 En nu is het een beetje vreemd, i procent, maar daarover te komen, 233 00:10:53,310 --> 00:10:55,140 maar deze ideeën zijn exact hetzelfde. 234 00:10:55,140 --> 00:10:58,820 We nu moeten houden aan de syntax dat de computer 235 00:10:58,820 --> 00:11:00,010 gaat eisen van ons. 236 00:11:00,010 --> 00:11:04,620 >> Boolean uitdrukking, iets als sx minder dan y of x lager dan y, 237 00:11:04,620 --> 00:11:06,354 en y kleiner dan z. 238 00:11:06,354 --> 00:11:09,270 Het gaat om een ​​beetje iets te kijken als dit, met haakjes net 239 00:11:09,270 --> 00:11:13,020 zoals in de wiskunde voor een goede maatregel om gewoon ervoor te zorgen dat de volgorde van de operaties 240 00:11:13,020 --> 00:11:14,750 is zoals we van plan zijn. 241 00:11:14,750 --> 00:11:15,600 En nu, omstandigheden. 242 00:11:15,600 --> 00:11:21,220 Als x minder is dan y, zeg x minder dan y, anders als x groter is dan y, 243 00:11:21,220 --> 00:11:26,020 zeggen x is groter dan y, anders logisch moet gelijk zijn aan x y zijn. 244 00:11:26,020 --> 00:11:28,710 Dus je zou kunnen implementeren iets als dit in Scratch, 245 00:11:28,710 --> 00:11:31,230 of je zou implementeren in deze syntax. 246 00:11:31,230 --> 00:11:35,090 En nogmaals, de accolades zijn soort geeft ons dezelfde vorm als de puzzel 247 00:11:35,090 --> 00:11:40,750 stukken, maar de syntax, nu is misschien beginnen sommige patronen te volgen. 248 00:11:40,750 --> 00:11:42,910 >> Ja, wat heeft dit ons hier? 249 00:11:42,910 --> 00:11:45,260 Dus we zijn toen naar onze programma. 250 00:11:45,260 --> 00:11:47,930 Laten we het eigenlijk, nu, iets mee te doen. 251 00:11:47,930 --> 00:11:50,660 Dus in dit eerste lijn zien we scherp omvatten, 252 00:11:50,660 --> 00:11:53,160 standaard I / O, punt h, en dan komen er rare hoek 253 00:11:53,160 --> 00:11:57,330 beugels daaronder. int main leegte, en dan printf hallo wereld. 254 00:11:57,330 --> 00:11:58,200 Dus gewoon een stap. 255 00:11:58,200 --> 00:12:02,440 Iemand die nog nooit eerder heeft geprogrammeerd, tenminste verklaren één van deze lijnen. 256 00:12:02,440 --> 00:12:04,490 Met behulp misschien sommige het jargon van vorige week. 257 00:12:04,490 --> 00:12:06,942 Wat is printf, bijvoorbeeld? 258 00:12:06,942 --> 00:12:07,442 Ja. 259 00:12:07,442 --> 00:12:08,410 >> PUBLIEK: [onverstaanbaar] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Ja. 261 00:12:08,610 --> 00:12:11,380 Het is een functie, of een verklaring, van de terminologie van vorige week. 262 00:12:11,380 --> 00:12:13,470 En het is een actie dat er iets doet. 263 00:12:13,470 --> 00:12:15,855 Nu deze functie, of deze verklaring, doet 264 00:12:15,855 --> 00:12:17,550 het lijkt een soort ingang te nemen? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 En in welke zin doet het lijken om input te nemen, en zo ja? 267 00:12:24,380 --> 00:12:26,180 Input, wat moet ik daarmee? 268 00:12:26,180 --> 00:12:26,720 Ja. 269 00:12:26,720 --> 00:12:27,595 >> PUBLIEK: [onverstaanbaar] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. MALAN: Ja. 272 00:12:31,440 --> 00:12:34,890 Dus Kras een paar puzzelstukjes waar u kunt het parametriseren. 273 00:12:34,890 --> 00:12:37,980 Je kon de herhaling vertellen blokkeren hoeveel keer te herhalen, 274 00:12:37,980 --> 00:12:40,320 zodat was een ingang van soorten, en net als Scratch 275 00:12:40,320 --> 00:12:43,060 had een kleine witte placeholder voor het nummer dat u zou intypen, 276 00:12:43,060 --> 00:12:45,810 dat doen we in dit tekst wereld haakjes 277 00:12:45,810 --> 00:12:49,910 om ons dat cirkelvorm waarin we onze inbreng plug. 278 00:12:49,910 --> 00:12:53,180 Immers, tientallen jaren geleden wanneer deze taal, genaamd C, 279 00:12:53,180 --> 00:12:55,950 uitgevonden niemand verwacht dat het een van ons, 280 00:12:55,950 --> 00:12:59,420 die enkele jaren later, zouden we wil een functie die hallo zegt. 281 00:12:59,420 --> 00:12:59,920 Rechts? 282 00:12:59,920 --> 00:13:02,880 Het zou mooi zijn als er een puzzelstukje, of een sleutel woorden, 283 00:13:02,880 --> 00:13:05,502 dat heet hello, dat letterlijk zegt hallo. 284 00:13:05,502 --> 00:13:06,460 Maar we hebben dat niet nodig. 285 00:13:06,460 --> 00:13:09,320 We kunnen iets veel lager zijn niveau, zoals een generieke afdruk 286 00:13:09,320 --> 00:13:12,760 commando, die ingang neemt, en prenten wat we willen. 287 00:13:12,760 --> 00:13:14,960 Zo merkt nu het patroon die begint te ontstaan. 288 00:13:14,960 --> 00:13:19,310 Open paren, dicht paren is blijkbaar het omarmen van de input, 289 00:13:19,310 --> 00:13:21,770 en dan zie ik dubbel citaten aan beide uiteinden. 290 00:13:21,770 --> 00:13:25,110 Er is nog steeds raar backslash n, maar hopelijk nu heb je 291 00:13:25,110 --> 00:13:29,900 kan beginnen om in ieder geval dat visualiseren printf neemt in een bepaalde vorm van de input. 292 00:13:29,900 --> 00:13:31,850 Niet zo gebruiksvriendelijk als Krabben, maar het is gewoon 293 00:13:31,850 --> 00:13:34,920 zoals hebben gestoken in sommige waarde daar. 294 00:13:34,920 --> 00:13:38,306 >> Oké, laten we nu eigenlijk iets mee te doen. 295 00:13:38,306 --> 00:13:40,930 Dus sommige van u misschien kent van hebben gewinkeld de klas voor, 296 00:13:40,930 --> 00:13:42,638 praatte met vrienden, dat jarenlang 297 00:13:42,638 --> 00:13:44,590 we iets gebruikt geroepen de CS50 apparaat. 298 00:13:44,590 --> 00:13:49,160 Dit is een term die een technologie zogenaamde virtuele machine, die 299 00:13:49,160 --> 00:13:51,870 is een stukje software dat je voorgangers zou off downloaden 300 00:13:51,870 --> 00:13:53,360 website van de cursus is gratis. 301 00:13:53,360 --> 00:13:56,550 Zij zouden ook het downloaden van een gratis stuk van software genaamd een hypervisor, 302 00:13:56,550 --> 00:14:00,590 iets geroepen zoals VMware, of VirtualBox, of een aantal 303 00:14:00,590 --> 00:14:04,450 andere instrumenten, en op hun Mac of pc of welke computer ze vorig jaar hadden 304 00:14:04,450 --> 00:14:06,620 en in de afgelopen jaren, zij zou verdubbelen op een pictogram 305 00:14:06,620 --> 00:14:08,860 om deze software te draaien genaamd de hypervisor. 306 00:14:08,860 --> 00:14:12,220 En dan binnenin dat programma zij zouden CS50 het apparaat te openen. 307 00:14:12,220 --> 00:14:14,710 En het effect was dat of een voorloper van jou 308 00:14:14,710 --> 00:14:17,780 werd met Mac OS of Windows, hij of zij vervolgens 309 00:14:17,780 --> 00:14:22,910 Vervolgens had een nieuw venster op de scherm loopt CS50's omgeving. 310 00:14:22,910 --> 00:14:27,370 Dus een virtuele machine kunt u een run besturingssysteem binnenkant van een ander, 311 00:14:27,370 --> 00:14:28,785 en dat is precies wat we deden. 312 00:14:28,785 --> 00:14:31,410 Gedurende het grootste deel van de koers die we Gebruik een besturingssysteem genaamd 313 00:14:31,410 --> 00:14:34,070 Linux specifiek Ubuntu Linux, en dit 314 00:14:34,070 --> 00:14:37,590 is een zeer leuke manier in de afgelopen jaren van ervoor te zorgen dat iedereen in de loop 315 00:14:37,590 --> 00:14:38,840 had net dezelfde omgeving. 316 00:14:38,840 --> 00:14:41,339 En je kunt elke vorm van gebruik computer die je eigenlijk wilt. 317 00:14:41,339 --> 00:14:43,930 Onder de nadelen, hoewel, waren was het als twee gigabyte 318 00:14:43,930 --> 00:14:45,480 om dit ding te downloaden. 319 00:14:45,480 --> 00:14:50,310 Het heeft niet per se te werken super goed op mensen van wie de computers die misschien slechts 320 00:14:50,310 --> 00:14:54,570 had een optreden of zo van RAM, of niet te veel gigahertz van CPU-snelheid, 321 00:14:54,570 --> 00:14:56,750 en dus dit jaar, voor de deze en andere redenen, 322 00:14:56,750 --> 00:14:59,140 hebben we al de overgang deze omgeving. 323 00:14:59,140 --> 00:15:03,730 De zogenaamde CS50 IDE, wat op basis van open source software, 324 00:15:03,730 --> 00:15:07,380 en een ondersteund platform dat een bedrijf genaamd Cloud9 325 00:15:07,380 --> 00:15:11,110 steunt in Europa, dat laat ons in wezen hebben 326 00:15:11,110 --> 00:15:15,770 dat exact dezelfde omgeving als in afgelopen jaren, maar in de zogenaamde cloud. 327 00:15:15,770 --> 00:15:17,532 >> Dus wat is de cloud? 328 00:15:17,532 --> 00:15:20,480 U hebt waarschijnlijk geklikt het pictogram op je Mac of pc. 329 00:15:20,480 --> 00:15:22,210 Wat is de cloud? 330 00:15:22,210 --> 00:15:22,709 Ja? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Een beetje luider. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Ja. 335 00:15:31,010 --> 00:15:33,770 Het is gewoon een stelletje computers elders dat de gegevens op te slaan en uit te voeren 336 00:15:33,770 --> 00:15:34,880 software en dergelijke. 337 00:15:34,880 --> 00:15:39,390 Dus het is eigenlijk gewoon om het woord de jure beschrijven [? verhuurd?] 338 00:15:39,390 --> 00:15:40,930 computers die elders wonen. 339 00:15:40,930 --> 00:15:42,810 Dat je, jezelf, niet noodzakelijkerwijs bezit. 340 00:15:42,810 --> 00:15:45,256 Dus als uw gegevens, of uw programma's, zijn in de cloud, 341 00:15:45,256 --> 00:15:47,630 het is gewoon betekent dat het over iemand anders computers elders, 342 00:15:47,630 --> 00:15:50,510 en niet hoogstwaarschijnlijk op fysieke laptop of desktop. 343 00:15:50,510 --> 00:15:52,990 En dus dat is wat CS50 IDE is nu. 344 00:15:52,990 --> 00:15:55,670 >> Voortaan ga je naar een bepaalde URL die je zal introduceren 345 00:15:55,670 --> 00:16:00,090 om, in probleem set 1, later dit week, dat vervolgens, na inloggen, 346 00:16:00,090 --> 00:16:01,480 geef je deze omgeving. 347 00:16:01,480 --> 00:16:03,896 En net als Kras had een paar verschillende panels betrokken, 348 00:16:03,896 --> 00:16:06,030 zo heeft CS50's IDE hebben precies dat. 349 00:16:06,030 --> 00:16:09,480 Op de bovenste linkerkant hier, je bent gaan naar een vertrouwde bestandsbrowser zien. 350 00:16:09,480 --> 00:16:11,930 Dus een van de bestanden die u zet in deze omgeving 351 00:16:11,930 --> 00:16:13,346 zijn gewoon gaan om daar te worden vermeld. 352 00:16:13,346 --> 00:16:14,350 Bestanden en mappen. 353 00:16:14,350 --> 00:16:16,790 Op de top hier, je gaat naar een plek te zien 354 00:16:16,790 --> 00:16:18,420 waar u eigenlijk schrijf uw code. 355 00:16:18,420 --> 00:16:21,860 Aanvankelijk in C, later in de term in PHP en JavaScript, 356 00:16:21,860 --> 00:16:24,739 en, misschien voor definitieve projecten, Ruby of Java of Python 357 00:16:24,739 --> 00:16:27,280 of een aantal talen gesteund omgeving. 358 00:16:27,280 --> 00:16:30,130 Het is helemaal niet gebonden specifiek CS50. 359 00:16:30,130 --> 00:16:33,390 >> En vervolgens in de benedenhoek hier vooral voor degenen die meer comfort, 360 00:16:33,390 --> 00:16:35,590 je iets hebt riep een terminal venster. 361 00:16:35,590 --> 00:16:38,770 En deze terminal venster laat u elke opdracht uit te voeren die u 362 00:16:38,770 --> 00:16:40,860 wil in deze cloud-omgeving. 363 00:16:40,860 --> 00:16:42,860 Het staat u te installeren extra software 364 00:16:42,860 --> 00:16:46,810 die u wilt omdat je zogenaamd wortel, of beheerdersrechten. 365 00:16:46,810 --> 00:16:49,930 Met andere woorden, ook al uiteindelijk wordt gehost in de cloud, 366 00:16:49,930 --> 00:16:52,400 en ook al hebben we vereenvoudigde zij enigszins 367 00:16:52,400 --> 00:16:57,110 standaard, letterlijk introduceren, dankzij Dan Armendariz, en Dino, 368 00:16:57,110 --> 00:17:01,070 en Dan Bradley op CS50's team over de afgelopen vele maanden, een minder comfortabel 369 00:17:01,070 --> 00:17:05,140 modus die een groot deel van de huiden aanvankelijk verwarrende afleiding. 370 00:17:05,140 --> 00:17:10,119 Alles wat er bestaat om vertegenwoordigen een typisch computersysteem 371 00:17:10,119 --> 00:17:12,319 dat je zou kunnen gebruiken in de echte wereld. 372 00:17:12,319 --> 00:17:15,640 >> Dus wat betekent dit alles, en wat kunnen we eigenlijk doen? 373 00:17:15,640 --> 00:17:19,124 Laten we eigenlijk een kijkje nemen in een programma. 374 00:17:19,124 --> 00:17:21,290 Dus ik ga het openstellen van de werkelijke omgeving hier, 375 00:17:21,290 --> 00:17:23,894 dat is gewoon onze Chrome browser, die Firefox kan zijn, 376 00:17:23,894 --> 00:17:26,640 kon Internet Explorer, of een andere browser ook. 377 00:17:26,640 --> 00:17:28,400 Het is hier volledig gescreend voor het moment. 378 00:17:28,400 --> 00:17:31,580 En ik wil eigenlijk plagen behalve wat dit programma was. 379 00:17:31,580 --> 00:17:36,170 Dus laten we eens een kijkje nemen, door in te zoomen op top, in wat ik deed, en hoe ik hier kwam. 380 00:17:36,170 --> 00:17:38,315 Dus hier is de exacte Dezelfde regels code. 381 00:17:38,315 --> 00:17:40,440 Dus dit is de verklaring, zoals u eerder vermeld. 382 00:17:40,440 --> 00:17:42,580 De functie die hallo zegt. 383 00:17:42,580 --> 00:17:45,870 De accolades, op lijn vier en zes lijn, 384 00:17:45,870 --> 00:17:49,290 vermoedelijk soort envelop die lijn te associëren 385 00:17:49,290 --> 00:17:50,890 de essentie van mijn programma. 386 00:17:50,890 --> 00:17:54,890 Dus inderdaad, dit zoekwoord belangrijkste, dat is daar op lijn drie, 387 00:17:54,890 --> 00:17:59,450 je kunt bedenken dat als het equivalent van dat als groene vlag geklikt, 388 00:17:59,450 --> 00:18:01,080 blokkeren Scratch. 389 00:18:01,080 --> 00:18:05,280 Dus dat is alles wat we hier hebben, is wanneer groene vlag geklikt, print, of zeggen, 390 00:18:05,280 --> 00:18:06,700 Hallo Wereld. 391 00:18:06,700 --> 00:18:11,210 >> Maar laten we eens een gok, nu, op wat deze eerste, meer mysterieuze lijn is. 392 00:18:11,210 --> 00:18:15,100 Scherpe omvatten, geopend schuine beugel standaard I / O punt h, 393 00:18:15,100 --> 00:18:17,320 sluiten hoekige beugel. 394 00:18:17,320 --> 00:18:19,850 Wat is dat misschien doen, vooral als je hebt geprogrammeerd 395 00:18:19,850 --> 00:18:21,390 eerder in een andere taal. 396 00:18:21,390 --> 00:18:21,890 Ja? 397 00:18:21,890 --> 00:18:22,765 >> PUBLIEK: [onverstaanbaar] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. MALAN: Ja. 400 00:18:25,970 --> 00:18:26,470 Precies. 401 00:18:26,470 --> 00:18:29,455 Dus dit geeft u toegang tot een library, zogezegd functies. 402 00:18:29,455 --> 00:18:31,830 En een bibliotheek van functies is functies dat iemand anders 403 00:18:31,830 --> 00:18:34,406 schreef, ofwel recent of lang geleden, zodat u 404 00:18:34,406 --> 00:18:35,780 hoeven niet het wiel opnieuw uit te vinden. 405 00:18:35,780 --> 00:18:39,020 Zo doen we niet moet weten, in 2015, 406 00:18:39,020 --> 00:18:42,280 hoe code die puts schrijven een personage op mijn scherm. 407 00:18:42,280 --> 00:18:44,820 Iemand anders heeft bedacht dat uit met de printf functie 408 00:18:44,820 --> 00:18:47,280 zodat ik kan soort abstracte vanaf dat of layer 409 00:18:47,280 --> 00:18:49,350 bovenop zijn of haar code, en nu gewoon 410 00:18:49,350 --> 00:18:52,760 vanzelfsprekend dat elk programma dat ik schrijf kan iets om het scherm te drukken. 411 00:18:52,760 --> 00:18:58,150 Dus deze eerste regel er in één stap inclusief de zogenaamde header-bestand 412 00:18:58,150 --> 00:18:59,980 voor de standaard bibliotheek. 413 00:18:59,980 --> 00:19:02,630 Zo zie, de taal die we nu mee bezig 414 00:19:02,630 --> 00:19:05,010 had een standaard bibliotheek met veel functies. 415 00:19:05,010 --> 00:19:07,240 Printf is een van hen, en die eerste regel van de code 416 00:19:07,240 --> 00:19:10,040 betekent geef me de toegang tot die functies, zodat ik 417 00:19:10,040 --> 00:19:12,300 hoeft niet het wiel opnieuw uit te vinden. 418 00:19:12,300 --> 00:19:15,940 >> Laten we nu naar het onderste venster en doe precies wat ik deed voorheen. 419 00:19:15,940 --> 00:19:18,520 Een moment geleden, toen ik suizen door de code, 420 00:19:18,520 --> 00:19:24,540 uit te typen voor de eerste keer, Ik heel snel getypt, maken hallo. 421 00:19:24,540 --> 00:19:28,250 Wat was dat allemaal over zou u raden? 422 00:19:28,250 --> 00:19:29,150 Wat deed ik? 423 00:19:29,150 --> 00:19:29,649 Ja? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Laat maar. 426 00:19:32,310 --> 00:19:32,970 Het is ok. 427 00:19:32,970 --> 00:19:33,492 Ja. 428 00:19:33,492 --> 00:19:34,450 Publiek: compileren het. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Ja. 430 00:19:34,700 --> 00:19:35,770 Het was gewoon de compilatie. 431 00:19:35,770 --> 00:19:36,270 Rechts? 432 00:19:36,270 --> 00:19:39,280 Zelfs als dit volledig onbekend aan u, het is vrij Engels als. 433 00:19:39,280 --> 00:19:41,155 Het is zeker niet nullen en degenen, dus ik nog steeds 434 00:19:41,155 --> 00:19:44,220 nodig om het te lopen door dat de zogenaamde programma, een compiler, dat gaat 435 00:19:44,220 --> 00:19:46,060 om het als invoer en uitvoer produceren. 436 00:19:46,060 --> 00:19:48,270 En althans voorlopig, in Deze Linux-omgeving, 437 00:19:48,270 --> 00:19:51,030 maar dit is niet eerste vereiste, dit is precies waar we zullen beginnen, 438 00:19:51,030 --> 00:19:53,960 je over het algemeen communiceren met computer systemen zoals deze 439 00:19:53,960 --> 00:19:55,770 door een zogenaamde command line. 440 00:19:55,770 --> 00:19:57,790 Dus met een knipperende prompt en je toetsenbord, 441 00:19:57,790 --> 00:20:01,630 en niet zozeer de muis, en niet zo veel ramen en pictogrammen en menu's, 442 00:20:01,630 --> 00:20:02,980 plaats alles is tekstueel. 443 00:20:02,980 --> 00:20:06,180 En hoewel dit voelt, aanvankelijk gezicht, misschien, als een stap achteruit, 444 00:20:06,180 --> 00:20:08,437 het is eigenlijk een veel meer krachtige en expressieve manier 445 00:20:08,437 --> 00:20:10,270 het besturen van een computer vooral als je, 446 00:20:10,270 --> 00:20:12,950 zelf, steeds meer comfortabele uit minder. 447 00:20:12,950 --> 00:20:16,790 Het zal u toelaten om veel doen meer dingen dan alleen wat Microsoft 448 00:20:16,790 --> 00:20:20,390 of Apple kun je doen met hun grafische besturingssysteem. 449 00:20:20,390 --> 00:20:23,270 >> Dus toen ik druk op Enter, nu, niets gebeurt deze keer 450 00:20:23,270 --> 00:20:25,960 want blijkbaar de programma hello is up-to-date. 451 00:20:25,960 --> 00:20:28,250 En wat was de opdracht Ik rende daarna? 452 00:20:28,250 --> 00:20:32,370 Dot slash hallo en hello wereld. 453 00:20:32,370 --> 00:20:34,350 Laten we nu eens een stap terug voor slechts een moment. 454 00:20:34,350 --> 00:20:39,510 Het blijkt dat te maken hello is slechts een vereenvoudigde manier van het samenstellen van een programma. 455 00:20:39,510 --> 00:20:41,670 Laten we gewoon introduceren een stuk van jargon, 456 00:20:41,670 --> 00:20:43,470 maar dan verder weg van het, omdat het niet 457 00:20:43,470 --> 00:20:46,640 zo interessant voor doeleinden van vandaag. 458 00:20:46,640 --> 00:20:51,000 De compiler we gaan aan de slag met heet Clang, de C taal. 459 00:20:51,000 --> 00:20:54,280 En dit is een programma dat alleen gerund zoals wij deden op de opdrachtregel daar. 460 00:20:54,280 --> 00:20:56,580 En dus als ik wil een programma samen te stellen dat ik 461 00:20:56,580 --> 00:21:00,790 hebben in een bestand genaamd hallo dot schriftelijke c, ik letterlijk typ clang hello c 462 00:21:00,790 --> 00:21:02,100 voeren. 463 00:21:02,100 --> 00:21:04,880 >> Het grappige is, om historische redenen, 464 00:21:04,880 --> 00:21:07,750 als ik niet geef de Naam van het programma 465 00:21:07,750 --> 00:21:11,690 dat ik wil output, als ik niet geef een bestandsnaam voor de nullen 466 00:21:11,690 --> 00:21:14,990 en enen, een heel raar conventie aangenomen jaar geleden 467 00:21:14,990 --> 00:21:17,390 waar het voelde een soort van een goed antwoord op het moment, 468 00:21:17,390 --> 00:21:21,650 goed laten we gewoon willekeurig bellen eerste programma dat we een punt te stellen uit. 469 00:21:21,650 --> 00:21:22,900 Een komt eerst in het alfabet. 470 00:21:22,900 --> 00:21:23,920 Uit, het is de output. 471 00:21:23,920 --> 00:21:26,210 Dus we zullen het programma noemen standaard een punt uit. 472 00:21:26,210 --> 00:21:29,550 En dat is prima, want als ik wil start het programma in deze tekst gebaseerde 473 00:21:29,550 --> 00:21:33,590 milieu, ik typ dot slash een punt uit te voeren. 474 00:21:33,590 --> 00:21:35,250 En het zou precies als voorheen lopen. 475 00:21:35,250 --> 00:21:36,880 Dus laten we zien dat heel snel. 476 00:21:36,880 --> 00:21:40,370 >> Dus als ik ga terug naar mijn broncode in CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 en ik in plaats daarvan doen, clang hello kinderbed c in te voeren, lijkt mededeling niets te gebeuren, 478 00:21:47,860 --> 00:21:49,790 maar bijna altijd in Deze Linux-omgeving, 479 00:21:49,790 --> 00:21:53,310 wanneer niets slecht lijkt te gebeuren, dat betekent iets goeds eigenlijk gebeurd. 480 00:21:53,310 --> 00:21:56,270 Als je niet een fout te zien boodschap, al is het waarschijnlijk ook. 481 00:21:56,270 --> 00:22:01,930 En inderdaad, als ik nu doen dot slash een dot uit te voeren, ik heb mijn hetzelfde programma uit te voeren. 482 00:22:01,930 --> 00:22:04,610 Ik heb nog steeds het hallo-programma uit eerdere omdat inderdaad, het 483 00:22:04,610 --> 00:22:07,430 ga zo veel mooier gewoon typt maken in plaats van herinneren 484 00:22:07,430 --> 00:22:10,240 deze bezweringen van commando's, maar laten we eens kijken hoe we 485 00:22:10,240 --> 00:22:12,890 kunnen verbeteren op deze, toch. 486 00:22:12,890 --> 00:22:15,340 >> Dit is dus het commando om de code te compileren. 487 00:22:15,340 --> 00:22:19,100 Dit is de opdracht uit te voeren de gecompileerde code daarna. 488 00:22:19,100 --> 00:22:20,546 Hoe kan ik een bestand opgeven? 489 00:22:20,546 --> 00:22:22,670 Nou laten we gewoon introduceren nog een stuk van jargon. 490 00:22:22,670 --> 00:22:24,461 Als je in deze tekst gebaseerde omgeving, 491 00:22:24,461 --> 00:22:27,400 je gaat te willen specificeren dingen geroepen command line argumenten. 492 00:22:27,400 --> 00:22:31,380 Dat is gewoon een mooie manier om te zeggen, met andere woorden op de prompt dat 493 00:22:31,380 --> 00:22:33,860 knijpen het gedrag van welke programma je draait. 494 00:22:33,860 --> 00:22:37,320 Dus met name het programma dat ik ben hardlopen, door het intikken van de naam clang, 495 00:22:37,320 --> 00:22:38,504 is het programma genaamd Clang. 496 00:22:38,504 --> 00:22:40,920 Dus dit is of de oude school equivalent van dubbelklikken 497 00:22:40,920 --> 00:22:42,860 Microsoft Word of pictogram van een aantal programma's. 498 00:22:42,860 --> 00:22:46,360 Ik ben in plaats daarvan alleen het typen van zijn naam, maar in deze versie van de opdracht, 499 00:22:46,360 --> 00:22:51,334 Ik heb dan dash o ruimte hallo hallo ruimte dot c. 500 00:22:51,334 --> 00:22:53,500 Dus zelfs als je nog nooit hebt gespeeld in deze wereld voor, 501 00:22:53,500 --> 00:22:58,160 gewoon een gok nemen wat doet dash o hallo doen? 502 00:22:58,160 --> 00:23:00,620 Of wat doet het vertellen clang te doen? 503 00:23:00,620 --> 00:23:01,386 Ja. 504 00:23:01,386 --> 00:23:02,455 >> PUBLIEK: [onverstaanbaar] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Ja. 506 00:23:03,330 --> 00:23:08,614 Het zet alleen uitvoer van het bestand te hallo plaats van de gekker een punt uit. 507 00:23:08,614 --> 00:23:09,780 En, inderdaad, laten we proberen dit. 508 00:23:09,780 --> 00:23:14,250 Dus als ik nu doe, eerst laten we dit doen, r m hallo. 509 00:23:14,250 --> 00:23:15,590 Dat is te verwijderen. 510 00:23:15,590 --> 00:23:18,450 En het gaat om te verwijderen zeggen regelmatig file hello, die 511 00:23:18,450 --> 00:23:22,210 is onnodig geheimzinnig, maar het is gewoon middelen wilt u het bestand te verwijderen, 512 00:23:22,210 --> 00:23:23,230 en ik typ y voor ja. 513 00:23:23,230 --> 00:23:27,340 En merk, als je een blik op de top vertrokken, deed het verdwijnen van daarboven. 514 00:23:27,340 --> 00:23:32,180 Laat me nu doen clang dashboard o, en Ik ga om te gaan en te doen hallo, 515 00:23:32,180 --> 00:23:34,890 in hoofdletters, hello dot c. 516 00:23:34,890 --> 00:23:37,775 Nu, als ik dat doe dot slash hallo, wat zou je verwachten? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Misschien is hoofdlettergevoelig. 519 00:23:42,430 --> 00:23:43,070 Misschien is het niet. 520 00:23:43,070 --> 00:23:44,030 Laten we kijken. 521 00:23:44,030 --> 00:23:45,230 Bestand of map bestaat niet. 522 00:23:45,230 --> 00:23:47,438 En we kunnen soort bedriegen door alleen te kijken naar linksboven. 523 00:23:47,438 --> 00:23:49,630 Wat heb ik natuurlijk sla het programma? 524 00:23:49,630 --> 00:23:51,070 Alle caps hallo. 525 00:23:51,070 --> 00:23:53,020 Dus inderdaad, dat is gaan om een ​​verschil te maken. 526 00:23:53,020 --> 00:23:54,540 Dus nu Hallo wereld is terug. 527 00:23:54,540 --> 00:23:56,969 Nu is dit allemaal prima en goed, en allemaal heel mind-numbing, 528 00:23:56,969 --> 00:23:59,760 naar soort get verzanden in deze details, maar ze begrijpen 529 00:23:59,760 --> 00:24:00,500 is goed. 530 00:24:00,500 --> 00:24:02,675 >> Het typen van deze in toenemende mate lange bezweringen 531 00:24:02,675 --> 00:24:05,980 is niet van plan om in het bijzonder te zijn leuk, dus mensen in de wereld 532 00:24:05,980 --> 00:24:08,260 uitvinder van een ander programma, enkele jaren geleden, de zogenaamde 533 00:24:08,260 --> 00:24:12,190 maken, dat eenvoudigweg kun je make typt, 534 00:24:12,190 --> 00:24:14,530 de naam van het programma u wilt maken, en maak 535 00:24:14,530 --> 00:24:18,580 is slim in dat het eruit zal zien in de huidige map, aka directory, 536 00:24:18,580 --> 00:24:21,440 en als je een bestand riep hello dot c, 537 00:24:21,440 --> 00:24:25,800 dat is het bestand zal het compileren voor u in een programma genaamd hallo. 538 00:24:25,800 --> 00:24:29,950 Dus het is een veel eenvoudigere manier het doen van de meer cryptische opdrachten 539 00:24:29,950 --> 00:24:30,800 dat we eerder deden. 540 00:24:30,800 --> 00:24:34,080 En we hebben pre-geconfigureerd CS50 IDE om te weten 541 00:24:34,080 --> 00:24:38,560 dat het dashboard o en een aantal zou moeten doen andere vlaggen of command line argumenten, 542 00:24:38,560 --> 00:24:40,670 dat we zullen zien het duurde niet lang. 543 00:24:40,670 --> 00:24:43,700 >> Maar laten we nu eigenlijk doen iets interessanter. 544 00:24:43,700 --> 00:24:46,950 Net typen van hello wereld alle de tijd is niet zo overtuigend. 545 00:24:46,950 --> 00:24:52,280 Dus laat me gaan en verandering dit programma en zeggen hallo David. 546 00:24:52,280 --> 00:24:54,120 Nu ga ik hier beneden te gaan. 547 00:24:54,120 --> 00:24:57,360 Ik ga om te gaan en te doen maken hallo. 548 00:24:57,360 --> 00:25:00,652 En nu weer je ziet maken is de langere toont u 549 00:25:00,652 --> 00:25:03,360 serie commando dat het doen omdat we vooraf geconfigureerd 550 00:25:03,360 --> 00:25:05,200 het op die manier, maar we hoeft geen zorgen te maken voor nu 551 00:25:05,200 --> 00:25:10,735 wat het is anders dan het is te doen samenstellen dot slash hello, hello wereld. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Wat is er mis? 554 00:25:15,510 --> 00:25:16,177 Ja. 555 00:25:16,177 --> 00:25:17,370 >> PUBLIEK: [onverstaanbaar] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Ja. 557 00:25:18,203 --> 00:25:19,600 Dus, Noobie vergissing. 558 00:25:19,600 --> 00:25:22,394 Ik merk dit is super subtiele, maar het sterretje hier, in het tabblad, 559 00:25:22,394 --> 00:25:25,060 gewoon betekent dat je het niet gered, en browsers en andere programma 560 00:25:25,060 --> 00:25:25,930 Dit doen soms. 561 00:25:25,930 --> 00:25:27,939 Dus controle s of command s moet het redden. 562 00:25:27,939 --> 00:25:29,730 Laat me nu ga je gang en re-start het programma. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Gecompileerd. 565 00:25:34,260 --> 00:25:36,050 Juist, dus het is een multi-step proces. 566 00:25:36,050 --> 00:25:39,400 Geen daarvan is bijzonder complex, maar elk moment wijzigen we het bestand, 567 00:25:39,400 --> 00:25:43,450 we moeten de daaruit voortvloeiende wijziging nullen en enen, en dot slash hallo. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 Dus dit is erg underwhelming dat we gewoon uitgeprint dit. 570 00:25:46,450 --> 00:25:48,360 Laten we de dingen een beetje meer dynamiek, nu. 571 00:25:48,360 --> 00:25:52,280 >> Nou, het blijkt, dat willen Kras, C ondersteunt variabelen. 572 00:25:52,280 --> 00:25:54,790 En het blijkt dat als je wilt een variabele die winkels hebben, 573 00:25:54,790 --> 00:25:57,300 geen nummer zoals wij typisch deed met Scratch, 574 00:25:57,300 --> 00:26:01,300 maar als een woord of een uitdrukking, of een naam, je 575 00:26:01,300 --> 00:26:04,837 kan een variabele opgeven te zijn van het type string. 576 00:26:04,837 --> 00:26:06,670 Dus zullen we meer van zien deze in slechts een moment, 577 00:26:06,670 --> 00:26:09,090 maar het blijkt dat de C, en veel talen zoals het, 578 00:26:09,090 --> 00:26:11,240 zeer specifieke typen variabelen. 579 00:26:11,240 --> 00:26:13,810 Het is niet alleen leuk algebra, waar je een x, een y en z krijgt 580 00:26:13,810 --> 00:26:16,940 en die zijn gewoon altijd getallen, in een programmeertaal 581 00:26:16,940 --> 00:26:20,030 U kunt nummers opslaan, kunt u afzonderlijke tekens op te slaan, 582 00:26:20,030 --> 00:26:24,619 kon je hele woorden op te slaan, je kon opslaan hele afbeeldingen hele geluidsbestanden, 583 00:26:24,619 --> 00:26:25,160 en dergelijke. 584 00:26:25,160 --> 00:26:28,362 Dus we moeten wat opgeven het type onze variabele. 585 00:26:28,362 --> 00:26:31,570 En volgens afspraak ga ik bel mijn variabele s gewoon omdat het beknopt, 586 00:26:31,570 --> 00:26:33,510 en S staat voor string. 587 00:26:33,510 --> 00:26:36,400 >> En dan ga ik op te slaan binnenkant van deze variabele, 588 00:26:36,400 --> 00:26:39,570 net als met Scratch wanneer ik de set blok, 589 00:26:39,570 --> 00:26:41,950 Ik ga het gebruiken opdracht operator in C, 590 00:26:41,950 --> 00:26:45,290 die mooi genoeg is het gelijk ondertekenen, maar het isgelijkteken doet dit. 591 00:26:45,290 --> 00:26:53,220 Het beweegt iets van het recht in de linkerkant van de uitdrukking. 592 00:26:53,220 --> 00:26:57,170 Dus wat ik heb gedaan, om duidelijk te zijn lijn vijf, is ik heb een variabele gedeclareerd. 593 00:26:57,170 --> 00:27:01,284 Ik heb de computer verteld, geef me geheugen voor een variabele, noem het is, 594 00:27:01,284 --> 00:27:03,950 en weet op voorhand dat ik ga te zetten een tekenreeks daarin. 595 00:27:03,950 --> 00:27:05,950 En een string is slechts een opeenvolging van karakters. 596 00:27:05,950 --> 00:27:09,190 Het is een woord of een zin of paragraaf, maar het is een reeks tekens. 597 00:27:09,190 --> 00:27:10,610 Het is geen aantallen. 598 00:27:10,610 --> 00:27:13,800 Wat reeks ben ik gaan worden het in die variabele? 599 00:27:13,800 --> 00:27:16,185 Nou, blijkbaar citeer unquote, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Merk nu het patroon dat is in opkomst. 601 00:27:17,810 --> 00:27:19,260 Er is een linkerhand expressie. 602 00:27:19,260 --> 00:27:21,810 Er is een rechterhand meningsuiting, gescheiden door het isgelijkteken. 603 00:27:21,810 --> 00:27:24,390 En gewoon een gok, als onbekende niettemin 604 00:27:24,390 --> 00:27:27,430 wat de puntkomma doet. 605 00:27:27,430 --> 00:27:28,865 Hoe is het vermoedelijk voor ons doet? 606 00:27:28,865 --> 00:27:29,365 Ja? 607 00:27:29,365 --> 00:27:29,840 >> PUBLIEK: [onverstaanbaar] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Ja. 609 00:27:29,980 --> 00:27:31,170 Het is gewoon het beëindigen van de lijn. 610 00:27:31,170 --> 00:27:31,669 Rechts? 611 00:27:31,669 --> 00:27:34,260 De computers willen botweg zijn vertelde, letterlijk, wat te doen. 612 00:27:34,260 --> 00:27:36,343 Net als de pindakaas en gelei sandwich bijvoorbeeld 613 00:27:36,343 --> 00:27:39,360 als je niet opgeeft precies wat je van plan bent, 614 00:27:39,360 --> 00:27:42,190 het zou kunnen worden overgelaten aan het oordeel of fouten. 615 00:27:42,190 --> 00:27:44,890 De puntkomma betekent, dat is het voor deze opdracht. 616 00:27:44,890 --> 00:27:48,310 Het wordt super nauwkeurig, en het is een zeer eenvoudig ding af te vertrekken. 617 00:27:48,310 --> 00:27:52,240 Dus nu dit programma lijkt niet te worden gedragen elke anders totdat ik 618 00:27:52,240 --> 00:27:53,500 maken het meer dynamiek. 619 00:27:53,500 --> 00:27:57,107 Dus in plaats van harde kon mijn eigen te noemen, laat ik een placeholder waarde. 620 00:27:57,107 --> 00:28:00,190 En het blijkt dat, en ik weet dat dit van de documentatie te hebben gelezen, 621 00:28:00,190 --> 00:28:04,080 en gebruikt de functie jaren, dat printf is ontworpen dynamisch te zijn. 622 00:28:04,080 --> 00:28:07,510 Je hoeft niet te weten op voorhand welke woorden je wilt in te zetten. 623 00:28:07,510 --> 00:28:11,290 U kunt in plaats daarvan een placeholder, zoals procent s, die 624 00:28:11,290 --> 00:28:15,500 gaat het vertellen computer, zet hier een string. 625 00:28:15,500 --> 00:28:17,740 >> Die reeks willen we daar te zetten? 626 00:28:17,740 --> 00:28:22,430 Testament blijkt dat tussen deze haakjes, die herinneren, afbakenen 627 00:28:22,430 --> 00:28:28,020 de ingang naar een functie, als je komma's gescheiden lijst van dingen hier, 628 00:28:28,020 --> 00:28:31,790 we eigenlijk in meerdere passeren input voor een functie. 629 00:28:31,790 --> 00:28:33,901 Dus gewoon graag wat Scratch blokken, zou je niet 630 00:28:33,901 --> 00:28:36,150 hebben gespeeld met hen voor uw projecten nog niet of helemaal niet, 631 00:28:36,150 --> 00:28:38,250 sommige Scratch blokken hebben twee ingangen. 632 00:28:38,250 --> 00:28:41,220 Twee witte dozen je kunt Typ getallen of woorden in. 633 00:28:41,220 --> 00:28:45,210 Dus heeft C hebben functies zoals printf die twee ingangen kan nemen. 634 00:28:45,210 --> 00:28:48,050 En nogmaals, dit komma is ze te scheiden. 635 00:28:48,050 --> 00:28:51,070 Dus in het Engels, weer zelfs als je nog nooit hebt geprogrammeerd, 636 00:28:51,070 --> 00:28:55,320 door die logica printf is een functie, neemt twee ingangen, waarvan 637 00:28:55,320 --> 00:28:58,810 is een placeholder, wat zou je hopen printf gaat doen met deze input? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Het gaat om hallo te zeggen Hannah, hopelijk. 640 00:29:03,220 --> 00:29:05,274 Dus om deze die we nodig hebben om het te redden. 641 00:29:05,274 --> 00:29:06,190 Ik ga om uit te zoomen. 642 00:29:06,190 --> 00:29:10,701 Ik ga hier terug te gaan en zeggen: maak gedag te voeren. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Er is iets mis, en eigenlijk dit is heel overweldigend. 645 00:29:14,830 --> 00:29:18,400 Ik heb zes lijnen van de code en net als 12 lijnen van fouten. 646 00:29:18,400 --> 00:29:22,120 Dus, kijk uit naar deze. 647 00:29:22,120 --> 00:29:24,260 Dus wat is hier aan de hand? 648 00:29:24,260 --> 00:29:27,370 Dus de beste vuistregel hier, vooral wanneer je begint, 649 00:29:27,370 --> 00:29:29,370 laat je niet afleiden door het spul op de bodem. 650 00:29:29,370 --> 00:29:31,220 In feite heb ik heel bewust gewoon gebladerd up 651 00:29:31,220 --> 00:29:33,930 omdat vaak een computer niet zo helder van een apparaat. 652 00:29:33,930 --> 00:29:35,054 Het zal in de war raken. 653 00:29:35,054 --> 00:29:37,220 Als het ziet een ding dat het niet begrijpt, 654 00:29:37,220 --> 00:29:40,030 Het andere zou kunnen verwarren regels code als onjuist, 655 00:29:40,030 --> 00:29:41,649 ook al zijn ze prima. 656 00:29:41,649 --> 00:29:43,940 Zodat u altijd wilt werken boven naar beneden door de fouten. 657 00:29:43,940 --> 00:29:47,850 En toegegeven dit is super mysterieuze op dit moment. 658 00:29:47,850 --> 00:29:50,830 >> Fout, het gebruik van zwartwerk id string. 659 00:29:50,830 --> 00:29:52,130 Heb ik bedoel standaard? 660 00:29:52,130 --> 00:29:53,720 Nee, ik bedoelde string. 661 00:29:53,720 --> 00:29:55,830 En het is wijzend op, misschien is het een typo. 662 00:29:55,830 --> 00:30:00,570 Een beetje zoals, spellingcontrole in een zeer geeky manier, maar de reden hier, 663 00:30:00,570 --> 00:30:02,840 en je zult weten alleen door de praktijk is 664 00:30:02,840 --> 00:30:06,390 dat blijkt dat touwtje bestaat niet in C. In feite, C 665 00:30:06,390 --> 00:30:08,820 is een bijzonder oude taal, en het is zeer laag niveau, 666 00:30:08,820 --> 00:30:11,361 en het doet niet veel functies dat je zou kunnen zijn gegroeid 667 00:30:11,361 --> 00:30:14,620 met als u, in feite, geprogrammeerd in Java, zoals sommigen van u, 668 00:30:14,620 --> 00:30:16,980 maar je kunt het leren van nieuwe dingen. 669 00:30:16,980 --> 00:30:20,900 En inderdaad, we hebben deze CS50 gedaan, ook al tegen het einde van het semester, 670 00:30:20,900 --> 00:30:23,512 al deze zijwieltjes zullen zijn genomen uit, 671 00:30:23,512 --> 00:30:25,220 wat we doen in deze eerste paar weken 672 00:30:25,220 --> 00:30:29,830 aanvankelijk we hebben ook je oa CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Dat is een header bestand. 674 00:30:31,230 --> 00:30:32,440 Meer daarover in de toekomst. 675 00:30:32,440 --> 00:30:36,430 >> Het is een bestand dat functies bevat dat we hebben geschreven voor u. 676 00:30:36,430 --> 00:30:39,180 En onder die functies is functies voor het verkrijgen van invoer 677 00:30:39,180 --> 00:30:43,520 van de gebruiker, zoals koorden, en getallen en reële getallen, en nog veel meer. 678 00:30:43,520 --> 00:30:45,550 Maar het heeft ook een aantal sneltoetsen. 679 00:30:45,550 --> 00:30:48,200 Het definieert een Boolean een gegevenstype. 680 00:30:48,200 --> 00:30:50,340 C heeft geen waar of onwaar. 681 00:30:50,340 --> 00:30:53,880 Maar we kunnen geven het begrip true of false door middel van deze bibliotheek. 682 00:30:53,880 --> 00:30:57,670 En het is ook niet een string hebben gebouwd in totdat we onder deze lijn. 683 00:30:57,670 --> 00:31:01,090 Dus deze regel code vertelt de compiler, hey, Clang, kijk 684 00:31:01,090 --> 00:31:03,570 in dit bestand op geheel stelletje code die CS50 685 00:31:03,570 --> 00:31:06,330 heeft geschreven, zodat iedereen die dit bestand 686 00:31:06,330 --> 00:31:09,330 kunnen voor lief nemen de functies die ze hebben toegevoegd. 687 00:31:09,330 --> 00:31:11,220 >> Dus nu laat me doorgaan en duidelijk op het scherm, 688 00:31:11,220 --> 00:31:14,178 en als nieuwsgierig Ik zeg alleen controle l elke keer om het scherm te wissen, 689 00:31:14,178 --> 00:31:15,500 of je kunt duidelijk typen. 690 00:31:15,500 --> 00:31:19,220 Ik ga nu verder te gaan en soort maken hallo, en alles is goed. 691 00:31:19,220 --> 00:31:22,550 Nog steeds een mysterieuze uitgang, maar het is niet een verkeerde boodschap. 692 00:31:22,550 --> 00:31:28,300 Nu als ik dat doe dot slash hallo, en als een terzijde, dot slash is onbekend voor de meeste. 693 00:31:28,300 --> 00:31:30,430 Het betekent alleen, dot middelen de huidige directory. 694 00:31:30,430 --> 00:31:33,120 Dus als je ooit hebt gebruikt DOS of Linux of Unix 695 00:31:33,120 --> 00:31:35,410 je zou iets hebben gedaan zoals cd dot dot, waar de 696 00:31:35,410 --> 00:31:39,220 dot dot betekent achteruit gaan in tijd, of achteruit gaan, of hoger 697 00:31:39,220 --> 00:31:40,370 in uw telefoonboek. 698 00:31:40,370 --> 00:31:43,090 Dot betekent gewoon kijken in de huidige directory. 699 00:31:43,090 --> 00:31:45,670 Ik wil hallo, dat is hier. 700 00:31:45,670 --> 00:31:47,750 En inderdaad, nu zegt hallo Hannah. 701 00:31:47,750 --> 00:31:51,120 En als ik het weer veranderen Maria, opnieuw te compileren 702 00:31:51,120 --> 00:31:55,650 het zou hello, dot slash maken hallo, het programma blijft veranderen. 703 00:31:55,650 --> 00:31:58,060 >> Maar dit is nog steeds een behoorlijk stom programma. 704 00:31:58,060 --> 00:32:00,972 Als ik wil dit programma verzenden, of geef het aan een vriend, 705 00:32:00,972 --> 00:32:03,430 of geef het aan Maria of Hannah wat dat betreft, is dat prima. 706 00:32:03,430 --> 00:32:07,300 Ik kan het voor hen beiden, maar het zal nooit dynamisch te zijn. 707 00:32:07,300 --> 00:32:10,870 Ze kunnen het niet veranderen als het eenmaal is gecompileerd beneden in de nullen en enen. 708 00:32:10,870 --> 00:32:12,350 Dus wat we deden iets slimmer? 709 00:32:12,350 --> 00:32:17,100 Stel dat, in plaats van hard-codering in het programma de naam van deze persoon, 710 00:32:17,100 --> 00:32:20,890 wat als we gewoon de string op de vraag? 711 00:32:20,890 --> 00:32:22,430 >> Dus met andere woorden, laat mij dit te doen. 712 00:32:22,430 --> 00:32:24,030 Ik ga dit programma opnieuw te compileren. 713 00:32:24,030 --> 00:32:25,710 En laat me in te zoomen op de bodem nu. 714 00:32:25,710 --> 00:32:29,920 Maak hello dot slash hallo. 715 00:32:29,920 --> 00:32:31,710 Nu is er niets gebeurt. 716 00:32:31,710 --> 00:32:35,860 Kunnen we snel een vrijwilliger om iets te laten gebeuren? 717 00:32:35,860 --> 00:32:36,360 Kom op maximaal. 718 00:32:36,360 --> 00:32:37,020 Hoe heet je? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Kom op maximaal. 722 00:32:39,609 --> 00:32:42,150 Zodra je hier op te staan, dit is gaat erg underwhelming worden, 723 00:32:42,150 --> 00:32:44,060 maar het is interessanter dan me te typen. 724 00:32:44,060 --> 00:32:49,007 Als je vooruit wilt gaan en typ naam, heb ik dit programma voor jou. 725 00:32:49,007 --> 00:32:49,840 Typ gewoon je naam. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Enter. 728 00:32:53,900 --> 00:32:54,489 Geweldig. 729 00:32:54,489 --> 00:32:55,780 Oké, heel erg bedankt. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Hartelijk dank. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Applaus] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Dat was erg aardig. 735 00:33:01,840 --> 00:33:03,145 Alsjeblieft. 736 00:33:03,145 --> 00:33:03,770 Wat hebben we gedaan? 737 00:33:03,770 --> 00:33:05,930 Dus uiteindelijk hebben we, op zijn minst, maakte dit programma dynamisch. 738 00:33:05,930 --> 00:33:08,400 Nu is het nog steeds zeker door het ontwerp underwhelming, 739 00:33:08,400 --> 00:33:11,480 maar we eindelijk de mogelijkheid nu om code te schrijven op voorhand, veel 740 00:33:11,480 --> 00:33:13,770 zoals de auteurs van printf, en vervolgens dynamisch 741 00:33:13,770 --> 00:33:17,550 passen zich op basis van de input wij overhandigd, hetzij door de programmeur, 742 00:33:17,550 --> 00:33:20,610 of door de mens die eigenlijk interactie met het programma. 743 00:33:20,610 --> 00:33:22,990 Dus laten we nu eigenlijk proberen een paar andere constructies doen 744 00:33:22,990 --> 00:33:26,625 en kijken of we niet van de programma's kan maken zich meer verfijnd. 745 00:33:26,625 --> 00:33:29,250 Dus laten we verder gaan en in plaats van het schrijven van dit één van de grond af, 746 00:33:29,250 --> 00:33:31,540 Ik ga naar vandaag te gaan broncode, en dit alles 747 00:33:31,540 --> 00:33:34,290 is beschikbaar op de cursus website, en u kunt slepen en neerzetten 748 00:33:34,290 --> 00:33:36,590 in uw eigen omgeving komen vrijdag eenmaal probleem 749 00:33:36,590 --> 00:33:38,506 set 1 geeft u de instructies, of je kon 750 00:33:38,506 --> 00:33:41,200 doe het op de opdrachtregel als goed, maar meer te komen in p 1. 751 00:33:41,200 --> 00:33:44,940 >> Laten we eens kijken wat er in dit programma hier genoemd, adder dot c. 752 00:33:44,940 --> 00:33:47,970 Nu heb ik al commentaar , maar wat is er nieuw? 753 00:33:47,970 --> 00:33:51,230 Op het eerste gezicht, welke lijn van de code is absoluut nieuw? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Waarschijnlijk niet fundamenteel onbekende nu. 756 00:33:56,780 --> 00:33:58,417 >> PUBLIEK: [onverstaanbaar] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Ja, dus int x gelijk krijgen n. 758 00:34:00,250 --> 00:34:03,760 We hebben nog nooit een van deze gezien eerder, maar is waarschijnlijk int 759 00:34:03,760 --> 00:34:08,179 het symbool voor wat voor soort variabele [? vanaf?] een integer. 760 00:34:08,179 --> 00:34:09,040 Zo int voor integer. 761 00:34:09,040 --> 00:34:11,420 Het is gewoon meer beknopt. x is gewoon willekeurig. 762 00:34:11,420 --> 00:34:13,920 x en y en z zijn nog redelijk voor nummers, 763 00:34:13,920 --> 00:34:16,790 maar over het algemeen zullen we woorden eens gebruiken onze programma's krijgen complexer. 764 00:34:16,790 --> 00:34:18,940 Get int natuurlijk net als get string 765 00:34:18,940 --> 00:34:21,629 waarschijnlijk gaat krijgen een int van de gebruiker, 766 00:34:21,629 --> 00:34:23,670 en dan gaan we hetzelfde doen met y. 767 00:34:23,670 --> 00:34:27,610 En blijkbaar, hoewel dit laatste regel, 24, ziet er meer complexe, 768 00:34:27,610 --> 00:34:32,679 het gaat om de som van dit te zeggen en dat is dat andere ding. 769 00:34:32,679 --> 00:34:35,840 >> En let procent i Waarschijnlijk geeft wat? 770 00:34:35,840 --> 00:34:38,190 Welke rol speelt procent ik blijkbaar dienen? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 Het is gewoon placeholders. 773 00:34:41,719 --> 00:34:42,219 Rechts? 774 00:34:42,219 --> 00:34:45,149 Procent s was voor strijkkwartet, procent i is voor integer. 775 00:34:45,149 --> 00:34:47,690 Er gaat procent f zijn voor floating point waarde, die 776 00:34:47,690 --> 00:34:49,273 is gewoon een nummer met een komma. 777 00:34:49,273 --> 00:34:50,590 Met andere woorden, een reëel getal. 778 00:34:50,590 --> 00:34:55,270 Dus laten we eigenlijk dit compileren programmeren echt snel en niet te maken adder. 779 00:34:55,270 --> 00:34:57,962 Whoops. 780 00:34:57,962 --> 00:34:58,670 Goede gelegenheid. 781 00:34:58,670 --> 00:35:02,970 Zo ziet hier, al die tijd mijn gebruiker naam voor deze account wordt jharvard. 782 00:35:02,970 --> 00:35:06,620 Ik ben in CS50 IDE, aka IDE50. 783 00:35:06,620 --> 00:35:11,030 En nu in het blauw hier, is een vermelding, maar uit de omgeving, van waar ik ben. 784 00:35:11,030 --> 00:35:16,050 En in feite, als ik te zoomen naar de top hier opmerken dat ik een IDE50 785 00:35:16,050 --> 00:35:19,490 en ik zie dit woord, als je soort draai je hoofd naar de kant, werkruimte. 786 00:35:19,490 --> 00:35:23,890 In een notendop, het feit dat Ik zie tilde slash werkruimte 787 00:35:23,890 --> 00:35:26,910 betekent dat in deze tekst gebaseerde commando milieu, 788 00:35:26,910 --> 00:35:32,300 Ik ben in de tekst van Deze grafische hier map up. 789 00:35:32,300 --> 00:35:35,730 Dus toen ik dot slash adder, het zegt geen regel 790 00:35:35,730 --> 00:35:37,372 tot doel adder stop. 791 00:35:37,372 --> 00:35:39,830 Ik weet niet wat dat betekent, maar het is slecht voor een of andere reden. 792 00:35:39,830 --> 00:35:43,310 Bestand of map bestaat niet is nog duidelijker. 793 00:35:43,310 --> 00:35:45,670 Waar is het dan? 794 00:35:45,670 --> 00:35:47,820 Gebaseerd op waar ik klikte het bestand eerder openen. 795 00:35:47,820 --> 00:35:49,442 Waar kan het zijn? 796 00:35:49,442 --> 00:35:52,050 >> Het is waarschijnlijk in de bron een w, voor woensdag, 797 00:35:52,050 --> 00:35:53,960 en ik kan het zien, inderdaad, als ik open die up. 798 00:35:53,960 --> 00:35:57,220 Er is opteller punt c, maar van dit tekst gebaseerde omgeving, 799 00:35:57,220 --> 00:35:59,380 nogmaals, ik heb super expliciet te zijn. 800 00:35:59,380 --> 00:36:03,950 Als ik wil directories veranderen in bron een woensdag, ik moet typen, 801 00:36:03,950 --> 00:36:07,210 cd bron één ruimte Woensdag betreden en nu 802 00:36:07,210 --> 00:36:09,810 mijn snelle veranderingen geef me een visueel signaal dat 803 00:36:09,810 --> 00:36:12,330 Ik ben inderdaad elders in mijn omgeving, 804 00:36:12,330 --> 00:36:15,710 maar nu kan ik niet maken adder lijkt te werken, 805 00:36:15,710 --> 00:36:18,190 dot slash adder, geef me een integer. 806 00:36:18,190 --> 00:36:19,080 Een. 807 00:36:19,080 --> 00:36:20,070 Twee. 808 00:36:20,070 --> 00:36:21,630 De som van één en twee is drie. 809 00:36:21,630 --> 00:36:24,140 Maar als ik niet meewerken, laten we zien wat krijgt int doet. 810 00:36:24,140 --> 00:36:25,200 Geef me een integer. 811 00:36:25,200 --> 00:36:26,590 Nee. 812 00:36:26,590 --> 00:36:27,350 Probeer opnieuw. 813 00:36:27,350 --> 00:36:29,060 OK. 814 00:36:29,060 --> 00:36:30,520 Fijn. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Prima. 818 00:36:33,010 --> 00:36:34,055 Dus het eindelijk meewerkt. 819 00:36:34,055 --> 00:36:36,430 En dat is een deel van de functionaliteit die deze functies 820 00:36:36,430 --> 00:36:37,760 kunnen hebben ingebouwd voor u. 821 00:36:37,760 --> 00:36:43,330 >> Dus binnen de implementatie van krijgen int, wat programmering 822 00:36:43,330 --> 00:36:47,990 construeren van vorige week is waarschijnlijk in daar dit gedrag van het opnieuw proberen te dwingen, 823 00:36:47,990 --> 00:36:49,962 opnieuw proberen, opnieuw proberen? 824 00:36:49,962 --> 00:36:51,670 Ja, er is waarschijnlijk een soort van lus. 825 00:36:51,670 --> 00:36:54,160 Het gaat om syntactisch kijken verschillend van blokken Scratch's, 826 00:36:54,160 --> 00:36:55,880 maar dat is inderdaad wat er in het bestand. 827 00:36:55,880 --> 00:36:58,505 En in een paar weken tijd we zullen eigenlijk kijken naar de CS50 bibliotheek 828 00:36:58,505 --> 00:37:02,000 wat er in zit, maar er is een lus imposante precies dat. 829 00:37:02,000 --> 00:37:04,840 >> Laten we spelen een beetje dom spel hier met dit bestand. 830 00:37:04,840 --> 00:37:06,550 Condition Zero dot c. 831 00:37:06,550 --> 00:37:08,960 We gaan gewoon naar het algemeen beginnen te tellen bij nul. 832 00:37:08,960 --> 00:37:11,220 En ik blijf verleden scrollen sommige van de spullen aan de bovenkant. 833 00:37:11,220 --> 00:37:15,390 In blauw hier, afgebakend met alle van deze sterren en de schuine strepen, 834 00:37:15,390 --> 00:37:17,310 degenen onder u die programmeert voor, wat is dat? 835 00:37:17,310 --> 00:37:18,690 Waarom houden we overslaan overheen? 836 00:37:18,690 --> 00:37:19,110 Wat? 837 00:37:19,110 --> 00:37:19,490 >> Publiek: Het is een reactie. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Ja. 839 00:37:19,800 --> 00:37:20,633 Het is gewoon een reactie. 840 00:37:20,633 --> 00:37:24,160 Dit is een reactie voor de mens te lezen, die in ons geval, 841 00:37:24,160 --> 00:37:27,120 vertelt wat de naam van het bestand is, wie het geschreven heeft, en wat het doet, 842 00:37:27,120 --> 00:37:28,610 zodat u niet hoeft te lezen via de code 843 00:37:28,610 --> 00:37:30,110 om te weten wat dit bestand is alles over. 844 00:37:30,110 --> 00:37:33,110 Het is gewoon een beschrijving, maar functioneel is irrelevant. 845 00:37:33,110 --> 00:37:35,930 En ik kan zelfs verwijderen uit mijn dossier en het heeft geen invloed. 846 00:37:35,930 --> 00:37:38,740 De sappige lijnen zijn deze eerste twee hier, nu. 847 00:37:38,740 --> 00:37:41,405 int main leegte is het equivalent van ons als groene vlag geklikt, 848 00:37:41,405 --> 00:37:44,030 dus we gaan om te vertrekken, dat zijn voor vandaag, en we zullen terugkomen, 849 00:37:44,030 --> 00:37:46,940 Uiteindelijk, wat int en generlei waarde zijn, maar nu, 850 00:37:46,940 --> 00:37:49,500 let op wat ik heb gedaan ook hier, kunt u ook, 851 00:37:49,500 --> 00:37:51,736 als u een in de lijn commentaar, als je 852 00:37:51,736 --> 00:37:54,670 Een gedachte die u wilt delen over een bepaalde regel code, 853 00:37:54,670 --> 00:37:58,910 conventie in C is om slash doen slash, en dan een paar beknopte woorden, 854 00:37:58,910 --> 00:38:01,500 niet een volledige zin, over het algemeen niet een paragraaf, 855 00:38:01,500 --> 00:38:05,310 dat alleen maar legt je uit, of je TF of andere lezers of collega's, 856 00:38:05,310 --> 00:38:06,990 wat uw code doet. 857 00:38:06,990 --> 00:38:10,150 Dus in plaats van te kijken Dit en afleiden van lijnen 858 00:38:10,150 --> 00:38:12,550 negen en 10, wat is dit te doen, in lijn acht 859 00:38:12,550 --> 00:38:14,945 Ik geef een reactie op vraagt ​​de gebruiker om een ​​integer, 860 00:38:14,945 --> 00:38:17,820 dan weet ik niet al te moeilijk denken over wat lijnen negen en 10 zijn. 861 00:38:17,820 --> 00:38:19,720 Ik weet alleen dat dat is wat gezamenlijk ze doen. 862 00:38:19,720 --> 00:38:20,460 >> Hoe? 863 00:38:20,460 --> 00:38:22,060 Nou, hier is de prompt. 864 00:38:22,060 --> 00:38:23,610 Hier is het krijgen van de Int. 865 00:38:23,610 --> 00:38:25,984 En gebaseerd op de eerdere gedrag, het lijkt alsof get int 866 00:38:25,984 --> 00:38:29,080 is slim genoeg om ervoor te zorgen dat de menselijke samen en geeft het 867 00:38:29,080 --> 00:38:30,090 een integer. 868 00:38:30,090 --> 00:38:32,270 Maar nu zien we dit. 869 00:38:32,270 --> 00:38:33,740 En dat doet denken aan Scratch. 870 00:38:33,740 --> 00:38:36,140 Ik beweren dat ik ben het analyseren van invoer van de gebruiker, 871 00:38:36,140 --> 00:38:39,050 maar enigszins onnauwkeurig. 872 00:38:39,050 --> 00:38:43,200 En dit blijkbaar C is hoe we geven van een of ander, een tak, 873 00:38:43,200 --> 00:38:46,320 een vork in de weg, maar ik zeggen enigszins onnauwkeurig. 874 00:38:46,320 --> 00:38:50,470 Wat is de bug in dit programma? 875 00:38:50,470 --> 00:38:51,610 Over verder terug? 876 00:38:51,610 --> 00:38:52,223 Ja. 877 00:38:52,223 --> 00:38:53,150 >> PUBLIEK: [onverstaanbaar] nul. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Ja. 879 00:38:54,025 --> 00:38:57,630 Dus als ik typ in nul, laten we eens kijken precies dat geval, of in een hoek geval, 880 00:38:57,630 --> 00:38:58,450 als je wil. 881 00:38:58,450 --> 00:39:02,790 Dus als ik typ in nul, die van de blokken gaat blijkbaar grijpen? 882 00:39:02,790 --> 00:39:04,660 De als of het anders? 883 00:39:04,660 --> 00:39:07,340 Het anders, en het gaat om te zeggen, u een negatief getal geplukt. 884 00:39:07,340 --> 00:39:10,476 En inderdaad, nul is niet de bedoeling positief of negatief, 885 00:39:10,476 --> 00:39:11,850 en dat zou foutief zijn. 886 00:39:11,850 --> 00:39:12,930 Dat zou een fout zijn. 887 00:39:12,930 --> 00:39:14,580 Dus hoe kunnen we dit oplossen? 888 00:39:14,580 --> 00:39:16,360 Iemand die nog nooit eerder heeft geprogrammeerd? 889 00:39:16,360 --> 00:39:16,570 Wil je-- 890 00:39:16,570 --> 00:39:17,480 >> PUBLIEK: [onverstaanbaar] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: intrekken? 892 00:39:17,990 --> 00:39:18,570 >> PUBLIEK: [onverstaanbaar] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: Oh, heb je? 894 00:39:18,930 --> 00:39:20,350 Iemand die nog nooit eerder heeft geprogrammeerd. 895 00:39:20,350 --> 00:39:21,750 Willen proberen je hand op Dit, in het rode shirt? 896 00:39:21,750 --> 00:39:22,600 Kom op maximaal. 897 00:39:22,600 --> 00:39:25,320 Oh ja, kom op, als je het niet erg vindt. 898 00:39:25,320 --> 00:39:27,586 Dus nooit te hebben geprogrammeerd voor, wat is uw naam? 899 00:39:27,586 --> 00:39:28,210 Lauren: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, oke. 901 00:39:29,626 --> 00:39:31,150 Dus dit oplossen bug voor ons. 902 00:39:31,150 --> 00:39:35,070 Je hebt niet gezien C, vermoedelijk, en waarschijnlijk geen andere taal. 903 00:39:35,070 --> 00:39:38,380 Dus bevestig dit programma voor ons. 904 00:39:38,380 --> 00:39:39,100 Leuk om je te ontmoeten. 905 00:39:39,100 --> 00:39:39,615 Geen druk. 906 00:39:39,615 --> 00:39:40,156 Lauren: Ja. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. MALAN: Maar nogmaals, als dit gok volgens plan verloopt, 909 00:39:46,270 --> 00:39:48,350 de afhaalmaaltijd hier zal , net opnieuw beginnen 910 00:39:48,350 --> 00:39:51,080 patronen en merken afleiden uit bestaande syntax 911 00:39:51,080 --> 00:39:55,420 hoe anders je zou uitdrukken jezelf, no pun intended, met het oog 912 00:39:55,420 --> 00:39:58,410 wat extra scenario vangen. 913 00:39:58,410 --> 00:39:59,603 Dus we zeggen anders als. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, goed. 916 00:40:05,230 --> 00:40:09,120 En merk met CS50 IDE en frankly-- IDE 917 00:40:09,120 --> 00:40:11,110 staat voor Integrated Development Environment. 918 00:40:11,110 --> 00:40:14,110 Het is gewoon een mooie manier om te zeggen een programma dat u programma helpt. 919 00:40:14,110 --> 00:40:16,779 Het doet gebruiksvriendelijk dingen zoals wanneer u een haakje te typen, 920 00:40:16,779 --> 00:40:18,320 het geeft je automatisch de andere. 921 00:40:18,320 --> 00:40:20,760 Het vermoeden is dat je bent uiteindelijk gaat wilt typen dat, 922 00:40:20,760 --> 00:40:22,400 en het doet het ook met citaten. 923 00:40:22,400 --> 00:40:24,190 >> Dus ik wil lijn 23. 924 00:40:24,190 --> 00:40:26,400 99% van de weg daar. 925 00:40:26,400 --> 00:40:29,920 Iemand willen in klokkenspel met een tip? 926 00:40:29,920 --> 00:40:31,420 Ik hoorde puntkomma van het publiek. 927 00:40:31,420 --> 00:40:32,080 Goed. 928 00:40:32,080 --> 00:40:33,260 Zodat deze voltooid. 929 00:40:33,260 --> 00:40:37,930 En nu, ik heb alleen een beetje consternatie met lijn 21. 930 00:40:37,930 --> 00:40:41,370 Hoe willen we dit uit te drukken? 931 00:40:41,370 --> 00:40:43,370 Welke vraag willen we te vragen, denk je? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Dus eerder vroegen we de vraag, Als n groter is dan nul, dit doen. 934 00:40:50,330 --> 00:40:51,870 Anders, dat doen. 935 00:40:51,870 --> 00:40:54,317 Dus moeten we een keuze vraag om hier te vragen. 936 00:40:54,317 --> 00:40:55,192 PUBLIEK: [onverstaanbaar] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Goed. 938 00:40:56,530 --> 00:40:58,290 Als n gelijk is aan nul. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excellent. 941 00:41:02,100 --> 00:41:03,080 Dus laten we pauzeren hier. 942 00:41:03,080 --> 00:41:04,850 Dank je wel voor deze trotseren. 943 00:41:04,850 --> 00:41:10,890 Laat me je een beetje welverdiende stressbal, misschien is er. 944 00:41:10,890 --> 00:41:11,900 Dus we zijn er bijna. 945 00:41:11,900 --> 00:41:14,790 In feite, Lauren, als je niet geest, laat me een tweak hier 946 00:41:14,790 --> 00:41:17,850 alleen maar om consequent te zijn, zelfs met wat we zagen in Scratch, wat 947 00:41:17,850 --> 00:41:21,080 wil ik doen met lijnen 21 en 24 slechts wederom gebaseerd 948 00:41:21,080 --> 00:41:23,290 over hoe we deden dit in Scratch, misschien? 949 00:41:23,290 --> 00:41:24,230 >> Publiek: Move it up. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Ja, beweeg het op. 951 00:41:25,605 --> 00:41:30,260 Dus de andere aandoening, de derde, of vierde of vijfde, of definitieve vestiging, 952 00:41:30,260 --> 00:41:34,100 moeten inderdaad komen daarna, en dat is gewoon volgens afspraak 953 00:41:34,100 --> 00:41:36,047 gewoon omdat als je wil. 954 00:41:36,047 --> 00:41:37,380 Dus ik moet deze tweak te maken. 955 00:41:37,380 --> 00:41:39,660 En ik moet mijn zetten accolade hier terug. 956 00:41:39,660 --> 00:41:42,700 En nu, zal dit programma samen te stellen. 957 00:41:42,700 --> 00:41:46,140 We zijn zo dichtbij, maar er is een zeer, zeer subtiele bug. 958 00:41:46,140 --> 00:41:47,200 Laten we eens kijken wat er gebeurt. 959 00:41:47,200 --> 00:41:49,660 >> Ten eerste wil ik ga je gang en uit te zoomen. 960 00:41:49,660 --> 00:41:53,405 Ik ga om te gaan en typt maken Condition Zero. 961 00:41:53,405 --> 00:41:55,070 Oh, ik heb gelogen. 962 00:41:55,070 --> 00:41:58,760 Nu is de compiler is eigenlijk best slim. 963 00:41:58,760 --> 00:42:00,950 En ik begrijp niet echt het is foutmelding. 964 00:42:00,950 --> 00:42:04,310 De resultaten van een opdracht als voorwaarde zonder haakjes, 965 00:42:04,310 --> 00:42:05,740 blijkbaar slecht. 966 00:42:05,740 --> 00:42:07,100 Maar wat betekent dat? 967 00:42:07,100 --> 00:42:10,860 >> Weer goed, op zoek naar patronen in code die we eerder hebben gezien, 968 00:42:10,860 --> 00:42:16,640 Wat is lijn 17 eigenlijk doen, hoewel Lauren bedoeld lichtjes 969 00:42:16,640 --> 00:42:18,790 anders? 970 00:42:18,790 --> 00:42:19,290 Ja. 971 00:42:19,290 --> 00:42:21,565 >> PUBLIEK: [onverstaanbaar] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Ja. 973 00:42:22,440 --> 00:42:26,610 Dus onthoud het isgelijkteken, blijkbaar zoals we dat eerder hebt gebruikt, is niet gelijk. 974 00:42:26,610 --> 00:42:29,240 De toewijzing van rechts naar links. 975 00:42:29,240 --> 00:42:33,810 Dus lijn 17 momenteel is een voorwaarde, en het is 976 00:42:33,810 --> 00:42:37,890 het uitvoeren van code in de haakjes maar wanneer dat code wordt uitgevoerd, 977 00:42:37,890 --> 00:42:42,140 wat er gebeurt met de waarde van nul? 978 00:42:42,140 --> 00:42:45,250 Wat gebeurt er met de waarde van n? 979 00:42:45,250 --> 00:42:46,810 Steeds nul. 980 00:42:46,810 --> 00:42:50,520 Als n steeds nul, en opnieuw, zoals per vorige week, 981 00:42:50,520 --> 00:42:54,690 wij over het algemeen zeggen dat nul onwaar en één waar is, 982 00:42:54,690 --> 00:42:57,410 of ja, is een en geen nul. 983 00:42:57,410 --> 00:42:59,590 Dus waar en onwaar, een en 0. 984 00:42:59,590 --> 00:43:06,090 Als n als lijn 17 is geweest gezien de waarde 0, nul is waar? 985 00:43:06,090 --> 00:43:06,590 Nee. 986 00:43:06,590 --> 00:43:08,280 Per definitie, nul is vals. 987 00:43:08,280 --> 00:43:10,860 Dat is de conventie zijn we gaan vastklampen aan vooruit. 988 00:43:10,860 --> 00:43:17,320 Zo zal lijnen 18, 19 en 20 nu ooit van toepassing, logisch? 989 00:43:17,320 --> 00:43:18,320 Dat kunnen ze niet. 990 00:43:18,320 --> 00:43:21,640 Dus de vraag vroegen we maar niet helemaal nauwkeurig, 991 00:43:21,640 --> 00:43:25,620 en je zou dit niet weten, tenzij je hebt het gezien, de oplossing in C 992 00:43:25,620 --> 00:43:29,610 is wanneer u wilt uitdrukken gelijkheid, zeg je gelijken gelijk. 993 00:43:29,610 --> 00:43:33,140 Dus gelijk-teken werd reeds opgebruikt in opdracht van rechts naar links. 994 00:43:33,140 --> 00:43:35,110 Gelijk aan evenaart middelen gelijk. 995 00:43:35,110 --> 00:43:37,950 En als je echt wilt dat uw geest te buigen, in JavaScript en PHP, 996 00:43:37,950 --> 00:43:40,490 er is gelijk aan evenaart gelijken, die betekent iets heel anders, 997 00:43:40,490 --> 00:43:41,990 maar we zullen krijgen dat duurde niet lang. 998 00:43:41,990 --> 00:43:45,760 >> Dus dit is een eenvoudige oplossing, maar besef super gemakkelijk om dit fout te maken, 999 00:43:45,760 --> 00:43:48,700 en dan af en strijd minutenlang, zoniet uur, 1000 00:43:48,700 --> 00:43:51,490 waarom is mijn code niet uitvoeren zoals ik van plan? 1001 00:43:51,490 --> 00:43:54,140 Het is omdat je niet vertellen is precies wat je bedoelde. 1002 00:43:54,140 --> 00:43:56,450 Zodat bijna perfect, en het was geweldig 1003 00:43:56,450 --> 00:44:00,760 dat we vonden deze twee kleine dingen want nu als we ze op te lossen, 1004 00:44:00,760 --> 00:44:06,240 en Ik maak Condition Zero dot slash Condition Zero, 1005 00:44:06,240 --> 00:44:07,490 Ik wil graag een integer aub. 1006 00:44:07,490 --> 00:44:08,090 Laten we kijken. 1007 00:44:08,090 --> 00:44:09,160 Nee. 1008 00:44:09,160 --> 00:44:10,740 Het gaat me dwingen om het te doen. 1009 00:44:10,740 --> 00:44:11,990 Zo 42. 1010 00:44:11,990 --> 00:44:13,590 Ik pakte een positief getal. 1011 00:44:13,590 --> 00:44:16,470 Dus nu hoe kan ik bewijzen dit programma correct? 1012 00:44:16,470 --> 00:44:19,990 Als je een wiskundige, kun je niet dit is echt bewijzen door trial and error, 1013 00:44:19,990 --> 00:44:20,490 toch? 1014 00:44:20,490 --> 00:44:23,180 Je kunt niet alleen het bewijs van Bijvoorbeeld, maar in ieder geval 1015 00:44:23,180 --> 00:44:25,494 als programmeur we niet gaan proberen te bewijzen voor nu 1016 00:44:25,494 --> 00:44:27,660 dat dit eigenlijk correct, maar ik zou waarschijnlijk 1017 00:44:27,660 --> 00:44:29,470 testen van een aantal representatieve gevallen. 1018 00:44:29,470 --> 00:44:31,070 >> Ik heb getest 42. 1019 00:44:31,070 --> 00:44:33,030 Ik kon testen 43. 1020 00:44:33,030 --> 00:44:34,910 Ik kon testen 44. 1021 00:44:34,910 --> 00:44:35,640 Test 45. 1022 00:44:35,640 --> 00:44:36,140 Rechts? 1023 00:44:36,140 --> 00:44:37,860 Maar ik zou dit een hele lange tijd doen. 1024 00:44:37,860 --> 00:44:39,925 Wat zou wat meer zijn interessante gevallen te proberen? 1025 00:44:39,925 --> 00:44:41,050 PUBLIEK: [onverstaanbaar] nul. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: Dus nul. 1027 00:44:41,740 --> 00:44:42,297 Zeker. 1028 00:44:42,297 --> 00:44:44,880 En goed, wij hebben het deze keer, dankzij nieuwe code Lauren's. 1029 00:44:44,880 --> 00:44:46,213 Wat is een goede zaak om te proberen? 1030 00:44:46,213 --> 00:44:47,320 Publiek: negatief. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: negatief, en misschien iets een beetje groter, 1032 00:44:50,070 --> 00:44:52,617 dus misschien negatief 42, maar in het algemeen, wanneer 1033 00:44:52,617 --> 00:44:54,450 het testen van uw programma's vooruit, je bent 1034 00:44:54,450 --> 00:44:56,325 gaat willen denken om jezelf, net als wat 1035 00:44:56,325 --> 00:44:58,050 zijn fundamenteel verschillende zaken. 1036 00:44:58,050 --> 00:45:01,720 En ik durf te zeggen dat een negatieve zaak, een positieve zaak en een nul case 1037 00:45:01,720 --> 00:45:03,365 vrij veel rondes deze uit. 1038 00:45:03,365 --> 00:45:04,990 Laten we eens kijken naar een variant van deze wel. 1039 00:45:04,990 --> 00:45:06,930 Voorwaarden één. 1040 00:45:06,930 --> 00:45:11,224 Dit is een correcte oplossing hier zodat je ziet twee en online, 1041 00:45:11,224 --> 00:45:13,390 Als je door de wandeling walkthroughs, zal in het algemeen 1042 00:45:13,390 --> 00:45:18,090 increment deze stapsgewijs totdat we krijgt precies de juiste aanpak. 1043 00:45:18,090 --> 00:45:20,070 Wat als we wilde vragen twee vragen in een keer? 1044 00:45:20,070 --> 00:45:22,200 >> Laat me dit openstellen plaats. 1045 00:45:22,200 --> 00:45:26,740 Non-schakelaar om redenen we zullen nog een keer te zien. 1046 00:45:26,740 --> 00:45:29,610 Wat is nieuw syntactisch hier? 1047 00:45:29,610 --> 00:45:32,760 Ik ben momenteel het spelen van een spel waar de computer vertelt 1048 00:45:32,760 --> 00:45:35,550 me, geef me een integer tussen één en 10, 1049 00:45:35,550 --> 00:45:37,180 en dan ga ik oordelen invoer van de gebruiker. 1050 00:45:37,180 --> 00:45:39,180 In het Engels, gebaseerd op de code die u hier ziet 1051 00:45:39,180 --> 00:45:41,530 in blauw, wat dit programma doen? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 PUBLIEK: [onverstaanbaar] opgehaald een groot of klein aantal. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Ja. 1055 00:45:46,484 --> 00:45:49,450 Het is gewoon berechting of Ik pakte een grote of middelgrote, 1056 00:45:49,450 --> 00:45:53,900 of een klein aantal op basis van een zeer willekeurige definitie van kleine, middelgrote, 1057 00:45:53,900 --> 00:45:58,510 en hier groot, maar kennisgeving de syntax dat is nieuw is dit. 1058 00:45:58,510 --> 00:46:02,340 Er is liefst int of gelijk aan ondertekenen, of groter dan of gelijk aan te melden, 1059 00:46:02,340 --> 00:46:05,430 waar men over de andere, dat je kan uitdrukken in, zoals Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Dus in een programmeertaal meestal gewoon twee karakters, 1061 00:46:08,180 --> 00:46:09,450 de een na de ander. 1062 00:46:09,450 --> 00:46:12,695 En wat betekent dit waarschijnlijk vertegenwoordigen, ampersand ampersand. 1063 00:46:12,695 --> 00:46:13,570 PUBLIEK: [onverstaanbaar] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Ja. 1065 00:46:13,680 --> 00:46:16,910 Het betekent gewoon en omdat het blijkt dat de auteurs van C 1066 00:46:16,910 --> 00:46:19,120 gebruikt een enkel teken, die je zou denken 1067 00:46:19,120 --> 00:46:22,430 perfect voor het idee zou zijn en, is al opgebruikt, 1068 00:46:22,430 --> 00:46:27,300 dus ampersand ampersand eigenlijk vangt het geval we eigenlijk willen. 1069 00:46:27,300 --> 00:46:30,610 >> Dus laten we nu struikelen over twee dingen. 1070 00:46:30,610 --> 00:46:32,640 Laat me gaan en open te stellen een. 1071 00:46:32,640 --> 00:46:36,590 Iets dat is een beetje zorgwekkend. 1072 00:46:36,590 --> 00:46:37,970 Onnauwkeurigheid dot c. 1073 00:46:37,970 --> 00:46:40,260 Laat me twee dingen hier te introduceren. 1074 00:46:40,260 --> 00:46:44,720 Eén, bericht dat we kunnen doen wiskunde, zo net als vroeger toen 1075 00:46:44,720 --> 00:46:47,797 we plus twee getallen x en y. 1076 00:46:47,797 --> 00:46:49,380 Wat is dit programma blijkbaar doen? 1077 00:46:49,380 --> 00:46:52,140 Ik heb het nog niet heeft gereageerd, en ik heb procent f geïntroduceerd, 1078 00:46:52,140 --> 00:46:55,720 maar ik snel eerder gezegd procent f betekent floating point 1079 00:46:55,720 --> 00:46:56,970 waarde, die reëel getal. 1080 00:46:56,970 --> 00:46:59,520 Iets met een decimale punt, dat geen geheel getal. 1081 00:46:59,520 --> 00:47:02,270 Wat denk je dat dit programma proberen om me te laten zien op het scherm? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Ja? 1084 00:47:06,050 --> 00:47:07,550 Doelgroep: Het resultaat van een meer dan 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Ja. 1086 00:47:07,780 --> 00:47:09,680 Wat is het resultaat van één gedeeld door 10. 1087 00:47:09,680 --> 00:47:12,721 Juist, omdat jullie allemaal waarschijnlijk opgegroeid wetende dat men dan 10 1088 00:47:12,721 --> 00:47:14,502 is wat? 1089 00:47:14,502 --> 00:47:16,220 Ja, het is gewoon 10/1 of 0,1. 1090 00:47:16,220 --> 00:47:16,720 Rechts? 1091 00:47:16,720 --> 00:47:19,010 Dus laten we eens kijken wat dit eigenlijk is. 1092 00:47:19,010 --> 00:47:21,010 Dus laat me gaan en sla dit. 1093 00:47:21,010 --> 00:47:21,970 Laat me hier beneden te gaan. 1094 00:47:21,970 --> 00:47:26,360 Maak onnauwkeurigheid dot slash onnauwkeurigheid, en kennisgeving, ook, 1095 00:47:26,360 --> 00:47:29,380 in een Linux-omgeving, je niet moeten uittypen onnauwkeurigheid en nemen 1096 00:47:29,380 --> 00:47:30,010 de hele dag lang. 1097 00:47:30,010 --> 00:47:32,910 In het algemeen, als je Tab raken, is zal uw gedachte afmaken voor u, 1098 00:47:32,910 --> 00:47:36,660 op basis van de woorden die verkrijgbaar in de huidige directory. 1099 00:47:36,660 --> 00:47:37,160 OK. 1100 00:47:37,160 --> 00:47:37,970 Dus je had gelijk. 1101 00:47:37,970 --> 00:47:41,239 Een gedeeld door 10 is in feite 0,1. 1102 00:47:41,239 --> 00:47:42,280 Maar ik ben een beetje nieuwsgierig. 1103 00:47:42,280 --> 00:47:44,196 En het blijkt printf ondersteunt een aantal functies 1104 00:47:44,196 --> 00:47:48,700 waarbij je meer dan kunt opgeven het standaard aantal cijfers achter de komma. 1105 00:47:48,700 --> 00:47:52,140 Dus als ik wil 10 decimale zien punten die ik kan procent doen, 1106 00:47:52,140 --> 00:47:55,510 voor de plaatsaanduiding symbool, dot 10 voor, geef me 10 cijfers achter de komma, 1107 00:47:55,510 --> 00:47:58,140 en dan nog floating point waarde, en, als een terzijde, 1108 00:47:58,140 --> 00:48:01,550 wat is dit backslash n blijkbaar blijven we gebruiken? 1109 00:48:01,550 --> 00:48:03,450 Het blijkt dat het een symbool voor een nieuwe regel. 1110 00:48:03,450 --> 00:48:05,970 Het is de zeer expliciete wijze zeggen de computer, 1111 00:48:05,970 --> 00:48:08,759 Beweeg de cursor naar de volgende lijn nadat je klaar bent. 1112 00:48:08,759 --> 00:48:10,800 En we zullen zien wat er gebeurt als we dat niet doen. 1113 00:48:10,800 --> 00:48:12,430 >> Laat me opnieuw compileren maken onnauwkeurigheid. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Dot nu slash onnauwkeurigheid. 1116 00:48:18,356 --> 00:48:18,930 OK. 1117 00:48:18,930 --> 00:48:19,780 Nog steeds goed. 1118 00:48:19,780 --> 00:48:21,512 Een gedeeld door 10. 1119 00:48:21,512 --> 00:48:23,220 Nu ben ik het krijgen van een beetje nieuwsgierig, dat wel. 1120 00:48:23,220 --> 00:48:27,599 Wat als ik kijk 20 decimaal wijst er opnieuw compileren, herhaling, 1121 00:48:27,599 --> 00:48:29,390 en als een opzij voor snelheid, kunt u ook gebruik maken 1122 00:48:29,390 --> 00:48:31,800 uw pijlen omhoog en omlaag te Blader door uw geschiedenis, 1123 00:48:31,800 --> 00:48:35,476 zodat je niet hoeft te houden overtypen deze opdrachten, in te voeren. 1124 00:48:35,476 --> 00:48:36,910 He. 1125 00:48:36,910 --> 00:48:39,220 Ik heb niet te weten dat er in de lagere school. 1126 00:48:39,220 --> 00:48:43,260 Oké, dus laat me zie als 29 plaatsen buiten. 1127 00:48:43,260 --> 00:48:44,300 Misschien is het gewoon een toevalstreffer. 1128 00:48:44,300 --> 00:48:46,907 Misschien is mijn computer is raar. 1129 00:48:46,907 --> 00:48:47,990 Dat is niet een ding, toch? 1130 00:48:47,990 --> 00:48:50,300 Het is iets te doen deterministisch. 1131 00:48:50,300 --> 00:48:53,410 Dus zorg onnauwkeurigheid. 1132 00:48:53,410 --> 00:48:54,890 OK, dat is verknald. 1133 00:48:54,890 --> 00:48:57,620 Dus wat is er aan de hand? 1134 00:48:57,620 --> 00:49:00,160 >> Dus blijkbaar uw leraar heeft gelegen 1135 00:49:00,160 --> 00:49:03,900 aan u allen van deze tijd redenen dat we zullen zien het duurde niet lang. 1136 00:49:03,900 --> 00:49:05,569 Maar laten we eindigen met een ander programma. 1137 00:49:05,569 --> 00:49:07,860 Dit is een klein programma iemand schreef enkele jaren geleden, 1138 00:49:07,860 --> 00:49:08,990 en het is eigenlijk een deel van een wedstrijd. 1139 00:49:08,990 --> 00:49:11,198 Niemand eigenlijk schrijft code als dit, en als je dat doet, 1140 00:49:11,198 --> 00:49:12,880 dit is stilistisch een probleem. 1141 00:49:12,880 --> 00:49:14,660 Maar mensen doen dit voor het opscheppen. 1142 00:49:14,660 --> 00:49:17,260 Schrijven de meest verwarrende looking programma 1143 00:49:17,260 --> 00:49:19,110 toch wel iets interessants. 1144 00:49:19,110 --> 00:49:23,930 En de notitie ik dacht dat we zouden vertrekken op vandaag, voordat Colton speelt ons hier, 1145 00:49:23,930 --> 00:49:27,840 is om dit programma uit te voeren, die zelfs in slechts met behulp 1146 00:49:27,840 --> 00:49:31,450 C in deze tekst gebaseerde milieu, geeft ons dit. 1147 00:49:31,450 --> 00:49:32,264 Dammit. 1148 00:49:32,264 --> 00:49:34,930 >> [Lachen] 1149 00:49:34,930 --> 00:49:36,800 >> Stand-by. 1150 00:49:36,800 --> 00:49:39,340 [Onverstaanbaar] c dash l m. 1151 00:49:39,340 --> 00:49:42,885 Je gaat naar de magische zien bezwering dat we zullen zien het duurde niet lang. 1152 00:49:42,885 --> 00:49:45,780 [Onverstaanbaar] Oké. 1153 00:49:45,780 --> 00:49:51,592 En nu kunt u zelfs dit soort dingen te doen. 1154 00:49:51,592 --> 00:49:52,340 Dat is het. 1155 00:49:52,340 --> 00:49:56,410 Voor CS50 wij, ziet u op vrijdag. 1156 00:49:56,410 --> 00:49:58,910 >> [Muziek] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Applaus] 1159 00:52:41,440 --> 00:52:42,812