1 00:00:00,000 --> 00:00:12,410 >> [Muziek] 2 00:00:12,410 --> 00:00:12,830 >> DAVID Malan: Oke. 3 00:00:12,830 --> 00:00:13,370 Welkom terug. 4 00:00:13,370 --> 00:00:16,510 Dit CS50 en is Week One, Vervolg. 5 00:00:16,510 --> 00:00:20,050 Dus een van de redenen waarom we al voorbij rond technologieën zoals 6 00:00:20,050 --> 00:00:24,120 Google Glass is dat ze komen met iets bekend als een API, een 7 00:00:24,120 --> 00:00:25,980 Application Programming Interface. 8 00:00:25,980 --> 00:00:28,830 En wat dit betekent is dat met de juiste bestanden en met de juiste 9 00:00:28,830 --> 00:00:32,850 documentatie, kun je eigenlijk schrijven software voor zelfs apparaten zoals deze. 10 00:00:32,850 --> 00:00:36,200 >> En dus wat we in gedachten hebben in de richting van semesters einde is, wanneer een project 11 00:00:36,200 --> 00:00:39,310 met, zeg, Google Glass zou beroep, we zullen zien wat we kunnen doen in 12 00:00:39,310 --> 00:00:42,220 termen van het aansluiten van je met een aantal vervangend hardware als de 13 00:00:42,220 --> 00:00:46,500 publiek toegankelijke API, zodat u kunt eigenlijk beginnen met het maken software 14 00:00:46,500 --> 00:00:48,630 die draait op diezelfde Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Een ander apparaat dat we al spelen met de laatste tijd dat we dachten dat zou kunnen zijn 16 00:00:51,710 --> 00:00:53,910 plezier op het einde semester is dit kleine ding hier. 17 00:00:53,910 --> 00:00:56,860 Het heet Leap Motion, en wat je bent ongeveer te zien is technisch gezien een 18 00:00:56,860 --> 00:01:00,280 reclame voor het apparaat, maar spreekt wat dit specifieke 19 00:01:00,280 --> 00:01:01,240 apparaat in staat is. 20 00:01:01,240 --> 00:01:05,550 En het, ook, wordt geleverd met een API via waar u software kunt schrijven naar 21 00:01:05,550 --> 00:01:10,545 uw eigen computer te bedienen op een manier heel graag hier deze film van een minuut. 22 00:01:10,545 --> 00:01:12,070 >> [VIDEO AFSPELEN] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [END VIDEO AFSPELEN] 25 00:02:08,590 --> 00:02:11,190 >> Dus nu, dit apparaat is toevallig worden uitgevoerd als een kleine USB 26 00:02:11,190 --> 00:02:14,290 connector die u kunt aansluiten op uw computer, maar ik zou niet verbaasd 27 00:02:14,290 --> 00:02:17,930 Als het duurde niet lang hebben we dit soort technologieën in de volgende batch van pc 28 00:02:17,930 --> 00:02:20,510 en Macs zodat je kunt, inderdaad, interactie in 29 00:02:20,510 --> 00:02:21,650 een manier zoals dat. 30 00:02:21,650 --> 00:02:24,250 Sterker nog, wat ik dacht dat ik zou doen, ook, is Ik trok een kleine demonstratie 31 00:02:24,250 --> 00:02:25,860 programma dat wordt geleverd met deze software. 32 00:02:25,860 --> 00:02:28,700 Dus ik heb de kleine sensor gezet in de voorkant van mijn laptop. 33 00:02:28,700 --> 00:02:32,420 >> En zoals je kunt zien, het al beseft dat mijn hand is er 34 00:02:32,420 --> 00:02:33,400 het controleren. 35 00:02:33,400 --> 00:02:37,900 En al deze applicatie doet is swimmingly kleine dingen zoals dit. 36 00:02:37,900 --> 00:02:41,080 Maar je kunt zien dat, inderdaad, Ik heb vijf vingers daar. 37 00:02:41,080 --> 00:02:44,270 Als we kunnen krijgen om te doen al 10, je kunt je voorstellen een nette piano 38 00:02:44,270 --> 00:02:45,390 applicatie of dergelijke. 39 00:02:45,390 --> 00:02:47,820 Dus als je wilt om te komen na de les vandaag en spelen met die als 40 00:02:47,820 --> 00:02:49,720 goed, bent u van harte welkom om. 41 00:02:49,720 --> 00:02:52,930 Dus meer op dat in de richting van het einde semester. 42 00:02:52,930 --> 00:02:54,420 >> Dus een paar administratieve aankondigingen. 43 00:02:54,420 --> 00:02:58,690 One, doe sectie van deze vrijdag bij middag bij cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Die URL is op de cursus homepage ook. 45 00:03:01,260 --> 00:03:04,010 In de tussentijd echter, supersections zal debuut deze zondag. 46 00:03:04,010 --> 00:03:07,800 Supersections zijn een eenmalig ding, want het kost ons wat tijd om te werken 47 00:03:07,800 --> 00:03:09,470 uit wie er in welke sectie en waar. 48 00:03:09,470 --> 00:03:12,280 >> Dus deze komende zondag, zal er een zijn sectie voor die minder comfortabel, 49 00:03:12,280 --> 00:03:14,040 een sectie voor die comfortabeler. 50 00:03:14,040 --> 00:03:16,110 En die van jullie ergens in tussen zijn welkom om te gaan 51 00:03:16,110 --> 00:03:17,850 of beide of geen van beide. 52 00:03:17,850 --> 00:03:19,150 Beide worden gefilmd. 53 00:03:19,150 --> 00:03:22,740 Ze zullen in een grotere zaal dan een sectie normaal zou worden inch 54 00:03:22,740 --> 00:03:26,110 Maar het doel is hier om u uit te rusten met wat troost met probleem set een, 55 00:03:26,110 --> 00:03:29,910 met C, met de CS50 toestel moet dit weekend, zelfs voordat je erachter uw 56 00:03:29,910 --> 00:03:31,050 formele gedeelte opdracht. 57 00:03:31,050 --> 00:03:34,700 Dus je zult je TF en uw kleinere voldoen groep van sectionmates in ongeveer 58 00:03:34,700 --> 00:03:36,350 een week tijd. 59 00:03:36,350 --> 00:03:38,200 >> Kantooruren, ondertussen, zijn gaande. 60 00:03:38,200 --> 00:03:41,020 Doe profiteren van hen vanavond of morgenavond als je zou willen. 61 00:03:41,020 --> 00:03:43,460 Probleem set 0 is verschuldigd op vrijdag. 62 00:03:43,460 --> 00:03:46,680 Dit is een dag later dan de regelmatig-geplande donderdag. 63 00:03:46,680 --> 00:03:50,410 Maar met probleem set 1, zie je dat het bevat een aantal warm-up 64 00:03:50,410 --> 00:03:52,770 oefeningen waarmee je jezelf kan je uitbreiden 65 00:03:52,770 --> 00:03:54,660 Donderdag deadline naar vrijdag. 66 00:03:54,660 --> 00:03:58,410 Probleem set 1, ondertussen, zal debuut op de website van de cursus deze komende 67 00:03:58,410 --> 00:04:02,000 Vrijdag, als je wilt om weg te kruipen met het als ik eens een tijd laat 68 00:04:02,000 --> 00:04:04,370 Vrijdagavond in uw kamer. 69 00:04:04,370 --> 00:04:07,660 >> Dus cs50.net/appliance is de plaats waar kunt u de CS50 apparaat krijgen 70 00:04:07,660 --> 00:04:09,040 dat we begonnen met op maandag. 71 00:04:09,040 --> 00:04:10,140 We zullen het gebruik van een beetje meer vandaag. 72 00:04:10,140 --> 00:04:14,040 Maar wees gerust dat het probleem set 1 specificatie zal u door 73 00:04:14,040 --> 00:04:16,490 precies de stappen die u moet om die up and running. 74 00:04:16,490 --> 00:04:22,120 Dus maak je geen zorgen over dat doen vóór Pset 1 als je liever niet. 75 00:04:22,120 --> 00:04:22,660 >> Oke. 76 00:04:22,660 --> 00:04:27,180 Dus keken we op maandag om broncode, maar in de context van een nieuw 77 00:04:27,180 --> 00:04:30,895 programmeertaal, namelijk C. En C, in tegenstelling Scratch, is niet grafisch. 78 00:04:30,895 --> 00:04:32,270 Het is niet puzzelstukjes. 79 00:04:32,270 --> 00:04:34,450 Het is meer Engels-achtige syntax. 80 00:04:34,450 --> 00:04:37,140 En er zijn een paar stappen die betrokken in feite het schrijven en uitvoeren van een 81 00:04:37,140 --> 00:04:41,650 programma in C, want naast source code als dit, je iets nodig hebt 82 00:04:41,650 --> 00:04:42,890 zogenaamde compiler. 83 00:04:42,890 --> 00:04:46,682 En in lekentaal, wat doet een compiler voor ons doen? 84 00:04:46,682 --> 00:04:47,650 Yeah. 85 00:04:47,650 --> 00:04:51,040 >> STUDENT: Het zet de code dat u schrijven naar 0s en 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID Malan: Good. 87 00:04:51,151 --> 00:04:53,580 Dus het zet de code die we schrijven aan 0s en 1s. 88 00:04:53,580 --> 00:04:57,730 Het zet zogenaamde broncode objectcode, de laatste van die eruit ziet 89 00:04:57,730 --> 00:04:59,140 een beetje zoiets als dit. 90 00:04:59,140 --> 00:05:02,860 En het is je CPU, de hersenen binnenkant van computer, dat door de 91 00:05:02,860 --> 00:05:06,280 mensen die die computers geschapen, weten wat die sequenties 92 00:05:06,280 --> 00:05:07,460 van 0s en 1s gemiddelde. 93 00:05:07,460 --> 00:05:08,640 >> Misschien betekent het afdrukken. 94 00:05:08,640 --> 00:05:10,265 Misschien betekent toevoeging. 95 00:05:10,265 --> 00:05:11,610 Misschien betekent het aftrekken. 96 00:05:11,610 --> 00:05:13,350 Misschien betekent het geven van een grafische. 97 00:05:13,350 --> 00:05:16,870 Er zijn voorgedefinieerde patronen bits die de wereld heeft besloten betekenen 98 00:05:16,870 --> 00:05:17,700 bepaalde dingen. 99 00:05:17,700 --> 00:05:20,760 Maar voor het grootste deel in deze cursus, zullen we werken op een hoger niveau, en 100 00:05:20,760 --> 00:05:24,180 zullen we voor lief nemen dat er bestaan dingen zoals compilers die kunnen 101 00:05:24,180 --> 00:05:27,670 maken onze broncode functie in de manier waarop we van plan zijn. 102 00:05:27,670 --> 00:05:31,660 >> Zodat het programma dat we vorige week schreven eerst en begon toen aan de haven, om zo te 103 00:05:31,660 --> 00:05:33,920 spreken, naar C afgelopen Maandag, was dit. 104 00:05:33,920 --> 00:05:35,700 Bij groene vlag geklikt, zeg hallo. 105 00:05:35,700 --> 00:05:37,430 Dit was natuurlijk geschreven in Scratch. 106 00:05:37,430 --> 00:05:40,710 En ik beweerde dat het equivalent programma in C zag er een beetje 107 00:05:40,710 --> 00:05:41,520 zoiets als dit. 108 00:05:41,520 --> 00:05:45,050 >> Dus wat ik dacht dat we doen op het eerste is, laten we plagen elkaar wat lijkt op het eerste 109 00:05:45,050 --> 00:05:48,790 blik, toegegeven, als tamelijk mysterieus syntax, maar je zult beginnen te merken 110 00:05:48,790 --> 00:05:50,160 patronen vrij snel. 111 00:05:50,160 --> 00:05:53,770 Wat zullen we vandaag ook doen is je met een mentaal model voor sommige 112 00:05:53,770 --> 00:05:57,280 canonieke, een aantal standaard constructies in de programmering. 113 00:05:57,280 --> 00:06:00,420 En dan gaan we daadwerkelijk onze handen krijgen vies met voorbeelden ook. 114 00:06:00,420 --> 00:06:04,140 >> Dus voor degenen onder u comfortabeler, beseffen dat deze week en dan de volgende 115 00:06:04,140 --> 00:06:05,940 week kan heel goed een beetje beoordeling. 116 00:06:05,940 --> 00:06:08,810 Maar vooral wanneer de hacker editie van probleem set 1 gaat uit van de 117 00:06:08,810 --> 00:06:12,330 website natuurlijk op vrijdag, denk ik je zult zien dat zelfs als je in te vullen 118 00:06:12,330 --> 00:06:15,390 sommige blanks in de komende week of twee, zul je beginnen om steeds meer te krijgen 119 00:06:15,390 --> 00:06:18,410 uitgedaagd en ontmoeting nieuwe en nieuwere dingen. 120 00:06:18,410 --> 00:06:21,310 >> Dus laten we plagen dit programma apart een paar regels tegelijk. 121 00:06:21,310 --> 00:06:24,140 Aan de top, we hebben wat technisch genoemd 122 00:06:24,140 --> 00:06:25,950 preprocessor richtlijn. 123 00:06:25,950 --> 00:06:30,510 Dit is slechts een regel code die zegt de inhoud van een bestand omvatten, 124 00:06:30,510 --> 00:06:35,080 riep standaard I / N, standaard input - of, sorry, standaard I / O, standaard 125 00:06:35,080 --> 00:06:38,670 input / output,. h, binnen van mijn eigen programma. 126 00:06:38,670 --> 00:06:41,670 >> Dus met andere woorden, als ik dit schreef programma met een eenvoudige tekst-editor zoals 127 00:06:41,670 --> 00:06:45,260 gedit, het eenvoudiger equivalent van iets als Microsoft Word, dat 128 00:06:45,260 --> 00:06:50,970 instructie, # include stdio.h, is gewoon gaat de compiler te vertellen, grijp de 129 00:06:50,970 --> 00:06:56,080 inhoud van die andere bestand, stdio.h, en plak ze hier. 130 00:06:56,080 --> 00:06:57,090 >> Nu, waarom kan het mij schelen? 131 00:06:57,090 --> 00:07:01,850 Wat hebben we beweren is de binnenkant van dit bestand stdio.h genoemd, dat wordt opgeslagen 132 00:07:01,850 --> 00:07:05,490 ergens op mijn harde schijf, of in dit geval, ergens in de CS50 apparaat? 133 00:07:05,490 --> 00:07:06,635 Iemand anders heeft het daar voor mij. 134 00:07:06,635 --> 00:07:09,910 Maar wat zit er in? 135 00:07:09,910 --> 00:07:13,020 >> Ja, dus het is een verklaring van een functie genaamd printf. 136 00:07:13,020 --> 00:07:17,400 Dus printf herinnert aan de functie die displays woorden en tekens en 137 00:07:17,400 --> 00:07:20,160 getallen op het scherm op mijn verzoek. 138 00:07:20,160 --> 00:07:21,220 Maar ik heb het niet geschreven. 139 00:07:21,220 --> 00:07:22,230 CS50 heb het niet geschreven. 140 00:07:22,230 --> 00:07:26,990 Iemand jaar geleden schreef het, en ze wezen gaf ons het recept voor het 141 00:07:26,990 --> 00:07:29,110 in een bestand genaamd stdio.h. 142 00:07:29,110 --> 00:07:33,240 Zodat de eerste regel geeft gewoon me toegang de functies dat iemand 143 00:07:33,240 --> 00:07:36,500 schreef jaren geleden, onder die zijn printf. 144 00:07:36,500 --> 00:07:39,450 >> Nu, de volgende regel ga ik mijn zwaaien hand op, ten minste tot volgende week. 145 00:07:39,450 --> 00:07:43,620 Maar voor nu, weet dat int main (void) is wezen equivalent van deze 146 00:07:43,620 --> 00:07:46,310 gele puzzelstukje wanneer groene vlag geklikt. 147 00:07:46,310 --> 00:07:49,510 De wereld, jaren geleden, besloten dat als je bent het schrijven van een programma in de 148 00:07:49,510 --> 00:07:53,150 taal genaamd C, je begint uw programma met een lijn 149 00:07:53,150 --> 00:07:54,410 dat lijkt op dat. 150 00:07:54,410 --> 00:07:57,650 In zowat een week tijd, maak het voelen wat int is, wat leegte is. 151 00:07:57,650 --> 00:08:00,840 Maar voor nu, denk maar aan het als deze gele puzzelstukje. 152 00:08:00,840 --> 00:08:04,550 >> Nu naast, we hebben een accolade gevolgd door een andere nauwe accolade, 153 00:08:04,550 --> 00:08:05,240 zo te zeggen. 154 00:08:05,240 --> 00:08:07,430 En we zullen deze gedurende zien programma in C, en 155 00:08:07,430 --> 00:08:08,930 JavaScript en PHP. 156 00:08:08,930 --> 00:08:11,345 En deze gewoon in te kapselen gerelateerde regels code. 157 00:08:11,345 --> 00:08:14,600 De open accolade wezen zegt, hier komt een code. 158 00:08:14,600 --> 00:08:17,590 En de gesloten accolade, dat is hoek in de andere richting, net 159 00:08:17,590 --> 00:08:19,920 betekent, dat is het voor de desbetreffende code. 160 00:08:19,920 --> 00:08:22,970 >> Zodat de sappige lijn in deze eerste programma is de laatste, printf, 161 00:08:22,970 --> 00:08:25,080 citaat-unquote, hello wereld. 162 00:08:25,080 --> 00:08:30,670 En ik riep het ding tussen citaten wat vorige keer? 163 00:08:30,670 --> 00:08:31,285 Dus het is een string. 164 00:08:31,285 --> 00:08:35,309 En een string is gewoon de techneut term voor een reeks 165 00:08:35,309 --> 00:08:37,169 personages, een woord, een zin. 166 00:08:37,169 --> 00:08:39,380 Zelfs een enkele letter kon worden dubbel geciteerd. 167 00:08:39,380 --> 00:08:41,840 Maar het is een opeenvolging van nul of meer tekens. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, hoewel, ziet er een beetje vreemd. 169 00:08:43,650 --> 00:08:46,290 Maar het gewoon iets betekende eenvoudig aan de computer. 170 00:08:46,290 --> 00:08:48,060 Wat is backslash-n? 171 00:08:48,060 --> 00:08:48,570 Nieuwe lijn. 172 00:08:48,570 --> 00:08:52,490 Dus dat is gewoon de bijzondere opeenvolging van tekens die de wereld heeft besloten 173 00:08:52,490 --> 00:08:56,880 middel breek de regel daar, omdat de compiler zal daadwerkelijk krijgen 174 00:08:56,880 --> 00:09:02,280 verward, meestal, als je, heel begrijpelijk, maar verkeerd, net 175 00:09:02,280 --> 00:09:04,570 beginnen te raken Enter om te zetten nieuwe regels in de code. 176 00:09:04,570 --> 00:09:07,150 Je moet een beetje meer expliciet met backslash-n. 177 00:09:07,150 --> 00:09:10,540 >> En we zullen zien dat er een paar andere dergelijke patronen voor speciale tekens. 178 00:09:10,540 --> 00:09:14,340 Bijvoorbeeld, als je wilde laten uw gedachten dwalen naar een hoek zaak, 179 00:09:14,340 --> 00:09:18,080 stel dat ik wilde een af ​​te drukken dubbel aanhalingsteken op het scherm voor 180 00:09:18,080 --> 00:09:21,840 welke reden dan ook, dat lijkt te wel een beetje problematisch, toch? 181 00:09:21,840 --> 00:09:24,990 Want als ik een dubbel aanhalingsteken in de midden van "hello, world," om wat voor 182 00:09:24,990 --> 00:09:30,120 reden, waarom die lijken potentieel problematisch? 183 00:09:30,120 --> 00:09:32,180 Het breekt de string. 184 00:09:32,180 --> 00:09:34,700 >> De compiler is gewoon een programma. 185 00:09:34,700 --> 00:09:37,210 Een programma als een compiler is gewoon uw code boven te lezen naar beneden, 186 00:09:37,210 --> 00:09:37,990 van links naar rechts. 187 00:09:37,990 --> 00:09:41,850 En als er drie dubbele aanhalingstekens plaats van twee, gaat het niet om te weten 188 00:09:41,850 --> 00:09:45,210 als je bedoelt dat het ding naar links moet de string, of het ding te zijn 189 00:09:45,210 --> 00:09:46,570 de rechter, of de hele zaak. 190 00:09:46,570 --> 00:09:50,560 Het is dubbelzinnig, en dus wat een typische compiler zou doen is gewoon freak out, 191 00:09:50,560 --> 00:09:53,710 en geven u een foutmelding, en maak je gaan met het probleem. 192 00:09:53,710 --> 00:09:58,120 >> Zo bepaalde backslash-n betekent een nieuwe lijn, wat zou je instinct nu 193 00:09:58,120 --> 00:10:02,610 beginnen te worden als je wilde zijn iets abnormaal als een dubbele 194 00:10:02,610 --> 00:10:06,210 citeer binnenkant van deze anders-genoteerde touwtje? 195 00:10:06,210 --> 00:10:07,640 Backslash-dubbel aanhalingsteken. 196 00:10:07,640 --> 00:10:09,630 En dus we zullen dit zien soort patroon ook. 197 00:10:09,630 --> 00:10:12,490 >> Als je iets wilt een beetje doen vreemd, zult u merken dat de 198 00:10:12,490 --> 00:10:15,060 oplossingen volgen vaak een patroon, en de backslash 199 00:10:15,060 --> 00:10:17,150 geeft een escape. 200 00:10:17,150 --> 00:10:20,320 En het betekent gewoon iets speciaals dat we moeten vertegenwoordigen in een 201 00:10:20,320 --> 00:10:21,060 andere manier. 202 00:10:21,060 --> 00:10:23,830 Zoals voor hoe u vertegenwoordigt een backslash, nou ja, we zullen 203 00:10:23,830 --> 00:10:24,550 kom terug naar dat. 204 00:10:24,550 --> 00:10:26,930 Maar het antwoord ook eigenlijk een beetje voor de hand liggende. 205 00:10:26,930 --> 00:10:31,080 >> Dus laten we nu introduceren we een paar andere programmeerconstructies 206 00:10:31,080 --> 00:10:31,915 die je zag in Scratch. 207 00:10:31,915 --> 00:10:34,790 U hebt waarschijnlijk vanzelfsprekend al als je al hebt dook in 208 00:10:34,790 --> 00:10:36,060 probleem set 0. 209 00:10:36,060 --> 00:10:40,950 Maar laten we nu introduceren de syntaxis in C voor deze anders vrij intuïtief 210 00:10:40,950 --> 00:10:42,300 ideeën, ten minste enkele van hen. 211 00:10:42,300 --> 00:10:45,570 >> Dus dit idee van een aandoening of een tak, terwijl we vroeger 212 00:10:45,570 --> 00:10:49,330 vertegenwoordigd met code die eruit zag als deze aan de linkerkant in Scratch - 213 00:10:49,330 --> 00:10:52,200 als x kleiner dan y, dan zeggen dus - 214 00:10:52,200 --> 00:10:56,760 in plaats daarvan nu in C - laat me scherpen in het eenvoudigste geval - 215 00:10:56,760 --> 00:11:01,235 we zijn gewoon gaan zeggen, indien, opent haakjes, iets waar is - een 216 00:11:01,235 --> 00:11:04,190 Booleaanse expressie zal gaan waar ik heb gezegd staat - 217 00:11:04,190 --> 00:11:08,170 haakje sluiten, doe dan wat is binnenkant van die accolades. 218 00:11:08,170 --> 00:11:11,020 >> Dus ook hier, de accolades zijn een soort Scratch's 219 00:11:11,020 --> 00:11:12,460 U-vormige puzzelstukjes. 220 00:11:12,460 --> 00:11:14,890 Weet wat er in deze accolades. 221 00:11:14,890 --> 00:11:16,790 In dit geval, slash slash. 222 00:11:16,790 --> 00:11:19,720 En merkt dit is een voorwaartse slash, niet een backslash. 223 00:11:19,720 --> 00:11:21,440 Slash, slash, voor degenen die hebben geprogrammeerd 224 00:11:21,440 --> 00:11:23,370 vóór, betekent alleen - 225 00:11:23,370 --> 00:11:24,190 het is gewoon een reactie. 226 00:11:24,190 --> 00:11:26,630 Een reactie is niet een lijn code, per se. 227 00:11:26,630 --> 00:11:30,200 Het is een lijn van het Engels dat u, de mens, hebben geschreven om jezelf te 228 00:11:30,200 --> 00:11:33,540 misschien kunt herinneren om iets te doen, om uit te leggen aan jezelf, om uit te leggen aan 229 00:11:33,540 --> 00:11:35,260 iemand anders, wat uw code doet. 230 00:11:35,260 --> 00:11:37,050 Het is gewoon een beschrijvend commentaar. 231 00:11:37,050 --> 00:11:40,880 >> Nu, natuurlijk, kunnen we een twee-weg hebben vork in de weg net door dit te doen, een 232 00:11:40,880 --> 00:11:43,930 drie-weg splitsing in de weg door te doen dit, en als je dit blijft 233 00:11:43,930 --> 00:11:47,570 patroon, kunt u vier-weg, vijf-weg, zes-weg vorken in de weg als 234 00:11:47,570 --> 00:11:50,150 je moet omgaan met, inderdaad, dat vele voorwaarden. 235 00:11:50,150 --> 00:11:52,010 En dan merken de parallellisme hier - 236 00:11:52,010 --> 00:11:55,070 if (conditie), anders als (conditie), en het enige dat een beetje 237 00:11:55,070 --> 00:11:58,010 vreemd is de laatste, die is gewoon dat anders. 238 00:11:58,010 --> 00:12:01,170 Maar nogmaals, dit is identiek, conceptueel, naar wat we hebben gedaan 239 00:12:01,170 --> 00:12:04,690 al hoewel de syntax zal neem een ​​beetje wennen. 240 00:12:04,690 --> 00:12:07,730 >> Nu, in dit voorbeeld, zijn er enkele andere vreemde syntax. 241 00:12:07,730 --> 00:12:11,220 We zien printf weer, open haakje, en haakje sluiten. 242 00:12:11,220 --> 00:12:13,190 En de binnenkant van er een tekenreeks tussen aanhalingstekens. 243 00:12:13,190 --> 00:12:17,060 De haakjes, in de context van printf, ga aan de linkerkant 244 00:12:17,060 --> 00:12:18,160 en rechts van wat? 245 00:12:18,160 --> 00:12:22,190 Wat doen we beschrijven dat geciteerd string als meer in het algemeen? 246 00:12:22,190 --> 00:12:23,320 >> Dus het is een argument. 247 00:12:23,320 --> 00:12:26,620 Elke keer dat je een functie, zoals printf, en vervolgens een open haakje en een 248 00:12:26,620 --> 00:12:30,330 dicht Paren en iets in het, of het nu een string, of een 249 00:12:30,330 --> 00:12:34,420 integer, of iets anders, het ding in tussen de haakjes heet 250 00:12:34,420 --> 00:12:35,110 een argument. 251 00:12:35,110 --> 00:12:37,910 >> En een argument gewoon beïnvloedt het gedrag van de functie. 252 00:12:37,910 --> 00:12:39,990 In dit geval, het is vrij duidelijk hoe. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 En printf gaat afdrukken precies dat. 255 00:12:47,720 --> 00:12:51,590 Want zeker, de persoon jaar geleden die printf geen idee geïmplementeerd had 256 00:12:51,590 --> 00:12:55,000 wat wij menselijk opvolgers waren gaat printf gebruiken. 257 00:12:55,000 --> 00:12:58,610 Dus dat is waarom argumenten bestaan, naar invloed op het gedrag na van een functie 258 00:12:58,610 --> 00:12:59,450 geschreven. 259 00:12:59,450 --> 00:13:00,780 >> Nu, Booleaanse expressie. 260 00:13:00,780 --> 00:13:02,470 We hebben deze eerder gezien in Scratch. 261 00:13:02,470 --> 00:13:06,680 Het blijkt in C kunt u ook "of" ze samen, om zo te zeggen. 262 00:13:06,680 --> 00:13:10,930 Twee verticale balken betekent dat dit blok van code, dit dit doet, zal 263 00:13:10,930 --> 00:13:15,350 uitvoeren als de eerste voorwaarde waar is of de tweede voorwaarde waar is. 264 00:13:15,350 --> 00:13:17,710 En zelfs al zou je niet hebt gedaan Dit in Scratch, kon je inderdaad 265 00:13:17,710 --> 00:13:20,580 Dit doen Scratch, en u kunt ook anders uitdrukken jezelf - 266 00:13:20,580 --> 00:13:25,300 als de eerste voorwaarde en de tweede voorwaarde waar zijn, dan doen wat is 267 00:13:25,300 --> 00:13:27,160 binnenkant van de accolades. 268 00:13:27,160 --> 00:13:31,210 >> En net als een terzijde, de reden dat het een dubbele ampersand en een dubbele 269 00:13:31,210 --> 00:13:34,610 verticale balk, zullen we uiteindelijk zien dat een verticale balk en een 270 00:13:34,610 --> 00:13:38,710 enkele ampersand eigenlijk hebben verschillende betekenis in C. Dus voor nu, 271 00:13:38,710 --> 00:13:41,840 dat duplicatie van symbolen is opzettelijk. 272 00:13:41,840 --> 00:13:45,070 >> Dus laten we introduceren, kort, deze andere stukje syntax. 273 00:13:45,070 --> 00:13:48,940 Deze niet helemaal overdracht naar Kras, maar ik beweer dat ik kan 274 00:13:48,940 --> 00:13:55,190 de uitvoering van het idee van een zo anders, indien anders, als anders, als anders opgenomen met behulp van 275 00:13:55,190 --> 00:13:56,760 zoiets als een switch statement. 276 00:13:56,760 --> 00:14:00,820 En de enige reden dat deze werkelijk bestaat is om gewoon geven u, de programmeur, een 277 00:14:00,820 --> 00:14:05,470 iets andere manier van het oplossen van een aantal probleem, ook al logisch dat 278 00:14:05,470 --> 00:14:07,340 geeft je niet alle nieuwe mogelijkheden. 279 00:14:07,340 --> 00:14:08,530 >> Daarmee bedoel ik dit. 280 00:14:08,530 --> 00:14:13,330 Wanneer je switch, en dan een spatie, zeggen en vervolgens een paar haakjes, in 281 00:14:13,330 --> 00:14:14,570 daarvan gaat een uitdrukking - 282 00:14:14,570 --> 00:14:18,010 en dit kan een beetje niet duidelijk op het eerste, maar dit is geen argument, 283 00:14:18,010 --> 00:14:20,680 technisch, omdat schakelaar is geen functie. 284 00:14:20,680 --> 00:14:24,230 Dus voor nu, gewoon aannemen dat we gebruiken haakjes verschillende plaatsen 285 00:14:24,230 --> 00:14:25,250 om verschillende redenen. 286 00:14:25,250 --> 00:14:29,310 >> Dus schakelaar op expressie betekent dat ik kan zet een variabele binnenkant van die 287 00:14:29,310 --> 00:14:31,350 haakjes waar het zegt expressie. 288 00:14:31,350 --> 00:14:33,090 En dan, als die variabele - 289 00:14:33,090 --> 00:14:35,400 veronderstel dat het wordt x genoemd, en het is gewoon een integer - 290 00:14:35,400 --> 00:14:38,900 Ik kan dan opsommen in mijn dia hier iets als dit. 291 00:14:38,900 --> 00:14:41,690 Als x is mijn variabel, en ik willen iets doen als x 292 00:14:41,690 --> 00:14:43,480 gelijk aan 1, kan ik dat doen. 293 00:14:43,480 --> 00:14:46,660 >> Als ik wil in plaats daarvan iets doen als x 2, kan ik dat doen. 294 00:14:46,660 --> 00:14:50,390 Anders, als ik wil iets anders doen geheel, ik kan een standaard-case hebben in 295 00:14:50,390 --> 00:14:52,750 welk geval ik doe dit andere ding. 296 00:14:52,750 --> 00:14:58,730 Dus in die zin, het is gelijk aan een wanneer x gelijk is gelijk aan 1, anders als anders, 297 00:14:58,730 --> 00:15:01,150 maar ik noem dit nu alleen maar omdat we zullen het opnieuw zien. 298 00:15:01,150 --> 00:15:03,720 Maar voor nu, weet alleen dat het bestaat. 299 00:15:03,720 --> 00:15:04,220 >> Oke. 300 00:15:04,220 --> 00:15:07,660 Dus deze laatste zijn een beetje meer complex op het eerste gezicht, maar ze doen 301 00:15:07,660 --> 00:15:09,385 iets redelijk simpel. 302 00:15:09,385 --> 00:15:14,410 Een for-lus in C is een stuk code dat gewoon weer doet iets en 303 00:15:14,410 --> 00:15:15,330 weer. 304 00:15:15,330 --> 00:15:17,590 En het enige vervelende ding over het is dat is dat het een beetje cryptisch 305 00:15:17,590 --> 00:15:21,380 om jezelf te uiten in deze cyclische patroon, maar de wereld gestandaardiseerd op 306 00:15:21,380 --> 00:15:22,450 volgt. 307 00:15:22,450 --> 00:15:25,760 >> Wanneer u gebruik maken van een lus, heb je een paar haakjes weer. 308 00:15:25,760 --> 00:15:27,570 En let op de twee puntkomma's daarbinnen. 309 00:15:27,570 --> 00:15:34,380 Die twee puntkomma's gescheiden drie verschillende uitdrukkingen binnenkant van de 310 00:15:34,380 --> 00:15:35,020 haakjes. 311 00:15:35,020 --> 00:15:37,170 Een daarvan is de zogenaamde initialisatie. 312 00:15:37,170 --> 00:15:38,830 Een is de zogenoemde toestand. 313 00:15:38,830 --> 00:15:40,210 En is de zogenaamde updates. 314 00:15:40,210 --> 00:15:43,240 >> Gezien in het abstracte, dit is volledig niet-voor de hand, dus laten we eens kijken 315 00:15:43,240 --> 00:15:44,630 een concreet voorbeeld. 316 00:15:44,630 --> 00:15:46,720 In Scratch hadden we een herhaling blok. 317 00:15:46,720 --> 00:15:50,670 En dit blok zei herhaal dit 10 keer, zeggen "Hallo, wereld." Laat me claimen voor 318 00:15:50,670 --> 00:15:53,810 nu, en we komen terug naar deze, en dit, ook, zal meer vertrouwd te geraken 319 00:15:53,810 --> 00:15:57,345 u het duurde niet lang, het equivalent C code kan worden gezegd dat dit zijn - 320 00:15:57,345 --> 00:16:02,320 een voor de verklaring en een ruimte, een paar haakjes, let op de puntkomma in 321 00:16:02,320 --> 00:16:05,730 daar, die drie aparte scheiden meer de initialisatie, de 322 00:16:05,730 --> 00:16:07,320 conditie, en de update. 323 00:16:07,320 --> 00:16:08,840 >> En neem een ​​gok wat de eerste aan het doen is. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 In termen ruwe leek, wat is dat voor ons doet, waarschijnlijk? 326 00:16:15,120 --> 00:16:15,590 Dus ja. 327 00:16:15,590 --> 00:16:19,630 Het declareren van een variabele genaamd i, en het geeft het wat waarde? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Dus het creëren van een variabele genaamd i, opslaan van de waarde 0 in. 330 00:16:24,280 --> 00:16:26,420 Dat is de zogenaamde initialisatie. 331 00:16:26,420 --> 00:16:29,360 >> Oke, nu voordat beweerde I dat de middelste ding, i 332 00:16:29,360 --> 00:16:31,760 <10, is de aandoening. 333 00:16:31,760 --> 00:16:32,730 Dus wat doet? 334 00:16:32,730 --> 00:16:36,560 Nou, wat de lus doet wanneer een programma met een lus wordt uitgevoerd, is 335 00:16:36,560 --> 00:16:41,050 elke keer dat de computer draait door deze lus, van boven naar beneden, van boven naar 336 00:16:41,050 --> 00:16:43,740 bodem, net zoals jullie deden toen tellen uzelf en gaan zitten, 337 00:16:43,740 --> 00:16:47,090 opnieuw en opnieuw en opnieuw, de computer gaat 338 00:16:47,090 --> 00:16:48,560 om die toestand te controleren. 339 00:16:48,560 --> 00:16:51,140 En als ik minder dan 10, het zal het opnieuw doen. 340 00:16:51,140 --> 00:16:53,100 Als ik minder dan 10, het zal het opnieuw doen. 341 00:16:53,100 --> 00:16:55,030 Als ik minder dan tien, het zal het opnieuw doen. 342 00:16:55,030 --> 00:16:57,330 Dus dat lijkt te suggereren dat hopelijk i is aan het veranderen. 343 00:16:57,330 --> 00:16:59,010 Anders zouden we een oneindige lus. 344 00:16:59,010 --> 00:17:02,590 En inderdaad, ik is aan het veranderen, omdat de laatste ding na de puntkomma er 345 00:17:02,590 --> 00:17:05,569 is de ietwat cryptische syntax van i + +. 346 00:17:05,569 --> 00:17:07,630 Maar degenen onder u die dit heeft gedaan eerder, dat betekent 347 00:17:07,630 --> 00:17:08,609 gewoon wat? 348 00:17:08,609 --> 00:17:09,730 >> STUDENTEN: [onderbreekt hem VOICES]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID Malan: Voeg 1 tot i. 350 00:17:10,740 --> 00:17:11,819 Increment i. 351 00:17:11,819 --> 00:17:13,910 Zo zagen we een Scratch puzzel stuk voor dat, eigenlijk. 352 00:17:13,910 --> 00:17:18,230 Het zag er niet uit als i + +, maar dat middelen, heel eenvoudig, verhoog de 353 00:17:18,230 --> 00:17:24,040 waarderen i door 1 elke keer dat je dit doet. 354 00:17:24,040 --> 00:17:26,910 Dus letterlijk, begint u met het i geïnitialiseerd op 0. 355 00:17:26,910 --> 00:17:29,520 U controleert dan uw conditie. 356 00:17:29,520 --> 00:17:31,070 0 is minder dan 10? 357 00:17:31,070 --> 00:17:31,730 Ja. 358 00:17:31,730 --> 00:17:32,910 We gaan door de lus. 359 00:17:32,910 --> 00:17:35,150 >> Het volgende dat ik aanspraak maken op de computer gaan doen, is dat het gaat 360 00:17:35,150 --> 00:17:35,910 naar i verhogen. 361 00:17:35,910 --> 00:17:37,080 Dus ik nu 1. 362 00:17:37,080 --> 00:17:37,940 Het controleert de voorwaarde. 363 00:17:37,940 --> 00:17:39,290 1 is minder dan 10? 364 00:17:39,290 --> 00:17:39,930 Natuurlijk. 365 00:17:39,930 --> 00:17:41,030 Dus doet het weer. 366 00:17:41,030 --> 00:17:43,580 Dan stappen i + + 2. 367 00:17:43,580 --> 00:17:44,610 Is 2 minder dan 10? 368 00:17:44,610 --> 00:17:45,230 Ja. 369 00:17:45,230 --> 00:17:46,670 En opnieuw en opnieuw en opnieuw. 370 00:17:46,670 --> 00:17:50,070 En uiteindelijk door de plus-plussing, krijgen we te i is gelijk aan 10. 371 00:17:50,070 --> 00:17:51,675 10 is minder dan 10? 372 00:17:51,675 --> 00:17:52,990 Nou, natuurlijk niet. 373 00:17:52,990 --> 00:17:55,320 En dat is het punt waarop de lus gewoon stopt. 374 00:17:55,320 --> 00:17:58,320 En als je meer code op het scherm beneden, de computer 375 00:17:58,320 --> 00:18:01,620 opbrengst aan die code in plaats daarvan draaien. 376 00:18:01,620 --> 00:18:05,380 >> Dus nogmaals, ook al gaat dit kijken en voelen een beetje vreemd 377 00:18:05,380 --> 00:18:07,830 eerst, zeker voor degenen onder u die nog nooit geprogrammeerd, 378 00:18:07,830 --> 00:18:11,640 letterlijk vermindert conceptueel wat is anders een zeer 379 00:18:11,640 --> 00:18:14,330 eenvoudige puzzel stuk in Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Oke, ik heb beloofd dat er zou zijn andere analogen in Scratch. 381 00:18:19,130 --> 00:18:20,060 Er is deze ook. 382 00:18:20,060 --> 00:18:21,700 En we zagen dit kort laatste keer. 383 00:18:21,700 --> 00:18:23,530 Maar vergeet het altijd blokkeren Scratch? 384 00:18:23,530 --> 00:18:25,490 Het doet gewoon iets voor altijd? 385 00:18:25,490 --> 00:18:27,470 Ik beweerde dat je zou kunnen implementeren deze op deze manier. 386 00:18:27,470 --> 00:18:29,740 En je kunt eigenlijk dit te implementeren in een heleboel verschillende manieren. 387 00:18:29,740 --> 00:18:34,260 >> Maar de while-lus is gewoon een andere manier in C van jezelf uitdrukken. 388 00:18:34,260 --> 00:18:37,080 Aan het eind van de dag kunt u niet doen alles met een while lus die je 389 00:18:37,080 --> 00:18:38,360 kan niet met een lus. 390 00:18:38,360 --> 00:18:41,430 Zodat ze aan het eind van de dag functioneel hetzelfde. 391 00:18:41,430 --> 00:18:43,840 Maar het laat je om jezelf te uiten een beetje anders in 392 00:18:43,840 --> 00:18:44,850 volgt. 393 00:18:44,850 --> 00:18:49,720 >> Met de while loop, het is wat in haakjes, dat weer is gecontroleerd en 394 00:18:49,720 --> 00:18:51,050 weer. 395 00:18:51,050 --> 00:18:55,100 En zodra dat expressie onwaar, dan is de lus stopt uitvoeren, 396 00:18:55,100 --> 00:18:57,890 en de computer overgaat tot lopen wat andere code die u 397 00:18:57,890 --> 00:18:59,230 hebben in uw dossier. 398 00:18:59,230 --> 00:19:02,180 >> Maar wat is interessant hier is dat ik letterlijk getypt waar. 399 00:19:02,180 --> 00:19:06,680 En waar is een soort van Booleaanse waarde, een waar of onwaar waarde. 400 00:19:06,680 --> 00:19:09,750 Dus kan waar ooit geworden false als ik heb letterlijk 401 00:19:09,750 --> 00:19:11,970 hard-coded het in mijn programma? 402 00:19:11,970 --> 00:19:12,470 Dus geen. 403 00:19:12,470 --> 00:19:13,730 Het is een beetje vreemd dat ik dit deed. 404 00:19:13,730 --> 00:19:15,190 Maar waar is waar. 405 00:19:15,190 --> 00:19:16,320 Er is geen plus-plussing. 406 00:19:16,320 --> 00:19:17,820 Er is geen gebruik van variabelen in hier. 407 00:19:17,820 --> 00:19:22,740 Dus omdat ik hard-coded terwijl true, dit lus zal altijd evalueren 408 00:19:22,740 --> 00:19:24,090 opnieuw en opnieuw en opnieuw. 409 00:19:24,090 --> 00:19:27,660 >> Dus hoeveel keer is hello wereld gaat afdrukken op het scherm? 410 00:19:27,660 --> 00:19:28,170 Altijd. 411 00:19:28,170 --> 00:19:31,980 Een oneindig aantal keren totdat de batterij sterft of een andere externe 412 00:19:31,980 --> 00:19:32,730 gebeurtenis plaats. 413 00:19:32,730 --> 00:19:35,880 Dus dit is waarschijnlijk niet het beste programma schrijven, omdat als de gebruiker 414 00:19:35,880 --> 00:19:38,660 kan nooit uw programma stoppen, het is waarschijnlijk niet wat je bedoeld. 415 00:19:38,660 --> 00:19:41,070 >> Maar soms, programma's dienen hebben een oneindige lus. 416 00:19:41,070 --> 00:19:44,050 Bijvoorbeeld, als uw computer een klok op het, het zeker zou zijn 417 00:19:44,050 --> 00:19:48,130 leuk als je klok het niet zorgen voor een actualisering zelf altijd, zij het een keer per 418 00:19:48,130 --> 00:19:50,500 tweede of een keer per minuut of zoiets. 419 00:19:50,500 --> 00:19:53,690 Dus zelfs oneindige loops hebben hun plaats. 420 00:19:53,690 --> 00:19:54,360 >> Oke. 421 00:19:54,360 --> 00:19:55,190 Tot slot, deze. 422 00:19:55,190 --> 00:19:57,770 En deze is een beetje anders functioneel, en we komen terug te komen 423 00:19:57,770 --> 00:19:59,460 Dit waarschijnlijk in Pset 1. 424 00:19:59,460 --> 00:20:02,370 Maar er is een ander type lus riep een doen terwijl lus. 425 00:20:02,370 --> 00:20:07,100 En het enige verschil tussen een do while loop en, zeg, een while lus, 426 00:20:07,100 --> 00:20:11,120 is dat de voorwaarde wordt gecontroleerd niet voordat u de code uit te voeren, maar na 427 00:20:11,120 --> 00:20:12,080 u de code uit te voeren. 428 00:20:12,080 --> 00:20:15,380 Dus aan de bovenkant voor de tijdens het lus, terwijl het doen terwijl 429 00:20:15,380 --> 00:20:16,560 controleert deze aan de onderkant. 430 00:20:16,560 --> 00:20:21,370 >> En dit betekent gewoon dat de while lus zal doorgaans uitgevoerd malen 431 00:20:21,370 --> 00:20:24,630 of minder tijd dan een while lus? 432 00:20:24,630 --> 00:20:30,810 Potentieel meer keren, omdat een te doen while loop wordt duidelijk zeggen doe dit, 433 00:20:30,810 --> 00:20:34,600 pas waarna wijzen u controleren Als de toestand van de binnenkant 434 00:20:34,600 --> 00:20:35,980 haakjes waar is. 435 00:20:35,980 --> 00:20:37,940 >> Dus zullen we dit opnieuw zien waarschijnlijk in Pset 1. 436 00:20:37,940 --> 00:20:41,150 Als je ooit iets wilt doen op minstens een keer en dan misschien wat meer 437 00:20:41,150 --> 00:20:43,350 tijden, is dit een goede construct te gebruiken. 438 00:20:43,350 --> 00:20:46,970 Maar een while loop, daarentegen, zal controleer dan eerst de conditie. 439 00:20:46,970 --> 00:20:50,660 En dat is het voor lussen in C, doen terwijl, tijdens, en lussen. 440 00:20:50,660 --> 00:20:54,700 En nogmaals, ze in kaart vrij mooi weer naar Scratch, behalve deze niet 441 00:20:54,700 --> 00:20:57,350 vrij hebben dezelfde analoge in Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Nou, wat dacht je, nu, variabelen? 443 00:20:58,880 --> 00:21:02,600 Dus dit is hoe ik verklaarde een variabele syntactisch de andere dag. 444 00:21:02,600 --> 00:21:06,440 Ik had een int, waarvan ik beweerde een geheel getal. 445 00:21:06,440 --> 00:21:09,690 Ik had toen een variabele genaamd teller, en vervolgens een puntkomma. 446 00:21:09,690 --> 00:21:11,070 Dus wat is deze regel code doen? 447 00:21:11,070 --> 00:21:14,540 Dat is, heel eenvoudig, verklaren een variabele - 448 00:21:14,540 --> 00:21:17,940 dat is, vraagt ​​de computer, geef me wat geheugen, geef me wat stukjes - in 449 00:21:17,940 --> 00:21:19,450 waar ik wat kan opslaan? 450 00:21:19,450 --> 00:21:20,300 Een int. 451 00:21:20,300 --> 00:21:23,570 En de puntkomma betekent alleen einde van de regel code. 452 00:21:23,570 --> 00:21:25,500 >> Nu, de tweede regel is waarschijnlijk vrij te raden. 453 00:21:25,500 --> 00:21:29,710 Wat is teller = 0; doen? 454 00:21:29,710 --> 00:21:31,690 Het toewijzen van 0 tegen te gaan. 455 00:21:31,690 --> 00:21:33,470 En dit is dus de andere zaak dat is een beetje vervelend 456 00:21:33,470 --> 00:21:34,540 versus, zeg, algebra. 457 00:21:34,540 --> 00:21:39,110 Overwegende dat in de algebra, de gelijk-teken betekent gelijk, hier C, gelijke 458 00:21:39,110 --> 00:21:40,470 teken betekent opdracht. 459 00:21:40,470 --> 00:21:45,380 Het betekent dus zet wat er op de juiste in wat er aan de linkerkant. 460 00:21:45,380 --> 00:21:49,030 En we zullen een ander symbool te zien, gelijk gelijk, als we willen eigenlijk testen 461 00:21:49,030 --> 00:21:50,570 voor kwaliteit, enigszins irritant. 462 00:21:50,570 --> 00:21:52,590 >> Maar dit is een beetje inefficiënt. 463 00:21:52,590 --> 00:21:55,090 Het is een beetje vervelend dat ik heb aan een variabele declareren en 464 00:21:55,090 --> 00:21:56,110 geef het dan een waarde. 465 00:21:56,110 --> 00:21:59,380 Dus C laat ons eigenlijk dit te vereenvoudigen en doe het gewoon allemaal tegelijk. 466 00:21:59,380 --> 00:22:01,330 U kunt de variabele declareren links. 467 00:22:01,330 --> 00:22:04,590 U kunt nog wel de opdracht op de recht door de invoering van die gelijk-teken in 468 00:22:04,590 --> 00:22:05,030 het midden. 469 00:22:05,030 --> 00:22:08,740 Dus aan het eind van de dag, deze twee zijn gelijkwaardig, maar dit ene, eerlijk gezegd, 470 00:22:08,740 --> 00:22:11,840 is waarschijnlijk de betere gewoonte om in gewoon omdat het een beetje minder 471 00:22:11,840 --> 00:22:15,040 code, het is een beetje makkelijker te lezen, en het scherpt gewoon omhoog 472 00:22:15,040 --> 00:22:17,470 uw code, zo te zeggen. 473 00:22:17,470 --> 00:22:22,120 >> Voor vragen tot nu toe op de lussen, op variabelen op voorwaarden, 474 00:22:22,120 --> 00:22:27,001 Booleans, hetzij technisch of conceptueel? 475 00:22:27,001 --> 00:22:28,010 Oke. 476 00:22:28,010 --> 00:22:30,690 Dus nu deze volgende krijgt men een iets interessanter. 477 00:22:30,690 --> 00:22:34,790 En dit is het voorbeeld zet ik laatst tijd die net in kaart brengt een kras voorbeeld 478 00:22:34,790 --> 00:22:35,820 naar C. 479 00:22:35,820 --> 00:22:36,580 >> Zo een functie. 480 00:22:36,580 --> 00:22:38,110 In termen van de leek, wat is een functie? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Kreeg om brutaler met uw antwoord. 483 00:22:44,350 --> 00:22:45,020 Wat is een functie? 484 00:22:45,020 --> 00:22:46,320 >> STUDENT: Bestaat er zoiets. 485 00:22:46,320 --> 00:22:46,780 >> DAVID Malan: Wat is dat? 486 00:22:46,780 --> 00:22:48,000 >> STUDENT: Bestaat er zoiets. 487 00:22:48,000 --> 00:22:48,710 >> DAVID Malan: Bestaat er zoiets. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 We beginnen daar. 490 00:22:49,590 --> 00:22:51,270 Dus een functie doet iets. 491 00:22:51,270 --> 00:22:55,160 Dus het is een stukje code dat is wezen elders die geïmplementeerd 492 00:22:55,160 --> 00:22:56,620 inderdaad doet iets. 493 00:22:56,620 --> 00:23:00,180 Nu, wat interessant is over een functie is dat deze inbreng kan nemen, 494 00:23:00,180 --> 00:23:02,710 en het kan uitvoersnelheid. 495 00:23:02,710 --> 00:23:05,090 En laten we daadwerkelijk een kijkje op deze. 496 00:23:05,090 --> 00:23:09,030 >> Dus de man achter het gordijn opzettelijk was een moment geleden. 497 00:23:09,030 --> 00:23:10,320 Hier hebben we een tafel. 498 00:23:10,320 --> 00:23:13,010 Maar stel dat dit ook daadwerkelijk vertegenwoordigt een grote doos. 499 00:23:13,010 --> 00:23:14,940 Dit is dus een zogenaamde black box. 500 00:23:14,940 --> 00:23:19,800 En in het algemeen, in design, in computer wetenschap, zwarte dozen alleen maar verwijzen naar 501 00:23:19,800 --> 00:23:22,510 stukjes functionaliteit dat iemand heeft geïmplementeerd, en jij niet 502 00:23:22,510 --> 00:23:26,140 se weten of schelen hoe het is uitgevoerd onder de motorkap. 503 00:23:26,140 --> 00:23:28,960 Je gewoon zorgen dat deze black box, die we nu beginnen te bellen naar een 504 00:23:28,960 --> 00:23:30,730 functie, doet iets. 505 00:23:30,730 --> 00:23:34,710 >> Dus, bijvoorbeeld, als deze zwarte doos op het podium hier vertegenwoordigt printf, een 506 00:23:34,710 --> 00:23:38,040 functie, ik weet uit eerdere voorbeelden dat printf neemt een of meer 507 00:23:38,040 --> 00:23:40,910 argumenten, en de eerste van deze argumenten moet een string zijn, zoals 508 00:23:40,910 --> 00:23:44,780 "Hallo, wereld." Nou, als ik de persoon het schrijven van het programma, en ik wil 509 00:23:44,780 --> 00:23:50,460 te printf gebruiken, ik, bijvoorbeeld, zou neem een ​​stuk blanco papier hier en een 510 00:23:50,460 --> 00:23:55,060 zwarte stift en schrijf op het - 511 00:23:55,060 --> 00:23:56,580 Ik verkeerd gespeld "wereld" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Dus ik zal mijn zwarte marker te nemen en ik zal schrijven, zo groot en leesbaar als ik kan op 514 00:24:04,220 --> 00:24:07,260 dit stuk papier, "hello, world," En nu heb ik beweren dit is mijn argument. 515 00:24:07,260 --> 00:24:09,740 Dit is weergegeven met een string een stuk wit papier. 516 00:24:09,740 --> 00:24:13,030 En mijn inbreng nu naar de functie printf gaat dit worden. 517 00:24:13,030 --> 00:24:18,250 Dus ik ben printf bellen, passeren dat argument als input voor het. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> En nu, ik weet niet hoe de persoon die schreef printf deed het jaren geleden, maar 520 00:24:26,740 --> 00:24:31,110 Ik weet uit de documentatie die haar doel in het leven is om af te drukken wat ik 521 00:24:31,110 --> 00:24:34,410 aan het als invoer. 522 00:24:34,410 --> 00:24:40,630 Dus, hoewel deze implementatie is buiten het medeweten van mij 523 00:24:40,630 --> 00:24:44,170 onder de motorkap, nu Ik zie, oh, is het gedaan. 524 00:24:44,170 --> 00:24:45,740 Het heeft iets gedrukt op het scherm. 525 00:24:45,740 --> 00:24:49,070 En nu controle van het programma, als er waren meer regels code, zou 526 00:24:49,070 --> 00:24:51,070 zijn nu terug naar mij. 527 00:24:51,070 --> 00:24:52,290 En dus het feit dat Colton - 528 00:24:52,290 --> 00:24:55,370 zegene zijn hart, is ondergedoken hier onder een tafel voor jullie allemaal - 529 00:24:55,370 --> 00:24:59,530 is opzettelijk in dat ik niet weet en kan me niet schelen hoe printf is 530 00:24:59,530 --> 00:25:00,100 uitgevoerd. 531 00:25:00,100 --> 00:25:03,390 Ik weet gewoon, nogmaals, uit zijn documentatie, wat het doet en hoe ik 532 00:25:03,390 --> 00:25:05,040 word geacht om het te gebruiken. 533 00:25:05,040 --> 00:25:09,140 >> Nu, herinner dat printf kon krijgen een beetje meer verfijnd. 534 00:25:09,140 --> 00:25:12,220 Nogmaals, we alleen maar praten over de equivalent van Say blok Scratch's. 535 00:25:12,220 --> 00:25:14,230 Maar ik deed ook deze laatste keer. 536 00:25:14,230 --> 00:25:17,270 Ik wilde mijn hello programma maken beetje meer dynamiek en niet alleen moeilijk 537 00:25:17,270 --> 00:25:19,740 code iets als "wereld," en zeker niet moeilijk code iets 538 00:25:19,740 --> 00:25:22,520 willekeurige zoals D-A-V-I-D in het programma. 539 00:25:22,520 --> 00:25:27,510 Ik wilde de gebruiker voor zijn of haar vragen naam, en vervolgens iets mee te doen 540 00:25:27,510 --> 00:25:29,720 die string die ze leveren. 541 00:25:29,720 --> 00:25:32,690 >> Dus er is iets een beetje anders hier. printf, een moment geleden, 542 00:25:32,690 --> 00:25:35,860 deed, inderdaad, doe iets, maar het heb niks terug naar mij. 543 00:25:35,860 --> 00:25:36,020 Rechts? 544 00:25:36,020 --> 00:25:38,910 Colton niet Geef me om het even wat terug, geen stuk papier. 545 00:25:38,910 --> 00:25:40,320 Er was slechts een neveneffect. 546 00:25:40,320 --> 00:25:44,510 Mijn verstrekken van "hello, world" als een argument Colton resulteerde in de 547 00:25:44,510 --> 00:25:48,420 bijwerking van een woord, sommige woorden, verschijnen op het scherm. 548 00:25:48,420 --> 00:25:51,350 >> getString, is echter een beetje verschillende. getString is een 549 00:25:51,350 --> 00:25:54,590 functioneren, maar het enige waarde terugkeert. 550 00:25:54,590 --> 00:25:56,370 Het heeft niet alleen een esthetische kant effect. 551 00:25:56,370 --> 00:26:00,230 Het geeft me eigenlijk, de persoon bellen of met de functie, 552 00:26:00,230 --> 00:26:01,320 iets terug. 553 00:26:01,320 --> 00:26:05,740 Dus in dit geval, getString is riep met getString geopend 554 00:26:05,740 --> 00:26:07,510 Paren, dicht Paren. 555 00:26:07,510 --> 00:26:11,370 Heeft getString daarom neem geen argumenten of inbreng? 556 00:26:11,370 --> 00:26:12,340 Nee, het lijkt niet. 557 00:26:12,340 --> 00:26:14,460 Zijn doel in het leven is alleen maar om een ​​string te krijgen. 558 00:26:14,460 --> 00:26:16,910 Het heeft niet meer details dan dat. 559 00:26:16,910 --> 00:26:20,430 Dus laat me gaan en doen alsof, nogmaals, deze zwarte doos is niet printf, 560 00:26:20,430 --> 00:26:25,160 maar getString, en laat mij, de persoon het schrijven van dit programma, bel of gebruik 561 00:26:25,160 --> 00:26:29,720 getString door alleen het schrijven G-E-T-S-T-R-I-N-G open Paren, close 562 00:26:29,720 --> 00:26:32,170 Paren, getString. 563 00:26:32,170 --> 00:26:36,920 >> Nu, ik heb geen idee hoe de CS50 personeel geïmplementeerd getString, maar ik weet dat 564 00:26:36,920 --> 00:26:41,240 als ik maar lang genoeg wacht, zal het haar doen ding onder de motorkap, misschien met behulp van 565 00:26:41,240 --> 00:26:44,940 sommige variabelen, misschien met behulp van enkele omstandigheden, misschien met behulp van enkele lussen, 566 00:26:44,940 --> 00:26:48,170 misschien een aantal andere functies, Misschien met behulp van - 567 00:26:48,170 --> 00:26:52,290 gewoon proberen om kraam - misschien met behulp van enkele andere programmeerfuncties. 568 00:26:52,290 --> 00:26:55,350 Maar als ik maar lang genoeg wacht - in werkelijkheid, in de computer, gebeurt 569 00:26:55,350 --> 00:26:56,270 super snel - 570 00:26:56,270 --> 00:26:59,910 als ik maar lang genoeg wacht, deze functie getString gaat om een ​​string te krijgen 571 00:26:59,910 --> 00:27:04,060 de gebruiker, die vermoedelijk typen het uit op hun toetsenbord, en 572 00:27:04,060 --> 00:27:08,090 dan, wanneer je wordt getString gedaan krijgen die tekens van de gebruiker 573 00:27:08,090 --> 00:27:14,080 en te slaan in een tekenreeks, die functie, getString, zal moeten 574 00:27:14,080 --> 00:27:17,990 klaar voor me enkele uitgang die ik ben gaan halen via de 575 00:27:17,990 --> 00:27:19,470 toewijzingsoperator. 576 00:27:19,470 --> 00:27:25,390 >> En als ik ga inderdaad naar de uitgang hier, Obosi heeft royaal 577 00:27:25,390 --> 00:27:29,900 deelgenomen, zonder het te weten deze in vooruit, door het schrijven van zijn naam op dit 578 00:27:29,900 --> 00:27:33,100 variabel wat vertegenwoordigt een string. 579 00:27:33,100 --> 00:27:35,640 Nu, de opdracht operator betekent, zelfs hoewel dit een beetje zou kunnen voelen 580 00:27:35,640 --> 00:27:38,790 overbodig, ik eigenlijk wel nodig om mijn eigen exemplaar van deze te maken. 581 00:27:38,790 --> 00:27:40,700 Omdat aan de linker kant side - whoops! - 582 00:27:40,700 --> 00:27:45,760 merken dat ik in wezen touwtje naam aan de linkerkant. 583 00:27:45,760 --> 00:27:48,280 Dus ik ga ook maken mijn eigen exemplaar van dit. 584 00:27:48,280 --> 00:27:50,990 En dit is een beetje een leugentje om bestwil, want we zullen zien in een week of twee van 585 00:27:50,990 --> 00:27:54,100 keer dat strings zijn niet echt wat ze lijken te zijn. 586 00:27:54,100 --> 00:27:56,700 >> Maar voor nu, hier is de return waarde. 587 00:27:56,700 --> 00:28:00,160 Hier is mijn eigen exemplaar van het na met behulp van de opdracht operator. 588 00:28:00,160 --> 00:28:01,790 En nu, wat wil ik nu doen? 589 00:28:01,790 --> 00:28:04,080 We hebben nu de tweede van twee regels code. 590 00:28:04,080 --> 00:28:05,640 Dus ik wil nu printf bellen. 591 00:28:05,640 --> 00:28:08,500 Laten we doen alsof nu dat de zwarte doos is weer terug naar zijn 592 00:28:08,500 --> 00:28:10,210 printf en niet getString. 593 00:28:10,210 --> 00:28:12,200 >> Printf dit keer gaat neem hoeveel argumenten? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Dus kijk, het is als twee. 596 00:28:16,770 --> 00:28:18,860 Er is twee komma's in, maar zo'n komma, het 597 00:28:18,860 --> 00:28:20,220 binnenkant van de citaten. 598 00:28:20,220 --> 00:28:23,190 Dus het eerste argument is letterlijk gaat dit worden. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, komma, percenten s, backslash-n. 600 00:28:31,850 --> 00:28:36,560 En nu ben ik het verstrekken van niet een argument, maar twee argumenten aan printf. 601 00:28:36,560 --> 00:28:39,530 >> En wat is printf verondersteld wordt te doen met deze twee ingangen nadat ik geef ze in 602 00:28:39,530 --> 00:28:42,050 als argumenten? 603 00:28:42,050 --> 00:28:45,360 Het zou de tweede van te nemen hen, die ik geroepen naam, zodat de 604 00:28:45,360 --> 00:28:48,660 tweede stukje papier schreef ik uit een moment geleden heet naam. 605 00:28:48,660 --> 00:28:53,550 Het gaat om stekker van de waarde binnen van die variabele in de tijdelijke aanduiding, 606 00:28:53,550 --> 00:28:58,310 % S, zodat, opnieuw, in slechts een moment van tijd, zullen we een neveneffect van te zien 607 00:28:58,310 --> 00:29:04,180 hebben printf geroepen, waarbij we nu zie niet "hello, wereld," maar "hallo, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Dus een groot applaus voor beide onze vrijwilligers, maar een van hen wist 610 00:29:08,730 --> 00:29:12,010 dit zou gebeuren. 611 00:29:12,010 --> 00:29:12,990 Oke. 612 00:29:12,990 --> 00:29:16,480 Dus, misschien, simpel als dat was, zeker, als je al bekend bent 613 00:29:16,480 --> 00:29:20,190 met dergelijke, hopelijk zul je nooit vergeten dat bepaalde visuele hoe 614 00:29:20,190 --> 00:29:21,220 functies werken. 615 00:29:21,220 --> 00:29:23,000 >> Dus er is meer dan alleen getString. 616 00:29:23,000 --> 00:29:26,020 Binnenkant van de CS50 bibliotheek, er is een hele hoop functies, die allemaal 617 00:29:26,020 --> 00:29:29,510 worden geactiveerd gewoon om duidelijk te maken dat we schreven deze functies. 618 00:29:29,510 --> 00:29:33,610 Typisch, in C, bijna elke functie die u zult gebruiken is in kleine letters. 619 00:29:33,610 --> 00:29:36,190 Maar we bewust gebruik hoofdletters alleen maar om duidelijk te maken dat deze 620 00:29:36,190 --> 00:29:39,880 zijn zijwieltjes van soorten die we zullen gebruiken voor slechts een paar weken dat 621 00:29:39,880 --> 00:29:42,890 het proces om te vereenvoudigen input van de gebruiker. 622 00:29:42,890 --> 00:29:46,740 >> De CS50 bibliotheek doet niets dat je kon zelf niet doen door 623 00:29:46,740 --> 00:29:50,230 alleen met behulp van C-code van een oldschool leerboek. 624 00:29:50,230 --> 00:29:53,310 Maar, nogmaals, gebruiken we ze als training wielen van soorten voor slechts een paar 625 00:29:53,310 --> 00:29:57,250 weken, zodat we kunnen ontdoen van de complexiteit dat u binnenkort zult begrijpen 626 00:29:57,250 --> 00:30:00,460 zelf iets te doen als relatief eenvoudig als het krijgen van 627 00:30:00,460 --> 00:30:02,080 input van een gebruiker. 628 00:30:02,080 --> 00:30:05,540 >> Dus weet dat je toegang zult moeten naar getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 verdubbelen. 630 00:30:06,050 --> 00:30:07,050 Dinges - en dan GetFloat. 631 00:30:07,050 --> 00:30:07,600 Wat is een vlotter? 632 00:30:07,600 --> 00:30:09,382 Laten we beginnen er. 633 00:30:09,382 --> 00:30:10,600 >> STUDENT: [onverstaanbaar]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID Malan: Yeah. 635 00:30:10,790 --> 00:30:12,120 Het is een nummer met een komma. 636 00:30:12,120 --> 00:30:15,930 Dus terwijl een int is een geheel getal, waarvan is maar een getal met 0 tot en met 9, 637 00:30:15,930 --> 00:30:18,940 sommige aantal herhalingen, daarvan een vlotter is iets 638 00:30:18,940 --> 00:30:20,100 met een decimale punt. 639 00:30:20,100 --> 00:30:26,090 En een dubbele, ondertussen, is eveneens een getal met een decimale punt, maar meer 640 00:30:26,090 --> 00:30:28,160 getallen achter de komma punt, potentieel. 641 00:30:28,160 --> 00:30:30,040 >> Dus we zullen terug te gaan naar dit duurde niet lang. 642 00:30:30,040 --> 00:30:34,560 Maar meestal, elk van deze typen data, elk van deze typen variabelen 643 00:30:34,560 --> 00:30:39,380 dat een bibliotheek als de onze kan terugkeren naar u, maken gebruik van verschillende aantallen bits aan 644 00:30:39,380 --> 00:30:40,290 informatie op te slaan. 645 00:30:40,290 --> 00:30:43,910 Typisch, een Char, die net betekent een teken, gebruikt 8 bits. 646 00:30:43,910 --> 00:30:47,490 En dat is eigenlijk in lijn met onze byte van vrijwilligers vorige week die 647 00:30:47,490 --> 00:30:50,410 kwam en vertegenwoordigde een Ascii karakter per keer. 648 00:30:50,410 --> 00:30:51,850 Dus een Char is 8 bits. 649 00:30:51,850 --> 00:30:54,430 >> Een drijvende toevallig 32 bits, typisch. 650 00:30:54,430 --> 00:30:59,230 En een dubbele, zoals je wel kan raden, is eigenlijk 64 bits, dat is gewoon meer, 651 00:30:59,230 --> 00:31:01,360 wat betekent dat je groter kunt hebben nummers of meer precisie. 652 00:31:01,360 --> 00:31:03,000 Maar nogmaals, meer daarover een andere keer. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, ondertussen, hoewel dom genaamd, is eigenlijk gewoon een 654 00:31:06,550 --> 00:31:10,770 integer die twee keer zo groot, tweemaal lang, potentieel, als een gewone 655 00:31:10,770 --> 00:31:12,940 integer, 64 bits in plaats van 32. 656 00:31:12,940 --> 00:31:14,560 En getString we heb gebruikt. 657 00:31:14,560 --> 00:31:18,870 >> Maar het blijkt, in de CS50 bibliotheek, dat wordt toegepast, zoals we zullen zien, in 658 00:31:18,870 --> 00:31:23,560 de vorm van de twee bestanden, waarvan heet cs50.h heeft twee 659 00:31:23,560 --> 00:31:24,770 gegevenstypen in. 660 00:31:24,770 --> 00:31:29,700 Booleans bestaan ​​niet in C. U kunt simuleren ze door gewoon met behulp 0s en 1s 661 00:31:29,700 --> 00:31:30,850 in uw programma's. 662 00:31:30,850 --> 00:31:35,500 Maar wij in de CS50 bibliotheek hebt gemaakt de symbolen "true" en "false" 663 00:31:35,500 --> 00:31:38,580 op 1 en 0 vertegenwoordigt zodat je niet moeten hard code iets 664 00:31:38,580 --> 00:31:39,810 letterlijk als 1 en 0. 665 00:31:39,810 --> 00:31:40,980 Maar we zullen weer die zien. 666 00:31:40,980 --> 00:31:42,330 >> String, ook niet bestaat. 667 00:31:42,330 --> 00:31:44,520 En dat is waarom ik gezegd dat het een beetje een leugentje om bestwil voor nu. 668 00:31:44,520 --> 00:31:46,660 Maar we zullen schil terug dat layer duurde niet lang. 669 00:31:46,660 --> 00:31:49,540 Maar voor nu, een string is een reeks tekens. 670 00:31:49,540 --> 00:31:51,790 >> Ondertussen, in C, je inderdaad verschillende gegevenstypen. 671 00:31:51,790 --> 00:31:53,200 Let op dit zijn kleine letters. 672 00:31:53,200 --> 00:31:56,960 Zodat de functies die u daarnet zag zijn functies geschreven door CS50 dat 673 00:31:56,960 --> 00:32:02,310 zal terugkeren naar een waarde die valt in een van deze categorieën. 674 00:32:02,310 --> 00:32:06,730 >> Een paar spiekbriefjes gewoon te planten het zaad hier. doet printf niet alleen 675 00:32:06,730 --> 00:32:08,600 neem% s als tijdelijke aanduidingen. 676 00:32:08,600 --> 00:32:13,490 Het duurt% d voor decimaal integer, of% i zou zo goed werken. 677 00:32:13,490 --> 00:32:19,450 % F is floating point waarden. % C is een char, als je wilt gewoon aansluiten een 678 00:32:19,450 --> 00:32:23,510 karakter in een vooraf opgemaakte tekenreeks zoals we hebben gedaan, kunt u% c gebruiken. 679 00:32:23,510 --> 00:32:28,490 >> En dan, ietwat hinderlijk,% lld is voor een lange, lange decimaal integer, 680 00:32:28,490 --> 00:32:31,050 die net betekent dat als je een echt groot aantal en je gebruikt iets 681 00:32:31,050 --> 00:32:35,450 riep een lange lange, waar we komen terug naar in een PSET, kunt u% lld gebruiken om 682 00:32:35,450 --> 00:32:40,700 vertel printf, plug in een echt grote integer hier via de tweede of 683 00:32:40,700 --> 00:32:41,830 een aantal andere argumenten. 684 00:32:41,830 --> 00:32:45,700 >> En tot slot, ik beloofde dat Er is een paar andere ontsnapping 685 00:32:45,700 --> 00:32:47,670 sequenties die printf ondersteunt. 686 00:32:47,670 --> 00:32:49,160 We hebben gezien backslash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r je kan zien. 688 00:32:50,510 --> 00:32:51,780 Het is een soort van een old-school ding. 689 00:32:51,780 --> 00:32:55,920 Als u ooit gebruik gemaakt van een echte typemachine jaar geleden en u trok op de kruk 690 00:32:55,920 --> 00:32:59,810 die niet alleen gedraaid aan het wiel om bewegen de line-up, het bewoog ook de 691 00:32:59,810 --> 00:33:03,730 hele zaak helemaal terug naar links, goed, backslash-r gewoon 692 00:33:03,730 --> 00:33:06,480 beweegt in wezen je cursor terug het begin van de regel 693 00:33:06,480 --> 00:33:07,830 zonder het te bewegen naar beneden. 694 00:33:07,830 --> 00:33:09,780 Maar nogmaals, meer op dat, misschien in de toekomst. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-citaat, backslash-dubbel aanhalingsteken, backslash-backslash is de 696 00:33:13,670 --> 00:33:16,600 oplossing voor de kleine kleine raadsel Ik zinspeelde eerder. 697 00:33:16,600 --> 00:33:18,920 En backslash-0 is eigenlijk heel interessant. 698 00:33:18,920 --> 00:33:21,470 Maar we zullen terug te komen dat duurde niet lang. 699 00:33:21,470 --> 00:33:25,640 >> Dus laat me gaan in, nu, de CS50 apparaat, en laten we eigenlijk doen een 700 00:33:25,640 --> 00:33:28,930 snel op te warmen met een van de voorbeelden we hadden al en dan naar 701 00:33:28,930 --> 00:33:31,160 iets een beetje ingewikkelder. 702 00:33:31,160 --> 00:33:34,980 Dus als ik open mijn programma riep gedit - 703 00:33:34,980 --> 00:33:36,840 dit is mijn grafische editor. 704 00:33:36,840 --> 00:33:38,460 En ik kan dat doen - 705 00:33:38,460 --> 00:33:39,820 laat me dat venster te sluiten daar - 706 00:33:39,820 --> 00:33:42,720 door middel van dit pictogram hier beneden, gedit, in de bottom-links 707 00:33:42,720 --> 00:33:44,170 hoek naast het menu. 708 00:33:44,170 --> 00:33:48,670 >> Ik ga om te gaan en te bevorderen, en bespaart dit voorbeeld in, zeg, John 709 00:33:48,670 --> 00:33:49,660 Map Harvard. 710 00:33:49,660 --> 00:33:52,690 Map John Harvard's is gewoon zijn huis directory waar al zijn bestanden te leven 711 00:33:52,690 --> 00:33:53,340 standaard. 712 00:33:53,340 --> 00:33:58,410 En ik ga dit zo te besparen een bestand met de naam hello-0.c. 713 00:33:58,410 --> 00:34:01,260 En ik heb deze naam gekozen gewoon dus het lijn staat met het monster code op het 714 00:34:01,260 --> 00:34:04,210 website cursus en in het YouTube-video's online. 715 00:34:04,210 --> 00:34:06,320 >> Dus nu ga ik om te beginnen aan schrijf mijn eerste programma. 716 00:34:06,320 --> 00:34:08,469 Laat mij in te zoomen voor leesbaarheid. 717 00:34:08,469 --> 00:34:12,760 En ik ga je gang gaan en zeggen int belangrijkste leegte, die net zo is als dat 718 00:34:12,760 --> 00:34:14,900 gele puzzelstukje dat start een programma. 719 00:34:14,900 --> 00:34:18,290 Ik heb gekregen in de gewoonte over de jaar van het openen van mijn accolade, dan 720 00:34:18,290 --> 00:34:22,000 Ook sluiten en dan terug te gaan naar waar ik wil mijn code zetten, net 721 00:34:22,000 --> 00:34:24,630 omdat het helpt me alles te houden evenwichtig, vooral omdat mijn 722 00:34:24,630 --> 00:34:25,880 programma krijgt lang. 723 00:34:25,880 --> 00:34:29,239 >> En nu, hier, ik ga om verder te gaan en zeggen: printf, citeer unquote, 724 00:34:29,239 --> 00:34:34,330 hello wereld, backslash-n, dicht citaat, haakje sluiten, puntkomma. 725 00:34:34,330 --> 00:34:38,100 Dus ik ben gewoon alles wat we hebben te herhalen het nemen van voor tot nu toe verleend. 726 00:34:38,100 --> 00:34:39,270 Nu ga ik om uit te zoomen. 727 00:34:39,270 --> 00:34:43,030 >> En deze terminal venster hier beneden, wat mag ik doen in deze zwarte 728 00:34:43,030 --> 00:34:44,389 en witte venster? 729 00:34:44,389 --> 00:34:46,977 Wat kan ik het gebruiken? 730 00:34:46,977 --> 00:34:49,770 Dus dit is waar ik opdrachten uitvoeren en waar ik dingen kan compileren. 731 00:34:49,770 --> 00:34:50,620 En ik ga het simpel te houden. 732 00:34:50,620 --> 00:34:52,780 Ik ga naar een programma te gebruiken Voeg genaamd, die niet 733 00:34:52,780 --> 00:34:54,020 technisch een compiler. 734 00:34:54,020 --> 00:34:56,360 De compiler heet Clang, maar we komen terug naar die komen in een 735 00:34:56,360 --> 00:34:57,190 week of twee de tijd's. 736 00:34:57,190 --> 00:35:03,410 >> Voor nu, ik ben gewoon gaan typen maken hello-0, Maar degenen onder u die waren 737 00:35:03,410 --> 00:35:07,050 vergelijken in uw gedachten wat ik net getypt op wat ik had moeten getypt kan 738 00:35:07,050 --> 00:35:10,180 weet al dat ik deed hier iets mis. 739 00:35:10,180 --> 00:35:12,160 Nu, er is duidelijk een aantal fouten. 740 00:35:12,160 --> 00:35:16,742 Voordat ik zelfs kijken naar wat ze zijn, geen gedachten over wat ik verkeerd gedaan? 741 00:35:16,742 --> 00:35:18,590 >> STUDENTEN: [onderbreekt hem VOICES]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID Malan: Yeah. 743 00:35:18,840 --> 00:35:20,640 Ik mis header-bestand van de bibliotheek. 744 00:35:20,640 --> 00:35:24,240 Hiervan. H bestanden header genoemd bestanden, en ze gezamenlijk 745 00:35:24,240 --> 00:35:25,680 behoren tot dingen geroepen bibliotheken. 746 00:35:25,680 --> 00:35:28,030 Bibliotheken zijn slechts stukjes code dat andere mensen schreven. 747 00:35:28,030 --> 00:35:32,140 Dus de standaard [? i?] bibliotheek verzameling van bestanden met code 748 00:35:32,140 --> 00:35:33,330 dat andere mensen schreven. 749 00:35:33,330 --> 00:35:34,820 >> Dus ik mis dat. 750 00:35:34,820 --> 00:35:36,520 Waarom krijg ik een foutmelding? 751 00:35:36,520 --> 00:35:40,840 Nou, laat me terugbladeren in mijn terminalvenster hier. 752 00:35:40,840 --> 00:35:44,310 En helaas in C, zoals in veel programmeertalen name 753 00:35:44,310 --> 00:35:47,830 als het allemaal nieuw voor je, de fout berichten zijn nauwkeurig, maar ze zijn ook 754 00:35:47,830 --> 00:35:48,620 nogal cryptisch. 755 00:35:48,620 --> 00:35:51,720 En de fout hier, in rood, is "Functie impliciet verklaren bibliotheek 756 00:35:51,720 --> 00:35:57,660 printf met type, "en dan scrollt naar de volgende regel, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Het wordt gewoon echt overweldigend snel. 758 00:36:00,220 --> 00:36:04,420 >> Maar wat je moet beginnen te doen, indien, nogmaals, nieuw voor dit alles, is gewoon om 759 00:36:04,420 --> 00:36:06,010 beginnen te zoeken naar trefwoorden. 760 00:36:06,010 --> 00:36:08,770 Duidelijk, zou ik niet begrijp de helft van de woorden zie ik gewoon nog niet. 761 00:36:08,770 --> 00:36:10,140 Je wil, hoewel, in een week tijd. 762 00:36:10,140 --> 00:36:11,230 Maar ik zie printf. 763 00:36:11,230 --> 00:36:14,310 En dat moet beginnen, het duurde niet lang, tot jog je geheugen, oke, printf. 764 00:36:14,310 --> 00:36:15,210 Er is iets mis met printf. 765 00:36:15,210 --> 00:36:16,580 Heb ik spel het verkeerd? 766 00:36:16,580 --> 00:36:18,130 Nee, het maakt niet uit als - oh. 767 00:36:18,130 --> 00:36:21,350 Ik kan het niet gebruiken, tenzij ik les de compiler dat het bestaat. 768 00:36:21,350 --> 00:36:25,220 En dus, nogmaals, ga met je intuïtie, zelfs als je niet echt begrijpen 769 00:36:25,220 --> 00:36:26,510 de werkelijke foutmeldingen. 770 00:36:26,510 --> 00:36:30,240 >> En inderdaad, de oplossing hier is gewoon opnemen bovenaan het bestand 771 00:36:30,240 --> 00:36:34,340 als dat, opnieuw op te slaan mijn dossier met Controle-S of het menu Bestand. 772 00:36:34,340 --> 00:36:36,730 En als ik nu terug ga hier beneden, Ik ga dit te wissen. 773 00:36:36,730 --> 00:36:39,150 Controle-L is gewoon een leuke manier om het scherm te wissen. 774 00:36:39,150 --> 00:36:44,870 En dan ga ik te typen "make hello 0 "invoeren, en nu zie ik nog steeds een 775 00:36:44,870 --> 00:36:47,710 cryptische reeks symbolen, maar komen we terug naar dat. 776 00:36:47,710 --> 00:36:49,230 Dat is wat maken voor u doet. 777 00:36:49,230 --> 00:36:52,590 Het automatiseren van het proces van het nemen een tamelijk vervelende opdracht waarbij 778 00:36:52,590 --> 00:36:54,050 Clang, de eigenlijke compiler. 779 00:36:54,050 --> 00:36:57,460 Maar het feit dat ik geen fouten betekent dat dit ding zou moeten werken. 780 00:36:57,460 --> 00:37:00,630 >> Dus ik ga nu doen - laat me in te zoomen weer - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, en inderdaad, ik zie "Hallo, wereld." Dus laten we nu verhogen 782 00:37:07,070 --> 00:37:12,105 Deze ooit zo iets gewoon te repliceren de stappen die wij bedoelden. 783 00:37:12,105 --> 00:37:15,370 Ik ga dit hernoemen met Opslaan als om hello1.c. 784 00:37:15,370 --> 00:37:20,300 En nu ga ik naar een variabele declareren riep naam, dus naam touwtje, 785 00:37:20,300 --> 00:37:23,420 en ik ga in te doen de waarde van citaat-unquote 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D close-citaat puntkomma. 787 00:37:27,030 --> 00:37:31,150 En nu ga ik naar "wereld" te vervangen met wat placeholder voor een string? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> En nu, hoeveel argumenten moeten printf neem deze keer? 790 00:37:35,040 --> 00:37:35,700 Dus twee. 791 00:37:35,700 --> 00:37:37,090 Dus ik ga buiten de aanhalingstekens. 792 00:37:37,090 --> 00:37:39,330 Ik typ "naam" na een komma. 793 00:37:39,330 --> 00:37:41,550 Maar ik heb iets gedaan anders mis deze keer. 794 00:37:41,550 --> 00:37:43,940 Maar laten we aannemen dat ik niet beseffen dat nog niet. 795 00:37:43,940 --> 00:37:44,910 Laat me gaan hier omhoog. 796 00:37:44,910 --> 00:37:48,850 >> En merk ook, ik word een beetje verveeld van het typen "make hello 0" alle 797 00:37:48,850 --> 00:37:50,180 tijd, "maken" en dit alles. 798 00:37:50,180 --> 00:37:53,270 Dus, zo blijkt, in Linus kunt u Vaak raken de pijl omhoog op uw 799 00:37:53,270 --> 00:37:56,850 toetsenbord, en je kunt eigenlijk scrollen door alle van de opdrachten die ik heb 800 00:37:56,850 --> 00:37:58,830 uitgevoerd voorafgaand aan daarnet. 801 00:37:58,830 --> 00:38:02,040 Dus als ik dat doe, Boven, Boven, er is maken hello 0. 802 00:38:02,040 --> 00:38:02,610 Ik wil dat niet. 803 00:38:02,610 --> 00:38:05,450 Ik wil alleen maar om dat te veranderen om hello 1 deze keer, Enter. 804 00:38:05,450 --> 00:38:07,620 Uiteindelijk, dat zal u wat tijd besparen. 805 00:38:07,620 --> 00:38:08,150 >> Oke. 806 00:38:08,150 --> 00:38:09,520 Helaas, er is een fout. 807 00:38:09,520 --> 00:38:10,980 Dus laat me scrollen. 808 00:38:10,980 --> 00:38:13,120 Dit ziet eruit als ik echt afgeslacht dit programma. 809 00:38:13,120 --> 00:38:16,530 Ik bedoel, mijn god, het is twee regels code, en zijn 10 lijnen van fouten. 810 00:38:16,530 --> 00:38:18,800 Maar kijk naar de bovenste eerste. 811 00:38:18,800 --> 00:38:21,640 Gebruik van niet-aangegeven id string. 812 00:38:21,640 --> 00:38:23,270 Heb ik bedoel standaard i n? 813 00:38:23,270 --> 00:38:23,930 Nee ik niet. 814 00:38:23,930 --> 00:38:24,940 Ik bedoelde string. 815 00:38:24,940 --> 00:38:29,390 >> Maar waar is de string variabele soort verklaard, dd wij zeggen? 816 00:38:29,390 --> 00:38:30,730 Dus het is in de CS50 de bibliotheek. 817 00:38:30,730 --> 00:38:33,740 Dus het is niet voldoende, in deze eerste paar weken, gewoon om te gebruiken 818 00:38:33,740 --> 00:38:34,860 wat C ons geeft. 819 00:38:34,860 --> 00:38:38,120 Ik ben ook gaan om hier te gaan, en ik kon het boven of onder te zetten, maar ik zal 820 00:38:38,120 --> 00:38:40,340 hou het alfabetische om dingen ordelijk te houden. 821 00:38:40,340 --> 00:38:43,470 Ik ga cs50.h omvatten, die vooraf geïnstalleerd 822 00:38:43,470 --> 00:38:44,900 u op de CS50 apparaat. 823 00:38:44,900 --> 00:38:47,640 En het is open source, dus zelfs mensen op het internet kan het gebruiken op hun 824 00:38:47,640 --> 00:38:48,450 eigen computers. 825 00:38:48,450 --> 00:38:50,700 Maar het komt met de CS50 apparaat. 826 00:38:50,700 --> 00:38:55,320 >> Dus nu laat ik terug te gaan en opnieuw te compileren dit met make hello 1. 827 00:38:55,320 --> 00:38:55,710 Verdomme. 828 00:38:55,710 --> 00:38:57,240 Nog een andere fout. 829 00:38:57,240 --> 00:38:59,370 Laat me schuiven tot aan de eerste, dat wel. 830 00:38:59,370 --> 00:39:00,630 Deze is een beetje ingewikkeld. 831 00:39:00,630 --> 00:39:03,830 Multi-character character constant. 832 00:39:03,830 --> 00:39:04,890 Dat helpt me niet. 833 00:39:04,890 --> 00:39:08,220 Maar let op, Clang is op zijn minst een beetje beetje fatsoenlijk, waarbij met een beetje 834 00:39:08,220 --> 00:39:11,890 groen dakje staat, het is te zeggen Hier is waar ik het verpest. 835 00:39:11,890 --> 00:39:16,160 Waarom is het wijst, met dat kleine groene pijl, om de enkele aanhalingstekens volgende 836 00:39:16,160 --> 00:39:18,290 naar mijn naam? 837 00:39:18,290 --> 00:39:20,880 >> Dus dit is een van de dingen die je gewoon wennen, vooral als je geweest bent 838 00:39:20,880 --> 00:39:23,980 programmeren in Python of JavaScript of andere talen, waar dit detail 839 00:39:23,980 --> 00:39:24,560 doet er niet toe. 840 00:39:24,560 --> 00:39:25,740 In C, het ertoe doet. 841 00:39:25,740 --> 00:39:29,520 Als u verklaren een string, dat is een reeks van 0 of meer karakters, 842 00:39:29,520 --> 00:39:32,280 je eigenlijk moet gebruiken dubbele aanhalingstekens. 843 00:39:32,280 --> 00:39:36,670 Dus ik echt nodig om dit terug te veranderen te openen citaat, sluit citaat, met 844 00:39:36,670 --> 00:39:37,800 dubbele aanhalingstekens. 845 00:39:37,800 --> 00:39:41,610 Enkele aanhalingstekens hebben hun plaats, maar alleen wanneer u gebruik maakt individuele 846 00:39:41,610 --> 00:39:44,100 chars, maar daarover een andere keer. 847 00:39:44,100 --> 00:39:46,550 Voor nu, de dubbele aanhalingstekens noodzakelijk. 848 00:39:46,550 --> 00:39:50,460 >> Dus nu, laat me terug naar mijn terminal venster, maak hello 1. 849 00:39:50,460 --> 00:39:51,450 En wie is zelfverzekerd? 850 00:39:51,450 --> 00:39:53,800 Is dit programma nu gaan te kunnen compileren? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Dus drie van ons denken dit. 854 00:39:59,780 --> 00:40:00,280 Oke. 855 00:40:00,280 --> 00:40:01,190 Enter. 856 00:40:01,190 --> 00:40:02,440 En het eigenlijk deed. 857 00:40:02,440 --> 00:40:05,130 Zodat er geen fouten dit keer, zelfs hoewel dit programma heeft gekregen een beetje 858 00:40:05,130 --> 00:40:05,840 complexer. 859 00:40:05,840 --> 00:40:10,110 Als ik nu doen dot slash hello 1, Enter, het gaat om te zeggen "hallo, David." 860 00:40:10,110 --> 00:40:11,750 >> Maar laten we de derde iteratie dit, wanneer de 861 00:40:11,750 --> 00:40:13,380 programma werkelijk dynamisch. 862 00:40:13,380 --> 00:40:16,770 Laat me gaan door en verander het bestand naam, alleen voor de samenhang met de 863 00:40:16,770 --> 00:40:20,410 bestanden die je beschikbaar hebt om je daarna online. 864 00:40:20,410 --> 00:40:21,620 Enter. 865 00:40:21,620 --> 00:40:25,510 En nu ga ik te gaan en niet slaan "David" harde hier gecodeerd. 866 00:40:25,510 --> 00:40:28,826 Wat kan ik doen om heel eenvoudig dit programma te verbeteren? 867 00:40:28,826 --> 00:40:30,520 >> Ik kon getString noemen. 868 00:40:30,520 --> 00:40:33,240 Het is misschien een beetje non-duidelijk wat is zijn te gebeuren, dus ik ga 869 00:40:33,240 --> 00:40:38,470 om daadwerkelijk toe te voegen een andere lijn, printf, en zeg naam, colon, dicht citaat, net 870 00:40:38,470 --> 00:40:40,790 de gebruiker een aanwijzing geven op het scherm. 871 00:40:40,790 --> 00:40:42,980 En nu ga ik hier te gaan, en ik ben ga mijn sneltoets. 872 00:40:42,980 --> 00:40:47,680 Ik ga om te gaan omhoog, omhoog, en veranderen hello 1 tot hello 2, Enter. 873 00:40:47,680 --> 00:40:49,260 En gelukkig, ik ben het maken van vooruitgang. 874 00:40:49,260 --> 00:40:52,720 >> En nu ga ik naar boven te gaan om dot slash hallo en 875 00:40:52,720 --> 00:40:54,690 dat veranderen naar 2, Enter. 876 00:40:54,690 --> 00:40:55,650 En nu mijn programma - 877 00:40:55,650 --> 00:40:57,700 Ik zal inzoomen - wordt steeds een beetje mooier. 878 00:40:57,700 --> 00:41:02,190 Naam gaat worden, laten we zeggen Rob dit keer, Enter, hello, Rob. 879 00:41:02,190 --> 00:41:03,260 We kunnen het opnieuw doen. 880 00:41:03,260 --> 00:41:05,360 Naam, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Naam, Joseph, Enter. 882 00:41:07,820 --> 00:41:11,596 Naam, laten we proberen te zijn moeilijk, Enter. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Het is niet echt een bug. 885 00:41:14,680 --> 00:41:16,090 Dus het is gewoon een beetje lelijk. 886 00:41:16,090 --> 00:41:18,640 Misschien kunnen we dit oplossen in de toekomst, niet nu. 887 00:41:18,640 --> 00:41:20,840 >> Maar hoe zou je instinctief gaan over de aanpak 888 00:41:20,840 --> 00:41:21,990 dat bijzondere uitdaging? 889 00:41:21,990 --> 00:41:23,710 Het ziet er gewoon dom. 890 00:41:23,710 --> 00:41:27,320 Hoe ga je dingen vermijden zoekt dom? 891 00:41:27,320 --> 00:41:29,890 Dus we konden doen, OK, ik hoorde een paar van de dingen, een voorwaarde en een lus. 892 00:41:29,890 --> 00:41:33,340 We konden gebruiken, een, een voorwaarde, om te controleren wat is de lengte van de tekenreeks 893 00:41:33,340 --> 00:41:34,190 de gebruiker ons gaf? 894 00:41:34,190 --> 00:41:37,100 En als het 0, het is gewoon citeren einde citaat, ze gewoon op Enter, dan 895 00:41:37,100 --> 00:41:38,930 misschien moet ik schreeuwen tegen hen en wederom prompt hen. 896 00:41:38,930 --> 00:41:39,970 Maar hoe weet een prompt ze weer? 897 00:41:39,970 --> 00:41:44,230 Nou, ik hoorde ook loop, en ik kon dat doen opnieuw en opnieuw en opnieuw 898 00:41:44,230 --> 00:41:47,010 de gebruiker vraagt ​​om het zelfde ding. 899 00:41:47,010 --> 00:41:48,880 >> Nou, laten we een ander voorbeeld een andere 900 00:41:48,880 --> 00:41:50,620 functie in het CS50 bibliotheek. 901 00:41:50,620 --> 00:41:52,330 Laat me dit dossier af te sluiten. 902 00:41:52,330 --> 00:41:53,510 Laat ik een nieuwe maken. 903 00:41:53,510 --> 00:41:58,510 En ik zal het adder.c noemen, alleen maar omdat het is makkelijk om eenvoudige rekenkundige doen, 904 00:41:58,510 --> 00:42:00,890 ook al is dit volledig zal zijn underwhelming met wat je zou kunnen doen 905 00:42:00,890 --> 00:42:02,250 met elke moderne computer. 906 00:42:02,250 --> 00:42:03,750 >> Maar laat me nu ga je gang en - 907 00:42:03,750 --> 00:42:10,680 Ik heb mijn lesje geleerd vorige keer - onder andere cs50.h, omvatten stdio.h, int 908 00:42:10,680 --> 00:42:14,170 belangrijkste leegte, die, voor nu, ik zal gewoon nemen op blind geloof, maar we gaan ervan uit 909 00:42:14,170 --> 00:42:16,380 dat zal begrijpen wat dat betekent dat duurde niet lang. 910 00:42:16,380 --> 00:42:21,030 En ik ga iets zeggen zoals "geef me een int." 911 00:42:21,030 --> 00:42:22,140 >> En nu, hoe krijg ik een int te krijgen? 912 00:42:22,140 --> 00:42:26,820 Ik wil uiteindelijk een variabele declareert riep x van het type int en 913 00:42:26,820 --> 00:42:29,240 op te slaan in een geheel getal van de gebruiker. 914 00:42:29,240 --> 00:42:29,970 Dus dat was een hele mond vol. 915 00:42:29,970 --> 00:42:35,680 Maar als iemand wil voorstellen, hoe verklaar ik een integer genaamd x? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> Dus het is echt zo simpel. 918 00:42:37,430 --> 00:42:38,240 Geef me een int. 919 00:42:38,240 --> 00:42:39,070 Noem het x. 920 00:42:39,070 --> 00:42:40,580 Nu gebruik ik de opdracht operator. 921 00:42:40,580 --> 00:42:43,400 En hoe kan ik opslaan van de liet een waarde van de gebruiker? 922 00:42:43,400 --> 00:42:47,310 Ik wil niet getString bellen, natuurlijk, maar getint. 923 00:42:47,310 --> 00:42:49,060 Alle argumenten? 924 00:42:49,060 --> 00:42:49,350 Nee. 925 00:42:49,350 --> 00:42:51,870 Dus het is geopend Paren, dicht Paren onmiddellijk, en vervolgens een 926 00:42:51,870 --> 00:42:53,440 puntkomma eindigt de lijn. 927 00:42:53,440 --> 00:42:54,930 >> Laat me nu weer doen. 928 00:42:54,930 --> 00:42:57,070 Geef me nog een int. 929 00:42:57,070 --> 00:43:01,850 Deze keer zal ik int doen, laten we noem het y, gelijk getint. 930 00:43:01,850 --> 00:43:05,060 En nu laat ik iets super-eenvoudig te doen zoals sommige wiskunde. 931 00:43:05,060 --> 00:43:14,340 Dus printf, de som van% d is de placeholder voor een int. 932 00:43:14,340 --> 00:43:20,030 En% d, periode, backslash-n. 933 00:43:20,030 --> 00:43:20,360 >> Oke. 934 00:43:20,360 --> 00:43:21,670 Dus dat is niet echt wiskunde. 935 00:43:21,670 --> 00:43:25,500 Maar als ik wil de som van deze zeggen waarde plus deze waarde gelijk aan dit 936 00:43:25,500 --> 00:43:29,320 andere waarde, hoeveel argumenten in totaal moet ik printf te geven, 937 00:43:29,320 --> 00:43:30,520 uiteindelijk? 938 00:43:30,520 --> 00:43:31,420 Dus vier, toch? 939 00:43:31,420 --> 00:43:33,790 Deze string en dan de drie waarden. 940 00:43:33,790 --> 00:43:37,560 Dus x is de eerste die ik wil zijn in eerst gestopt om de% d. 941 00:43:37,560 --> 00:43:39,270 y gaat worden de volgende. 942 00:43:39,270 --> 00:43:42,030 >> En nu heb ik soort van willen zeggen z, z maar bestaat niet. 943 00:43:42,030 --> 00:43:43,190 Maar dat is geen big deal. 944 00:43:43,190 --> 00:43:45,440 Want wat zou je instinctief doen, vooral als je had een 945 00:43:45,440 --> 00:43:47,820 grafische rekenmachine, wat doe je typt? 946 00:43:47,820 --> 00:43:48,760 Hoe zit het met x plus y? 947 00:43:48,760 --> 00:43:50,200 Dus het is niet een echte variabele. 948 00:43:50,200 --> 00:43:51,820 Het is gewoon de som van twee andere variabelen. 949 00:43:51,820 --> 00:43:53,170 En dat is volkomen legitiem. 950 00:43:53,170 --> 00:43:56,630 C begrijpt ongetwijfeld eenvoudig rekenkunde als deze. 951 00:43:56,630 --> 00:43:58,450 >> Puntkomma, opslaan. 952 00:43:58,450 --> 00:44:02,080 Laat me nu even naar beneden en Typ maken adder, Enter. 953 00:44:02,080 --> 00:44:04,100 Geen fout, dus dat is vooruitgang ook. 954 00:44:04,100 --> 00:44:04,890 Typ adder. 955 00:44:04,890 --> 00:44:07,100 En nog een sneltoets, als je begint te vervelen 956 00:44:07,100 --> 00:44:08,760 met alle commando's - 957 00:44:08,760 --> 00:44:12,650 als je begint te typen een commando, zoals dot slash ad, en dat is waar uw 958 00:44:12,650 --> 00:44:16,020 verveling kicks in, u kunt meestal raken Tabblad om de computer af de 959 00:44:16,020 --> 00:44:20,510 rest van de zin voor u als het niet dubbelzinnig wat moet komen nadat ad. 960 00:44:20,510 --> 00:44:23,950 >> Dus laat me nu ga je gang en u klikt op Enter. 961 00:44:23,950 --> 00:44:27,490 Geef me een int, 1, 2, en gelukkig, het is 3. 962 00:44:27,490 --> 00:44:29,900 Maar zoals altijd, testen van programma's niet verminderen 963 00:44:29,900 --> 00:44:30,820 gewoon proberen het een keer. 964 00:44:30,820 --> 00:44:35,560 Laat me proberen een hoek geval, zoals negatieve 1, geef me 1, en dat men 965 00:44:35,560 --> 00:44:36,210 klopt ook. 966 00:44:36,210 --> 00:44:38,870 En ik wil waarschijnlijk om wat meer te doen strenge tests, maar ik ben vrij 967 00:44:38,870 --> 00:44:40,630 comfortabel met waar dat is op. 968 00:44:40,630 --> 00:44:43,110 >> Nou, laten we nu eens proberen een ander programma dat deze tijd wordt een 969 00:44:43,110 --> 00:44:44,620 beetje andere syntax. 970 00:44:44,620 --> 00:44:46,100 Laat me een nieuw bestand te maken. 971 00:44:46,100 --> 00:44:51,050 Ik zal dit conditions0.c bellen naar lijn up met enkele voorbeeldcode online. 972 00:44:51,050 --> 00:44:55,550 En laat mij ga je gang en doe omvatten cs50.h, omvatten 973 00:44:55,550 --> 00:45:00,320 stdio.h, in de belangrijkste leegte - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Daar gaan we. 976 00:45:01,850 --> 00:45:03,010 Wij hebben onze standaard standaardtekst. 977 00:45:03,010 --> 00:45:08,170 >> En deze keer ga ik printf zeggen, "Ik zou graag een int, alsjeblieft," gewoon om 978 00:45:08,170 --> 00:45:10,030 maken de prompt een beetje vriendelijker. 979 00:45:10,030 --> 00:45:11,620 En nu wil ik een krijgen int van de gebruiker. 980 00:45:11,620 --> 00:45:15,010 Ik ga het n deze tijd noemen, net omdat n klinkt als nummer. 981 00:45:15,010 --> 00:45:18,140 getint, en nu, wat doe Ik wil ermee doen? 982 00:45:18,140 --> 00:45:21,640 Nou, als n - en ik zal in te zoomen - 983 00:45:21,640 --> 00:45:25,930 Als n groter is dan 0, ik wil om het volgende te doen - 984 00:45:25,930 --> 00:45:36,060 printf "Je pakte een positief getal." Anders, ik ga printf type "You 985 00:45:36,060 --> 00:45:37,870 pakte een negatieve 986 00:45:37,870 --> 00:45:39,650 nummer. 'Oke. 987 00:45:39,650 --> 00:45:44,410 Dus dit programma, hoewel ik het deed snel, ziet er goed uit syntactisch. 988 00:45:44,410 --> 00:45:45,010 Laat ik dit proberen. 989 00:45:45,010 --> 00:45:46,890 Maak toestand 0. 990 00:45:46,890 --> 00:45:47,710 Lijkt te lopen. 991 00:45:47,710 --> 00:45:49,230 Staat 0, in te voeren. 992 00:45:49,230 --> 00:45:51,910 Laten we het een int van 50. 993 00:45:51,910 --> 00:45:53,160 Ik pakte een positief getal. 994 00:45:53,160 --> 00:45:54,230 Laten we het nog eens proberen. 995 00:45:54,230 --> 00:45:54,930 Staat 0. 996 00:45:54,930 --> 00:45:56,260 Negatief 50. 997 00:45:56,260 --> 00:45:57,290 Ik pakte een negatief getal. 998 00:45:57,290 --> 00:46:00,350 >> Maar nu, laat me kiezen wat we houden bellen corner geval dat meer 999 00:46:00,350 --> 00:46:04,702 een interessant geval dat u denkt zou kunnen geven u een aantal problemen, 0. 1000 00:46:04,702 --> 00:46:07,940 Nu, ik ben er vrij zeker van dat dit een van die hoek gevallen nul is 1001 00:46:07,940 --> 00:46:12,330 positief noch negatief, dus mijn programma, maar in syntactisch 1002 00:46:12,330 --> 00:46:15,440 corrigeren - het compileert, het loopt - is niet logisch correct. 1003 00:46:15,440 --> 00:46:21,050 Dus wat is de eenvoudige oplossing hier als ik wil op te sporen, als ik wil n verwerken 1004 00:46:21,050 --> 00:46:23,840 gelijk is aan 0 afzonderlijk? 1005 00:46:23,840 --> 00:46:32,980 >> Dus als n gelijk is aan 0, dan wil ik zeggen iets als printf "Je pakte 0." 1006 00:46:32,980 --> 00:46:33,990 Laat mij dit nu proberen. 1007 00:46:33,990 --> 00:46:38,320 Laat me hier terug, duidelijk mijn raam, en opnieuw compileren. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Een fout genereren. 1010 00:46:39,770 --> 00:46:41,630 Maar ik wil je controleren Als n gelijk is aan 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Dus nogmaals, een ander dom ding wennen, gelijk-teken is 1013 00:46:47,720 --> 00:46:48,910 de opdracht operator. 1014 00:46:48,910 --> 00:46:52,240 Dus dit is eigenlijk fout doordat, technisch, hoewel de compiler 1015 00:46:52,240 --> 00:46:56,450 me beschermd tegen mezelf, we zouden technisch te kopiëren 0 in n, waarin 1016 00:46:56,450 --> 00:46:57,590 is niet wat ik wil. 1017 00:46:57,590 --> 00:47:00,950 Ik wil om te testen op gelijkheid met gelijken gelijken. 1018 00:47:00,950 --> 00:47:03,390 En zo dat nu zou kunnen zijn mijn betere oplossing. 1019 00:47:03,390 --> 00:47:07,810 >> Laat me dit eigenlijk opnieuw opslaan als, zeg, voorwaarden 1, om nieuwe en verbeterde. 1020 00:47:07,810 --> 00:47:10,480 Dus nu als ik hercompileren dit, het zou omstandigheden maken - 1021 00:47:10,480 --> 00:47:16,960 whoops - maak voorwaarden 1 dot slash voorwaarden 1, Enter, "Ik zou graag een int, 1022 00:47:16,960 --> 00:47:18,760 alsjeblieft. "Ik ga om te gaan vooruit en type 50. 1023 00:47:18,760 --> 00:47:19,660 Het is nog steeds goed. 1024 00:47:19,660 --> 00:47:21,200 Negatieve 50, nog steeds goed. 1025 00:47:21,200 --> 00:47:24,920 0, en het, inderdaad, gedetecteerd dat ik pakte 0. 1026 00:47:24,920 --> 00:47:28,200 >> Dus wat kan ik nu doen? 1027 00:47:28,200 --> 00:47:32,280 Nou ja, kunnen we zeker meer doen ingewikkelde dingen. 1028 00:47:32,280 --> 00:47:37,240 Maar wat ik zou willen voorstellen is dat we uiteindelijk op deze opmerking hier. 1029 00:47:37,240 --> 00:47:41,680 Als we trekken dit, zie je, misschien, een favoriete cartoon van jou 1030 00:47:41,680 --> 00:47:43,326 tot op vandaag je misschien nooit hebben begrepen. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 En dat is over de kwaliteit van de lach je moet krijgen met CS grappen. 1033 00:47:49,520 --> 00:47:51,060 Dus dat is ongeveer gelijk. 1034 00:47:51,060 --> 00:47:54,900 >> Maar meer dwingend, ik dacht dat ik zou geef ons een beetje teaser voor maandag. 1035 00:47:54,900 --> 00:47:56,430 Dus we zijn begonnen met behulp van gehele getallen. 1036 00:47:56,430 --> 00:47:57,510 We hebben aangeduid praalwagens. 1037 00:47:57,510 --> 00:48:00,120 We hebben zelfs genoemd doubles, die, nogmaals, geef je nummers 1038 00:48:00,120 --> 00:48:01,390 na decimalen. 1039 00:48:01,390 --> 00:48:04,230 >> Maar het blijkt dat de praalwagens en dubbelen, en, echt, computers, 1040 00:48:04,230 --> 00:48:08,470 fundamenteel, kan niet uitdrukken sommige waarden precies. 1041 00:48:08,470 --> 00:48:12,840 We weten uit de wiskunde klassen die je kunt enig aantal cijfers achter de 1042 00:48:12,840 --> 00:48:13,510 decimale punt. 1043 00:48:13,510 --> 00:48:16,460 En je kunt zelfs een verticale balk gezet Zeg ik deze gaan voor altijd. 1044 00:48:16,460 --> 00:48:18,810 >> Helaas, je kunt niet echt dat doen op een computer. 1045 00:48:18,810 --> 00:48:20,400 En dus hoek gevallen voordoen. 1046 00:48:20,400 --> 00:48:23,120 Bijvoorbeeld, stel dat je bent iets te doen financieel. 1047 00:48:23,120 --> 00:48:25,700 Je doet de wiskunde met percentages, en 1048 00:48:25,700 --> 00:48:27,030 met dollars en centen. 1049 00:48:27,030 --> 00:48:29,230 En die centen niet noodzakelijkerwijs line-up. 1050 00:48:29,230 --> 00:48:34,120 Nou, het blijkt dat de fracties van centen kunnen beginnen te kloppen bij 1051 00:48:34,120 --> 00:48:37,250 gemodelleerd met een computersysteem zodanig dat slimme 1052 00:48:37,250 --> 00:48:39,100 mensen kunnen profiteren. 1053 00:48:39,100 --> 00:48:42,650 >> En degenen onder jullie die niet hebben gezien, ik zou als je een 30-tweede teaser van te geven 1054 00:48:42,650 --> 00:48:48,290 een prachtige film bekend als Office Space, die een beeld van een zal schilderen 1055 00:48:48,290 --> 00:48:51,205 probleem dat we zullen aanpakken eerste ding op maandag. 1056 00:48:51,205 --> 00:48:53,960 Als we het volume zou kunnen verhogen een beetje, ik geef je 30 1057 00:48:53,960 --> 00:48:55,495 seconden van Office Space. 1058 00:48:55,495 --> 00:48:55,770 >> [VIDEO AFSPELEN] 1059 00:48:55,770 --> 00:48:59,000 >> -Ik bedoel, je, je nog niet laten zien up en je krijgt om je baan te houden. 1060 00:48:59,000 --> 00:49:00,620 >> -Eigenlijk ben ik gepromoot. 1061 00:49:00,620 --> 00:49:03,240 >> -Ik kon een virus dat zou programmeren rip die plaats af big time. 1062 00:49:03,240 --> 00:49:04,430 >> -Nou, hoe werkt het? 1063 00:49:04,430 --> 00:49:06,782 >> -Elke keer als er een bank transactie waarvan de rente wordt berekend, en er 1064 00:49:06,782 --> 00:49:10,160 duizenden per dag, de computer eindigt up met deze fracties van een cent. 1065 00:49:10,160 --> 00:49:12,030 >> -Maar ik ben niet van plan om doen iets illegaals. 1066 00:49:12,030 --> 00:49:12,660 >> -Illegal? 1067 00:49:12,660 --> 00:49:15,075 Samir is America. 1068 00:49:15,075 --> 00:49:16,570 >> -We moeten zweer. 1069 00:49:16,570 --> 00:49:19,070 >> -Als niemand weet over dit maar ons, oke? 1070 00:49:19,070 --> 00:49:21,920 Geen familie, geen vriendinnen, niemand. 1071 00:49:21,920 --> 00:49:22,700 >> -Natuurlijk. 1072 00:49:22,700 --> 00:49:23,320 >> -Afgesproken. 1073 00:49:23,320 --> 00:49:24,280 >> -Maak je geen zorgen, man. 1074 00:49:24,280 --> 00:49:25,640 Ik zal niet iedereen ofwel vertellen. 1075 00:49:25,640 --> 00:49:26,504 >> [END VIDEO AFSPELEN] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID Malan: Dus dit is dus CS50, dat was Office Space, en het zal allemaal 1077 00:49:30,030 --> 00:49:31,465 zinvol op maandag. 1078 00:49:31,465 --> 00:49:33,940 Zie je dan. 1079 00:49:33,940 --> 00:49:37,880 >> NARRATOR: Bij de volgende CS50, Rob aanpast aan het zijn van de 1080 00:49:37,880 --> 00:49:39,130 Harvard maaltijd plan. 1081 00:49:39,130 --> 00:49:56,160