1 00:00:00,000 --> 00:00:03,353 >> [Speel van musiek] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 David Malan: Hallo, almal. 4 00:00:06,050 --> 00:00:07,777 Dit is CS50 se supersection. 5 00:00:07,777 --> 00:00:09,860 Opgedra afdelings sal nie begin vir 'n ander week. 6 00:00:09,860 --> 00:00:11,580 En so vandag, ek is hier with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 David Malan: --to eintlik 'n blik op die probleem 9 00:00:14,163 --> 00:00:16,110 stel een die kursus se eerste weke van die materiaal, 10 00:00:16,110 --> 00:00:19,780 kry jy georiënteerde met CS50 IDE, 'n bietjie van Linux, die bedryfstelsel wat 11 00:00:19,780 --> 00:00:22,290 loop op IDE, sowel as kyk na sommige van die oorgang 12 00:00:22,290 --> 00:00:25,730 van nuuts af aan C leidende tot die probleem stel een. 13 00:00:25,730 --> 00:00:28,340 >> So sonder verdere uitstel het, in die probleem stel een 14 00:00:28,340 --> 00:00:30,520 jy gaan wees ingestel om CS50 IDE, wat 15 00:00:30,520 --> 00:00:33,230 is hierdie web-gebaseerde programme omgewing wat ons gebruik om 16 00:00:33,230 --> 00:00:34,280 om programme te skryf. 17 00:00:34,280 --> 00:00:37,280 Dit is ontwerp om baie kyk herinner aan 'n tipiese rekenaar 18 00:00:37,280 --> 00:00:39,430 stelsel loop 'n bedryfstelsel stelsel genoem Linux. 19 00:00:39,430 --> 00:00:42,440 Maar dit is in die sogenaamde wolk wat almal beteken in die klas 20 00:00:42,440 --> 00:00:45,100 kan eintlik sy of haar eie rekening en gebruik dit, as well. 21 00:00:45,100 --> 00:00:48,950 >> So die meeste van julle het waarskynlik nooit gebruik 'n Linux-omgewing voor of miskien 22 00:00:48,950 --> 00:00:50,447 selfs 'n command line omgewing. 23 00:00:50,447 --> 00:00:52,280 En 'n command line omgewing is anders. 24 00:00:52,280 --> 00:00:53,200 Dit is alles tekstuele. 25 00:00:53,200 --> 00:00:54,730 Dit is alles sleutelbord opdragte. 26 00:00:54,730 --> 00:00:59,480 En dit is geen muis, geen ikone, geen dialoog vensters nie, geen spyskaarte. 27 00:00:59,480 --> 00:01:00,212 Dit is suiwer teks. 28 00:01:00,212 --> 00:01:01,920 So op die eerste, is dit soort van voel soos 'n stap 29 00:01:01,920 --> 00:01:04,434 terug in terme van sofistikasie. 30 00:01:04,434 --> 00:01:06,600 Maar dit eindig as 'n baie meer kragtige, seker, 31 00:01:06,600 --> 00:01:08,510 vir 'n rekenaar wetenskaplike uiteindelik. 32 00:01:08,510 --> 00:01:09,540 >> So laat ons neem 'n blik. 33 00:01:09,540 --> 00:01:13,850 Hier is ek by CS50.io, via wat kan jy teken in CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 En baie soos in Scratch, daar is drie primêre gebiede om hierdie skerm. 35 00:01:17,414 --> 00:01:20,080 So op die linkerkant, ons het wat sal die lêer leser wees. 36 00:01:20,080 --> 00:01:22,413 En daar is hierdie gids by top, wat nou leeg is 37 00:01:22,413 --> 00:01:24,690 want ek het ontslae te raak van al my lêers voordat supersection. 38 00:01:24,690 --> 00:01:27,599 En dit is waar ons sal red C lêers wat ons skryf. 39 00:01:27,599 --> 00:01:30,890 Bo aan die regterkant, ons het 'n plek waar almal van ons kode gaan geskryf kry. 40 00:01:30,890 --> 00:01:34,610 En inderdaad, as ek op hierdie plus, hierdie gaan om my te laat kies n nuwe lêer. 41 00:01:34,610 --> 00:01:38,310 En hier kan ek begin skryf C-kode of, regtig, 'n aantal ander tale. 42 00:01:38,310 --> 00:01:42,670 >> En dan aan die onderkant waar dit sê jharvard @ ide50-- en joune sal 43 00:01:42,670 --> 00:01:45,080 iets 'n bietjie sê different-- wat dit genoem? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminale venster. 46 00:01:49,310 --> 00:01:49,570 Ja. 47 00:01:49,570 --> 00:01:51,810 So die terminale venster is die sogenaamde command line 48 00:01:51,810 --> 00:01:55,540 koppelvlak via wat jy kan kommunikeer met die onderliggende bedryfstelsel. 49 00:01:55,540 --> 00:01:58,220 En vir nou, ons gaan maak baie min gebruik van this-- 50 00:01:58,220 --> 00:02:01,170 net om saam te stel, om te kyk na fout boodskappe wat ons sien, 51 00:02:01,170 --> 00:02:02,347 en om ons programme te hardloop. 52 00:02:02,347 --> 00:02:04,680 Maar uiteindelik, ons gaan om soveel meer te doen, as well. 53 00:02:04,680 --> 00:02:07,490 En jy kan selfs sagteware te installeer en te administreer jou werkplek 54 00:02:07,490 --> 00:02:09,066 binne CS50 IDE, as well. 55 00:02:09,066 --> 00:02:10,440 Maar meer oor dit 'n ander tyd. 56 00:02:10,440 --> 00:02:12,689 >> So laat ons gaan voort en skryf 'n baie eenvoudige program net 57 00:02:12,689 --> 00:02:15,064 om te gaan deur 'n warm-up van hello.c, wat miskien 58 00:02:15,064 --> 00:02:16,480 die eenvoudigste program wat ons kan skryf. 59 00:02:16,480 --> 00:02:18,330 Ek het reeds oop tot 'n nuwe blad. 60 00:02:18,330 --> 00:02:24,310 Ek gaan om voort te gaan en sê sluit in standaard io.h. 61 00:02:24,310 --> 00:02:25,325 Dan int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 En dan printf ("hello, wêreld" backslash N, naby quote, 64 00:02:35,200 --> 00:02:39,480 naby hakies, en kommapunt. 65 00:02:39,480 --> 00:02:39,990 >> Alles reg. 66 00:02:39,990 --> 00:02:41,700 So nou sien my venster is untitled. 67 00:02:41,700 --> 00:02:44,840 So ek baie vinnig gaan om te gaan na File, Save. 68 00:02:44,840 --> 00:02:46,910 En dit is belangrik dat Ek noem dit nie "hallo." 69 00:02:46,910 --> 00:02:49,243 So 'n baie algemene fout, veral in die probleem stel een 70 00:02:49,243 --> 00:02:52,530 is om per ongeluk net bel jou program "water" of "gulsig" of "Mario" 71 00:02:52,530 --> 00:02:53,890 of "krediet" of die wil. 72 00:02:53,890 --> 00:02:55,970 Maar jy eintlik wil maak seker dat jy die lêer uitbreiding 73 00:02:55,970 --> 00:02:58,928 want dit is die enigste manier waarop die samesteller en ook die kode redakteur 74 00:02:58,928 --> 00:03:00,710 weet dat jy eintlik skryf C-kode. 75 00:03:00,710 --> 00:03:02,280 So laat my gaan voort en klik op Save. 76 00:03:02,280 --> 00:03:05,710 >> En nou, ook, wat CS50 IDE vir ons gedoen het is dit ook 77 00:03:05,710 --> 00:03:07,120 sintaksis uitgelig alles. 78 00:03:07,120 --> 00:03:08,822 So dit is alles gemaak baie kleurvolle. 79 00:03:08,822 --> 00:03:10,780 En die hele doel van dit is nie funksioneel nie. 80 00:03:10,780 --> 00:03:14,290 Dis net om my oë te vestig op die konseptueel verskillende stukke 81 00:03:14,290 --> 00:03:15,310 van hierdie program. 82 00:03:15,310 --> 00:03:17,570 So laat ons gaan voort en stel hierdie. 83 00:03:17,570 --> 00:03:19,490 En ek kan dit stel in 'n paar van die maniere. 84 00:03:19,490 --> 00:03:22,010 En in week een, die ou-skool manier wat ons gedoen het 85 00:03:22,010 --> 00:03:26,250 dit was letterlik by die opdrag line-- "klang hello.c." 86 00:03:26,250 --> 00:03:27,596 En dan slaan ek Enter. 87 00:03:27,596 --> 00:03:29,720 En niks lyk om te gebeur in die terminale venster. 88 00:03:29,720 --> 00:03:32,654 Maar wat het verandering in die IDE? 89 00:03:32,654 --> 00:03:35,320 Waar, weer, IDE beteken net Integrated Development Environment. 90 00:03:35,320 --> 00:03:38,360 Dit is 'n fancy manier om te sê hierdie geïntegreerde ontwikkeling 91 00:03:38,360 --> 00:03:40,620 omgewing vir die ontwikkeling van sagteware. 92 00:03:40,620 --> 00:03:42,477 So, wat het verander in die UI? 93 00:03:42,477 --> 00:03:44,310 Wat het jy agterkom dit is anders, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Ek het opgemerk iets onder die IDE50 gids tot hier. 95 00:03:47,100 --> 00:03:47,850 >> David Malan: Ja. 96 00:03:47,850 --> 00:03:50,230 So hier, nie net het ons "hello.c." 97 00:03:50,230 --> 00:03:53,120 Ons het ook "a.out," wat is soort van 'n stom naam vir 'n program. 98 00:03:53,120 --> 00:03:56,430 Maar inderdaad, dit is die standaard naam vir 'n program wanneer jy net jou kode op te stel 99 00:03:56,430 --> 00:03:59,110 en moenie die samesteller vertel wat lêer uitset. 100 00:03:59,110 --> 00:04:01,790 So as ek wil hierdie hardloop, ek nodig het om die compiler-- vertel 101 00:04:01,790 --> 00:04:05,340 of eerder, ek moet vertel die werkplek dat ek 102 00:04:05,340 --> 00:04:09,780 wil die program genaamd hardloop "a.out." 103 00:04:09,780 --> 00:04:10,550 Betree. 104 00:04:10,550 --> 00:04:12,474 En daar is "hello, wêreld. "Nou is die" ./ ". 105 00:04:12,474 --> 00:04:13,390 is eintlik belangrik is. 106 00:04:13,390 --> 00:04:16,050 Selfs al is gewoonlik net ons skryf die name van opdragte, 107 00:04:16,050 --> 00:04:19,060 wanneer dit 'n program wat jy het geskryf, wil jy "./" sê 108 00:04:19,060 --> 00:04:22,460 want dit uitdruklik vertel Linux wat jy wil om 'n program genaamd hardloop 109 00:04:22,460 --> 00:04:26,930 "a.out" dit is in hierdie, waar dot beteken hierdie gids dat ek tans 110 00:04:26,930 --> 00:04:31,600 in, wat gebeur om te wees genoem werkspasie, "a.out. 111 00:04:31,600 --> 00:04:35,410 Want as ek het net gesê "a.out," Gee, Ek gaan om te kry "a.out opdrag nie 112 00:04:35,410 --> 00:04:38,035 gevind "omdat die computer-- want ek uitgevind "a.out," 113 00:04:38,035 --> 00:04:40,910 dit het nie kom met die computer-- nie weet waar om te kyk vir dit, 114 00:04:40,910 --> 00:04:43,590 selfs al is dit reg onder my neus, om so te praat. 115 00:04:43,590 --> 00:04:44,090 OK. 116 00:04:44,090 --> 00:04:49,910 So kan ons dit verander na wees "klang-o hallo hello.c." 117 00:04:49,910 --> 00:04:53,030 En as ek druk Enter watter program gaan dit uitset vir my? 118 00:04:53,030 --> 00:04:55,710 Wat is die naam van die lêer? 119 00:04:55,710 --> 00:04:57,500 Ja, in die rug. 120 00:04:57,500 --> 00:04:58,479 Dis reg. "Goeie dag." 121 00:04:58,479 --> 00:05:00,520 So "hallo" gaan wees die naam van die program 122 00:05:00,520 --> 00:05:04,610 want ons het gebruik om 'n sogenaamde command line argument, wat net 123 00:05:04,610 --> 00:05:08,120 'n manier om die gedrag van veranderende samesteller eintlik uitset 124 00:05:08,120 --> 00:05:09,450 'n spesifieke lêer naam. 125 00:05:09,450 --> 00:05:12,400 En inderdaad, as ek zoom uit en kyk hier, 126 00:05:12,400 --> 00:05:17,430 nou het ek nie net "a.out" en "hello.c" maar ook "hallo" as well. 127 00:05:17,430 --> 00:05:22,410 So nou kan ek doen "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 En daar is "hello, wêreld." 129 00:05:23,640 --> 00:05:25,640 Maar lastly-- en dit nou sal die konvensie 130 00:05:25,640 --> 00:05:27,590 ons gebruik regdeur die semester, typically-- 131 00:05:27,590 --> 00:05:30,070 is jy kan ook net sê "maak hallo." 132 00:05:30,070 --> 00:05:33,370 En inderdaad, dit is te sê dit is tot op datum, omdat dit reeds bestaan. 133 00:05:33,370 --> 00:05:37,860 Laat my gaan voort en te verwyder, met die rm opdrag, beide "a.out" - 134 00:05:37,860 --> 00:05:39,644 en sê: "verwyder gereelde lêer a.out?" 135 00:05:39,644 --> 00:05:41,810 Wat net beteken, is jy seker dat jy dit wil verwyder? 136 00:05:41,810 --> 00:05:42,880 Ek gaan om te sê ja. 137 00:05:42,880 --> 00:05:46,690 En dan gaan ek om te verwyder "hallo", maar nie "hello.c." 138 00:05:46,690 --> 00:05:49,920 Ek gaan om te sê "ja" uitdruklik, maar "y" is voldoende, as well. 139 00:05:49,920 --> 00:05:52,140 >> En nou sien as ek tik ls-- wat, onthou, 140 00:05:52,140 --> 00:05:55,540 beteken dit list-- lys van al van die lêers in my gids. 141 00:05:55,540 --> 00:05:57,850 En inderdaad, as ek zoom uit en kyk na bo links, 142 00:05:57,850 --> 00:05:59,730 dit bevestig dat dit wat is in hierdie gids, selfs 143 00:05:59,730 --> 00:06:04,990 al is dit bestempel as IDE50 hier en nie werkspasie, dit is net "hello.c." 144 00:06:04,990 --> 00:06:09,152 So nou af hier, as ek nie "maak hello," Gee, 145 00:06:09,152 --> 00:06:12,360 nou sien ek 'n baie langer, maar 'n opdrag meer gesofistikeerde opdrag wat gaan 146 00:06:12,360 --> 00:06:13,940 nuttig in die komende weke te wees. 147 00:06:13,940 --> 00:06:16,720 En nou kan ek sê "./hello." 148 00:06:16,720 --> 00:06:19,257 >> So laat ons neem 'n vinnige toer 'n ander Linux instruksies. 149 00:06:19,257 --> 00:06:21,840 Waarom dan nie ons neem 'n stap rug en eintlik kyk na C meer 150 00:06:21,840 --> 00:06:25,020 algemeen, die oorgang van Scratch C, en dan afsluit met 'n blik 151 00:06:25,020 --> 00:06:27,305 by die eerste probleem in C. Alle regte. 152 00:06:27,305 --> 00:06:30,430 So ek gaan om voort te gaan en net skoon my werkplek met Control-L net 153 00:06:30,430 --> 00:06:31,429 om die skerm netjies te hou. 154 00:06:31,429 --> 00:06:33,520 Maar dit het geen funksionele anders beïnvloed. 155 00:06:33,520 --> 00:06:35,820 >> Onthou dat ons gesien het 'n paar bevele nou. 156 00:06:35,820 --> 00:06:39,900 Dus het ons klang gesien, wat oor die algemeen jy sal nie meer met die hand te voer. 157 00:06:39,900 --> 00:06:41,650 Ons sal plaas gebruik. 158 00:06:41,650 --> 00:06:45,290 Maar ons het ook ls, wat 'n toon lys van die lêers in my gids. 159 00:06:45,290 --> 00:06:48,750 En nou, waarom is daar twee there-- lêers nou, "hallo" en "hello.c." 160 00:06:48,750 --> 00:06:52,240 Waarom is daar 'n ster of 'n asterisk na "hallo"? 161 00:06:52,240 --> 00:06:54,900 Wat het dit te kenne, gebaseer oor wat ons gesien het in week een? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Wat dink jy? 164 00:07:00,400 --> 00:07:02,742 Wat beteken die ster dui? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- die program "hallo"? 166 00:07:04,614 --> 00:07:05,530 David Malan: "Hallo *". 167 00:07:05,530 --> 00:07:06,330 Ja. 168 00:07:06,330 --> 00:07:07,760 O, ja? 169 00:07:07,760 --> 00:07:08,639 O, uitvoerbare. 170 00:07:08,639 --> 00:07:09,180 Dis reg. 171 00:07:09,180 --> 00:07:10,890 So dit beteken dat "hallo" is uitvoerbare. 172 00:07:10,890 --> 00:07:13,430 So ja, dit is hoekom Ek kan doen "./hello." 173 00:07:13,430 --> 00:07:13,930 Alles reg. 174 00:07:13,930 --> 00:07:15,179 So wat anders kan ek hier doen nie? 175 00:07:15,179 --> 00:07:17,290 Wel, dit blyk ek kan skep ook dopgehou. 176 00:07:17,290 --> 00:07:20,924 So laat my gaan voort en skep byvoorbeeld, 'n gids "pset1". 177 00:07:20,924 --> 00:07:23,590 En die probleem stel spesifikasie sal jy presies dit te doen, 178 00:07:23,590 --> 00:07:25,260 sodat jy nie hoef te onthou vandag. 179 00:07:25,260 --> 00:07:27,340 Maar "mkdir pset1" lyk geen invloed hê. 180 00:07:27,340 --> 00:07:30,540 Maar weereens, geen fout boodskap is oor die algemeen 'n goeie ding. 181 00:07:30,540 --> 00:07:34,060 So as ek tik "ls" now-- ah, nou Ek het 'n uitvoerbare lêer genaamd 182 00:07:34,060 --> 00:07:36,570 "hallo", 'n C lêer genaamd "hello.c." 183 00:07:36,570 --> 00:07:40,860 En dan is die afsluitende slash, om so te praat nie, beteken dat hierdie is 'n gids. 184 00:07:40,860 --> 00:07:42,510 >> So ja, nou wil ek dit oop te maak. 185 00:07:42,510 --> 00:07:45,730 En ek het nie dubbel kliek op dit soos in 'n GUI, 'n grafiese omgewing. 186 00:07:45,730 --> 00:07:48,550 Ek plaas sê "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Betree. 188 00:07:49,640 --> 00:07:53,100 Niks interessant lyk het gebeur, behalwe my klein vinnige 189 00:07:53,100 --> 00:07:57,300 here-- dit is Linux se manier herinner my waar ek is, so what gids oop is. 190 00:07:57,300 --> 00:08:00,080 Dit is net vir my sê uitdruklik as grafies teenoor. 191 00:08:00,080 --> 00:08:05,100 En as ek tik "ls," Hoekom moet ek 'n ander te sien onmiddellik gevra, dink jy, 192 00:08:05,100 --> 00:08:07,269 toe ek 'n lys van die inhoud van pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: jy waarskynlik nie iets daar. 194 00:08:09,310 --> 00:08:09,630 David Malan: Ja. 195 00:08:09,630 --> 00:08:11,510 So dan het ons nie ooglopend geskep enigiets daar 196 00:08:11,510 --> 00:08:13,150 want ek het net het die gids. 197 00:08:13,150 --> 00:08:17,690 Nou, as ek wou 'n file-- vir die skep Byvoorbeeld, ek kon nie 'n nuwe lêer te skep. 198 00:08:17,690 --> 00:08:20,190 En dan het ek kan gaan Spaar en stoor dit as, 199 00:08:20,190 --> 00:08:23,090 soos, "mario.c" as jy doen die standaard uitgawe van pset een. 200 00:08:23,090 --> 00:08:27,610 En dan, net soos enige Mac of PC, net kies die gids "pset1, Save. 201 00:08:27,610 --> 00:08:28,740 En nou het die lêer is leeg. 202 00:08:28,740 --> 00:08:31,160 Maar laat ons in zoom weer vir 'n tweede. 203 00:08:31,160 --> 00:08:32,470 Kom ons doen ls hier. 204 00:08:32,470 --> 00:08:34,470 Nou sien ons "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> So is daar 'n paar ander opdragte wat is die moeite werd om in gedagte oor time-- 206 00:08:37,850 --> 00:08:41,200 duidelik of Control-L is wat ek was slaan; mkdir ons gesien; 207 00:08:41,200 --> 00:08:45,240 RM ons gesien het, so goed, wat is vir die verwydering van 'n lêer te verwyder of. 208 00:08:45,240 --> 00:08:49,310 Pasop wat jy kan also-- en as jy kyk by online tutorials, sal jy RM rf 209 00:08:49,310 --> 00:08:52,630 is 'n baie algemene manier om te sê 'n gids wat goed in dit te verwyder. 210 00:08:52,630 --> 00:08:54,280 Net super, super versigtig. 211 00:08:54,280 --> 00:08:58,780 rf beteken rekursief verwyder wat dit ookal is 212 00:08:58,780 --> 00:09:01,150 jy probeer om te verwyder en geweld verwyder. 213 00:09:01,150 --> 00:09:04,630 So rekursiewe middel as dit 'n gids met 'n gids met 'n gids met 'n gids, 214 00:09:04,630 --> 00:09:05,690 almal van hulle verwyder. 215 00:09:05,690 --> 00:09:08,680 En geweld beteken nie eens my vra Ja of Nee, ek seker? 216 00:09:08,680 --> 00:09:11,960 So dit is 'n super gevaarlike manier verwydering baie dinge vinnig. 217 00:09:11,960 --> 00:09:17,210 Maar beware-- te dikwels doen 'n onverskrokke student per ongeluk verwyder, sê, pset 218 00:09:17,210 --> 00:09:18,000 een, byvoorbeeld. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: En as hulle net doen r, gaan hulle 220 00:09:19,833 --> 00:09:21,870 om hulle te vra oor elke enkele lêer. 221 00:09:21,870 --> 00:09:22,790 >> David Malan: Wat is matig irriterend. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Ja. 223 00:09:23,480 --> 00:09:25,813 >> David Malan: So dit is waarom so baie van ons, self ingesluit, 224 00:09:25,813 --> 00:09:27,070 is in die gewoonte van die gebruik van rf. 225 00:09:27,070 --> 00:09:27,861 Maar dit is gevaarlik. 226 00:09:27,861 --> 00:09:29,010 So koper pasop. 227 00:09:29,010 --> 00:09:31,050 En dan is mv soort Interessant naam. 228 00:09:31,050 --> 00:09:33,600 So, dit is die skuif opdrag, wat voel 'n bietjie weird 229 00:09:33,600 --> 00:09:37,260 omdat jy inderdaad kan dit gebruik om lêers te beweeg van een plek na 'n ander. 230 00:09:37,260 --> 00:09:39,970 Byvoorbeeld, veronderstel dat ek deurmekaar. 231 00:09:39,970 --> 00:09:43,660 Veronderstel dat ek geskep 'n nuwe lêer vir die pset. 232 00:09:43,660 --> 00:09:46,320 En ek gered word as "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Maar dink ek per ongeluk stoor dit in IDE50-- so in my werkplek self 234 00:09:49,970 --> 00:09:51,580 en nie in pset1. 235 00:09:51,580 --> 00:09:53,960 >> Jy kan soveel links bo te sien. 236 00:09:53,960 --> 00:09:55,284 Daar is "greedy.c." 237 00:09:55,284 --> 00:09:56,450 En daar is 'n paar oplossings. 238 00:09:56,450 --> 00:09:58,324 So een, ek kan gebruik om die super gebruikersvriendelike wyse 239 00:09:58,324 --> 00:09:59,740 van net te sleep nie. 240 00:09:59,740 --> 00:10:01,910 En dit sou werklik los hierdie probleem. 241 00:10:01,910 --> 00:10:04,967 Maar vandag, ons probeer om te kyk na die meer arcane maar kragtige maniere 242 00:10:04,967 --> 00:10:05,550 hierdie doen. 243 00:10:05,550 --> 00:10:07,880 So laat my toe om "ls" in pset1. 244 00:10:07,880 --> 00:10:09,690 En ek sien net "mario.c." 245 00:10:09,690 --> 00:10:13,450 Laat my gaan voort en doen "cd ..". 246 00:10:13,450 --> 00:10:15,320 So CD is weer verandering gids. 247 00:10:15,320 --> 00:10:18,130 ".." Beteken wat, al is? 248 00:10:18,130 --> 00:10:21,100 Laaste keer het ek gesê "cd pset1 "om te gaan in pset1. 249 00:10:21,100 --> 00:10:24,360 So as ek sê "cd ..", wat doen ek? 250 00:10:24,360 --> 00:10:24,910 Agteruit. 251 00:10:24,910 --> 00:10:25,150 Ja. 252 00:10:25,150 --> 00:10:26,750 >> So dit gaan die sogenaamde ouer. 253 00:10:26,750 --> 00:10:29,730 Gaan een vlak, soos verlaat uit 'n gids. 254 00:10:29,730 --> 00:10:30,500 So Enter. 255 00:10:30,500 --> 00:10:31,900 En inderdaad, kyk wat dit gedoen het. 256 00:10:31,900 --> 00:10:37,070 Dit verskuif my net in werkspasie plaas van in pset1, wat in werkspasie. 257 00:10:37,070 --> 00:10:39,710 As ek dan nou tik "ls", daar is 'n hele klomp van die dinge. 258 00:10:39,710 --> 00:10:41,650 Daar is "greedy.c". 259 00:10:41,650 --> 00:10:48,720 So nou laat my gebruik mv letterlik beweeg "greedy.c" in pset1. 260 00:10:48,720 --> 00:10:51,120 En so 'n klomp Linux instruksies werk hierdie presies soos. 261 00:10:51,120 --> 00:10:54,470 Hulle neem geen argumente of hulle een te neem argument of neem hulle twee command line 262 00:10:54,470 --> 00:10:55,449 argumente en so meer. 263 00:10:55,449 --> 00:10:57,240 En in hierdie geval, dit is letterlik doen wat 264 00:10:57,240 --> 00:11:01,670 dit sê, al is dit succinctly-- greedy.c beweeg in pset1. 265 00:11:01,670 --> 00:11:02,310 Betree. 266 00:11:02,310 --> 00:11:03,310 Niks lyk om te gebeur. 267 00:11:03,310 --> 00:11:06,180 Maar as ek dit weer doen 'n ls, gulsig is weg. 268 00:11:06,180 --> 00:11:12,437 En as ek doen "cd pset1", Tik, en dan ls weer, is dit nou in die regte plek. 269 00:11:12,437 --> 00:11:14,270 As 'n eenkant, as vir sommige reason-- veral 270 00:11:14,270 --> 00:11:16,194 as jy het hortend verbindingsnetwerk 271 00:11:16,194 --> 00:11:18,360 of jy rondloop kampus met jou laptop deksel 272 00:11:18,360 --> 00:11:20,180 gesluit is en maak dit dan weer en jou werkplek 273 00:11:20,180 --> 00:11:21,730 lyk ietwat uit pas, geen groot deal. 274 00:11:21,730 --> 00:11:23,646 Net herlaai jou browser venster, en dit moet 275 00:11:23,646 --> 00:11:26,339 resync sodat die linker-hand lêer leser lyk presies 276 00:11:26,339 --> 00:11:27,380 soos die terminaal venster. 277 00:11:27,380 --> 00:11:27,921 Nie te bekommer nie. 278 00:11:27,921 --> 00:11:31,460 Wanneer jy twyfel, herlaai die bladsy, so Solank as wat jy het die lêers reeds gered. 279 00:11:31,460 --> 00:11:31,960 OK. 280 00:11:31,960 --> 00:11:34,710 So mv kan ook gebruik word om lêers te hernoem. 281 00:11:34,710 --> 00:11:36,760 En laat ons 'n blik op hierdie laaste opdrag hier. 282 00:11:36,760 --> 00:11:39,950 So suppose-- en dit is super algemeen, ook vroeg op. 283 00:11:39,950 --> 00:11:46,400 Sommige studente soms 'n lêer te skep genoem, laat say-- wat is 'n ander een? 284 00:11:46,400 --> 00:11:47,730 Soos "WATER.C." 285 00:11:47,730 --> 00:11:51,080 So ek sal net gil, vir geen rede, in hoofletters. 286 00:11:51,080 --> 00:11:53,190 Maar dit is nie die korrekte naam vir die lêer 287 00:11:53,190 --> 00:11:56,660 as net omdat ons probleem stel spesifikasie nie vertel 288 00:11:56,660 --> 00:11:59,430 om die lêer as hoofletters red "WATER.C." 289 00:11:59,430 --> 00:12:01,320 In plaas daarvan, ons verwag "water.c" in klein. 290 00:12:01,320 --> 00:12:03,140 En, in werklikheid, is dit problematies omdat check50, 291 00:12:03,140 --> 00:12:04,370 'n program wat jy gaan om te voldoen aan in die probleem 292 00:12:04,370 --> 00:12:07,350 stel wat outomaties toetse die korrektheid van jou kode 293 00:12:07,350 --> 00:12:11,615 gaan gil op jou as dit kan nie vind "water.c" in alle klein. 294 00:12:11,615 --> 00:12:12,712 >> So ek moet dit regmaak. 295 00:12:12,712 --> 00:12:14,920 So baie verskillende maniere om doen dit, waarvan die eerste 296 00:12:14,920 --> 00:12:18,330 sou wees om beheer-klik of regs-kliek die naam van die lêer en net verander Naam verander. 297 00:12:18,330 --> 00:12:19,740 Heeltemal fyn om dit te doen. 298 00:12:19,740 --> 00:12:21,820 Maar weereens, vandag, laat ons doen dit 'n bietjie liefhebber. 299 00:12:21,820 --> 00:12:26,680 Kom ons gebruik mv verander "WATER.C" na "water.c." 300 00:12:26,680 --> 00:12:30,690 So kan jy ook die eerste argument gebruik om dit te hernoem na die tweede argument 301 00:12:30,690 --> 00:12:34,455 As die tweede argument is nie, in Trouens, 'n gids of 'n gids naam. 302 00:12:34,455 --> 00:12:35,120 >> Alles reg. 303 00:12:35,120 --> 00:12:39,560 En laastens, 'n bietjie trick-- so ek is in My Workspace gids op die oomblik. 304 00:12:39,560 --> 00:12:43,660 As ek wil om te kry in pset een Ek kan seker tik "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Maar dit is so vervelig om "pset1" tik of langer lêer name of gids name 306 00:12:47,260 --> 00:12:47,980 steeds. 307 00:12:47,980 --> 00:12:51,960 So dikwels in Linux, wat wat jy kan doen is tik "asb" 308 00:12:51,960 --> 00:12:56,100 en net verveeld, druk Tab, en laat die rekenaar figuur dit uit vir jou. 309 00:12:56,100 --> 00:12:58,190 Super nuttig om te kry in daardie gewoonte. 310 00:12:58,190 --> 00:13:01,079 Die enigste vangs is as jy veelvuldige lêers of gidse begin 311 00:13:01,079 --> 00:13:02,870 met die letter "p" of "PS," jy mag hê 312 00:13:02,870 --> 00:13:05,525 om 'n paar meer voor die tik rekenaar weet wat om te doen nie. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Ons wil kortpaaie. 314 00:13:06,820 --> 00:13:08,695 >> David Malan: Dit wil red jy so baie tyd. 315 00:13:08,695 --> 00:13:11,930 En ook, soos ons sê in lesing, jy kan in die geskiedenis blaai, op en af, 316 00:13:11,930 --> 00:13:15,461 om uit te vind wat onlangs uitgevoer opdragte, as well. 317 00:13:15,461 --> 00:13:15,960 Alles reg. 318 00:13:15,960 --> 00:13:20,904 So nou, laat ons ons aandag terug om 'n eenvoudige program, hello wêreld. 319 00:13:20,904 --> 00:13:22,195 Dus het ons hierdie presies saamgestel. 320 00:13:22,195 --> 00:13:24,050 En nou, waarom nie ons 'n blik op die datatipes 321 00:13:24,050 --> 00:13:26,776 en dan die oorgang van 'n paar ooreenstemmende Scratch blokke C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 So nou dat jy begin programme te skryf in C, 324 00:13:30,031 --> 00:13:32,530 ons gaan om te begin praat oor datatipes en veranderlikes. 325 00:13:32,530 --> 00:13:37,570 So 'n paar tipes data wat jy wil weet nou begin 326 00:13:37,570 --> 00:13:39,400 is die mense wat uitgelig in blou. 327 00:13:39,400 --> 00:13:42,420 So het ons int eerste, wat staan ​​vir heelgetal. 328 00:13:42,420 --> 00:13:46,075 En dat hou heelgetalle, soos jy dalk guessed-- so 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 en enige ander heelgetalle dat jy kan dink. 330 00:13:47,950 --> 00:13:48,730 >> David Malan: En ook negatief. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: En ook negatiewe, yep. 332 00:13:50,220 --> 00:13:51,450 En 0. 333 00:13:51,450 --> 00:13:54,250 Dan het ons dryf, wat swaai punt nommers. 334 00:13:54,250 --> 00:13:58,360 So dit is al die reële getalle wat desimale punte. 335 00:13:58,360 --> 00:14:03,960 So 5,0, 5,2, en selfs meer syfers na die desimale punt 336 00:14:03,960 --> 00:14:05,620 so goed, en ook negatiewe. 337 00:14:05,620 --> 00:14:07,530 Dan het ons kar wat 'n karakter. 338 00:14:07,530 --> 00:14:10,240 So ek dink ons ​​het gepraat oor dit in lesing vandag. 339 00:14:10,240 --> 00:14:15,682 Maar ons het briewe vir example-- A, B, C-- wat gestoor kan word as 'n kar. 340 00:14:15,682 --> 00:14:18,390 Maar dan moet ons 'n baie meer simbole wat gestoor kan word as 'n kar. 341 00:14:18,390 --> 00:14:22,380 En diegene gestoor as ASCII. 342 00:14:22,380 --> 00:14:25,280 >> En dan het ons Bool, wat Booleans is. 343 00:14:25,280 --> 00:14:29,067 En diegene evalueer waar of Vals of 1 en 0, onderskeidelik. 344 00:14:29,067 --> 00:14:31,650 David Malan: En onthou dat Bool kom van die CS50 biblioteek. 345 00:14:31,650 --> 00:14:33,300 So dit is nie gebou in C, maar dit is super nuttig 346 00:14:33,300 --> 00:14:34,850 die idee van ware en valse hê. 347 00:14:34,850 --> 00:14:36,990 En selfs al is jy kan think-- pret feite. 348 00:14:36,990 --> 00:14:43,700 A Bool tegnies moet hoeveel stukkies, waarlik, om verteenwoordig True versus onwaar? 349 00:14:43,700 --> 00:14:47,910 Hoeveel stukkies dink jy jy nodig sou wees, maksimaal? 350 00:14:47,910 --> 00:14:48,790 Ja, net een. 351 00:14:48,790 --> 00:14:52,077 So dit blyk dat C kan nie gee jy net 'n bietjie. 352 00:14:52,077 --> 00:14:54,160 Die kleinste eenheid van meet wat jy kan kry is agt. 353 00:14:54,160 --> 00:14:57,090 So dit is 'n bietjie verkwistende hulle jy met behulp van 'n hele byte, of agt stukkies, 354 00:14:57,090 --> 00:14:58,340 om verteenwoordig Waar of Vals. 355 00:14:58,340 --> 00:15:01,807 Maar dit is net die manier waarop dit is in C geïmplementeer deur die CS50 biblioteek. 356 00:15:01,807 --> 00:15:04,890 MARIA: En dan is die mense wat ons is gaan nie om te praat oor so wyd 357 00:15:04,890 --> 00:15:08,060 reg now-- dubbel, dit is vir groter dryf. 358 00:15:08,060 --> 00:15:09,811 Lang lang en kort is ook vir heelgetalle. 359 00:15:09,811 --> 00:15:10,643 David Malan: Inderdaad. 360 00:15:10,643 --> 00:15:13,190 In hacker uitgawe van pset een ons eintlik lang lang gebruik. 361 00:15:13,190 --> 00:15:15,801 Maar vir die standaard uitgawe, dit moet nie nodig wees nie. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 OK. 364 00:15:17,361 --> 00:15:20,110 So operators-- jy moet waarskynlik vertroud met die meeste van hulle nie. 365 00:15:20,110 --> 00:15:22,620 Daarbenewens +; aftrek, -. 366 00:15:22,620 --> 00:15:24,070 Vir vermenigvuldiging, ons het die *. 367 00:15:24,070 --> 00:15:25,900 So nie die X dat ons gewoonlik gebruik. 368 00:15:25,900 --> 00:15:27,840 Afdeling, het ons die agteroorskuinsstreep. 369 00:15:27,840 --> 00:15:31,380 En modulo is ons laaste operateur wat ons gaan om te praat oor nou. 370 00:15:31,380 --> 00:15:35,610 Dit is 'n operateur wat ons toelaat om te neem die res van 'n afdeling. 371 00:15:35,610 --> 00:15:40,630 So as ons het 4% 2, 4 verdeel deur 2 is 2 met 'n res van 0. 372 00:15:40,630 --> 00:15:41,740 So 4% 2 is 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 is 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 is 4, as jy kan raai. 375 00:15:44,870 --> 00:15:48,860 En onthou wanneer die gebruik van al hierdie operateurs die PEMDAS reëls te gebruik. 376 00:15:48,860 --> 00:15:54,060 >> David Malan: So duidelik wees, as jy doen 4% 2, hoekom is dit 0, presies? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Omdat 4 gedeel deur 2 is 2 met 'n res van 0. 378 00:15:57,480 --> 00:16:00,752 So modulo gee ons dat restant as in teenstelling met die uitslag van die verdeling. 379 00:16:00,752 --> 00:16:02,960 David Malan: En inderdaad, wat ons hierdie nuttige vind 380 00:16:02,960 --> 00:16:05,640 , is dat in 'n paar probleme dit is nie noodwendig die een, 381 00:16:05,640 --> 00:16:08,040 as jy wil hê na het effek van die beperking van jouself 382 00:16:08,040 --> 00:16:10,720 om 'n reeks getalle soos 0 deur iets, 383 00:16:10,720 --> 00:16:13,904 jy kan gebruik om modulo rondom draai vroeër as soos die 2000000000 384 00:16:13,904 --> 00:16:16,320 of die 4 miljard waarde wat Ons het gepraat oor in lesing. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Ja. 386 00:16:16,870 --> 00:16:19,429 En selfs in "gulsig" Ons kan. 387 00:16:19,429 --> 00:16:21,345 David Malan: Ja, in probleem stel een, as well. 388 00:16:21,345 --> 00:16:22,520 MARIA: Ja, mooi. 389 00:16:22,520 --> 00:16:24,340 David Malan: Goeie wenk. 390 00:16:24,340 --> 00:16:25,750 MARIA: Jammer. 391 00:16:25,750 --> 00:16:28,590 Boole expressions-- so vir Boolese operatore, 392 00:16:28,590 --> 00:16:31,770 ons gaan oor al praat van hierdie wat jy sien hier. 393 00:16:31,770 --> 00:16:35,310 So nou het ons twee gelyke tekens gelys vir gelykes. 394 00:16:35,310 --> 00:16:38,650 So dit is vir 'n vergelyking. 395 00:16:38,650 --> 00:16:40,830 Tot dusver het ons net een gesien gelyk teken. 396 00:16:40,830 --> 00:16:44,870 Dit is wanneer ons toewys 'n waarde na 'n veranderlike. 397 00:16:44,870 --> 00:16:50,160 So as ons gesien int n = 5, dan ons het opgedra 5 aan die veranderlike n. 398 00:16:50,160 --> 00:16:55,600 Maar as ons wil == gebruik vergelyking, kan ons as n == 5 keur. 399 00:16:55,600 --> 00:16:58,310 En as N == 5, dan is dit is waar. 400 00:16:58,310 --> 00:17:01,950 >> So Boolese operatore toelaat dat ons, basies, 401 00:17:01,950 --> 00:17:04,670 om Boolean evalueer uitdrukkings waar of vals. 402 00:17:04,670 --> 00:17:07,819 So nie equals-- ons die uitroepteken en gelykes. 403 00:17:07,819 --> 00:17:14,240 Sodat ons kan ook kyk of N nie gelyk 5-- so n! = 5. 404 00:17:14,240 --> 00:17:17,640 Minder as, minder as of gelyk aan, groter as, groter as of gelyk aan 405 00:17:17,640 --> 00:17:20,720 en dan het ons die logiese EN en die logiese OR. 406 00:17:20,720 --> 00:17:24,060 En diegene ons toelaat om te evalueer verskeie Boole uitdrukkings bymekaar 407 00:17:24,060 --> 00:17:27,930 basies saam as kom 'n hele Boole-uitdrukking. 408 00:17:27,930 --> 00:17:34,970 So as ons wil 'n aantal te vind, sê wat groter is as 5 maar minder as 15 409 00:17:34,970 --> 00:17:39,810 op dieselfde tyd, sal ons die logiese EN operateur om te sien as n 410 00:17:39,810 --> 00:17:42,937 meer as 5 && n minder as 15. 411 00:17:42,937 --> 00:17:44,770 David Malan: En hier, Ook, dit is regtig maklik 412 00:17:44,770 --> 00:17:47,290 vroeg op om per ongeluk gebruik net 'n enkele ampersand 413 00:17:47,290 --> 00:17:48,572 of 'n enkele vertikale bar. 414 00:17:48,572 --> 00:17:51,280 En hopelik sal die samesteller gil op jou omdat hulle eintlik 415 00:17:51,280 --> 00:17:52,530 het 'n baie ander betekenis. 416 00:17:52,530 --> 00:17:55,660 Vir diegene nuuskierig, hulle is gebruik word vir bis bedrywighede, 417 00:17:55,660 --> 00:17:57,197 wat op individuele stukkies. 418 00:17:57,197 --> 00:17:58,780 Maar jy doen wil hê dat die paar van hulle hier. 419 00:17:58,780 --> 00:18:01,560 En super belangrik is dat eerste een, die gelyk teken, 420 00:18:01,560 --> 00:18:05,270 wat die operateur gelykheid as teenstelling met die opdrag operateur. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: En die vertikale bar is geleë tussen die Delete en Return. 422 00:18:08,552 --> 00:18:09,260 David Malan: Ja. 423 00:18:09,260 --> 00:18:11,420 Op 'n tipiese Amerikaanse sleutelbord. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 So laat spring regs in voorwaardelike stellings. 426 00:18:15,890 --> 00:18:18,300 In Scratch, jy het reeds gesien, waarskynlik, 427 00:18:18,300 --> 00:18:22,730 As stellings wat jou toelaat om kyk of iets waar is, dan is 428 00:18:22,730 --> 00:18:23,660 iets anders te doen. 429 00:18:23,660 --> 00:18:28,410 So jy dalk wou om te kyk of jou sprite is 430 00:18:28,410 --> 00:18:31,410 raak 'n ander sprite of die grens van jou skerm. 431 00:18:31,410 --> 00:18:35,520 En dan kan jy wil die einde van die spel of iets anders te doen. 432 00:18:35,520 --> 00:18:40,000 So het die sintaksis vir daardie is "as (toestand)." 433 00:18:40,000 --> 00:18:46,820 So as jou sprite raak iets, dan is binne-in die krullerige draadjies. 434 00:18:46,820 --> 00:18:48,980 >> Dan het ons if-else stellings. 435 00:18:48,980 --> 00:18:54,080 Anders kan ons iets doen indien die voorwaarde dat ons 436 00:18:54,080 --> 00:18:55,870 kyk vir in die begin is nie waar nie. 437 00:18:55,870 --> 00:19:01,530 So as die sprite raak die grens doen, anders doen iets anders. 438 00:19:01,530 --> 00:19:04,030 So anders doen iets anders. 439 00:19:04,030 --> 00:19:07,530 Dan het ons 'n kort voorbeeld vir hierdie. 440 00:19:07,530 --> 00:19:11,551 So as (military_time <12), het ons wil printf "Goeie môre!" 441 00:19:11,551 --> 00:19:13,300 Anders gaan ons printf "Goeie aand!" 442 00:19:13,300 --> 00:19:14,860 Basiese voorbeeld. 443 00:19:14,860 --> 00:19:15,680 >> David Malan: Goed. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 So nou het ons skakelaar state. 446 00:19:18,560 --> 00:19:21,960 Skakel state in die algemeen kan ons toelaat om 'n baie van die dieselfde ding te doen 447 00:19:21,960 --> 00:19:25,070 dat ons net gepraat oor met of stellings. 448 00:19:25,070 --> 00:19:29,440 Byvoorbeeld, nou het ons die algemene vorm van die skakelaar verklaring 449 00:19:29,440 --> 00:19:33,870 wat ons toelaat om te neem 'n veranderlike genaamd N 450 00:19:33,870 --> 00:19:37,670 en dit vergelyk met 'n baie verskillende waardes, wat ons hier 451 00:19:37,670 --> 00:19:40,010 constant1, constant2 geroep het. 452 00:19:40,010 --> 00:19:41,150 Ons kan 'n baie meer te hê. 453 00:19:41,150 --> 00:19:42,930 En dié is gevalle genoem. 454 00:19:42,930 --> 00:19:46,280 >> So as ons 'n skakelaar statement-- en dit werk 455 00:19:46,280 --> 00:19:50,580 net vir die integers-- ons 'n veranderlike in hierdie geval dit is n. 456 00:19:50,580 --> 00:19:53,840 As die veranderlike N is gelyk aan constant1 ons 457 00:19:53,840 --> 00:19:59,720 sal 'n paar van die kode uit te voer brokkie of iets wat ons wil doen. 458 00:19:59,720 --> 00:20:01,280 En dan sal ons breek. 459 00:20:01,280 --> 00:20:04,820 So die breek beteken dat die skakelaar verklaring 460 00:20:04,820 --> 00:20:08,120 sal ophou uitvoering as N is gelyk aan constant1, 461 00:20:08,120 --> 00:20:09,752 en dan jou program sal voortgaan. 462 00:20:09,752 --> 00:20:11,835 Dit sal verlaat uit die skakel verklaring en dit sal 463 00:20:11,835 --> 00:20:13,520 voortgaan om iets anders te doen. 464 00:20:13,520 --> 00:20:17,204 >> As jy egter nie gelyk N constant1, dan geval vir constant2 465 00:20:17,204 --> 00:20:17,870 sal nagegaan word. 466 00:20:17,870 --> 00:20:21,750 So as N gelyk constant2 dat ander brokkie kode uitgevoer sal word. 467 00:20:21,750 --> 00:20:23,850 En dan sal dit breek As dit is gelyk aan dit. 468 00:20:23,850 --> 00:20:27,580 En dan kan ons also-- nie noodwendig, though-- 'n standaard geval, 469 00:20:27,580 --> 00:20:32,290 wat sal gebeur as N nie gelyk enige van die gevalle wat jy gelys het. 470 00:20:32,290 --> 00:20:35,400 En in die standaard geval, het ons ook nie 'n break nie noodwendig 471 00:20:35,400 --> 00:20:39,271 omdat die skakelaar verklaring sal weet dat dit moet eindig na die verstek 472 00:20:39,271 --> 00:20:40,270 geval as dit die geval is. 473 00:20:40,270 --> 00:20:42,140 >> David Malan: Maar stilisties, ons sit dit altyd daar. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Ja. 475 00:20:42,540 --> 00:20:42,710 >> David Malan: Ja. 476 00:20:42,710 --> 00:20:44,750 So veral wanneer jy begin, veral as onder diegene wat minder 477 00:20:44,750 --> 00:20:47,458 gemaklik, sou ek persoonlik net raai te hou met die ifs 478 00:20:47,458 --> 00:20:51,564 en ifs-elses en if-else-as-elses en so meer as net 479 00:20:51,564 --> 00:20:53,480 want hulle is 'n bietjie meer eenvoudig. 480 00:20:53,480 --> 00:20:56,142 Dit is 'n mooi optimalisering, of soms selfs esteties dit 481 00:20:56,142 --> 00:20:57,350 maak die kode meer leesbaar. 482 00:20:57,350 --> 00:20:59,599 En in die feit, waarskynlik mid-semester sal ons 'n probleem te sien 483 00:20:59,599 --> 00:21:02,504 stel waar dit lyk net beter en makliker om te lees vir die mense 484 00:21:02,504 --> 00:21:03,670 deur die gebruik van 'n skakelaar verklaring. 485 00:21:03,670 --> 00:21:05,460 Maar moenie bekommerd wees oor vasklou aan hierdie te vroeg. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Ja. 487 00:21:05,680 --> 00:21:08,840 As jy het 'n baie indien state, dit mag dalk net nie baie leesbare. 488 00:21:08,840 --> 00:21:10,965 Dit mag dalk nie baie vinnig vir jou om te gaan deur dit. 489 00:21:10,965 --> 00:21:13,230 So skakel state kan baie nuttig, as well. 490 00:21:13,230 --> 00:21:17,900 En ook, nie remember-- nie vergeet om die breek daar sit. 491 00:21:17,900 --> 00:21:20,330 >> David Malan: Moet dit nie onthou nie. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Want dan kan jy val deur van die een na die ander geval. 493 00:21:24,890 --> 00:21:27,930 So kom ons sê daardie geval constant1 het 'n breek verklaring nie in nie. 494 00:21:27,930 --> 00:21:31,920 Dan kan ons deur val binne geval constant2. 495 00:21:31,920 --> 00:21:35,070 En ons wil nie te doen dat as ons het reeds geval constant1 bereik 496 00:21:35,070 --> 00:21:37,830 en dit is gelyk aan n. 497 00:21:37,830 --> 00:21:45,100 >> So, byvoorbeeld, as ons 'n veranderlike N dat 'n klas getal bevat, 498 00:21:45,100 --> 00:21:48,990 en ons wil om te sien wat dit klas is-- as n gelyk 50, 499 00:21:48,990 --> 00:21:51,957 ons gaan druk "CS50 is Inleiding tot Rekenaarwetenskap I. " 500 00:21:51,957 --> 00:21:53,040 Dan gaan ons breek. 501 00:21:53,040 --> 00:21:53,920 En dit is dit. 502 00:21:53,920 --> 00:21:55,950 As jy egter n gelyk 51, gaan ons 503 00:21:55,950 --> 00:21:58,494 druk "CS51 is Inleiding Rekenaarwetenskap II. " 504 00:21:58,494 --> 00:21:59,910 Dan weer, ons gaan om te breek. 505 00:21:59,910 --> 00:22:05,080 Maar, as dan sit ons 124, 61, 'n ander nommer wat jy kan dink, 506 00:22:05,080 --> 00:22:06,890 of program is nie gaan om te erken dat. 507 00:22:06,890 --> 00:22:09,010 So dit gaan om te sê, "Jammer, ek is nie vertroud is met die klas. " 508 00:22:09,010 --> 00:22:10,009 En dit gaan om te breek. 509 00:22:10,009 --> 00:22:12,847 David Malan: So jy kan regtig sien die as, anders as, anders idee hier. 510 00:22:12,847 --> 00:22:15,430 Dis net verskillende sintaksis vir uitdrukking van die presiese dieselfde idee. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Presies. 512 00:22:17,690 --> 00:22:19,480 Nou het ons ons drieledige operateurs. 513 00:22:19,480 --> 00:22:24,900 So drieledige operateurs het drie parts-- 'n toestand, 514 00:22:24,900 --> 00:22:27,220 iets om te doen as daardie toestand is waar, 515 00:22:27,220 --> 00:22:29,730 en dan iets te doen As daardie toestand is onwaar. 516 00:22:29,730 --> 00:22:33,400 So jy sien, basies, Die sintaksis van hier. 517 00:22:33,400 --> 00:22:37,792 Ons het die vraagteken en dan the-- wat doen ons dit noem? 518 00:22:37,792 --> 00:22:38,750 David Malan: Die kolon. 519 00:22:38,750 --> 00:22:39,100 MARIA: kolon. 520 00:22:39,100 --> 00:22:39,599 Dankie. 521 00:22:39,599 --> 00:22:41,880 Jammer. 522 00:22:41,880 --> 00:22:45,800 So laat ons kyk na die voorbeeld te kyk of ons gevoel van this-- kan maak 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 So hier sien ons Boole operateur == wat vergelyk die veranderlike class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 So class_num winkels 'n heelgetal. 527 00:22:55,150 --> 00:22:58,180 En as dit heelgetal gelyk 50, dan is ons 528 00:22:58,180 --> 00:23:02,810 gaan om te slaan "David Malan" binne-in die string professor. 529 00:23:02,810 --> 00:23:05,912 As die klas nommer nie gelyk 50, "nie David Malan" 530 00:23:05,912 --> 00:23:07,120 gaan die professor te wees. 531 00:23:07,120 --> 00:23:08,630 >> David Malan: Dankie. 532 00:23:08,630 --> 00:23:12,110 En so lyk dit gelykstaande aan Wat sou jy sê, met die eerste oogopslag? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Vir my lyk dit soos if-else stellings. 535 00:23:19,960 --> 00:23:20,709 >> David Malan: Ja. 536 00:23:20,709 --> 00:23:24,020 En in die feit, dit is soort van 'n mooi een sak, 537 00:23:24,020 --> 00:23:27,520 om so te praat, vir die implementering van presies die logika van if-else 538 00:23:27,520 --> 00:23:29,010 maar doen alles in een stap. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Presies. 540 00:23:29,860 --> 00:23:30,360 Ja. 541 00:23:30,360 --> 00:23:33,520 So if-else stellings mag neem 'n baie van die ruimte. 542 00:23:33,520 --> 00:23:36,283 Hulle kan te lank wees vir iets so eenvoudig soos dit. 543 00:23:36,283 --> 00:23:38,350 So hierdie baie kan wees bondige en baie mooi. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 So nou gaan ons na op soek na iets weer en weer uitvoer, 546 00:23:46,820 --> 00:23:50,060 so kyk vir 'n kondisioneer verskeie kere 547 00:23:50,060 --> 00:23:53,510 en dan voortgaan om iets te doen terwyl dié toestand is waar. 548 00:23:53,510 --> 00:23:56,740 So dit bring ons mooi in terwyl loops. 549 00:23:56,740 --> 00:23:59,270 >> Aan die linkerkant, ons het ons eerste while lus. 550 00:23:59,270 --> 00:24:03,840 Dus, terwyl iets waar is, iets weer en weer doen. 551 00:24:03,840 --> 00:24:08,850 So maak seker om te sien dat ons voorwaarde hier is bekragtig aan die bokant. 552 00:24:08,850 --> 00:24:14,150 Terwyl met ons tweede loop-- ons noem dat 'n do-while loop-- ons iets doen, 553 00:24:14,150 --> 00:24:15,890 dan gaan ons vir 'n toestand. 554 00:24:15,890 --> 00:24:17,980 En as daardie toestand gaan voort om waar te wees, 555 00:24:17,980 --> 00:24:20,150 ons terug te gaan en doen die ding weer. 556 00:24:20,150 --> 00:24:23,360 Dus is die belangrikste verskil is waar die toestand word gekontroleer vir. 557 00:24:23,360 --> 00:24:29,260 En die kode mag nooit uitgevoer word indien die toestand is nie 558 00:24:29,260 --> 00:24:30,430 waar met die while lus. 559 00:24:30,430 --> 00:24:33,050 Terwyl met die do-while lus, ons het die kode 560 00:24:33,050 --> 00:24:35,380 wat altyd ten minste een keer uitgevoer. 561 00:24:35,380 --> 00:24:37,470 En dan, terwyl die toestand gaan voort om waar te wees, 562 00:24:37,470 --> 00:24:39,960 ons kan terug gaan en Itereer weer binne. 563 00:24:39,960 --> 00:24:43,625 So hoekom dink jy ons sal gebruik 'n do-while lus oor 'n rukkie loop? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Reg. 566 00:24:48,720 --> 00:24:52,600 So as ons wil hê dat die vinnige gebruiker vir 'n paar soort van insette, 567 00:24:52,600 --> 00:24:55,400 as ons wil om hulle te vra om hul naam, 568 00:24:55,400 --> 00:24:57,342 ons wil hulle ten minste een keer vra. 569 00:24:57,342 --> 00:24:59,050 En as hulle ingaan daardie naam, ons is nie 570 00:24:59,050 --> 00:25:00,740 gaan hulle weer vra want ons weet dit reeds. 571 00:25:00,740 --> 00:25:02,656 Maar as hulle nie ingaan hul naam, of as hulle 572 00:25:02,656 --> 00:25:05,787 Tik iets wat natuurlik nie 'n naam, 573 00:25:05,787 --> 00:25:08,120 ons nog wil voortgaan vra hulle vir hul naam. 574 00:25:08,120 --> 00:25:10,710 >> David Malan: En in lesing moes ons een soos hierdie met die kry positiewe int 575 00:25:10,710 --> 00:25:13,550 Byvoorbeeld, waar daar is niks om te kyk op die eerste, omdat jy nie eens 576 00:25:13,550 --> 00:25:14,190 gekry 'n int. 577 00:25:14,190 --> 00:25:16,680 So wil ons this-- doen kry 'n int uit die user-- 578 00:25:16,680 --> 00:25:18,860 check dit dan, miskien, weer en weer en weer. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Presies. 580 00:25:21,030 --> 00:25:22,060 Vir loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Vir loops kan ons toelaat om byna te doen presies dieselfde ding, as well. 582 00:25:25,842 --> 00:25:27,300 Dit is eintlik presies dieselfde ding. 583 00:25:27,300 --> 00:25:30,190 So daar is niks wat wat jy kan doen met loops vir 584 00:25:30,190 --> 00:25:32,840 dat jy nie in staat sal wees te doen het met, terwyl loops. 585 00:25:32,840 --> 00:25:36,900 Maar vir sirkelroetes kan 'n bietjie lyk bietjie meer ingewikkeld sintakties 586 00:25:36,900 --> 00:25:39,730 want hulle het drie dele in watter 587 00:25:39,730 --> 00:25:42,990 was voor die net toestand met terwyl loops. 588 00:25:42,990 --> 00:25:48,260 So het die eerste deel dat jy die see, die links mees, ons het "int dwerge = 0." 589 00:25:48,260 --> 00:25:51,490 So dit is waar ons inisialiseer ons veranderlike. 590 00:25:51,490 --> 00:25:55,210 >> Dan het ons 'n kommapunt en "dwerge <7." 591 00:25:55,210 --> 00:25:57,100 So dit is waar uit toestand eintlik is. 592 00:25:57,100 --> 00:26:00,170 So dit is wat ons wil hê sit net in die tyd loop-- 593 00:26:00,170 --> 00:26:01,880 "Terwyl dwerge <7." 594 00:26:01,880 --> 00:26:05,380 Hier wat gaan in die middel van ons lus. 595 00:26:05,380 --> 00:26:07,190 So "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 En dan is ons laaste deel is "dwerge ++," en dit is waar ons ons veranderlike te werk. 597 00:26:11,350 --> 00:26:15,470 So is die belangrikste ding om te besef is dat dit 598 00:26:15,470 --> 00:26:22,010 gaan om te gaan deur middel van hierdie lus sewe keer en uit te voer sewe keer. 599 00:26:22,010 --> 00:26:24,020 So het ons sewe dwerge, en hulle is almal 600 00:26:24,020 --> 00:26:26,020 gaan om te sê, "Ek is hier om jou te help, Sneeuwitjie " 601 00:26:26,020 --> 00:26:28,860 want hulle is gereed om te help Snow White. 602 00:26:28,860 --> 00:26:33,600 >> Met terwyl loops, sou ons gedoen het die inisialisering en die opdatering 603 00:26:33,600 --> 00:26:37,490 nie in die toestand, weer, maar voor of binne-in die while lus 604 00:26:37,490 --> 00:26:40,210 om seker te maak dat we-- omdat ons altyd moet daardie dele. 605 00:26:40,210 --> 00:26:42,835 So om seker te maak dat ons hulle sou ons nog steeds het bygevoeg hulle 606 00:26:42,835 --> 00:26:44,580 op, maar net nie in die hakies. 607 00:26:44,580 --> 00:26:47,288 >> David Malan: En so lyk dit like-- in die lesing, byvoorbeeld, 608 00:26:47,288 --> 00:26:50,250 Ek het amper altyd, soos, i en N en redelik vervelig veranderlikes. 609 00:26:50,250 --> 00:26:53,050 Dit lyk asof jy meer kan gebruik slim naam veranderlikes, ook. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Ja, dit is eintlik baie mooi om 'n bietjie meer beskrywende veranderlikes gebruik 611 00:26:56,300 --> 00:26:59,400 want veral as iemand anders is lees jou code-- miskien het jy padskraper 612 00:26:59,400 --> 00:27:00,940 of as jy saam met somebody-- 613 00:27:00,940 --> 00:27:03,481 jy wil om seker te maak dat hulle verstaan ​​wat jy doen. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> OK. 616 00:27:06,400 --> 00:27:11,435 So dit is iets baie funky-- lus in 'n lus. 617 00:27:11,435 --> 00:27:13,060 Ek weet nie of ons dit gesien het nie. 618 00:27:13,060 --> 00:27:13,830 Waarskynlik nie. 619 00:27:13,830 --> 00:27:17,750 Maar ons kan eintlik this-- so lusse in plaas van loops. 620 00:27:17,750 --> 00:27:25,130 So nie almal wil dalk loop my deur wat gaan hier aan? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 David Malan: Ek sal 'n steek te neem. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 David Malan: OK. 625 00:27:30,636 --> 00:27:34,690 So, spoiler-- ons wil die dinge te druk dit is in die onderste regterkantste hoek 626 00:27:34,690 --> 00:27:35,190 daar is. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Right. 628 00:27:35,450 --> 00:27:35,710 Ja, ja. 629 00:27:35,710 --> 00:27:38,043 >> David Malan: So Ons het nou net sit daar daardie monster uitset. 630 00:27:38,043 --> 00:27:42,590 So ek kan aflei uit die boonste lus dat jy 631 00:27:42,590 --> 00:27:45,680 iterating oor rye die buitenste lus, om so te praat. 632 00:27:45,680 --> 00:27:48,107 En jy iterating oor kolomme met die binneste lus. 633 00:27:48,107 --> 00:27:50,190 En intuïtief, hierdie hopelik sinvol 634 00:27:50,190 --> 00:27:52,070 want uit die aard van elke program wat ons gesien het 635 00:27:52,070 --> 00:27:55,570 voor, printf, wat is die funksie wat ons gebruik, uiteindelik, 636 00:27:55,570 --> 00:27:58,190 het die vermoë om dinge te druk uit wese lyn deur die lyn. 637 00:27:58,190 --> 00:27:59,960 Soos, sodra jy outputted 'n nuwe lyn, is daar 638 00:27:59,960 --> 00:28:02,876 geen terug te verdubbel en die druk van iets hoër in die skerm, ten minste 639 00:28:02,876 --> 00:28:04,530 nie die gebruik printf soos hierdie. 640 00:28:04,530 --> 00:28:07,750 >> En so in daardie verband, maak dit sin dat die buitenste lus 641 00:28:07,750 --> 00:28:10,930 moet verwys na die rye want vir elke gegewe ry, 642 00:28:10,930 --> 00:28:13,650 jy gaan om te wil druk XXXXX, en dan 643 00:28:13,650 --> 00:28:15,520 skuif op na die volgende ry, XXXXX. 644 00:28:15,520 --> 00:28:17,317 So rye kom eerste. 645 00:28:17,317 --> 00:28:19,150 En dan binne elke ry, het jy kolomme te druk. 646 00:28:19,150 --> 00:28:21,160 As jy probeer om dit te doen die teenoorgestelde, sou dit waarskynlik nie 647 00:28:21,160 --> 00:28:21,690 kom uit as jy van plan is. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Ja. 649 00:28:22,190 --> 00:28:24,950 Ons kon net nie terug te gaan na die vorige ry met printf. 650 00:28:24,950 --> 00:28:27,658 >> David Malan: En wat is interessant per vandag se gesels oor die omvang, 651 00:28:27,658 --> 00:28:31,600 eintlik, is dat ry is 'n int dit is verklaar in die boonste lus. 652 00:28:31,600 --> 00:28:34,030 Maar let dat dit nog steeds binnekant van, so te sê, 653 00:28:34,030 --> 00:28:35,982 die krulhakies dat onmiddellik te volg, 654 00:28:35,982 --> 00:28:38,440 selfs al is dit nie tegnies binne daardie krullerige draadjies. 655 00:28:38,440 --> 00:28:41,750 So ry is in omvang vir die geheel van die kode uit, 656 00:28:41,750 --> 00:28:44,690 beide binne die buitenste lus en binnekant van die binneste lus. 657 00:28:44,690 --> 00:28:48,050 Maar in teenstelling, waar 'n kolom in omvang? 658 00:28:48,050 --> 00:28:49,810 Die veranderlike kolom? 659 00:28:49,810 --> 00:28:51,310 Ja, maar net in die binnekant lus. 660 00:28:51,310 --> 00:28:54,280 En dit is OK omdat ons nie toegang tot dit buite sy krullerige draadjies. 661 00:28:54,280 --> 00:28:57,280 Al wat ons doen is om druk uit 'n nuwe lyn aan die einde daar. 662 00:28:57,280 --> 00:28:58,670 Sodat in werklikheid is OK. 663 00:28:58,670 --> 00:29:03,740 >> So dit het die effek, dit lyk, doen drie rye en vier kolomme. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Right. 665 00:29:04,370 --> 00:29:06,270 So eerste gaan ons deur ons eerste ry. 666 00:29:06,270 --> 00:29:10,520 En net in ons eerste ry, ons doen die vier kolomme in die eerste ry. 667 00:29:10,520 --> 00:29:11,980 Sodat ons uit te druk vier X se. 668 00:29:11,980 --> 00:29:15,800 En dan kan ons die uitgang van die lus, aangesien ons het reeds gedruk vier X se. 669 00:29:15,800 --> 00:29:17,100 En ons druk 'n nuwe lyn. 670 00:29:17,100 --> 00:29:19,920 En dan gaan ons deur die Dieselfde proses vir twee rye 671 00:29:19,920 --> 00:29:21,170 om 'n totaal van drie te maak. 672 00:29:21,170 --> 00:29:23,530 >> David Malan: En dit is die moeite werd om daarop te let dit net 'n juweel van die skrif, die feit 673 00:29:23,530 --> 00:29:25,680 dat die monster uitset lyk so veel langer, 674 00:29:25,680 --> 00:29:27,520 asof daar meer rye as kolomme. 675 00:29:27,520 --> 00:29:29,824 Maar dit is net omdat die X is langer as die wydte. 676 00:29:29,824 --> 00:29:32,740 Dit is al wat daar gebeur, plus die wit spasie tussen lyne. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Right. 678 00:29:33,281 --> 00:29:34,792 Koel. 679 00:29:34,792 --> 00:29:35,750 David Malan: Alle reg. 680 00:29:35,750 --> 00:29:39,830 So 'n vinnige blik op die probleem stel een neem enige vrae het, en dan verdaag? 681 00:29:39,830 --> 00:29:40,330 Alles reg. 682 00:29:40,330 --> 00:29:43,164 So in die probleem stel een, daar is drie primêre uitdagings uiteindelik. 683 00:29:43,164 --> 00:29:44,955 Maar eers, sal jy vind dat die probleem stel 684 00:29:44,955 --> 00:29:47,900 spesifikasie, soos met baie van die psets hierdie val, gaan jy loop 685 00:29:47,900 --> 00:29:50,691 deur 'n paar warm-up oefeninge, wys julle 'n paar hulpbronne 686 00:29:50,691 --> 00:29:52,440 dat jy kan of mag nie reeds gesien het. 687 00:29:52,440 --> 00:29:54,440 Byvoorbeeld, CS50 het 'n suite van kortbroek, 688 00:29:54,440 --> 00:29:56,481 wat kort video's is, nie in teenstelling met hierdie, maar dit 689 00:29:56,481 --> 00:29:58,460 is baie onderwerp specific-- miskien vyf minute, 690 00:29:58,460 --> 00:30:02,360 10 minute in lengte op loops of op toestande of algoritmes 691 00:30:02,360 --> 00:30:04,125 of later meer gevorderde onderwerpe, sowel. 692 00:30:04,125 --> 00:30:06,000 En ons in die algemeen te sluit diegene in die probleem 693 00:30:06,000 --> 00:30:07,950 stelle sodat studente 'n hulpbron waarmee 694 00:30:07,950 --> 00:30:10,840 materiaal wat dalk hersien reeds kom in lesing of afdeling. 695 00:30:10,840 --> 00:30:13,220 Maar op hierdie manier is dit meer gefokus en meer by hul vingerpunte. 696 00:30:13,220 --> 00:30:15,928 >> Ons is ook geneig om in te sluit in die probleem stel dinge genoem ipv. 697 00:30:15,928 --> 00:30:20,790 So byna al die voorbeelde wat ek doen in lesing hier stadium, het ons ook 698 00:30:20,790 --> 00:30:24,565 geskiet op kamera in bevorder 'n meer stadiger, 699 00:30:24,565 --> 00:30:28,760 'n meer intieme walkthrough deur my op my laptop van daardie kode, reël vir reël 700 00:30:28,760 --> 00:30:31,427 sodat in die klas, sal ons dikwels vlugtig deur iets of iemand 701 00:30:31,427 --> 00:30:33,260 sal voord met 'n antwoord op 'n vraag. 702 00:30:33,260 --> 00:30:35,820 Maar dit beteken nie noodwendig sink in vir almal in die gehoor. 703 00:30:35,820 --> 00:30:38,230 So jy sal vind kode ipv vir die meeste van die voorbeelde 704 00:30:38,230 --> 00:30:40,950 dat ons hier te doen in lesing sodat jy kan loop deur dit op jou eie tempo 705 00:30:40,950 --> 00:30:43,580 en rewind of vinnig vorentoe of slaan geheel en al, as jy wil. 706 00:30:43,580 --> 00:30:45,356 >> Daar is dikwels 'n paar warm-up vrae wat 707 00:30:45,356 --> 00:30:47,105 vra jou om te sorteer van hierdie materiaal te versterk 708 00:30:47,105 --> 00:30:50,250 en maak seker dat jy gemaklik is voordat jy voortgaan met die res van die pset. 709 00:30:50,250 --> 00:30:51,700 En dan, natuurlik, daar is die pset self. 710 00:30:51,700 --> 00:30:53,450 En een van die dinge ons is baie doelbewus 711 00:30:53,450 --> 00:30:57,202 doen CS50 is byna elke oninteressant of intellektueel oninteressant 712 00:30:57,202 --> 00:30:58,910 meganiese stap wat jy mag hê om te doen 713 00:30:58,910 --> 00:31:00,519 is byna altyd baie goed gedokumenteer. 714 00:31:00,519 --> 00:31:03,560 Oor die loop van die kwartaal, sal ons begin om meer retoriese vrae te vra 715 00:31:03,560 --> 00:31:06,187 soos onthou hoe om dit of dat te doen? 716 00:31:06,187 --> 00:31:08,520 Maar oor die algemeen, sal jy vind dat die probleem stelle jy kry 717 00:31:08,520 --> 00:31:10,269 deur die meganika van iets sodat 718 00:31:10,269 --> 00:31:14,160 die interessante, intellektuele uitdagings word uiteindelik links na jou die student. 719 00:31:14,160 --> 00:31:17,390 >> Met wat gesê het, Zamyla, aan wie ons gehou verwys vandag in lesing 720 00:31:17,390 --> 00:31:20,190 is een van ons jarelange personeel lid wat ook hou ipv 721 00:31:20,190 --> 00:31:24,520 oor spesifieke probleme soos Mario pset en gulsig, maar nie water vanjaar. 722 00:31:24,520 --> 00:31:26,540 En dit is in daardie ipv dat sy dikwels 723 00:31:26,540 --> 00:31:29,450 bied 'n paar tips en truuks vir hoe om voort te gaan, jy nooit vertel 724 00:31:29,450 --> 00:31:31,810 presies wat om te doen nie, maar rather-- soos 'n toestand, 725 00:31:31,810 --> 00:31:35,200 as jy will-- gee jou ten minste 'n paar idees sodat dit is aan jou, 726 00:31:35,200 --> 00:31:37,830 uiteindelik besluit hoe om dit te benader. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: soort van soos 'n hoë-vlak- begrip van die logika van wat 728 00:31:41,200 --> 00:31:42,220 ons is jy vra om te doen. 729 00:31:42,220 --> 00:31:42,485 >> David Malan: Presies. 730 00:31:42,485 --> 00:31:44,190 En, in werklikheid, Zamyla se ipv bedoel 731 00:31:44,190 --> 00:31:46,190 om die dikwels beantwoord gevra vraag van waar 732 00:31:46,190 --> 00:31:48,610 ek begin het, veral wanneer Hierdie lang spesifikasies is 733 00:31:48,610 --> 00:31:51,960 'n bietjie skrikwekkend gegewe al die teks en beelde wat hulle in hulle. 734 00:31:51,960 --> 00:31:54,890 >> So water.c, sal jy vind nadat jy dit voltooi het, 735 00:31:54,890 --> 00:31:56,920 is eintlik relatief eenvoudig. 736 00:31:56,920 --> 00:31:58,882 Absoluut is 'n klomp van julle gaan bang 737 00:31:58,882 --> 00:32:01,840 julle hoofde teen die muur probeer om uit te vind hoekom dit nie die samestelling 738 00:32:01,840 --> 00:32:03,450 of waarom is dit nie korrek bestuur. 739 00:32:03,450 --> 00:32:05,040 Maar sodra jy klaar is met dit en sodra jy 740 00:32:05,040 --> 00:32:07,620 het 'n paar keer worstel met enige van die foute wat jy mag hê, 741 00:32:07,620 --> 00:32:09,490 jy sal vind dat dit 'n baie kort program. 742 00:32:09,490 --> 00:32:11,770 Dit kan gedoen word in net 'n paar reëls van die kode, waarvan die meeste 743 00:32:11,770 --> 00:32:15,030 ons het hier in lesing nou al jy bymekaar laat kom die reg boustene. 744 00:32:15,030 --> 00:32:16,810 >> En as ons voor hier, dit gaan om te vra 745 00:32:16,810 --> 00:32:22,250 jy na spesifiseer hoeveel minute iemand met 'n stort op die kampus. 746 00:32:22,250 --> 00:32:24,779 Ons spesifiseer in die probleem stel die tempo van vloei van water 747 00:32:24,779 --> 00:32:27,320 in, soos, 'n lae-vloei stort kop, baie soos die Seinfeld clip 748 00:32:27,320 --> 00:32:29,180 ons gister gesien het of die teenoorgestelde daarvan. 749 00:32:29,180 --> 00:32:30,971 En dan moet jy net om te doen 'n bietjie van wiskunde, 750 00:32:30,971 --> 00:32:34,710 really-- rekenkundige behulp C om te vertel ons hoeveel, rofweg, bottels water 751 00:32:34,710 --> 00:32:37,720 is dat gelykstaande aan as ons neem van 'n N-minute stort. 752 00:32:37,720 --> 00:32:41,389 >> Nou, in mario.c, dit gaan om 'n bietjie langer program. 753 00:32:41,389 --> 00:32:42,930 Dit is nog steeds nie van plan om hierdie lank wees. 754 00:32:42,930 --> 00:32:45,130 Net 'n paar lyne langer as water.c. 755 00:32:45,130 --> 00:32:48,230 Maar dit gaan geleentheid na die ou skool Mario herskep 756 00:32:48,230 --> 00:32:50,670 piramide van Super Mario Brothers of 'n opvolg. 757 00:32:50,670 --> 00:32:53,510 Dit gaan nie om te kyk as mooier of so kleurvol soos wat 'n mens daar. 758 00:32:53,510 --> 00:32:56,468 Ons is net gaan om te min hashtags gebruik soos ons hier op die skerm 759 00:32:56,468 --> 00:32:58,120 gebruik van ASCII-teks. 760 00:32:58,120 --> 00:33:00,362 Maar dit sal dieselfde idee benader. 761 00:33:00,362 --> 00:33:02,570 En dit gaan 'n wees oefening wat met die eerste oogopslag 762 00:33:02,570 --> 00:33:04,720 lyk redelik simple-- net druk 'n eenvoudige piramide. 763 00:33:04,720 --> 00:33:07,345 Maar daar is 'n paar eienskappe hier wat interessant is. 764 00:33:07,345 --> 00:33:12,400 Let daarop dat die regterkantste rand van die piramide het eintlik breedte twee. 765 00:33:12,400 --> 00:33:14,570 So is daar twee gelyke hoogte kolomme, wat 766 00:33:14,570 --> 00:33:16,804 maak dit 'n bietjie nodig bietjie van denke te maak 767 00:33:16,804 --> 00:33:19,720 seker jy kry wat presies reg, soos in teenstelling met net 'n perfek skuins 768 00:33:19,720 --> 00:33:20,220 lyn. 769 00:33:20,220 --> 00:33:23,340 So dit is 'n bietjie van 'n hoek geval maar pas by die werklike spel. 770 00:33:23,340 --> 00:33:27,610 >> En dit is ook nie-duidelik op die eerste oogopslag hoe om die wit spasie druk. 771 00:33:27,610 --> 00:33:29,430 So as ek kyk na die monster uitset here-- 772 00:33:29,430 --> 00:33:32,440 en dit is ook in die spec-- dit soort lyk soos 'n reghoek, 773 00:33:32,440 --> 00:33:35,120 maar 'n diagonaal van die reghoek is afgekap, 774 00:33:35,120 --> 00:33:37,320 en dit is net wit spasies, om so te praat. 775 00:33:37,320 --> 00:33:40,100 En so 'n dikwels gevra vraag hier is altyd goed, 776 00:33:40,100 --> 00:33:43,302 hoe kan ek die hashtags beweeg oor die reg? 777 00:33:43,302 --> 00:33:44,760 Of hoe ek die leë spasies druk? 778 00:33:44,760 --> 00:33:46,860 En dit is eintlik makliker as die meeste studente dink. 779 00:33:46,860 --> 00:33:47,360 Reg? 780 00:33:47,360 --> 00:33:51,620 Jy kan dit visueel benader deur net een of twee keer slaan die space bar 781 00:33:51,620 --> 00:33:52,700 of drie keer. 782 00:33:52,700 --> 00:33:56,260 >> En so selfs al met printf ons byna altyd druk 'n tou of 'n int 783 00:33:56,260 --> 00:33:59,950 of 'n woord soos "hello, wêreld "of reeks van woorde, 784 00:33:59,950 --> 00:34:03,560 jy kan ook net druk quote, ruimte, unquote. 785 00:34:03,560 --> 00:34:06,320 En dit sal eintlik gee jy 'n wit spasie daar. 786 00:34:06,320 --> 00:34:08,330 So hou dit in gedagte en dit nie doen nie oordink. 787 00:34:08,330 --> 00:34:10,570 Jy moet regtig besluit ry deur ry deur ry, 788 00:34:10,570 --> 00:34:14,280 nie in teenstelling met jou byvoorbeeld 'n oomblik gelede, hoeveel van diegene 789 00:34:14,280 --> 00:34:18,420 kolomme moet wit ruimtes en hoeveel van hulle moet wees hashtags. 790 00:34:18,420 --> 00:34:21,560 Dit sal 'n bietjie van die tyd te neem, maar dit is uiteindelik 'n logika legkaart van spesies. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Ja. 792 00:34:22,060 --> 00:34:25,060 Maar die logika van gaan ry deur ry gaan hier baie nuttig wees. 793 00:34:25,060 --> 00:34:25,810 David Malan: Ja. 794 00:34:25,810 --> 00:34:28,976 Ek dink die voorbeeld kode wat jy selfs gave-- al was dit nie 'n volledige program. 795 00:34:28,976 --> 00:34:34,247 Jy moet nog steeds int en die belangrikste en leeg en include stdio.h, 796 00:34:34,247 --> 00:34:35,580 'n baie van die dinge van lesing. 797 00:34:35,580 --> 00:34:37,629 Maar die boustene lyk om daar te wees. 798 00:34:37,629 --> 00:34:39,920 En dan laastens is iets 'n bietjie meer algoritmiese. 799 00:34:39,920 --> 00:34:43,210 So dit blyk dat enige tyd wat jy gaan in CVS of enige geriefswinkel 800 00:34:43,210 --> 00:34:47,810 en iemand wat jy hande by die kassier rekeninge of muntstukke as verandering, 801 00:34:47,810 --> 00:34:50,620 dit blyk dat hulle, die mens, ongeag of hulle dit weet of nie, 802 00:34:50,620 --> 00:34:53,300 is waarskynlik met wat is bekend as 'n gulsige algoritme, 803 00:34:53,300 --> 00:34:58,170 waardeur as jy verskuldig is, sê, $ 21 in verandering want vir een of ander rede 804 00:34:58,170 --> 00:35:01,580 jy iets baie goedkoop gekoop met 'n baie groot wetsontwerp op CVS, 805 00:35:01,580 --> 00:35:05,910 Dit sou werklik irriterende as die wees kassier het jy 21 singles of, nog erger 806 00:35:05,910 --> 00:35:07,629 nog, 'n hele klomp van die muntstukke. 807 00:35:07,629 --> 00:35:10,670 Inteendeel, wat 'n redelike persoon waarskynlik gaan om te doen, is hulle gaan 808 00:35:10,670 --> 00:35:14,224 om 'n $ 20 en dan 'n $ 1 wetsontwerp, en gryp hand wat jy net twee wetsontwerpe in daardie geval. 809 00:35:14,224 --> 00:35:17,390 MARIA: So hulle is op soek na die minimum te beperk die verandering wat hulle aan julle teruggee. 810 00:35:17,390 --> 00:35:17,850 David Malan: Presies. 811 00:35:17,850 --> 00:35:19,540 En dieselfde ooreenkoms met munte, as well. 812 00:35:19,540 --> 00:35:23,040 As jy verskuldig is, sê, $ 0,50 Hopelik sal jy nie wil hê 50 pennies. 813 00:35:23,040 --> 00:35:25,500 Jy plaas wil twee kwartale, byvoorbeeld. 814 00:35:25,500 --> 00:35:27,540 Nou, beteken dit aanvaar dat die kassier het 815 00:35:27,540 --> 00:35:29,940 genoeg dat elke denominasie hy of sy dalk wil om jou te gee. 816 00:35:29,940 --> 00:35:32,148 Maar ons het jou toelaat om te aanvaar soveel in die probleem. 817 00:35:32,148 --> 00:35:35,590 En die doel te bereik, uiteindelik, is om implementeer in C-kode 'n gulsige algoritme. 818 00:35:35,590 --> 00:35:37,344 Sodat die gebruiker toegelaat word om te tik in hoeveel 819 00:35:37,344 --> 00:35:40,510 Hy verander of sy verskuldig is met dollars en sent, 'n soort van drywende punt 820 00:35:40,510 --> 00:35:41,590 waarde waarskynlik. 821 00:35:41,590 --> 00:35:45,530 En dan moet jy die wiskunde te doen en uit te vind algoritmies, goed, 822 00:35:45,530 --> 00:35:49,020 Hoeveel muntstukke kan ek gee jy minimaal te gee jy 823 00:35:49,020 --> 00:35:50,270 presies daardie bedrag van verandering. 824 00:35:50,270 --> 00:35:53,470 Maar daar gaan 'n wees paar moeilike dele hier, reg? 825 00:35:53,470 --> 00:35:56,236 Soos daar is die hele onakkuraatheid kwessie. 826 00:35:56,236 --> 00:35:56,860 MARIA: Presies. 827 00:35:56,860 --> 00:35:59,114 So swaai punt waardes onakkuraatheid. 828 00:35:59,114 --> 00:36:00,780 Het ons praat oor dit in lesing vandag? 829 00:36:00,780 --> 00:36:02,340 >> David Malan: Ons het die laaste keer in lesing. 830 00:36:02,340 --> 00:36:03,506 Ons het gepraat oor onakkuraatheid. 831 00:36:03,506 --> 00:36:08,840 En jy wil nie die gebruiker kul hoeveel verandering hy of sy verskuldig is. 832 00:36:08,840 --> 00:36:11,290 En so het die walkthrough in die probleem stel spesifikasie, 833 00:36:11,290 --> 00:36:15,990 gee sommige het gedink, uiteindelik, soos om hoe jy kan versag die onakkuraatheid 834 00:36:15,990 --> 00:36:17,280 foute, moontlik. 835 00:36:17,280 --> 00:36:21,050 Dit is vermybare, seker, want die insette wat ons praat. 836 00:36:21,050 --> 00:36:23,590 En, in werklikheid, pennies-- Miskien sal ons uitstel om Zamyla, 837 00:36:23,590 --> 00:36:25,136 Ek dink, vir die truuks daar. 838 00:36:25,136 --> 00:36:27,760 So uiteindelik, sal jy 'n te vind vordering van probleme hierdie week, 839 00:36:27,760 --> 00:36:30,700 waarvan die eerste is redelik klein, dan medium, dan 'n bietjie groter. 840 00:36:30,700 --> 00:36:33,200 Maar almal van hulle gebruik die gebou blokke van die afgelope week, 841 00:36:33,200 --> 00:36:35,280 Van hierdie supersection, probleem stel spesifikasie 842 00:36:35,280 --> 00:36:36,710 jy sit op ontelbare bronne. 843 00:36:36,710 --> 00:36:41,000 Maar nog steeds, indien enigsins sukkel, veral onder diegene wat minder gemaklik 844 00:36:41,000 --> 00:36:42,917 met geen vorige agtergrond, kom kantoorure 845 00:36:42,917 --> 00:36:44,958 Maandag en Dinsdag en Woensdag en Donderdag. 846 00:36:44,958 --> 00:36:46,950 Gaan na CS50 Bespreek via webwerf die kursus se 847 00:36:46,950 --> 00:36:49,080 via wat jy kan chat met personeel en klasmaats. 848 00:36:49,080 --> 00:36:51,670 >> Maar uiteindelik, ek dink die beste raad is net begin vroeg. 849 00:36:51,670 --> 00:36:54,711 Dit is nie die soort van die klas wat jy moet begin psets op Woensdag 850 00:36:54,711 --> 00:36:56,640 nag, of nog erger Donderdag nag. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: My beste raad is het begin deur Maandag. 852 00:36:59,067 --> 00:36:59,900 David Malan: Maandag. 853 00:36:59,900 --> 00:37:02,490 So as jy het nog nie begin already-- no. 854 00:37:02,490 --> 00:37:04,732 Maar selfs as dit nie Maandag, dan Dinsdag. 855 00:37:04,732 --> 00:37:05,690 Hoe vroeër, hoe beter. 856 00:37:05,690 --> 00:37:08,605 En dit is die rede waarom die Natuurlik het so baie laat dae is 857 00:37:08,605 --> 00:37:10,535 om jou 'n bietjie van 'n sielkundige druk 858 00:37:10,535 --> 00:37:13,684 vroeër begin, maar nog steeds laat dinge glip wanneer dinge langer neem 859 00:37:13,684 --> 00:37:14,350 as wat jy verwag. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: En jy wil gebruik te maak kantoorure soveel as wat jy kan, ook. 861 00:37:17,950 --> 00:37:20,291 >> David Malan: Enige vrae? 862 00:37:20,291 --> 00:37:20,790 Alles reg. 863 00:37:20,790 --> 00:37:22,930 Wel, hoekom doen ons nie hier verdaag? 864 00:37:22,930 --> 00:37:23,487