1 00:00:00,000 --> 00:00:02,742 >> [Speel van musiek] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Peng: Dit is CS50, en welkom om week twee van artikel. 4 00:00:09,090 --> 00:00:11,740 Dit is eintlik terwyl week twee van ons class-- eintlik, 5 00:00:11,740 --> 00:00:14,550 die eerste week het ons artikel gehad het. 6 00:00:14,550 --> 00:00:18,897 Opsteek van hande, hoeveel van julle almal gekom het om super artikel verlede week? 7 00:00:18,897 --> 00:00:19,480 OK, dit is OK. 8 00:00:19,480 --> 00:00:20,020 Dit is OK. 9 00:00:20,020 --> 00:00:23,110 Hoeveel van julle gekyk super artikel verlede week? 10 00:00:23,110 --> 00:00:23,610 OK. 11 00:00:23,610 --> 00:00:25,702 En julle het fyn op die probleem stel een? 12 00:00:25,702 --> 00:00:28,660 So ek gaan om dit te neem dat ons 'n klomp van werklik intelligente kinders 13 00:00:28,660 --> 00:00:32,310 in hierdie klas en dinge sal goed wees. 14 00:00:32,310 --> 00:00:33,180 OK. 15 00:00:33,180 --> 00:00:33,980 So first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> Eerstens, ons is maar net gaan kortliks gaan oor die agenda vir vandag. 18 00:00:41,090 --> 00:00:42,700 Ons sal praat oor natuurlik logistiek. 19 00:00:42,700 --> 00:00:45,480 Baie van julle het waarskynlik het vrae oor 20 00:00:45,480 --> 00:00:46,920 hoe dinge loop in hierdie kursus. 21 00:00:46,920 --> 00:00:47,897 Ons sal hulle verhoor. 22 00:00:47,897 --> 00:00:49,730 Ons gaan kortliks gaan oor loops in die geval 23 00:00:49,730 --> 00:00:51,410 enige van julle ouens gemis super afdeling. 24 00:00:51,410 --> 00:00:53,240 Ons sal praat oor ASCII kartering. 25 00:00:53,240 --> 00:00:56,180 Ons sal praat oor skikkings, funksies, command line argumente. 26 00:00:56,180 --> 00:01:00,210 En ten slotte, wat julle waarskynlik almal regtig wil om hier te wees om te leer oor, 27 00:01:00,210 --> 00:01:01,270 is jou pset2. 28 00:01:01,270 --> 00:01:04,209 Ons sal 'n paar mooi truuks en wenke vir hoe om dit te doen. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> OK. 31 00:01:08,690 --> 00:01:11,450 Ook, tweedens, ons het baie lekkergoed hier. 32 00:01:11,450 --> 00:01:13,583 Enigiemand wat lekkergoed hou, net hier op. 33 00:01:13,583 --> 00:01:14,430 Gryp n paar. 34 00:01:14,430 --> 00:01:15,100 Ek het 'n klomp. 35 00:01:15,100 --> 00:01:16,390 Ons het 'n ton in die kantoor. 36 00:01:16,390 --> 00:01:18,230 Ek wil nie regtig om lekkergoed eet die hele dag. 37 00:01:18,230 --> 00:01:20,300 Julle moet al die lekkergoed eet, want ek het dit hier vir julle. 38 00:01:20,300 --> 00:01:20,990 Net eet snoep. 39 00:01:20,990 --> 00:01:24,080 Daar sal lekkergoed wees elke afdeling. 40 00:01:24,080 --> 00:01:25,330 >> So die eerste, wie is ek? 41 00:01:25,330 --> 00:01:27,080 My naam is Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Ek is die hoof van die TA CS50 hier by Yale. 43 00:01:30,270 --> 00:01:32,540 En bykomend tot wat, ek sal ook be-- 44 00:01:32,540 --> 00:01:35,600 As iemand jou loop sou like-- buddy, jou skouer om op te huil. 45 00:01:35,600 --> 00:01:39,140 As die nag voor as gevolg van jou pset, jy het geen idee wat aangaan, 46 00:01:39,140 --> 00:01:40,080 hit me up. 47 00:01:40,080 --> 00:01:42,770 Ons sal saam medelye, ensovoorts. 48 00:01:42,770 --> 00:01:46,100 Weet net dat ek hier is as 'n hulpbron vir jou as die voorste linie 49 00:01:46,100 --> 00:01:51,830 om te help jy uitvind hoe ouens om probleme in CS50 en verder op te los. 50 00:01:51,830 --> 00:01:54,590 >> My e-pos is andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Ek sal ook uit te stuur 'n individu e-pos met my telefoonnommer in dit 52 00:01:58,390 --> 00:02:01,860 so dat nie almal op die internet kan my telefoonnommer te sien. 53 00:02:01,860 --> 00:02:03,640 Voel vry om my enige tyd bel. 54 00:02:03,640 --> 00:02:07,510 Ernstig, my selfoon is gewoonlik aan my hand. 55 00:02:07,510 --> 00:02:10,240 Ek kan nie reageer binne 'n paar minute. 56 00:02:10,240 --> 00:02:11,984 Ek kan nie binne 'n paar uur te reageer. 57 00:02:11,984 --> 00:02:14,400 Maar ek kan jou waarborg, as jy my e-pos, as jy my bel, 58 00:02:14,400 --> 00:02:17,404 teks my, ek sal reageer binne 24 uur. 59 00:02:17,404 --> 00:02:19,820 Dikwels, sal ek reageer voordat dat, aangesien ek verstaan 60 00:02:19,820 --> 00:02:23,900 dat almal het 'n paar probleme, en jy wil jou antwoorde 61 00:02:23,900 --> 00:02:26,110 baie vinnig beantwoord word. 62 00:02:26,110 --> 00:02:28,945 >> Maar, as jy bel my 30 minute voor 63 00:02:28,945 --> 00:02:31,570 dat die stuk wat as gevolg van Donderdag night-- wees, Andi, help my, 64 00:02:31,570 --> 00:02:35,380 Ek het nie started-- ek kan gee julle wat die skouer om op te huil. 65 00:02:35,380 --> 00:02:41,520 Maar is dit dalk tyd om te dink oor wees hoe om nie te doen dat die volgende keer. 66 00:02:41,520 --> 00:02:44,040 OK. 67 00:02:44,040 --> 00:02:44,944 Oops. 68 00:02:44,944 --> 00:02:45,850 Hoe kan ek terug te gaan? 69 00:02:45,850 --> 00:02:48,140 Daar gaan ons. 70 00:02:48,140 --> 00:02:52,310 >> So in hierdie kursus, het ons 'n ton van ondersteuning vir almal. 71 00:02:52,310 --> 00:02:54,640 In bykomend tot net afdelings hier, wat jy 72 00:02:54,640 --> 00:02:57,000 elke week te kry om te bestee 90 wonderlike minute met my 73 00:02:57,000 --> 00:02:58,330 ons het ook kantoorure. 74 00:02:58,330 --> 00:03:01,021 Hoeveel van julle ouens het reeds om kantoorure vir hulp? 75 00:03:01,021 --> 00:03:01,520 Groot. 76 00:03:01,520 --> 00:03:05,700 Dit is regtig goed om te sien, want ons het 'n personeel van meer as 45 Tas en GR'e 77 00:03:05,700 --> 00:03:11,780 opgelei vir hierdie kursus wat hier is vir die hulp wat jy ouens met jou psets. 78 00:03:11,780 --> 00:03:14,580 >> Maandae hulle gehou in die TEAL klaskamer in 17 Hill House hier 79 00:03:14,580 --> 00:03:15,350 aan die Yale. 80 00:03:15,350 --> 00:03:17,349 Dinsdae en Donderdae, hulle gehou in commons. 81 00:03:17,349 --> 00:03:20,010 8:00-11:00 pretty much elke weekdag. 82 00:03:20,010 --> 00:03:21,620 Kom in, kom uit. 83 00:03:21,620 --> 00:03:24,030 Enige probleem, geen problem-- net kom in, 84 00:03:24,030 --> 00:03:26,650 en dan sal ons jou help met dit. 85 00:03:26,650 --> 00:03:31,640 >> Tweedens, benewens kantoorure en artikels, het ons ook kortbroek. 86 00:03:31,640 --> 00:03:35,930 Het iemand al ooit gesien hoe 'n paar van die kortbroek of ipv in die video's 87 00:03:35,930 --> 00:03:36,750 op die webwerf? 88 00:03:36,750 --> 00:03:37,250 OK. 89 00:03:37,250 --> 00:03:39,510 So hulle is baie, baie nuttig. 90 00:03:39,510 --> 00:03:42,470 Ons pragtige Harvard produksie span daar op daardie skool 91 00:03:42,470 --> 00:03:47,910 noorde, het hulle verfilm en vervaardig hierdie ongelooflike walkthrough videos. 92 00:03:47,910 --> 00:03:52,290 >> Hulle sal neem jou stap vir stap deur hoe om te gaan oor die oplossing van 'n probleem. 93 00:03:52,290 --> 00:03:56,340 Dikwels, as jy verward oor 'n eenvoudige konsep, 'n enkele konsep, 94 00:03:56,340 --> 00:03:59,780 neem 'n blik, want ons het waarskynlik 'n kort op dit iewers op ons webwerf. 95 00:03:59,780 --> 00:04:03,800 En dit is gewoonlik 'n groot bron om te kyk vir wanneer jy die eerste is 96 00:04:03,800 --> 00:04:06,510 verloor oor hoe om 'n probleem te hanteer. 97 00:04:06,510 --> 00:04:09,750 >> Derde, ons het ook study50 en reference50. 98 00:04:09,750 --> 00:04:15,650 So bestudeer 50 op die webwerf is net 'n skakel. 99 00:04:15,650 --> 00:04:21,500 Dit is, dink ek, study.cs50.net of iets soos dit. 100 00:04:21,500 --> 00:04:22,860 Google dit net. 101 00:04:22,860 --> 00:04:24,229 Ons het baie van skyfies voorberei. 102 00:04:24,229 --> 00:04:26,770 Ons het baie van kortbroek en walkthroughs-- dinge al saamgestel 103 00:04:26,770 --> 00:04:31,070 baie mooi en netjies vir julle almal om deur te blaai, sien enige konsepte 104 00:04:31,070 --> 00:04:32,860 dat jy verward oor. 105 00:04:32,860 --> 00:04:35,920 Dit sou waarskynlik gedek daar in study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- soortgelyk. 107 00:04:37,640 --> 00:04:41,510 Ons het 'n baie verskillende notas geredelik beskikbaar is vir jou beskikking. 108 00:04:41,510 --> 00:04:44,450 En laastens, ons het wat is genoem CS50 Bespreek, 109 00:04:44,450 --> 00:04:48,082 'n forum in wat, indien die aand voor jy doen jou probleme, sê 110 00:04:48,082 --> 00:04:49,880 jy het 'n vraag. 111 00:04:49,880 --> 00:04:52,340 Teken in om CS50 Bespreek. 112 00:04:52,340 --> 00:04:53,190 Post jou vraag. 113 00:04:53,190 --> 00:04:55,820 En dan een van die hundreds-- miskien, thousands-- van eweknieë 114 00:04:55,820 --> 00:04:57,960 neem hierdie klas online sal aanmeld in. 115 00:04:57,960 --> 00:05:01,182 En miskien iemand kan kry jou antwoord voor 'n TA kan. 116 00:05:01,182 --> 00:05:03,390 Dit is in wese net 'n aanlyn forum wat ons almal kan 117 00:05:03,390 --> 00:05:04,556 gebruik om ons probleme te bespreek. 118 00:05:04,556 --> 00:05:06,483 Dis koel. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> OK. 121 00:05:11,550 --> 00:05:13,220 So probleem sit. 122 00:05:13,220 --> 00:05:17,840 Ons is oor die reg in die dik van die probleem sit twee. 123 00:05:17,840 --> 00:05:20,570 Baie van ons het reeds het gesukkel om deur die probleem te stel een. 124 00:05:20,570 --> 00:05:24,460 Ons weet reeds dat miskien wag vir die laaste nag om jou pset doen 125 00:05:24,460 --> 00:05:28,170 is nie die slimste ding om te doen in CS50. 126 00:05:28,170 --> 00:05:32,380 >> Wenke en wenke hoofsaaklik vir die sukses is lees die hele spec. 127 00:05:32,380 --> 00:05:36,270 Hoeveel van julle het reeds lees die spec vir pset 2? 128 00:05:36,270 --> 00:05:36,770 OK. 129 00:05:36,770 --> 00:05:39,840 Dit is 'n vaste bedrag. 130 00:05:39,840 --> 00:05:43,210 Ek weet julle ouens het waarskynlik erken nou die specs is regtig lank. 131 00:05:43,210 --> 00:05:45,700 Hulle is regtig, regtig lank. 132 00:05:45,700 --> 00:05:49,630 >> Dit is regtig moeilik om elke reël gelees van daardie versigtig woord vir woord. 133 00:05:49,630 --> 00:05:52,780 Jy wil net vlugtig na die plek waar dit vir jou vertel om iets te doen. 134 00:05:52,780 --> 00:05:54,459 Ek kan jou verseker, dit nie doen nie. 135 00:05:54,459 --> 00:05:56,750 As jy dit doen, jy waarskynlik gaan iewers mis 136 00:05:56,750 --> 00:05:58,458 waar dit vir jou vertel hoe om 'n probleem te begin 137 00:05:58,458 --> 00:06:01,140 of dit vir jou vertel wat om te naam jou probleem of dit vir jou vertel, 138 00:06:01,140 --> 00:06:03,720 dit is waarskynlik die beste manier om te begin doen jou probleem. 139 00:06:03,720 --> 00:06:05,050 En dan sal jy verloor. 140 00:06:05,050 --> 00:06:08,219 >> As jy probeer om te lees van jou spec halfpad deur, 141 00:06:08,219 --> 00:06:10,510 'n baie van die belangrike information-- in dat jy nie 142 00:06:10,510 --> 00:06:12,260 gaan in staat wees om werklik toegang. 143 00:06:12,260 --> 00:06:13,219 So lees die hele spec. 144 00:06:13,219 --> 00:06:15,468 Probeer om die hele spec te lees voor jy kom na afdeling, 145 00:06:15,468 --> 00:06:17,360 want dan, wanneer ons praat oor die pset, 146 00:06:17,360 --> 00:06:21,070 ons almal kan 'n idee van wat aangaan. 147 00:06:21,070 --> 00:06:25,169 >> Tweedens, dit is 'n konsep dat ek sal graag verwys 148 00:06:25,169 --> 00:06:26,710 'n baie gedurende die kursus semester. 149 00:06:26,710 --> 00:06:30,070 Maar in wese, ontmoet ons halfpad, reg? 150 00:06:30,070 --> 00:06:33,970 My as jou TA en Jason as natuurlik bestuurder en Scaz as jou professor 151 00:06:33,970 --> 00:06:37,120 en Dawid as jou professor en al die ander pragtige Tas in hierdie kursus, 152 00:06:37,120 --> 00:06:39,830 assistente in hierdie course-- Ons sal ons bes doen 153 00:06:39,830 --> 00:06:42,965 om te verseker dat jy is ingestel tot sukses in hierdie kursus. 154 00:06:42,965 --> 00:06:43,840 Ons sal hou afdeling. 155 00:06:43,840 --> 00:06:44,870 Ons sal kantoorure te hou. 156 00:06:44,870 --> 00:06:47,087 Ons sal jou selfoon beantwoord oproepe, beantwoord jou e-posse, 157 00:06:47,087 --> 00:06:49,670 doen alles in ons vermoë om te maak seker dat jou vrae beantwoord. 158 00:06:49,670 --> 00:06:51,460 >> Maar ons help ook uit. 159 00:06:51,460 --> 00:06:52,450 Ontmoet ons halfpad. 160 00:06:52,450 --> 00:06:56,040 As jy kom na kantoorure nie het gegaan aan artikel, nie 161 00:06:56,040 --> 00:07:02,060 gesien die lesings, sonder idee wat aangaan, soos, help my. 162 00:07:02,060 --> 00:07:04,350 Ek gaan om te wees soos, wel, ek is jammer. 163 00:07:04,350 --> 00:07:06,410 Is dit dalk tyd om te leen wees dat die skouer om op te huil, 164 00:07:06,410 --> 00:07:08,959 want ek is nie seker wat ek kan doen om jou te help 165 00:07:08,959 --> 00:07:12,000 as jy nie probeer om ten minste help jouself 'n bietjie in die begin. 166 00:07:12,000 --> 00:07:12,910 Ontmoet ons halfpad. 167 00:07:12,910 --> 00:07:15,020 Jy weet, kom asseblief bereid is om te beantwoord en kry 168 00:07:15,020 --> 00:07:16,353 gereed om betrokke te raak in die materiaal. 169 00:07:16,353 --> 00:07:19,342 Dit maak dinge soveel makliker vir almal wat betrokke is. 170 00:07:19,342 --> 00:07:22,970 Ja, dit is pretty much dit. 171 00:07:22,970 --> 00:07:23,720 >> Gradering. 172 00:07:23,720 --> 00:07:29,250 So op die leerplan, dit is redelik in-diepte oor hoe ons graad. 173 00:07:29,250 --> 00:07:32,440 Maar in wese, die afbreek in hierdie is 50% van jou graad 174 00:07:32,440 --> 00:07:34,530 sal die psets, wat is 'n pragtige, want dit is 175 00:07:34,530 --> 00:07:37,400 waar jy spandeer die oorgrote meerderheid van jou kursus tyd. 176 00:07:37,400 --> 00:07:39,854 Vasvrae 40%, en jou finale projek sal 10% wees. 177 00:07:39,854 --> 00:07:42,520 Daar sal twee vasvrae regdeur die loop van die semester. 178 00:07:42,520 --> 00:07:47,050 Ek dink die tye en datums is ook op die leerplan. 179 00:07:47,050 --> 00:07:49,210 >> Die manier waarop ons sal word die formaat van jou psets 180 00:07:49,210 --> 00:07:53,930 is dat ons in wese vier waardes wat ons toewys aan elke graad. 181 00:07:53,930 --> 00:07:57,250 Ons het 'n waarde van omvang, korrektheid, ontwerp, en styl. 182 00:07:57,250 --> 00:08:01,530 So as jy sien, dit is soort van ons formule vir die berekening psets. 183 00:08:01,530 --> 00:08:03,640 Drie gee ons die mees gewig korrektheid, 184 00:08:03,640 --> 00:08:06,140 want natuurlik jou afrigter moet die toets vir die gevalle 185 00:08:06,140 --> 00:08:08,480 dat ons dit wil hê om te toets vir. 186 00:08:08,480 --> 00:08:11,000 >> Julle het almal check50 tot jou beskikking. 187 00:08:11,000 --> 00:08:13,730 Dit is 'n baie nuttige funksie dat julle kan almal 188 00:08:13,730 --> 00:08:17,560 laai jou kode om ons bedieners, waar ons sal check dit vir jou. 189 00:08:17,560 --> 00:08:20,800 En jy het gesien die frowny gesigte smiley gesigte. 190 00:08:20,800 --> 00:08:22,119 Hulle is regtig, regtig nuttig. 191 00:08:22,119 --> 00:08:23,910 Moet asseblief nie die student wat probeer hou 192 00:08:23,910 --> 00:08:26,230 om hardcode in al die antwoorde op hulle. 193 00:08:26,230 --> 00:08:30,050 Ek het beslis gesien hoe 'n pset waar iemand het gesien hoe al die waardes van check50 194 00:08:30,050 --> 00:08:33,429 en hulle het net hard gekodeer in-- as hierdie nommer, druk die nommer. 195 00:08:33,429 --> 00:08:35,080 As dat die getal, druk dat die getal. 196 00:08:35,080 --> 00:08:36,090 Doen dit nie. 197 00:08:36,090 --> 00:08:39,360 >> Selfs al is tegnies check50 is korrek, 198 00:08:39,360 --> 00:08:41,809 jou manier van die oplossing van die probleem is nie korrek nie. 199 00:08:41,809 --> 00:08:45,770 So net gebruik check50 spaarsamig. 200 00:08:45,770 --> 00:08:48,497 Maar ook seker maak dat jy verstaan ​​hoe dit funksioneer, 201 00:08:48,497 --> 00:08:50,580 die program funksioneer bykomend tot check50, 202 00:08:50,580 --> 00:08:53,120 omdat ons nie elke kan toets moontlike geval van check50. 203 00:08:53,120 --> 00:08:55,440 Ons sal toets 'n paar van hulle. 204 00:08:55,440 --> 00:09:00,390 >> Ontwerp is in wese, hoe goed ontwerp is jou kode? 205 00:09:00,390 --> 00:09:04,150 As jy kopie-plak verskeie reëls van die kode baie, baie keer. 206 00:09:04,150 --> 00:09:06,960 Miskien het jy nie baie het die beste ontwerp in jou kode. 207 00:09:06,960 --> 00:09:09,470 Miskien is dit tyd dat die lus te voeg. 208 00:09:09,470 --> 00:09:12,090 Wese, hier is dit net al oor probeer om jou kode te doen, 209 00:09:12,090 --> 00:09:17,010 probeer om jou kode so doeltreffend skryf as moontlik sodat jou program loop 210 00:09:17,010 --> 00:09:19,630 so gou as moontlik. 211 00:09:19,630 --> 00:09:20,996 >> Ten slotte, ons het styl. 212 00:09:20,996 --> 00:09:24,360 So styl is soort van 'n arbitrêre, subjektiewe term. 213 00:09:24,360 --> 00:09:27,470 Ek weet ons het amptelik 'n styl 50 gids vir CS50, 214 00:09:27,470 --> 00:09:30,050 waar dit vir jou vertel, o, jy moet 'n spasie hier. 215 00:09:30,050 --> 00:09:32,220 Jy moet soort van formaat jou kode op hierdie manier. 216 00:09:32,220 --> 00:09:34,070 Jy moet dinge noem hierdie manier. 217 00:09:34,070 --> 00:09:38,180 >> Ek het nie regtig omgee, per se, hoe jy kies om jou kode styl, 218 00:09:38,180 --> 00:09:39,840 net so lank as wat jy konsekwent bly. 219 00:09:39,840 --> 00:09:43,732 Byvoorbeeld, as jy wil om laat 'n spasie na jou vier 220 00:09:43,732 --> 00:09:45,690 voor jou vier lus, doen net dat elke keer. 221 00:09:45,690 --> 00:09:46,523 Moenie soort dit doen. 222 00:09:46,523 --> 00:09:47,730 Moenie ander kere nie doen nie. 223 00:09:47,730 --> 00:09:51,046 As jy wil om krullerige hou draadjies ruimte 'n sekere manier, 224 00:09:51,046 --> 00:09:52,170 net altyd dit so. 225 00:09:52,170 --> 00:09:54,628 Moenie soort iewers doen hier en iewers nie daar nie. 226 00:09:54,628 --> 00:09:57,010 Wanneer ons gradering, dit is werklik moeilik 227 00:09:57,010 --> 00:09:59,420 as ek het geen idee hoe jy opmaak jou kode, 228 00:09:59,420 --> 00:10:02,064 dinge is gek en uit plek. 229 00:10:02,064 --> 00:10:04,980 As jy net konsekwent hou dit, dit is baie makliker vir my as die groter 230 00:10:04,980 --> 00:10:06,310 in staat wees om jou kode te lees. 231 00:10:06,310 --> 00:10:09,393 Dit is baie makliker vir jou as 'n student in staat wees om te kyk deur jou kode 232 00:10:09,393 --> 00:10:11,720 en kyk wat is verkeerd met dit streep hoekom daar kwessies. 233 00:10:11,720 --> 00:10:15,740 Styl is een van die maklikste dinge julle ouens kan doen om volle tellings te kry. 234 00:10:15,740 --> 00:10:18,770 Wese, as jy net omgee, as jy betaal vyf minute van die aandag 235 00:10:18,770 --> 00:10:22,760 om jou kode elke week, moet jy wees om volle styl punte. 236 00:10:22,760 --> 00:10:26,020 >> Ten slotte, ons het wat genoem die vermenigvuldiger van omvang. 237 00:10:26,020 --> 00:10:28,890 Scope-- Ek weet dit is 'n groot woord, veral in hierdie klas. 238 00:10:28,890 --> 00:10:31,030 Maar omvang, alles wat middel is dat jy probeer 239 00:10:31,030 --> 00:10:33,670 die psets na die beste van jou vermoë. 240 00:10:33,670 --> 00:10:37,180 As jy draai in drie uit van jou vier probleme 241 00:10:37,180 --> 00:10:39,460 en nie eens probeer die laaste een, jy waarskynlik 242 00:10:39,460 --> 00:10:41,630 gaan 'n paar punte verloor op omvang. 243 00:10:41,630 --> 00:10:44,560 >> Selfs as jy net die probleem begin, doen jou beste om te loop deur dit. 244 00:10:44,560 --> 00:10:47,691 Selfs as dit nie werk nie, draai dit in, want dit toon en toon 245 00:10:47,691 --> 00:10:50,190 aan ons dat jy probeer, dat jy stel probleem probeer 246 00:10:50,190 --> 00:10:51,430 na die beste van jou vermoë. 247 00:10:51,430 --> 00:10:53,800 En dan kan ons jou volpunte vir omvang. 248 00:10:53,800 --> 00:10:58,715 >> Omvang is ook baie belangrik vir wanneer ons praat oor die laagste pset telling drop. 249 00:10:58,715 --> 00:11:02,010 So in die loop van die semester, julle het nege psets. 250 00:11:02,010 --> 00:11:05,340 En ons sal eintlik val die laagste punt uit die nege, 251 00:11:05,340 --> 00:11:07,670 maar net as jy het volle omvang punte. 252 00:11:07,670 --> 00:11:11,120 >> So as jy draai in 'n onvolledige pset, Ongelukkig kan ons nie dat 'n mens laat val, 253 00:11:11,120 --> 00:11:13,540 omdat jou omvang punte is nog nie voltooi nie. 254 00:11:13,540 --> 00:11:16,570 So selfs as jy het die aaklige week waar jy sterf en jy siek is 255 00:11:16,570 --> 00:11:20,040 of jou hond sterf, jou kat sterf, en jy oorlaai met huiswerk, 256 00:11:20,040 --> 00:11:21,074 net probeer die pset. 257 00:11:21,074 --> 00:11:22,490 Doen dit na die beste van jou vermoë. 258 00:11:22,490 --> 00:11:23,840 As dit nie werk nie, beteken dit nie saak nie. 259 00:11:23,840 --> 00:11:24,506 Draai dit in. 260 00:11:24,506 --> 00:11:26,590 Ten minste kan ons gee jy wys vir poging. 261 00:11:26,590 --> 00:11:28,510 >> A vir poging in hierdie klas. 262 00:11:28,510 --> 00:11:30,170 Ten minste laagste telling druppel vir poging. 263 00:11:30,170 --> 00:11:32,354 So ja. 264 00:11:32,354 --> 00:11:33,270 Dit is pretty much dit. 265 00:11:33,270 --> 00:11:36,521 Is daar iemand wat vrae het so ver oor hoe ons graad in die klas? 266 00:11:36,521 --> 00:11:37,187 Of enige van hierdie? 267 00:11:37,187 --> 00:11:41,220 Enige van hierdie so far-- afdelings, kantoorure? 268 00:11:41,220 --> 00:11:41,720 Koel. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 OK. 271 00:11:47,800 --> 00:11:51,260 >> So, dit is 'n onderwerp wat nie een regtig daarvan hou om oor te praat. 272 00:11:51,260 --> 00:11:53,084 Ek het nie regtig wil om te praat oor dit. 273 00:11:53,084 --> 00:11:55,250 Julle ouens het nie regtig wil om te hoor my daaroor te praat. 274 00:11:55,250 --> 00:11:57,690 Maar helaas, ons almal het om daaroor te praat. 275 00:11:57,690 --> 00:12:00,110 David spandeer 20 minute 'n lesings daaroor te praat. 276 00:12:00,110 --> 00:12:02,580 En dit is die onderwerp akademiese eerlikheid. 277 00:12:02,580 --> 00:12:08,110 >> So het ons almal hier het waarskynlik geskryf 'n opstel iewers in ons Yale loopbaan. 278 00:12:08,110 --> 00:12:11,800 Ons het waarskynlik gekry 'n praatjie waar ons is aangesê om nie plagiaat pleeg ons opstel, 279 00:12:11,800 --> 00:12:13,940 want dit werk is nie ons s'n nie. 280 00:12:13,940 --> 00:12:18,109 In rekenaarwetenskap, ons het dieselfde soort konsep. 281 00:12:18,109 --> 00:12:20,150 Alle werk wat jy inhandig, al-kode wat jy skryf 282 00:12:20,150 --> 00:12:21,900 moet kode wat jy geskryf het nie. 283 00:12:21,900 --> 00:12:24,280 Indien kode wat jy het nie gekopieer van elders. 284 00:12:24,280 --> 00:12:26,777 Moet nie wees dat kode jy googled en plons in 285 00:12:26,777 --> 00:12:28,360 en jy weet nie regtig of dit werk. 286 00:12:28,360 --> 00:12:32,440 Jy het soort van 'n gevoel van wat dit doen, maar nie regtig nie. 287 00:12:32,440 --> 00:12:36,562 Wanneer jy twyfel, in wese, dit is net redelik wees. 288 00:12:36,562 --> 00:12:38,520 Op ons leerplan, het ons 'n hele lys van dinge 289 00:12:38,520 --> 00:12:40,560 sien ons as redelike versus nie redelik. 290 00:12:40,560 --> 00:12:43,820 >> Byvoorbeeld, redelike is jy en jou vriend 291 00:12:43,820 --> 00:12:47,360 bespreek wat die beste manier om te gaan oor logies 'n probleem oplos. 292 00:12:47,360 --> 00:12:48,910 Dit is redelik redelike. 293 00:12:48,910 --> 00:12:53,244 Wat sou nie redelik wees, is as jy ouens bymekaar, getik dieselfde kode, 294 00:12:53,244 --> 00:12:54,410 en draai in die dieselfde kode. 295 00:12:54,410 --> 00:12:56,302 Dit is nie redelik. 296 00:12:56,302 --> 00:12:57,510 Dieselfde ding, soort van 'n opstel. 297 00:12:57,510 --> 00:12:59,290 As jy wil om te bespreek met jou vriend, hey, 298 00:12:59,290 --> 00:13:00,220 dit is wat ek wil hê om te skryf oor. 299 00:13:00,220 --> 00:13:02,500 Dit is die stappe wat ek wil neem om daaroor te skryf, groot. 300 00:13:02,500 --> 00:13:03,208 Dit is wonderlik. 301 00:13:03,208 --> 00:13:04,790 Asseblief saam met mekaar. 302 00:13:04,790 --> 00:13:06,540 As jy ouens begin skryf dieselfde ding, 303 00:13:06,540 --> 00:13:10,020 draai in die dieselfde essay, wat minder OK. 304 00:13:10,020 --> 00:13:13,200 So wanneer jy twyfel, net nie dit doen. 305 00:13:13,200 --> 00:13:16,940 >> Hier het ons in CS50, ons het skrifte wat uitgevoer om te outomatiseer om te toets 306 00:13:16,940 --> 00:13:21,740 nie net die korrektheid van jou kode, maar ook die uniekheid van jou kode. 307 00:13:21,740 --> 00:13:25,920 So moet asseblief nie sit ons in die posisie van om jou saak te verwys na EXCOMM. 308 00:13:25,920 --> 00:13:31,110 Asseblief net vir almal, laat ons net maak dit 'n wonderlike ervaring. 309 00:13:31,110 --> 00:13:33,600 Almal leer beter, ons almal is gelukkiger, 310 00:13:33,600 --> 00:13:37,926 en ons is almal ingestel om slaag in hierdie kursus. 311 00:13:37,926 --> 00:13:39,800 Iets wat baie unieke oor hierdie klas 312 00:13:39,800 --> 00:13:42,660 dat ek dink almal moet regtig aandag te gee aan, is dat ons 313 00:13:42,660 --> 00:13:44,930 wat die spyt genoem klousule in ons leerplan. 314 00:13:44,930 --> 00:13:50,010 So in wese, binne 72 uur, as jy glo jy iets gedoen het 315 00:13:50,010 --> 00:13:53,240 jy is nie regtig seker is toepaslik, kom asseblief na ons. 316 00:13:53,240 --> 00:13:57,220 Ons belowe dat binne 72 uur sal ons die saak te hanteer onsself 317 00:13:57,220 --> 00:13:59,820 sonder om te verwys na 'n hoër gesag in die administrasie. 318 00:13:59,820 --> 00:14:03,100 >> So as jy kom na my toe en sê, Andi, hey, ek is regtig jammer, 319 00:14:03,100 --> 00:14:07,620 maar ek dink daar is 'n paar lyne in my kode gisteraand dat ek soort van googled, 320 00:14:07,620 --> 00:14:10,120 afgeklim van stapel Oorloop, kopieer en plak, 321 00:14:10,120 --> 00:14:13,680 en ek is baie, baie jammer oor wat, laat my weet. 322 00:14:13,680 --> 00:14:16,900 Moet asseblief nie net laat dit sweer en net hoop dat ek dit vang. 323 00:14:16,900 --> 00:14:17,784 Ons sal dit te vang. 324 00:14:17,784 --> 00:14:18,450 Net na my gekom. 325 00:14:18,450 --> 00:14:20,520 Laat my weet binne 72 uur. 326 00:14:20,520 --> 00:14:22,240 Ons sal uitvind 'n oplossing. 327 00:14:22,240 --> 00:14:26,679 En ons belowe dat ons nie sal verwys na universiteit owerhede wese. 328 00:14:26,679 --> 00:14:29,220 So dit is in jou beste belang net eerlik met almal 329 00:14:29,220 --> 00:14:31,720 betrokke in die kursus. 330 00:14:31,720 --> 00:14:34,630 >> OK. 331 00:14:34,630 --> 00:14:35,240 OK. 332 00:14:35,240 --> 00:14:37,800 So nou, vinnig voor Ek skuif op, nie almal 333 00:14:37,800 --> 00:14:42,670 het ten opsigte van die logistiek vrae oor hoe kursusse ons gaan om te hardloop, 334 00:14:42,670 --> 00:14:45,982 hoe afdelings gaan om te hardloop, enige van die wat? 335 00:14:45,982 --> 00:14:46,711 OK. 336 00:14:46,711 --> 00:14:47,210 Ja. 337 00:14:47,210 --> 00:14:48,126 >> GEHOOR: [onhoorbaar]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI Peng: Ja. 340 00:14:51,080 --> 00:14:54,850 So quizzes-- hoeveel van julle is in die afdeling Maandag / Woensdag? 341 00:14:54,850 --> 00:14:56,700 Hoeveel van julle is in Dinsdag / Donderdag? 342 00:14:56,700 --> 00:14:58,550 OK, so dit is 'n soliede split hier. 343 00:14:58,550 --> 00:15:00,900 So die manier waarop ons loop dit aan die Yale is dat ons 344 00:15:00,900 --> 00:15:04,040 gaan twee afsonderlike het quizzes-- een vir elke section-- dat 345 00:15:04,040 --> 00:15:06,160 sal gedurende klas. 346 00:15:06,160 --> 00:15:09,310 Ek dink dit is Oktober, die einde van Oktober, iets soos dit, as een week 347 00:15:09,310 --> 00:15:10,794 van die quiz. 348 00:15:10,794 --> 00:15:11,960 Ja, so kom net na die klas. 349 00:15:11,960 --> 00:15:13,920 Op daardie Maandag of Woensdag, jy sal die quiz neem. 350 00:15:13,920 --> 00:15:16,336 Op daardie Dinsdag of Donderdag, jy sal 'n ander quiz neem. 351 00:15:16,336 --> 00:15:18,570 Maar dieselfde materiaal gedek sal word. 352 00:15:18,570 --> 00:15:19,160 Ja. 353 00:15:19,160 --> 00:15:20,660 Goeie vraag. 354 00:15:20,660 --> 00:15:21,160 Ja. 355 00:15:21,160 --> 00:15:23,260 >> GEHOOR: Waar moet ons gaan na ons grade kontroleer? 356 00:15:23,260 --> 00:15:23,926 >> ANDI Peng: Ja. 357 00:15:23,926 --> 00:15:28,420 So ek sal uitstuur n e-pos wat ookal elke week 358 00:15:28,420 --> 00:15:31,460 wanneer vasvrae is graded-- of, Jammer, wanneer psets gegradeer word. 359 00:15:31,460 --> 00:15:34,120 Psets word gewoonlik draai in deur die middag of Vrydag. 360 00:15:34,120 --> 00:15:37,540 So ek belowe dat ek sal probeer om hulle terug te kry om jou te 361 00:15:37,540 --> 00:15:40,000 deur die middag van die volgende Vrydag. 362 00:15:40,000 --> 00:15:44,950 >> Wanneer ek 'n graad pset, sal ek stuur 'n kennisgewing op die graad boek 363 00:15:44,950 --> 00:15:47,070 wat vertel jy jou telling kan aanlyn besigtig word. 364 00:15:47,070 --> 00:15:52,022 So reg om hierdie week, nadat ek voltooi gradering psets verlede week se 365 00:15:52,022 --> 00:15:54,230 julle ouens sal 'n e-pos te kry kennisgewing wat jy vertel, 366 00:15:54,230 --> 00:15:55,870 hey dit is waar jy gaan na jou grade besigtig. 367 00:15:55,870 --> 00:15:57,680 En jy kan elke sien uiteensetting van jou grade. 368 00:15:57,680 --> 00:15:58,555 Jy kan kommentaar te sien. 369 00:15:58,555 --> 00:16:00,360 O, vinnige ding ook. 370 00:16:00,360 --> 00:16:03,060 Die kommentaar afdeling in die groot boek is waar ek sal waarskynlik 371 00:16:03,060 --> 00:16:05,300 spandeer die meeste van my tyd gradering. 372 00:16:05,300 --> 00:16:07,094 So een ding wat werklik belangrik wanneer 373 00:16:07,094 --> 00:16:09,010 julle ouens lees is jou grade op jou psets 374 00:16:09,010 --> 00:16:11,400 is nie net op soek by die fisiese telling 375 00:16:11,400 --> 00:16:14,630 maar ook die tyd neem om regtig my kommentaar te lees. 376 00:16:14,630 --> 00:16:17,820 >> Dikwels dat gee vir jou terugvoer oor hoe jy 'n probleem is die oplossing. 377 00:16:17,820 --> 00:16:20,480 As jy nodig het om te doen iets wat 'n bietjie beter, 378 00:16:20,480 --> 00:16:24,080 opbouende kritiek is gewoonlik beste gegee in daardie kommentaar afdeling. 379 00:16:24,080 --> 00:16:26,950 So asseblief, asseblief, ek gaan om tyd te spandeer skryf kommentaar. 380 00:16:26,950 --> 00:16:30,440 Asseblief, ek sal dit baie waardeer as jy ouens die kommentaar sou lees. 381 00:16:30,440 --> 00:16:31,170 OK. 382 00:16:31,170 --> 00:16:34,150 Koel. 383 00:16:34,150 --> 00:16:34,680 >> Alles reg. 384 00:16:34,680 --> 00:16:40,680 So ons gaan begin praat en net vinnig hersiening 385 00:16:40,680 --> 00:16:45,040 sommige van die materiaal van week nul net so ons is 386 00:16:45,040 --> 00:16:48,760 op die regte bladsy vir begin probleme hierdie week. 387 00:16:48,760 --> 00:16:52,600 So die while lus is een van die drie tipes lusse 388 00:16:52,600 --> 00:16:54,510 ons vroeër in hierdie klas bespreek word. 389 00:16:54,510 --> 00:16:57,060 >> 'N Rukkie lus wese geskrywe is in die sintaksis 390 00:16:57,060 --> 00:17:00,666 waar, terwyl 'n sekere toestand, doen dit herhaaldelik, reg? 391 00:17:00,666 --> 00:17:02,040 Dink aan dit in hierdie grafiese hier. 392 00:17:02,040 --> 00:17:04,780 Jy gaan om te begin op 'n sekere punt in jou kode. 393 00:17:04,780 --> 00:17:09,030 Jy gaan die lus toestand betree if-- ek nie know-- x is minder as een. 394 00:17:09,030 --> 00:17:11,677 >> As dit waar is, gaan jy om die lus liggaam uit te voer. 395 00:17:11,677 --> 00:17:14,010 En jy gaan hou doen wat weer, weer, weer, 396 00:17:14,010 --> 00:17:17,900 oor en over-- wat is die rede waarom dit is 'n loop-- totdat jou toestand word 397 00:17:17,900 --> 00:17:19,079 onwaar. 398 00:17:19,079 --> 00:17:22,140 So op hierdie manier, 'n while lus is een van die makliker maniere 399 00:17:22,140 --> 00:17:25,619 om enige soort van toestand skryf dat moet oor en oor en oor herhaal. 400 00:17:25,619 --> 00:17:28,109 Net versigtig wees wanneer jy skryf 'n soort van lus 401 00:17:28,109 --> 00:17:32,140 dat jy 'n uitgang toestand sowel as 'n werk na wat dit ookal 402 00:17:32,140 --> 00:17:36,714 is sodat jou lus nie net hardloop oor en oor oneindig. 403 00:17:36,714 --> 00:17:38,630 In elk geval, jy gaan wil om seker te maak 404 00:17:38,630 --> 00:17:42,670 dat jy 'n aspek van die verandering is jou kode of aan die einde van die lus 405 00:17:42,670 --> 00:17:46,680 net om seker te maak dat jy 'n manier van vorder op pad na die toestand 406 00:17:46,680 --> 00:17:48,400 wat jy wil om te voldoen aan tot einde. 407 00:17:48,400 --> 00:17:50,239 Maak dit sin om almal? 408 00:17:50,239 --> 00:17:52,530 Ons het net nie wil wees vasgevang in hierdie spiraal waar 409 00:17:52,530 --> 00:17:55,710 ons gaan om en om en daar is geen manier om die lus te breek. 410 00:17:55,710 --> 00:17:58,844 En elke lus wese het 'n manier om dit te doen. 411 00:17:58,844 --> 00:17:59,344 OK. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> Tweedens, baie van julle in jou Mario psets 414 00:18:06,060 --> 00:18:08,910 waarskynlik moes diens hierdie tipe van lus. 415 00:18:08,910 --> 00:18:11,802 Dit is bekend as 'n doen terwyl loop. 416 00:18:11,802 --> 00:18:14,510 Eerste van alles, kan iemand my vertel wat die verskil tussen 'n doen 417 00:18:14,510 --> 00:18:16,586 while lus en 'n while lus is? 418 00:18:16,586 --> 00:18:17,086 Ja. 419 00:18:17,086 --> 00:18:21,030 >> GEHOOR: Die doen terwyl lus loop op die eerste [onhoorbaar]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Peng: Ja, presies. 421 00:18:22,120 --> 00:18:27,130 So 'n doen terwyl loop nie altyd alles is binne die doen, binne die hakies 422 00:18:27,130 --> 00:18:30,520 daar en doen daardie toestand voordat die monitor vir the-- jammer, 423 00:18:30,520 --> 00:18:32,940 doen dit code voordat kontrole vir die toestand. 424 00:18:32,940 --> 00:18:37,200 En dit is veral relevant vir ons hier in hierdie klas, omdat die meeste keer 425 00:18:37,200 --> 00:18:41,450 ons gaan wil aanspoor die gebruiker vir 'n soort van insette. 426 00:18:41,450 --> 00:18:43,520 En dan, afhangende van die insette wat hulle gee ons, 427 00:18:43,520 --> 00:18:46,150 dan kan ons evalueer, o, doen ons nodig het om hulle weer gevra? 428 00:18:46,150 --> 00:18:49,930 >> So in Mario, as die gebruiker jou gegee 'n negatiewe hoogte, byvoorbeeld, 429 00:18:49,930 --> 00:18:52,990 jy gaan eerste vinnige en doen wat is binne-in. 430 00:18:52,990 --> 00:18:54,820 Dan gaan jy terwyl nagaan. 431 00:18:54,820 --> 00:18:57,570 Jy weet, is negatief 1, is dat 'n positiewe getal? 432 00:18:57,570 --> 00:19:00,680 As dit is nie, ek gaan om te gaan terug en herhaal die doen en herhaal 433 00:19:00,680 --> 00:19:03,950 en herhaal en herhaal totdat hulle uiteindelik gee jou 'n nommer wat jy wil, 434 00:19:03,950 --> 00:19:07,002 dat ons almal kan gebruik in ons kode. 435 00:19:07,002 --> 00:19:09,210 Dit is redelik belangrik vir wese enige gebruiker insette. 436 00:19:09,210 --> 00:19:11,760 Ek kan jou waarborg keer in 'n pset waar 437 00:19:11,760 --> 00:19:15,070 vra ons u om insette enige soort van die kode, ons is 438 00:19:15,070 --> 00:19:17,540 waarskynlik gaan om jou te gee 'n toets saak waarin ons 439 00:19:17,540 --> 00:19:21,200 gaan jy iets sleg te gee wat gaan probeer om jou kode te breek. 440 00:19:21,200 --> 00:19:25,044 >> As ons probeer om jou te vra om insette 'n heelgetal is, kan ons net gee jou 'n string 441 00:19:25,044 --> 00:19:26,460 en kyk hoe jy sal hanteer nie. 442 00:19:26,460 --> 00:19:30,610 As ons jou vra om 'n ouderdom in diens, ons kan jy 'n negatiewe getal te gee 443 00:19:30,610 --> 00:19:32,340 om te sien hoe jy sal hanteer nie. 444 00:19:32,340 --> 00:19:37,260 Net seker maak julle ouens toets vir gevalle waar jy nie die beste kry 445 00:19:37,260 --> 00:19:38,590 insette, laat ons net sê. 446 00:19:38,590 --> 00:19:40,510 En 'n doen terwyl lus is dikwels die beste 447 00:19:40,510 --> 00:19:45,260 manier om jou kode so ontwerp dat dit voldoen aan wat omvang. 448 00:19:45,260 --> 00:19:45,760 OK. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> OK. 451 00:19:49,470 --> 00:19:53,270 So dit is waarskynlik die mees komplekse lus uit die drie 452 00:19:53,270 --> 00:19:54,990 dat ons het gekyk na so ver. 453 00:19:54,990 --> 00:19:56,689 En dit lyk baie scary op die eerste. 454 00:19:56,689 --> 00:19:59,730 Maar ek waarborg jou, wanneer jy ouens onder die knie kry hoe om 'n gebruik vir lus, 455 00:19:59,730 --> 00:20:03,320 dit is een van die mees nuttige dinge, mees nuttige gereedskap in jou arsenaal 456 00:20:03,320 --> 00:20:05,300 om vorentoe te beweeg in hierdie klas. 457 00:20:05,300 --> 00:20:09,920 >> So byvoorbeeld, in Scratch, ons het hierdie baie eenvoudige blok 458 00:20:09,920 --> 00:20:13,180 wat net gesê herhaal hierdie sekere frases sekere aantal kere. 459 00:20:13,180 --> 00:20:16,260 By the way, SAJ-- dit is Scaz Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Ons dikwels onderteken ons e-pos SAJ. 461 00:20:18,740 --> 00:20:20,360 As ons sê SAJ, moenie verwar word. 462 00:20:20,360 --> 00:20:22,630 Dit is net ons. 463 00:20:22,630 --> 00:20:28,600 >> So in Scratch, was ons in staat om 'n blok wat gesê het, herhaal ek lief SAJ! 464 00:20:28,600 --> 00:20:29,430 10 keer. 465 00:20:29,430 --> 00:20:30,130 Baie eenvoudig. 466 00:20:30,130 --> 00:20:32,302 Die logika agter dit is 'n baie, baie eenvoudig, reg? 467 00:20:32,302 --> 00:20:35,260 Ek wil eers deur die eerste tyd en sien dat die tweede keer 468 00:20:35,260 --> 00:20:38,510 en sien dat, derde keer so meer en so aan, totdat jy getref tot 10. 469 00:20:38,510 --> 00:20:41,960 >> En die manier waarop ons sou verteenwoordig wat in kode is net deur 'n eenvoudige lus. 470 00:20:41,960 --> 00:20:45,440 So vir, jy gaan om te verklaar jou veranderlike hier, in hierdie geval, 471 00:20:45,440 --> 00:20:46,349 met 'n int. 472 00:20:46,349 --> 00:20:47,390 Ons gaan om dit te noem i. 473 00:20:47,390 --> 00:20:49,500 Ons gaan om dit te inisialiseer tot 0. 474 00:20:49,500 --> 00:20:52,490 En die stilhou uitgawe gaan ek minder as 10. 475 00:20:52,490 --> 00:20:54,622 En die update gaan wees i ++. 476 00:20:54,622 --> 00:20:57,750 >> En binne die lus, gaan dit uit te voer totdat uiteindelik 477 00:20:57,750 --> 00:21:01,490 tref die einde van die condition-- waarin geval, dit gaan om die lus te breek. 478 00:21:01,490 --> 00:21:04,600 Daar moet dinge wees dat jy ouens het al die soort van gesien voor 479 00:21:04,600 --> 00:21:07,270 en het om te doen vir jou probleem stel een. 480 00:21:07,270 --> 00:21:12,310 Is daar iemand enige vrae aangaande vir loops nou? 481 00:21:12,310 --> 00:21:12,930 OK. 482 00:21:12,930 --> 00:21:13,430 Groot. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> OK. 485 00:21:18,620 --> 00:21:22,270 So vir diegene van julle wat lees die pset spec vir hierdie week 486 00:21:22,270 --> 00:21:27,690 weet dat ons gaan hê om in diens iets genoem ASCII en ASCII tafel. 487 00:21:27,690 --> 00:21:32,380 So David in lesing het oor kortliks hoe rekenaars essentially-- alles 488 00:21:32,380 --> 00:21:35,410 is ingebou in 'n rekenaar in binêre, in nulle en ene. 489 00:21:35,410 --> 00:21:39,740 En die manier waarop rekenaars in staat is om om verskillende waardes benewens stoor 490 00:21:39,740 --> 00:21:44,360 om nulle en ene is deur kartering daardie getalle ander syfers verteenwoordig 491 00:21:44,360 --> 00:21:47,220 of wese die ander karakters. 492 00:21:47,220 --> 00:21:49,810 >> So in hierdie geval, 'n ASCII table-- al wat dit doen 493 00:21:49,810 --> 00:21:53,600 is kaart karakters, of karakters, getalle. 494 00:21:53,600 --> 00:21:57,385 So die bronkode lêer in jou computer-- dit sien, 495 00:21:57,385 --> 00:22:00,010 hey, 'n klomp nulle en ene, nulle en ene, nulle en ene. 496 00:22:00,010 --> 00:22:02,350 Dit is wat gestoor word in die werklike geheue van u rekenaar. 497 00:22:02,350 --> 00:22:04,750 >> Maar wanneer ons mense wil kommunikeer met die rekenaar, 498 00:22:04,750 --> 00:22:08,249 ons want-- sê, byvoorbeeld, as ek wil die hoofletters A, 499 00:22:08,249 --> 00:22:10,540 Ek gaan 'n manier nodig van die vertel van die rekenaar, o, 500 00:22:10,540 --> 00:22:16,300 wanneer ek tik hoofletters A, ek bedoel hierdie verteenwoordiging in binêre. 501 00:22:16,300 --> 00:22:22,260 >> En so het die manier waarop ons dit doen is gooi 'n arbitrêre ding genaamd 'n ASCII tabel 502 00:22:22,260 --> 00:22:25,020 waar ons as mense, soos programmeerders, 'n geruime tyd gelede, 503 00:22:25,020 --> 00:22:28,660 ons arbitrêr besluit dat ons gaan om hierdie getal te wys 504 00:22:28,660 --> 00:22:30,960 waardes om hierdie karakters. 505 00:22:30,960 --> 00:22:32,720 >> So julle ouens kan dit aanlyn Google. 506 00:22:32,720 --> 00:22:37,120 Ek dink daar is 'n skakel om dit in jou pset-- net 'n ASCII kaart tafel, ASCII 507 00:22:37,120 --> 00:22:37,720 tafel. 508 00:22:37,720 --> 00:22:40,722 Dit vertaal net binêre getalle in karakters. 509 00:22:40,722 --> 00:22:42,930 En dit gaan baie wees nuttig vir jou probleem stel 510 00:22:42,930 --> 00:22:45,470 wanneer jy wil bereken enigiets of as jy 511 00:22:45,470 --> 00:22:47,880 wil om te wys sekere karakters of heelgetalle 512 00:22:47,880 --> 00:22:50,327 of manipuleer sekere karakters. 513 00:22:50,327 --> 00:22:52,160 Dit gaan 'n baie wees belangrik dat jy al 514 00:22:52,160 --> 00:22:55,140 weet hoe om 'n ASCII tabel navigeer. 515 00:22:55,140 --> 00:23:01,260 >> So byvoorbeeld, die hoofletters A word verteenwoordig deur die nommer 65. 516 00:23:01,260 --> 00:23:04,207 En die klein 'n word verteenwoordig deur 97. 517 00:23:04,207 --> 00:23:07,040 So dit is belangrik om te weet dat die verskil tussen die twee waardes 518 00:23:07,040 --> 00:23:08,320 is 32. 519 00:23:08,320 --> 00:23:13,210 Dikwels, as jy nodig het om te skakel van een na die ander, die verskil is 32. 520 00:23:13,210 --> 00:23:15,710 En moenie bekommerd wees as jy die soort is verwarde oor hierdie by die eerste. 521 00:23:15,710 --> 00:23:20,230 Ons sal gaan oor hoe ons sou diens dit in werklike kode. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> OK. 524 00:23:26,380 --> 00:23:30,770 So vir die van julle met skootrekenaars uit voel vry om te trek 'n ASCII tabel 525 00:23:30,770 --> 00:23:36,030 want dit sal waarskynlik vereis dat jy ouens te verwys 526 00:23:36,030 --> 00:23:38,100 wat die karakters is. 527 00:23:38,100 --> 00:23:38,640 OK. 528 00:23:38,640 --> 00:23:42,840 >> So weet dat sekere karakters die kaart om sekere getalle, 529 00:23:42,840 --> 00:23:47,240 as ek net loop die eerste lyn van wat code-- die printf a, 530 00:23:47,240 --> 00:23:50,900 kleinletter a, minus hoofletters A. Is daar iemand 531 00:23:50,900 --> 00:23:55,880 'n raaiskoot oor wat sou wees uit te druk van die skerm nou? 532 00:23:55,880 --> 00:23:58,190 >> So die eerste van alles, wat beteken Kleine letters verteenwoordig? 533 00:23:58,190 --> 00:24:00,990 Watter getal is dat ingebou in die ASCII tabel. 534 00:24:00,990 --> 00:24:01,490 Jammer? 535 00:24:01,490 --> 00:24:02,630 >> GEHOOR: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Peng: 97, groot. 537 00:24:03,630 --> 00:24:05,077 En wat is hoofletters A? 538 00:24:05,077 --> 00:24:06,330 >> GEHOOR: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Peng: So, wat is 97 minus 65? 540 00:24:08,255 --> 00:24:09,227 >> GEHOOR: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Peng: OK. 542 00:24:09,810 --> 00:24:13,530 So, wat doen julle dink gaan gebeur wanneer ek insette wat reël van die kode 543 00:24:13,530 --> 00:24:14,670 in my rekenaar? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> GEHOOR: [onhoorbaar]. 546 00:24:19,896 --> 00:24:21,020 ANDI Peng: Jammer, praat. 547 00:24:21,020 --> 00:24:22,520 Geen probleem. 548 00:24:22,520 --> 00:24:25,750 Dit is 'n baie veilige omgewing, minus die kamera. 549 00:24:25,750 --> 00:24:27,550 Ons gaan almal aan- geen bekommernisse. 550 00:24:27,550 --> 00:24:30,940 Net ons almal gaan om voor te gee soos dit is net ons koue in hierdie kamer. 551 00:24:30,940 --> 00:24:31,480 Geen probleem. 552 00:24:31,480 --> 00:24:33,410 Geen vraag is te dom. 553 00:24:33,410 --> 00:24:35,300 Geen antwoord is 'n dom antwoord. 554 00:24:35,300 --> 00:24:38,260 Ek is waarskynlik gaan om foute te maak in die loop van my onderrig. 555 00:24:38,260 --> 00:24:40,740 Ernstig, ouens, net flappen dit uit. 556 00:24:40,740 --> 00:24:43,092 Wees vol vertroue in jouself, jy weet? 557 00:24:43,092 --> 00:24:43,800 So wat is dit? 558 00:24:43,800 --> 00:24:47,990 Wie het gesê dat dit die laaste antwoord? 559 00:24:47,990 --> 00:24:48,540 OK. 560 00:24:48,540 --> 00:24:50,380 Skree dat die mooi en duidelik. 561 00:24:50,380 --> 00:24:51,220 >> GEHOOR: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Peng: 32. 563 00:24:51,850 --> 00:24:54,141 OK, laat ons loop hierdie kode en sien of dit is wat gebeur. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 OK. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 So as jy ouens kan soort van sien, is die tipiese notasie Ek het 568 00:25:06,360 --> 00:25:12,250 opgestel hier vir hoe ons in diens sou neem enige soort van program in ons rekenaar. 569 00:25:12,250 --> 00:25:14,770 Ons het ons belangrikste funksie binne ons belangrikste funksie. 570 00:25:14,770 --> 00:25:17,265 Ek gaan net om te kopieer en plak hierdie lyn van die kode. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Ook versigtig wees wanneer jy ouens kopieer en kode te plak. 573 00:25:23,540 --> 00:25:28,750 Soms sekere operateurs nie korrek plak oor. 574 00:25:28,750 --> 00:25:31,397 In daardie geval, die minus teken was eintlik 'n streep. 575 00:25:31,397 --> 00:25:32,980 En so het die rekenaar het nie dit kom haal. 576 00:25:32,980 --> 00:25:35,870 So ek het om terug te gaan en fisies oor te tik nie. 577 00:25:35,870 --> 00:25:37,846 Net versigtig wees wanneer julle ouens doen dit. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> OK. 580 00:25:42,660 --> 00:25:43,980 Ons gaan om dit hier te hardloop. 581 00:25:43,980 --> 00:25:45,670 So ons gaan cd in ons section2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Ek het hierdie program asciimath genoem. 584 00:25:52,030 --> 00:25:55,690 So onthou, wanneer ons hardloop enige program, wil ons eerste stel dit 585 00:25:55,690 --> 00:25:57,150 deur die loop dit deur ons te maak. 586 00:25:57,150 --> 00:26:00,030 En dan wil ons eintlik loop die program deur te doen dot-slash. 587 00:26:00,030 --> 00:26:01,280 So ons gaan ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Reg, daar gaan ons. 590 00:26:06,590 --> 00:26:07,410 En ons sien 32. 591 00:26:07,410 --> 00:26:07,930 Wel gedaan. 592 00:26:07,930 --> 00:26:10,340 Jy verdien 'n stuk van snoep. 593 00:26:10,340 --> 00:26:11,160 Candy vir jou. 594 00:26:11,160 --> 00:26:11,900 Jammer. 595 00:26:11,900 --> 00:26:13,100 Alles reg. 596 00:26:13,100 --> 00:26:13,670 OK. 597 00:26:13,670 --> 00:26:18,070 So kan ons terug na ons voorbeeld hier gaan. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, no. 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 Aah. 602 00:26:31,090 --> 00:26:32,490 OK. 603 00:26:32,490 --> 00:26:34,610 Ek gaan net om dit so te hou. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 OK. 606 00:26:51,240 --> 00:26:51,740 OK. 607 00:26:51,740 --> 00:26:55,340 So as julle kan sien, kan ons doen baie baie interessante dinge, 608 00:26:55,340 --> 00:26:58,880 'n baie baie cool dinge, 'n baie baie ingewikkelde dinge wat 609 00:26:58,880 --> 00:27:02,720 ASCII karakters en getalle. 610 00:27:02,720 --> 00:27:05,890 Wanneer jy af te reël vyf dit is 'n baie om te volg saam. 611 00:27:05,890 --> 00:27:07,640 Ons gaan nie om te gaan deur die afdeling. 612 00:27:07,640 --> 00:27:10,720 Voel vry om, as jy kan, Daarom is dit uit op papier 613 00:27:10,720 --> 00:27:14,750 eerste op wat moet gebeur wanneer jy insette soos 'n string van waardes. 614 00:27:14,750 --> 00:27:19,720 Byvoorbeeld, in die laaste lyn, ons het z-- wat 'n sekere number-- verteenwoordig 615 00:27:19,720 --> 00:27:24,740 a-- wat ook verteenwoordig 'n sekere number-- plus 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 plus kleinletter a. 617 00:27:26,750 --> 00:27:29,220 >> As jy ouens lees hou deur middel van hierdie, jy 618 00:27:29,220 --> 00:27:34,009 kan sien 'n patroon kom in hoe ons die manipulering van die kode. 619 00:27:34,009 --> 00:27:36,050 Ek het baie, hoogs stel voor na artikel almal van julle 620 00:27:36,050 --> 00:27:38,160 ouens gaan voort en insette diegene alles in jou rekenaar 621 00:27:38,160 --> 00:27:40,060 en sien watter soort van getalle uit te kom 622 00:27:40,060 --> 00:27:43,090 en redeneer deur waarom diegene is gebeur, want vir jou psets 623 00:27:43,090 --> 00:27:45,060 dit sal baie belangrik wees vir jou om te verstaan 624 00:27:45,060 --> 00:27:47,132 waarom sekere dinge gebeur. 625 00:27:47,132 --> 00:27:48,590 Al hierdie skyfies sal aanlyn wees. 626 00:27:48,590 --> 00:27:51,510 So geen bekommernisse oor probeer om fisies kopieer notas. 627 00:27:51,510 --> 00:27:52,510 Aanlyn Alles. 628 00:27:52,510 --> 00:27:54,050 Hierdie afdeling self sal aanlyn wees. 629 00:27:54,050 --> 00:27:57,500 Al my bronkode wat Ek hardloop sal aanlyn wees. 630 00:27:57,500 --> 00:27:58,180 Ja. 631 00:27:58,180 --> 00:27:59,430 Het jy nog 'n vraag? 632 00:27:59,430 --> 00:28:00,587 GEHOOR: Wat is modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Peng: OK. 634 00:28:01,170 --> 00:28:05,620 So modulo is 'n operateur wat gaan redelik belangrik om jou ouens pset 635 00:28:05,620 --> 00:28:06,690 hier. 636 00:28:06,690 --> 00:28:12,280 So die manier waarop operateurs in C en in programmering werk 637 00:28:12,280 --> 00:28:16,360 is dat jy wat is bekend as die afdeling simbool en die modulus simbool, 638 00:28:16,360 --> 00:28:18,350 wat net soos die persentasie teken. 639 00:28:18,350 --> 00:28:24,840 >> So in C, wanneer jy 'n heelgetal te doen gedeel deur 'n heelgetal met 'n streep 640 00:28:24,840 --> 00:28:27,720 C het 'n neiging om te wil sny af al van die desimale punte, 641 00:28:27,720 --> 00:28:30,290 omdat 'n heelgetal wil om te skakel na 'n heelgetal. 642 00:28:30,290 --> 00:28:33,550 Dit gaan nie om te wil 'n dubbele wees met 'n klomp van die desimale al nadat dit. 643 00:28:33,550 --> 00:28:39,322 >> So as ek dit doen 3 gedeel deur 2, gaan dit af te sny die 0,5 en gee jou net 1. 644 00:28:39,322 --> 00:28:41,530 So dit is iets om te wees baie versigtig wanneer jy 645 00:28:41,530 --> 00:28:45,294 doen enige soort van wiskunde in programmering, is dat die getalle jy 646 00:28:45,294 --> 00:28:47,210 mag nie die getalle wat jy dink, 647 00:28:47,210 --> 00:28:50,190 wat is die rede waarom afronding in jou laaste pset so belangrik is. 648 00:28:50,190 --> 00:28:51,980 >> Modulo gee jou die res. 649 00:28:51,980 --> 00:28:56,200 So byvoorbeeld, as ek gedoen het 3 modulo 2-- so 3 persent teken 2-- 650 00:28:56,200 --> 00:28:58,020 dit sou die res van daardie gee. 651 00:28:58,020 --> 00:29:00,460 So 3 gedeel deur 2 is 1,5. 652 00:29:00,460 --> 00:29:01,410 Dit is 1 van 1 restant. 653 00:29:01,410 --> 00:29:04,600 Dit sou gee jou die 1 wat is die res van die. 654 00:29:04,600 --> 00:29:07,361 >> So wanneer jy ouens beweeg deur die ASCII tabel 655 00:29:07,361 --> 00:29:09,735 modulo sal uiteindelik ' iets wat baie belangrik, 656 00:29:09,735 --> 00:29:11,240 en ons sal bespreek wat later. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> OK. 659 00:29:19,040 --> 00:29:27,300 So iets is wat mooi, mooi nuwe en mooi unieke 660 00:29:27,300 --> 00:29:31,920 dat ons hierdie week bespreek het is die konsep van wat 'n skikking is. 661 00:29:31,920 --> 00:29:34,370 So skikking is die eerste tipe datastruktuur 662 00:29:34,370 --> 00:29:36,320 dat ons gaan om teëkom in hierdie klas. 663 00:29:36,320 --> 00:29:40,010 Alle data struktuur is 'n soort van arbitrêre, 664 00:29:40,010 --> 00:29:43,370 letterlik dinge soos struktuur dat ons as programmeerders geskep het, 665 00:29:43,370 --> 00:29:47,890 dat ons in ons kode het sit dit kan ander stukke van die kode bevat. 666 00:29:47,890 --> 00:29:51,090 >> So in hierdie sin, 'n array-- dink aan dit as 'n lêer kabinet, 667 00:29:51,090 --> 00:29:53,470 waar as jy verskillende oop rakke van jou lêer kabinet, 668 00:29:53,470 --> 00:29:55,630 jy kan toegang tot verskillende dinge. 669 00:29:55,630 --> 00:29:58,630 In die geheue, is 'n skikking net te doen dieselfde ding op jou rekenaar. 670 00:29:58,630 --> 00:30:01,730 Jy kan verskillende blocks-- ons het noem hulle indices-- van 'n skikking. 671 00:30:01,730 --> 00:30:04,210 Dit is net soos 'n blok, 'n rak van die geheue 672 00:30:04,210 --> 00:30:07,580 dat ons binne geskep het jou rekenaar wat jy kan invoer 673 00:30:07,580 --> 00:30:10,270 sekere dinge in verskillende ruimtes. 674 00:30:10,270 --> 00:30:18,000 >> So met 'n skikking, jy altyd te specify-- 675 00:30:18,000 --> 00:30:22,360 jy het om te spesifiseer verklaar 'n skikking in die volgende formaat. 676 00:30:22,360 --> 00:30:24,290 Jy gaan eerste spesifiseer die tipe data 677 00:30:24,290 --> 00:30:25,831 wat jy wil om te skep van die skikking. 678 00:30:25,831 --> 00:30:28,870 As ek wil 'n skikking van heelgetalle, Ek gaan int reg daar sit. 679 00:30:28,870 --> 00:30:32,079 As ek wil 'n verskeidenheid van snare, Ek gaan snare daar te vestig, 680 00:30:32,079 --> 00:30:34,995 die naam van jou skikking, en dan jy gaan vierkantige hakies het. 681 00:30:34,995 --> 00:30:39,580 En binne-in die vierkantige hakies, jy is gaan na die grootte van jou array het. 682 00:30:39,580 --> 00:30:42,900 >> Iets wat werklik belangrik om in gedagte hou wanneer die skep van skikkings is 683 00:30:42,900 --> 00:30:46,530 dat, sodra jy 'n te skep skikking, kan daardie grootte verander nie. 684 00:30:46,530 --> 00:30:50,180 So as jy weet dat die reg nou jy het 'n verskeidenheid van grootte 10, 685 00:30:50,180 --> 00:30:54,550 jy weet dat ek gaan 10 selle binne of 10 indekse in hierdie reeks, 686 00:30:54,550 --> 00:30:56,830 en dit gaan nooit om uit te brei of te verminder 687 00:30:56,830 --> 00:30:59,850 maak nie saak wat nie, en daar is tans net 10 blokke van ruimte 688 00:30:59,850 --> 00:31:04,490 in jou geheue wat kan stoor toegeken tot 10 dinge wat jy ookal het sit. 689 00:31:04,490 --> 00:31:08,790 >> So op hierdie manier, 'n verskeidenheid data tipe, die data struktuur wat 'n verskeidenheid 690 00:31:08,790 --> 00:31:13,392 is baie anders as 'n paar ander ons sal bedek later in hierdie kursus. 691 00:31:13,392 --> 00:31:15,170 Ja. 692 00:31:15,170 --> 00:31:20,080 Byvoorbeeld, as jy wou Skep 'n skikking van grootte 3 wat 693 00:31:20,080 --> 00:31:23,670 vervat veranderlikes integer-- O, jammer, van temperature-- 694 00:31:23,670 --> 00:31:25,640 en temperatuur van Natuurlik, 'n heelgetal is. 695 00:31:25,640 --> 00:31:28,710 >> So wil ons int skep, wat is die data tipe wat ons wil stoor. 696 00:31:28,710 --> 00:31:32,680 Ons gaan hierdie temperature noem ter wille van die goeie naam benaming 697 00:31:32,680 --> 00:31:34,200 iets wat ons almal verstaan. 698 00:31:34,200 --> 00:31:35,900 En ons gaan vierkantige hakies het. 699 00:31:35,900 --> 00:31:37,200 En ons wil drie getalle. 700 00:31:37,200 --> 00:31:39,000 So ons gaan sit drie binnekant van dit. 701 00:31:39,000 --> 00:31:41,041 >> Iets wat regtig belangrik om in gedagte te hou 702 00:31:41,041 --> 00:31:43,530 is dat skikkings is nul geïndekseer. 703 00:31:43,530 --> 00:31:46,410 Al wat beteken is dat jy begin met die indeks van 0, 704 00:31:46,410 --> 00:31:49,800 en jy loop deur die grootte van die skikking minus 1. 705 00:31:49,800 --> 00:31:52,730 So hier Byvoorbeeld, ons het 'n verskeidenheid van grootte 3. 706 00:31:52,730 --> 00:31:54,680 Dit gaan in staat wees om drie waardes te hou. 707 00:31:54,680 --> 00:31:57,450 Maar die getalle wat themselves-- nommer, die skikking, wat indeks 708 00:31:57,450 --> 00:32:00,271 die skikking, is 0 deur 2. 709 00:32:00,271 --> 00:32:03,520 So ouens, regtig, regtig versigtig wanneer jy gaan deur jou probleme stel 710 00:32:03,520 --> 00:32:06,500 en die skep van 'n soort van verskeidenheid, omdat 'n groot deel van die keer is dit 711 00:32:06,500 --> 00:32:08,490 regtig, regtig maklik om te vergeet nie. 712 00:32:08,490 --> 00:32:11,840 Ek het eintlik nie die indeks het van 3, dat ek tans net 713 00:32:11,840 --> 00:32:13,130 het die indeks van 2. 714 00:32:13,130 --> 00:32:16,046 En as jy probeer om toegang tot die derde indeks 715 00:32:16,046 --> 00:32:18,170 dit gaan wees wat is genoem die nul terminator. 716 00:32:18,170 --> 00:32:19,990 Dit gaan nie om werklik bestaan ​​in die skikking. 717 00:32:19,990 --> 00:32:21,781 En die rekenaar gaan nie so nie. 718 00:32:21,781 --> 00:32:24,570 So wees versigtig wanneer jy toegang dinge net 719 00:32:24,570 --> 00:32:28,070 om te verseker dat jy onthou dat skikkings is nul-geïndekseer. 720 00:32:28,070 --> 00:32:28,880 >> OK. 721 00:32:28,880 --> 00:32:34,030 So die eerste voorbeeld is net een manier van die skep van 'n skikking. 722 00:32:34,030 --> 00:32:36,790 Die tweede voorbeeld het ek Hier is net 'n aparte manier 723 00:32:36,790 --> 00:32:40,210 skep wat dieselfde data struktuur wat ons nou net ingevoer. 724 00:32:40,210 --> 00:32:44,347 So in plaas van fisies loop deur en sit in temperatuur van 0 725 00:32:44,347 --> 00:32:47,180 gelyk ook al, temperatuur 1 gelyk ook al, temperatuur 2 gelykes 726 00:32:47,180 --> 00:32:50,950 wat ook al, kon ek net eintlik dit alles direk te skep in een lyn 727 00:32:50,950 --> 00:32:53,010 in temperatuur tussen vierkantige hakies gelyk. 728 00:32:53,010 --> 00:32:56,536 >> En kennis in hierdie geval, het jy nie nodig om te bepaal hoe groot jou skikking is, 729 00:32:56,536 --> 00:32:59,160 omdat die rekenaar gaan gaan deur en sien dat daar ' 730 00:32:59,160 --> 00:33:01,570 drie elemente in die krullerige draadjies. 731 00:33:01,570 --> 00:33:04,000 En dit gaan om te weet, OK, Ek het 'n verskeidenheid van grootte 3. 732 00:33:04,000 --> 00:33:07,440 Jy gaan nie nodig om insette dit op die volgende manier. 733 00:33:07,440 --> 00:33:10,170 >> En ook, ja, dat die pad. 734 00:33:10,170 --> 00:33:12,610 Is daar iemand wat vrae het oor hoe ons skikkings 735 00:33:12,610 --> 00:33:17,391 of hoe die struktuur van 'n skikking werk? 736 00:33:17,391 --> 00:33:17,890 Ja. 737 00:33:17,890 --> 00:33:18,806 >> GEHOOR: [onhoorbaar]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Peng: Ja, presies. 740 00:33:22,690 --> 00:33:26,150 So as jy was om te verklaar en inisialiseer 'n verskeidenheid van die volgende metode, 741 00:33:26,150 --> 00:33:28,477 dit is die tweede manier, jy kan net laat die. 742 00:33:28,477 --> 00:33:30,310 En die rekenaar weet dat dit outomaties 743 00:33:30,310 --> 00:33:33,950 moet hoeveel elemente te tel is in die krulhakies, geskei 744 00:33:33,950 --> 00:33:34,930 deur kommas. 745 00:33:34,930 --> 00:33:37,517 >> So hier sien dat hulle 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 So die rekenaar weet, o, daar is drie heelgetalle. 747 00:33:39,600 --> 00:33:45,960 Ek weet om 'n skikking te skep naam temperatuur met drie elemente in dit. 748 00:33:45,960 --> 00:33:46,590 Goeie vraag. 749 00:33:46,590 --> 00:33:47,090 Ja. 750 00:33:47,090 --> 00:33:51,590 >> GEHOOR: Is dit nie moontlik om te skep 'n skikking met verskillende tipes data 751 00:33:51,590 --> 00:33:53,021 wat kan ingeskryf word in dit? 752 00:33:53,021 --> 00:33:56,746 Byvoorbeeld, met heelgetalle [onhoorbaar]? 753 00:33:56,746 --> 00:33:59,120 ANDI Peng: Vir die doeleindes van hierdie klas, nee, nou. 754 00:33:59,120 --> 00:34:03,070 Wanneer jy 'n data te skep struktureer soos 'n skikking, 755 00:34:03,070 --> 00:34:04,990 jy vertel is die rekenaar, hey, ek het jou nodig 756 00:34:04,990 --> 00:34:08,159 om soveel toeken geheue in my hardeskyf, 757 00:34:08,159 --> 00:34:10,690 met elke sel 'n sekere aantal stukkies. 758 00:34:10,690 --> 00:34:13,429 >> Onthou ons geleer het in week zero dat verskillende data 759 00:34:13,429 --> 00:34:15,300 tipes het verskillende groottes? 760 00:34:15,300 --> 00:34:17,630 So byvoorbeeld, 'n string is 'n ander bedrag 761 00:34:17,630 --> 00:34:20,719 ruimte as 'n kar, wat is 'n ander bedrag van die ruimte 762 00:34:20,719 --> 00:34:21,830 uit 'n heelgetal. 763 00:34:21,830 --> 00:34:25,534 En so, as jy nie spesifiseer en jy meng en pas watter soorte veranderlikes 764 00:34:25,534 --> 00:34:27,659 jy het, die rekenaar gaan baie verward wees. 765 00:34:27,659 --> 00:34:29,950 En dit gaan nie om te weet hoeveel geheue om jou te gee. 766 00:34:29,950 --> 00:34:32,480 So vir die doel van reg nou, rekenaars kan net 767 00:34:32,480 --> 00:34:36,120 erken 'n tipe van 'n skikking. 768 00:34:36,120 --> 00:34:37,940 Goeie vraag. 769 00:34:37,940 --> 00:34:38,440 OK. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> So natuurlik, die tweede vraag wat ons het 772 00:34:47,120 --> 00:34:50,760 is, wel, nou dat ons 'n gemaak het skikking en ons het al hierdie dinge 773 00:34:50,760 --> 00:34:54,190 in die skikking, hoe is ons gaan in staat wees om dit te bekom? 774 00:34:54,190 --> 00:34:59,710 So het die tipiese struktuur wat ons altyd toegang 'n skikking is ons pragtige lus. 775 00:34:59,710 --> 00:35:03,830 Ek belowe jou ouens wat ons sal wees sien baie van hierdie mede hier. 776 00:35:03,830 --> 00:35:06,470 >> Wese, wanneer jy wil om insette waardes in 'n skikking 777 00:35:06,470 --> 00:35:09,940 of jy wil om dit te bekom, die beste manier om dit te doen is 'n lus vir, 778 00:35:09,940 --> 00:35:13,730 want in 'n lus vir die, jy weet hoeveel keer jy 779 00:35:13,730 --> 00:35:17,290 gaan wil om te loop deur die skikking, want jy het 'n stop-uitgawe, reg? 780 00:35:17,290 --> 00:35:19,680 En elke keer as jy loop deur, kan jy toegang tot 781 00:35:19,680 --> 00:35:21,310 'n ander element van die skikking. 782 00:35:21,310 --> 00:35:26,920 >> En ook, dit is 'n rede waarom tipies ons begin ons vir loops aan die 0 waarde 783 00:35:26,920 --> 00:35:30,080 want wanneer jy toegang tot skikkings, jy kan toegang tot die nul-indeks. 784 00:35:30,080 --> 00:35:32,070 En so is dit parallel baie mooi. 785 00:35:32,070 --> 00:35:35,295 Julle mag wou skryf vir int i gelyk 1. 786 00:35:35,295 --> 00:35:37,330 i minder as of gelyk aan 3. 787 00:35:37,330 --> 00:35:39,890 >> Maar dit sou nie heeltemal werk as Wel hier, omdat jy net 788 00:35:39,890 --> 00:35:42,010 elemente van 0, 1, 2 en. 789 00:35:42,010 --> 00:35:45,815 En so as jy was om te begin jou i by element 1, 2, en 3, 790 00:35:45,815 --> 00:35:48,440 jy gaan om te eindig hardloop uit die grense van jou skikking, 791 00:35:48,440 --> 00:35:50,440 en slegte dinge gaan gebeur. 792 00:35:50,440 --> 00:35:54,480 >> So ek hoop julle sien die segue waarom in die vorige klasse 793 00:35:54,480 --> 00:35:58,560 ons leer julle hoe om te hardloop en klaarmaak vir lus om die manier wat ons was. 794 00:35:58,560 --> 00:36:01,900 Dit is omdat, nou het ons transitioned in skikkings, 795 00:36:01,900 --> 00:36:06,760 jy kan sien waarom die 0 leen self baie mooi om toegang. 796 00:36:06,760 --> 00:36:09,880 >> So die manier waarop ons dit doen is that-- Ek is net buite druk dit hier ter wille 797 00:36:09,880 --> 00:36:10,830 van die druk dit uit. 798 00:36:10,830 --> 00:36:13,750 Maar ek het my plekhouer, komma. 799 00:36:13,750 --> 00:36:15,645 En die werklike ontsluiting deel gebeur. 800 00:36:15,645 --> 00:36:17,520 Die naam van die skikking is die temperatuur genoem. 801 00:36:17,520 --> 00:36:21,570 Dus is dit die temperatuur en die i-de element van die skikking. 802 00:36:21,570 --> 00:36:24,400 >> So as die lus loop deur, dit gaan om te begin by 0. 803 00:36:24,400 --> 00:36:27,640 Dit gaan om uit te druk die 0 indeks van hierdie skikking. 804 00:36:27,640 --> 00:36:29,599 Dan is dit gaan om te druk uit die eerste element. 805 00:36:29,599 --> 00:36:31,431 Dan is dit gaan om te druk die tweede een. 806 00:36:31,431 --> 00:36:32,880 En dan gaan ons breek. 807 00:36:32,880 --> 00:36:36,718 Is almal duidelik hoe dit gebeur? 808 00:36:36,718 --> 00:36:37,217 Groot. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Alles reg. 811 00:36:44,100 --> 00:36:47,270 So hier het ons 'n manier om sê, as ons nie wil 812 00:36:47,270 --> 00:36:50,020 hard-kode in-- my as die programmeerder. 813 00:36:50,020 --> 00:36:53,320 Ek wou nie eintlik fisies sit in elke individu element 814 00:36:53,320 --> 00:36:54,020 van hierdie skikking. 815 00:36:54,020 --> 00:36:56,500 As ek wou plaas die toevoer van die gebruiker waardes, 816 00:36:56,500 --> 00:36:58,100 Wat is die beste manier om dit te doen? 817 00:36:58,100 --> 00:37:00,920 >> Wel, hier het ek geskep hierdie pragtige funksie, 818 00:37:00,920 --> 00:37:03,560 waarop Ek verklaar 'n skikking. 819 00:37:03,560 --> 00:37:06,210 So int scores-- laat net sê ons wil maak 820 00:37:06,210 --> 00:37:10,660 'n skikking wat die grade van alle 18 gehou van die studente hier in hierdie afdeling. 821 00:37:10,660 --> 00:37:12,670 Ek dink ons ​​het 'n bietjie het meer as 18 kinders vandag. 822 00:37:12,670 --> 00:37:16,460 Maar ter wille van byvoorbeeld se, laat ons net aanvaar ons het 18. 823 00:37:16,460 --> 00:37:21,580 Ek sou 'n verskeidenheid naam tellings met te skep tipe int, want tellings, natuurlik, 824 00:37:21,580 --> 00:37:22,987 is getalle. 825 00:37:22,987 --> 00:37:24,820 En ek gaan hê 18 in vierkantige hakies, 826 00:37:24,820 --> 00:37:29,900 want dit is hoe baie studente I wil in staat wees om tellings van stoor. 827 00:37:29,900 --> 00:37:32,206 >> En die manier wat ek wil vul die skikking is dat ek wil 828 00:37:32,206 --> 00:37:35,572 loop dit deur 'n lus, van Natuurlik, met 0, synde my 0 indeks. 829 00:37:35,572 --> 00:37:38,030 En dan met 18 om my stop uitgawe, want daar is 830 00:37:38,030 --> 00:37:39,690 18 elemente in die skikking. 831 00:37:39,690 --> 00:37:44,620 En dan gaan ek printf te doen, Tik telling vir student-- yada yada yada. 832 00:37:44,620 --> 00:37:51,171 >> Kan iemand my vertel hoekom ek is hier druk i plus 1 en nie i? 833 00:37:51,171 --> 00:37:52,920 Dit is soort van 'n truuk vraag, nie regtig nie. 834 00:37:52,920 --> 00:37:56,020 Dit maak nie eintlik fisies invloed op die verloop van die kode. 835 00:37:56,020 --> 00:37:56,520 Ja. 836 00:37:56,520 --> 00:37:57,909 >> GEHOOR: [onhoorbaar] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Peng: Ja, presies. 838 00:37:58,950 --> 00:38:02,620 Dit is 'n bietjie ongemaklik om te sê, hey, jy is die 0 student in hierdie klas. 839 00:38:02,620 --> 00:38:03,780 Dit is 'n bietjie vreemd. 840 00:38:03,780 --> 00:38:08,340 So ons as mense het nie regtig soos om te dink hoe rekenaars dink. 841 00:38:08,340 --> 00:38:10,930 So selfs al in die rekenaar, is dit die stoor waardes 842 00:38:10,930 --> 00:38:13,310 in die 0-ste indeks toe ons mense, ons doen nie regtig 843 00:38:13,310 --> 00:38:15,520 graag verwys na onsself as nul. 844 00:38:15,520 --> 00:38:18,119 So wanneer ek druk net dat, Ek gaan om te druk en voeg 845 00:38:18,119 --> 00:38:19,410 1 net ter wille van duidelikheid. 846 00:38:19,410 --> 00:38:22,447 So wanneer ek druk, ek gaan wees in staat wees om studente te druk 1 deur middel van 18. 847 00:38:22,447 --> 00:38:24,530 Dit maak nie eintlik 'n impak die bestuur van die kode 848 00:38:24,530 --> 00:38:27,110 op enige manier, die manier wat ek druk. 849 00:38:27,110 --> 00:38:30,380 >> Maar wees versigtig wanneer jy eintlik toegang tot die skikking. 850 00:38:30,380 --> 00:38:32,780 Wanneer jy sien die tellings i, sien hier Ek is eintlik 851 00:38:32,780 --> 00:38:38,200 toegang tot die 0-indeks en nie die 1 plus 0-- of 1 plus 1, 852 00:38:38,200 --> 00:38:45,530 in hierdie geval, indeks so dat dit eintlik duidelik. 853 00:38:45,530 --> 00:38:48,870 Is almal soort van OK op hoe dit loop deur 854 00:38:48,870 --> 00:38:51,470 en met elke indeks Ek is om 'n waarde in die skikking 855 00:38:51,470 --> 00:38:55,340 en die skep van 'n skikking met 18 nommers dat die gebruiker gaan insette? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 OK. 858 00:38:59,821 --> 00:39:00,321 Koel. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> OK. 861 00:39:07,400 --> 00:39:12,220 Ons beweeg nou in iets wat mooi is relevant is vir hierdie stuk sowel stel. 862 00:39:12,220 --> 00:39:15,020 Ek weet in lesing David-- Jammer, jy 'n vraag het? 863 00:39:15,020 --> 00:39:16,840 >> GEHOOR: Kan jy dit te vergroot? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Peng: Ja, so ek probeer. 865 00:39:18,080 --> 00:39:18,788 Maar ek weet nie. 866 00:39:18,788 --> 00:39:21,437 Vir een of ander rede, is hierdie weergawe van PowerPoint 867 00:39:21,437 --> 00:39:23,270 is regtig nie werk nie goed met die vertoning. 868 00:39:23,270 --> 00:39:25,260 So ons is maar net gaan om dit te hou soos hierdie. 869 00:39:25,260 --> 00:39:27,280 Al hierdie sal aanlyn foto. 870 00:39:27,280 --> 00:39:28,218 Jammer, ouens. 871 00:39:28,218 --> 00:39:30,090 Ja. 872 00:39:30,090 --> 00:39:30,980 OK. 873 00:39:30,980 --> 00:39:35,530 >> So kan ons ook snare. 874 00:39:35,530 --> 00:39:39,320 So as jy ouens eintlik notice-- ek weet Rob het oor hierdie in daardie lesing 875 00:39:39,320 --> 00:39:43,652 dat hy 'n string did-- is eintlik net 'n verskeidenheid van die karakters, 876 00:39:43,652 --> 00:39:44,860 As jy dink oor dit, reg? 877 00:39:44,860 --> 00:39:47,500 A string is 'n naam of 'n sin of 'n woord, reg? 878 00:39:47,500 --> 00:39:52,975 >> As ek 'n string naam skep Andi-- net my naam, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Jy dink dat as net een veranderlike. 880 00:39:55,460 --> 00:39:58,630 Maar eintlik, is dit afgebreek in net 'n verskeidenheid van karakters. 881 00:39:58,630 --> 00:40:01,910 So dit het 'n karakter van 'n gestoor in 'n skikking waarde. 882 00:40:01,910 --> 00:40:05,420 Dit het 'n karakter van N gestoor word in die tweede indeks en so aan en so voort. 883 00:40:05,420 --> 00:40:08,660 >> So in so 'n manier, ons eintlik hierdie soort 884 00:40:08,660 --> 00:40:10,970 struktuur in plaas vir ons snare. 885 00:40:10,970 --> 00:40:14,660 So hier, as ek insette van die woord "eet" - so string woord gelyk 886 00:40:14,660 --> 00:40:15,540 kry string. 887 00:40:15,540 --> 00:40:19,260 As ek insette van die woord "eet," wat fisies die manier waarop my rekenaar 888 00:40:19,260 --> 00:40:21,870 is die stoor wat string in my geheue. 889 00:40:21,870 --> 00:40:27,140 >> En as ek wou om te loop deur wat en druk wat so out-- om na i 890 00:40:27,140 --> 00:40:30,890 gelyk is aan nul, onthou, in lesing, ons bedek iets wat StrLen genoem word, 891 00:40:30,890 --> 00:40:32,990 of die lengte van die string. 892 00:40:32,990 --> 00:40:36,520 Omdat ek nie eintlik weet hoe groot die skikking is 893 00:40:36,520 --> 00:40:38,210 van watter inputting-- die gebruiker se 894 00:40:38,210 --> 00:40:40,370 >> Byvoorbeeld, ingevoer ek die woord "eet" en ek weet 895 00:40:40,370 --> 00:40:41,870 dit is drie karakters lank, reg? 896 00:40:41,870 --> 00:40:44,700 So kon ek in 'n drie daar te vestig en alles sal goed wees. 897 00:40:44,700 --> 00:40:49,290 Maar as jou toevoer van die gebruiker iets dit is 'n verskillende aantal waardes, 898 00:40:49,290 --> 00:40:52,760 jy gaan nie in staat wees om werklik weet dat wanneer jy jou kode program. 899 00:40:52,760 --> 00:40:56,040 >> So die manier wat ons hanteer toets gevalle soos dit is dat ons iets 900 00:40:56,040 --> 00:41:00,070 StrLen genoem, wat net 'n funksie wat vertel jy hoe lank 'n string is. 901 00:41:00,070 --> 00:41:02,080 So StrLen van 'n woord. 902 00:41:02,080 --> 00:41:03,470 My woord is die eet. 903 00:41:03,470 --> 00:41:05,990 N gelyk StrLen van 'n woord. 904 00:41:05,990 --> 00:41:08,930 Kan iemand my vertel wat dit waarde eintlik is reg daar? 905 00:41:08,930 --> 00:41:12,550 Wat beteken N reg verteenwoordig nou, in hierdie voorbeeld, as ek eet? 906 00:41:12,550 --> 00:41:13,530 >> GEHOOR: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Peng: 3, presies. 908 00:41:14,520 --> 00:41:18,820 So het ons vir int i gelyk nul, n gelyk 3, wese. 909 00:41:18,820 --> 00:41:22,355 En ek gaan loop totdat dit minder as 3i ++. 910 00:41:22,355 --> 00:41:24,980 En dit gaan in wese gaan deur en doen dieselfde ding. 911 00:41:24,980 --> 00:41:26,979 Dit gaan om uit te druk elke waarde en gee jou 912 00:41:26,979 --> 00:41:29,700 E-A-T. Dit is net gee 'n ander manier om dit te skryf. 913 00:41:29,700 --> 00:41:31,170 Dit gaan baie nuttig wees. 914 00:41:31,170 --> 00:41:31,670 Ja. 915 00:41:31,670 --> 00:41:35,174 GEHOOR: Wat is die voordele van om die N gelyk StrLen woord binne daardie 916 00:41:35,174 --> 00:41:36,894 lus [onhoorbaar]? 917 00:41:36,894 --> 00:41:37,560 ANDI Peng: Ja. 918 00:41:37,560 --> 00:41:44,880 So as ek aan- sê, byvoorbeeld, as ek dit doen en dan 919 00:41:44,880 --> 00:41:51,935 do-- oop-- dat, in my kode, sou dit eintlik doen soos die dieselfde ding. 920 00:41:51,935 --> 00:41:55,060 Maar die manier waarop David verduidelik tydens lesing, indien enige van julle ouens 921 00:41:55,060 --> 00:41:57,854 onthou, is dat, as mens, as programmeerders, 922 00:41:57,854 --> 00:42:00,270 ons regtig probeer om die program ons kode, sodat ons rekenaar het 923 00:42:00,270 --> 00:42:04,070 as minimale as moontlik te werk, sodat dat ons kode is baie effektief. 924 00:42:04,070 --> 00:42:06,850 >> So as ek dat daar, wat sou gebeur deur my lus 925 00:42:06,850 --> 00:42:10,790 is dat ek die eerste keer wil verklaar veranderlike genoem i gaan wees 0. 926 00:42:10,790 --> 00:42:13,350 Ek gaan om te kyk, o, Wat is die StrLen van 'n woord? 927 00:42:13,350 --> 00:42:15,000 O, die StrLen is 3. 928 00:42:15,000 --> 00:42:16,191 So is ek minder as drie? 929 00:42:16,191 --> 00:42:16,690 Ja dit is. 930 00:42:16,690 --> 00:42:17,870 Ek gaan om te hardloop. 931 00:42:17,870 --> 00:42:21,130 >> En dan is die tweede keer terug om die lus, ek gaan i inkrementeer. 932 00:42:21,130 --> 00:42:22,550 i gaan om een ​​te wees. 933 00:42:22,550 --> 00:42:25,600 En ek gaan om te kyk, o, maar wat is die StrLen van 'n woord? 934 00:42:25,600 --> 00:42:26,839 O, dit is drie. 935 00:42:26,839 --> 00:42:29,880 En doen dat die soort van verkwistende lyk, elke keer as jy deur die loop hardloop, 936 00:42:29,880 --> 00:42:33,340 word die beheer van die funksie, selfs al is die StrLen van 'n woord 937 00:42:33,340 --> 00:42:35,490 nooit werklik verander? 938 00:42:35,490 --> 00:42:38,590 >> Dus is dit ekstra krag vir 'n rekenaar. 939 00:42:38,590 --> 00:42:42,180 Wanneer jy begin praat oor dinge wat biljoene en biljoene 940 00:42:42,180 --> 00:42:44,431 en biljoene plekke lank, dink jou rekenaar 941 00:42:44,431 --> 00:42:47,430 om te gaan deur en fisies kyk al van dat elke keer. 942 00:42:47,430 --> 00:42:53,170 Dit is waarom, om net ter wille van doeltreffendheid, 943 00:42:53,170 --> 00:42:57,620 ons geneig om dit net te doen, want op hierdie manier is ons net 944 00:42:57,620 --> 00:42:59,850 roep die funksie een keer in die begin, 945 00:42:59,850 --> 00:43:01,766 en dat elke keer as dit gaan deur dit gaan 946 00:43:01,766 --> 00:43:03,789 om die waarde te stoor 3 daar het jy dit nie doen nie 947 00:43:03,789 --> 00:43:05,330 moet voortdurend kyk elke keer. 948 00:43:05,330 --> 00:43:05,743 Ja. 949 00:43:05,743 --> 00:43:06,409 >> GEHOOR: Jammer. 950 00:43:06,409 --> 00:43:09,070 Net [onhoorbaar]. 951 00:43:09,070 --> 00:43:13,985 Kon jy int N gelyk StrLen en sit wat bo die buitekant van die lus vir 952 00:43:13,985 --> 00:43:15,364 ook? 953 00:43:15,364 --> 00:43:16,030 ANDI Peng: Ja. 954 00:43:16,030 --> 00:43:17,100 Jy kan dit doen, absoluut. 955 00:43:17,100 --> 00:43:19,970 Die rede het ons dit hier is omdat die manier waarop 'n lus vir die werke 956 00:43:19,970 --> 00:43:23,500 is dat dit bekend as 'n plaaslike veranderlike in die sin 957 00:43:23,500 --> 00:43:26,150 dat alles wat jy is skep binnekant van die lus vir 958 00:43:26,150 --> 00:43:27,890 net bestaan ​​binne die lus. 959 00:43:27,890 --> 00:43:31,530 >> Net so is die veranderlike i bestaan ​​in die hakies. 960 00:43:31,530 --> 00:43:35,260 En hier is die veranderlikes van n ook bestaan ​​slegs in die hakies. 961 00:43:35,260 --> 00:43:39,350 So as jy was om te gebruik StrLen van woord verskeie kere onder af, 962 00:43:39,350 --> 00:43:42,230 absoluut die beste manier om dit te doen sou wees om dit te verklaar die top 963 00:43:42,230 --> 00:43:43,563 so jy hoef nie om dit een keer te doen. 964 00:43:43,563 --> 00:43:45,420 Ja. 965 00:43:45,420 --> 00:43:47,670 GEHOOR: Hoekom dink jy het 'n nuwe lyn na die persent 966 00:43:47,670 --> 00:43:51,300 sien as jy wil al sit die letters langs dit skei? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Peng: O, ek wou druk hulle almal op elke lyn. 968 00:43:54,140 --> 00:43:54,890 Dit maak nie saak nie. 969 00:43:54,890 --> 00:43:55,890 Ja, dit is 'n opmaak. 970 00:43:55,890 --> 00:43:57,181 Dit is 'n goeie vraag, al is. 971 00:43:57,181 --> 00:43:59,360 Ja, as ek wou om te druk dit alles op net een lyn, 972 00:43:59,360 --> 00:44:02,731 Ek wil nie hê die paneelbord in. 973 00:44:02,731 --> 00:44:03,230 OK. 974 00:44:03,230 --> 00:44:06,880 Almal goeie? 975 00:44:06,880 --> 00:44:07,500 OK. 976 00:44:07,500 --> 00:44:08,000 Koel. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> So ek dink ek het genoeg gepraat. 979 00:44:14,750 --> 00:44:20,040 Julle ouens se beurt om te loop deur die kode en vertel my wat verkeerd is hier. 980 00:44:20,040 --> 00:44:21,560 Waar is die fout? 981 00:44:21,560 --> 00:44:26,920 So soos jy kan sien, het ek verklaar nuwe reeks van die soort string naam klas. 982 00:44:26,920 --> 00:44:30,220 En ek het ingevoer Sam, Jess, en Kim in dit. 983 00:44:30,220 --> 00:44:33,400 En ek is 'n poging om uit te druk al die elemente van die skikking. 984 00:44:33,400 --> 00:44:36,796 Kan iemand my vertel hoekom hierdie gaan my probleme gee? 985 00:44:36,796 --> 00:44:39,320 Ek sal julle ouens gee 10 sekondes om te dink oor hierdie. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> OK. 988 00:44:56,619 --> 00:44:57,118 Ja? 989 00:44:57,118 --> 00:45:01,972 >> GEHOOR: Is die links sentrum gelyk aan 3 of [onhoorbaar]? 990 00:45:01,972 --> 00:45:02,680 ANDI Peng: Right. 991 00:45:02,680 --> 00:45:06,784 So hoeveel keer is dit eintlik gaan loop deur middel van hierdie lus? 992 00:45:06,784 --> 00:45:07,620 >> GEHOOR: Vier. 993 00:45:07,620 --> 00:45:08,070 >> ANDI Peng: Presies. 994 00:45:08,070 --> 00:45:09,445 Dit gaan deur vier keer. 995 00:45:09,445 --> 00:45:12,250 Dit gaan om deur te hardloop by 0, 1, 2, en 3, 996 00:45:12,250 --> 00:45:15,200 omdat hul element is i minder as of gelyk aan 3. 997 00:45:15,200 --> 00:45:16,960 Dit gaan nie om te stop wanneer dit 2. 998 00:45:16,960 --> 00:45:18,800 Dit gaan hou gaan totdat dit treffers 3. 999 00:45:18,800 --> 00:45:21,720 En soos ons weet, is daar net drie elemente in ons werklike skikking. 1000 00:45:21,720 --> 00:45:27,260 >> As ons probeer om toegang tot die vierde element of die indeks van 3, 1001 00:45:27,260 --> 00:45:30,357 jy gaan iewers getref in die geheue wat nie bestaan ​​nie. 1002 00:45:30,357 --> 00:45:31,690 Dit is bekend as die nul terminator. 1003 00:45:31,690 --> 00:45:32,856 Niks gaan om daar te wees. 1004 00:45:32,856 --> 00:45:35,324 Jou rekenaar gaan nie te wees baie gelukkig met jou. 1005 00:45:35,324 --> 00:45:36,170 Ja. 1006 00:45:36,170 --> 00:45:38,430 Is daar iemand wat vrae het oor hoekom dit gebeur het? 1007 00:45:38,430 --> 00:45:39,679 Dit is 'n gemeenskaplike gebied te vermy. 1008 00:45:39,679 --> 00:45:40,712 Ja. 1009 00:45:40,712 --> 00:45:45,777 >> GEHOOR: Is nie die eerste skuif ook 'n string van 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI Peng: No. 1011 00:45:46,360 --> 00:45:49,610 So in wese, wanneer jy maak 'n skikking, 1012 00:45:49,610 --> 00:45:51,540 dat bracket reg daar het al number-- 1013 00:45:51,540 --> 00:45:53,480 dit is wat jy vertel is hoe baie elemente wat ek het. 1014 00:45:53,480 --> 00:45:55,840 Dit is nie eintlik vertel vir my die indekse van enigiets. 1015 00:45:55,840 --> 00:45:58,760 So in hierdie geval, ek weet wat ek wil om te skryf met drie plekke, 1016 00:45:58,760 --> 00:46:02,690 met drie fisiese plekke hou wat ek wil om te hou. 1017 00:46:02,690 --> 00:46:04,510 So dit is waarom die nommer drie is daar. 1018 00:46:04,510 --> 00:46:06,560 Maar, as ek wou om werklik toegang het, 1019 00:46:06,560 --> 00:46:11,220 As ek wou sê, printf klas bracket getal is, dan 1020 00:46:11,220 --> 00:46:14,560 jy gaan eintlik sit die fisiese indeks daar. 1021 00:46:14,560 --> 00:46:16,330 Ja, goeie vraag. 1022 00:46:16,330 --> 00:46:20,065 >> GEHOOR: So is die fisiese indeks veronderstel om te wees [onhoorbaar]? 1023 00:46:20,065 --> 00:46:20,940 ANDI Peng: Ek is jammer. 1024 00:46:20,940 --> 00:46:21,500 Kan jy praat 'n bietjie? 1025 00:46:21,500 --> 00:46:24,208 >> GEHOOR: So is die fisiese indeks [Onhoorbaar] elk van die bokse? 1026 00:46:24,208 --> 00:46:25,260 [Onhoorbaar]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI Peng: Ja. 1028 00:46:26,040 --> 00:46:28,970 So ek gaan om terug te gaan na regs hier. 1029 00:46:28,970 --> 00:46:31,120 Dink hier. 1030 00:46:31,120 --> 00:46:32,820 Ons het 'n verskeidenheid van grootte 3. 1031 00:46:32,820 --> 00:46:35,540 Daar is drie plekke, soos, fisiese plekhouers hier. 1032 00:46:35,540 --> 00:46:37,620 Maar hulle is vernoem 0, 1, 2 en. 1033 00:46:37,620 --> 00:46:40,700 So as ek wou om dit te bekom, die manier waarop ek toegang tot hulle 1034 00:46:40,700 --> 00:46:43,480 is printf van alles wat ek wou hier. 1035 00:46:43,480 --> 00:46:45,485 Jy sal hê om te druk die naam van dit, 1036 00:46:45,485 --> 00:46:47,610 want dan is die rekenaar weet, o, ek moet kyk 1037 00:46:47,610 --> 00:46:51,391 in hierdie reeks vir die 0-indeks. 1038 00:46:51,391 --> 00:46:51,890 Ja. 1039 00:46:51,890 --> 00:46:53,306 Maar die grootte van dit nie verander nie. 1040 00:46:53,306 --> 00:46:55,492 Die grootte is 3, ongeag van hoe jy dit etiketteer. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 OK. 1043 00:46:58,820 --> 00:47:01,387 Almal goeie? 1044 00:47:01,387 --> 00:47:02,970 GEHOOR: So elke keer as ek [onhoorbaar]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI Peng: OK. 1047 00:47:06,940 --> 00:47:13,270 So in hierdie geval, ons doen nie regtig kry in dit nou in die kursus. 1048 00:47:13,270 --> 00:47:16,760 Maar weet dat 'n string-- soos ek gesê het, 'n string is in wese 1049 00:47:16,760 --> 00:47:18,440 'n verskeidenheid van die karakters. 1050 00:47:18,440 --> 00:47:21,430 So as ek Skep 'n skikking van snare, ek soort van 1051 00:47:21,430 --> 00:47:24,430 het 'n verskeidenheid van verskeidenheid van die karakters, reg? 1052 00:47:24,430 --> 00:47:27,720 >> So in hierdie geval, want ek het 'n verskeidenheid van snare, 1053 00:47:27,720 --> 00:47:31,340 As jy was om insette 'n baie lang woord, wat nog neem slegs een spasie, 1054 00:47:31,340 --> 00:47:33,230 want dit is die een string. 1055 00:47:33,230 --> 00:47:37,492 Maar as jy was om te dink die karakters van daardie skikking, 1056 00:47:37,492 --> 00:47:40,450 dan is dit neem 'n baie meer karakters as enige van die ander woorde 1057 00:47:40,450 --> 00:47:41,372 is. 1058 00:47:41,372 --> 00:47:42,830 Nie regtig belangrik is vir nou. 1059 00:47:42,830 --> 00:47:44,921 Maar dit is net oor die algemeen hoe dit werk. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> OK. 1062 00:47:50,560 --> 00:47:55,840 So, dit is iets wat ek sal jou laat doen 'n baie oor die loop van die semester. 1063 00:47:55,840 --> 00:47:57,500 Ek moet my stem te rus. 1064 00:47:57,500 --> 00:47:59,530 Julle moet julleself te stimuleer. 1065 00:47:59,530 --> 00:48:02,300 Baie van julle het waarskynlik moet nou slaap. 1066 00:48:02,300 --> 00:48:05,960 Ek skryf ewekansige probleme waar ons as 'n klas, of jy 1067 00:48:05,960 --> 00:48:09,480 met 'n maat langs jou gaan om 'n paar minute te spandeer bespreek 1068 00:48:09,480 --> 00:48:14,980 oor hoe ons sal gaan om of die skep van 'n program soos hierdie. 1069 00:48:14,980 --> 00:48:17,100 >> So nou, ons wil 'n program-- skep 1070 00:48:17,100 --> 00:48:19,560 ons gaan om dit te noem upper.c-- dat bekeerlinge 1071 00:48:19,560 --> 00:48:24,787 'n klein woord om 'n bo-klas string-- hoofletters, jammer. 1072 00:48:24,787 --> 00:48:26,370 Word in stringe, jammer, is sinoniem. 1073 00:48:26,370 --> 00:48:28,370 Ek gaan om dit te verander om dieselfde ding beteken. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Ja. 1076 00:48:33,499 --> 00:48:34,540 Neem 'n paar minute. 1077 00:48:34,540 --> 00:48:37,130 Dit hoef nie te wees in enige taal geskryf. 1078 00:48:37,130 --> 00:48:39,890 Net in pseudokode-kode of logies hoe ons sou selfs 1079 00:48:39,890 --> 00:48:42,083 gaan doen so 'n probleem. 1080 00:48:42,083 --> 00:48:42,583 Ja. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [SIDE GESPREK] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Ek het ook opgemerk dat jy ouens can-- Ek soort van sien reeds die program. 1085 00:49:22,130 --> 00:49:24,600 Ek dink my gebrek aan aanbieder modus is 'n probleem. 1086 00:49:24,600 --> 00:49:27,410 Maar dit is OK. 1087 00:49:27,410 --> 00:49:30,410 >> [SIDE GESPREK] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Ja, asseblief, ouens. 1090 00:50:04,380 --> 00:50:05,400 Kom kry lekkergoed. 1091 00:50:05,400 --> 00:50:06,372 Kom kry lekkergoed. 1092 00:50:06,372 --> 00:50:07,698 >> Gehoor: Ja! 1093 00:50:07,698 --> 00:50:09,958 >> [SIDE GESPREK] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI Peng: Ook, ja, Ek sal begin gooi candy 1096 00:50:18,100 --> 00:50:20,280 op mense wat nie vrae beantwoord nie. 1097 00:50:20,280 --> 00:50:22,260 Dus moet jy al antwoord vrae. 1098 00:50:22,260 --> 00:50:24,895 Of ek dink mense wat nie beantwoord vrae. 1099 00:50:24,895 --> 00:50:26,070 Ja, ander manier om. 1100 00:50:26,070 --> 00:50:28,570 >> [SIDE GESPREK] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 GEHOOR: [onhoorbaar] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI Peng: Ja. 1105 00:51:18,340 --> 00:51:19,340 Ja. 1106 00:51:19,340 --> 00:51:22,840 >> [SIDE GESPREK] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Alle reg, ouens. 1109 00:51:41,590 --> 00:51:44,731 Neem, soos, 10 meer sekondes. 1110 00:51:44,731 --> 00:51:48,210 >> [SIDE GESPREK] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> OK, ouens. 1113 00:52:11,750 --> 00:52:14,920 So voordat ons begin probeer om eintlik fisies skryf kode, 1114 00:52:14,920 --> 00:52:20,650 'n goeie gewoonte om te ontwikkel, is dat ons wil die eerste soort rede 1115 00:52:20,650 --> 00:52:22,737 logies hoe ons dit sou doen. 1116 00:52:22,737 --> 00:52:24,570 Jy wil om seker te maak, voordat jy fisies 1117 00:52:24,570 --> 00:52:27,210 begin probeer om die kode in Mario, wat jy maak 1118 00:52:27,210 --> 00:52:28,870 seker dat jy jou pseudokode. 1119 00:52:28,870 --> 00:52:31,235 Dit is om jou deur wat jy nodig het om dit te skep 1120 00:52:31,235 --> 00:52:33,360 dat, wanneer jy fisies skryf jou program later, 1121 00:52:33,360 --> 00:52:36,640 jy is beter in staat om foute te vang in jou kode en dinge soos dat. 1122 00:52:36,640 --> 00:52:40,460 >> So ons gaan net begin by-- in Engels, in pseudokode, 1123 00:52:40,460 --> 00:52:43,320 Is daar iemand wil gee my 'n generiese verduideliking 1124 00:52:43,320 --> 00:52:46,250 van hoe ons te werk sal gaan om dit te doen? 1125 00:52:46,250 --> 00:52:48,102 Ja. 1126 00:52:48,102 --> 00:52:49,664 >> GEHOOR: [onhoorbaar]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Peng: Sure, geen bekommernisse. 1128 00:52:50,830 --> 00:52:57,233 GEHOOR: Kan jy dit vra om te vra of iemand om string 1-- ja, string te kry, 1129 00:52:57,233 --> 00:52:58,160 en toe-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Peng: Ja, so dit is 'n goeie begin. 1131 00:52:59,826 --> 00:53:01,972 Ek sal begin tik, jammer, as jy praat. 1132 00:53:01,972 --> 00:53:02,471 So-- 1133 00:53:02,471 --> 00:53:05,698 >> GEHOOR: --the klein getalle is hoër, reg? 1134 00:53:05,698 --> 00:53:08,519 Of die kleinletters het 'n hoë getalle? 1135 00:53:08,519 --> 00:53:09,310 ANDI Peng: Presies. 1136 00:53:09,310 --> 00:53:16,156 GEHOOR: So dan trek ons 32 uit watter [onhoorbaar]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Peng: Groot. 1139 00:53:29,870 --> 00:53:35,020 Sodat ons soort van 'n algemene gevoel van hoe om te werk oor hierdie probleem. 1140 00:53:35,020 --> 00:53:40,060 Die wete dat ons soort geleer die fisiese manier wat snare 1141 00:53:40,060 --> 00:53:43,320 gestoor in die geheue, wat jy doen reeds 1142 00:53:43,320 --> 00:53:45,920 weet dat jy gaan waarskynlik het om te skryf in jou kode 1143 00:53:45,920 --> 00:53:48,288 om te beweeg deur die string? 1144 00:53:48,288 --> 00:53:49,259 >> GEHOOR: Vir lus. 1145 00:53:49,259 --> 00:53:50,550 ANDI Peng: 'n lus, presies. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Groot. 1148 00:53:57,220 --> 00:54:00,539 So ons het soort van 'n generiese pseudokode afgeskryf 1149 00:54:00,539 --> 00:54:02,330 dat die soort van gee jy notas oor hoe jy 1150 00:54:02,330 --> 00:54:03,900 sal beweeg oor die oplossing van die probleem. 1151 00:54:03,900 --> 00:54:06,150 Nou dat jy dit het, het jy kan dit verwys vir latere 1152 00:54:06,150 --> 00:54:08,233 wanneer jy probeer om te eintlik skryf jou kode. 1153 00:54:08,233 --> 00:54:10,240 So kan ons eintlik gaan hier. 1154 00:54:10,240 --> 00:54:25,130 En ek het 'n funksie genoem het upper.c-- daar is dit net 'n is-- van leeg sjabloon 1155 00:54:25,130 --> 00:54:28,510 nou dat jy ouens gaan help my uit te vind oor hoe om te skryf 1156 00:54:28,510 --> 00:54:30,430 hierdie lyn van code-- nie reël van die kode. 1157 00:54:30,430 --> 00:54:32,890 Dit sal wees verskeie reëls van die kode. 1158 00:54:32,890 --> 00:54:35,710 >> Wanneer die aanvang van enige soort leë pset, wat is 1159 00:54:35,710 --> 00:54:37,418 die eerste ding wat ek nodig het om te onthou om te doen? 1160 00:54:37,418 --> 00:54:39,290 >> GEHOOR: [onhoorbaar]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI Peng: Groot Yep. 1162 00:54:41,000 --> 00:54:41,500 Sluit. 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h. 1165 00:54:47,130 --> 00:54:49,640 Dikwels is dit een van die mees maklik foute wat mense 1166 00:54:49,640 --> 00:54:51,598 sal maak wanneer hulle skryf, is dat hulle sal 1167 00:54:51,598 --> 00:54:54,180 vergeet om 'n sluit belangrike biblioteek wat hulle nodig het. 1168 00:54:54,180 --> 00:54:57,689 So as dit kantoorure en jy soos, Ek weet nie hoekom my kode nie werk nie. 1169 00:54:57,689 --> 00:54:59,230 Kan jy my vertel hoekom dit nie werk nie? 1170 00:54:59,230 --> 00:55:00,730 Ons gaan om te sê het jy include? 1171 00:55:00,730 --> 00:55:02,520 Moet jy dit include. 1172 00:55:02,520 --> 00:55:03,270 OK. 1173 00:55:03,270 --> 00:55:07,230 >> So het ons die standaard I / O het hier. 1174 00:55:07,230 --> 00:55:10,740 Is dat die enigste biblioteek ons gaan hier nodig? 1175 00:55:10,740 --> 00:55:12,681 Wat anders gaan ons doen? 1176 00:55:12,681 --> 00:55:13,180 Jammer. 1177 00:55:13,180 --> 00:55:14,562 Iemand wat net skree dit uit? 1178 00:55:14,562 --> 00:55:15,666 >> GEHOOR: [onhoorbaar]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Peng: Daar gaan jy. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 OK. 1182 00:55:21,440 --> 00:55:26,070 En hoe gaan ek oor die begin van enige soort van funksie, enige soort van hooffunksie 1183 00:55:26,070 --> 00:55:28,760 binne ons program? 1184 00:55:28,760 --> 00:55:30,020 Int main. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 OK. 1187 00:55:35,030 --> 00:55:35,970 Wat doen ek sit binne hier? 1188 00:55:35,970 --> 00:55:37,640 Wat is die eerste ding wat jy wil doen? 1189 00:55:37,640 --> 00:55:39,910 As ons wil 'n te kry string van die gebruiker, 1190 00:55:39,910 --> 00:55:43,870 wat ons gaan hê om te doen op die eerste lyn? 1191 00:55:43,870 --> 00:55:46,120 Jammer, julle ouens voel net vry om te praat en hard. 1192 00:55:46,120 --> 00:55:47,123 Net uitroep wat ook al. 1193 00:55:47,123 --> 00:55:48,772 >> GEHOOR: Vra die gebruiker? 1194 00:55:48,772 --> 00:55:49,980 ANDI Peng: Hoe doen ons dit? 1195 00:55:49,980 --> 00:55:51,873 Ask-- gaan ek tik "vra die gebruiker"? 1196 00:55:51,873 --> 00:55:52,600 >> GEHOOR: printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI Peng: OK. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 Wat wil ek printf? 1200 00:55:57,372 --> 00:55:58,776 >> GEHOOR: Tik in iets. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Peng: Soos wat? 1203 00:56:03,840 --> 00:56:05,430 Ouens, voorgee asof ek 'n rekenaar. 1204 00:56:05,430 --> 00:56:08,475 Fisies vertel my elke stap wat ek nodig het om hier te tik in? 1205 00:56:08,475 --> 00:56:09,600 Ek iets verkeerd doen? 1206 00:56:09,600 --> 00:56:10,743 Ek moet iets getik het? 1207 00:56:10,743 --> 00:56:11,690 >> GEHOOR: Jy moet aanhalingstekens. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Peng: Ek aanhalings nodig? 1209 00:56:12,380 --> 00:56:12,880 OK. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 OK. 1212 00:56:16,297 --> 00:56:17,698 >> GEHOOR: En dan nuwe lyn. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Kommapunt. 1215 00:56:22,465 --> 00:56:23,340 ANDI Peng: kommapunt? 1216 00:56:23,340 --> 00:56:24,060 OK. 1217 00:56:24,060 --> 00:56:24,560 Goed. 1218 00:56:24,560 --> 00:56:27,060 >> GEHOOR: En dalk spesifiseer dat jy dit wil hê in klein? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Peng: Groot. 1221 00:56:31,415 --> 00:56:33,540 Julle ouens my lag vergeet om 'n kommapunt sit. 1222 00:56:33,540 --> 00:56:36,350 Ek waarborg jou iewers in die loop van hierdie klas, 1223 00:56:36,350 --> 00:56:38,260 jy sal vergeet om te sit 'n kommapunt en dit 1224 00:56:38,260 --> 00:56:41,116 sal jy drie uur te neem om uit te hoekom u kode werk nie. 1225 00:56:41,116 --> 00:56:42,240 Dit gebeur aan ons almal. 1226 00:56:42,240 --> 00:56:43,950 Dit sal waarskynlik met jou gebeur nie. 1227 00:56:43,950 --> 00:56:46,352 Kry 'n goeie gewoonte van die gebruik van kommapunte. 1228 00:56:46,352 --> 00:56:46,852 OK. 1229 00:56:46,852 --> 00:56:49,010 >> GEHOOR: Wil jy die string met doen? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI Peng: Natuurlik. 1231 00:56:50,398 --> 00:56:51,856 Wil jy agteroorskuisstreep doen? 1232 00:56:51,856 --> 00:56:53,020 >> Gehoor: Ja. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Peng: Groot. 1234 00:56:54,330 --> 00:56:54,830 OK. 1235 00:56:54,830 --> 00:56:57,872 Wat doen ek nou? 1236 00:56:57,872 --> 00:56:58,964 >> GEHOOR: Kry string. 1237 00:56:58,964 --> 00:56:59,880 ANDI Peng Kry string. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 So wat doen ek tik? 1240 00:57:03,830 --> 00:57:04,233 Iemand? 1241 00:57:04,233 --> 00:57:05,040 >> GEHOOR: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI Peng: String s. 1243 00:57:05,873 --> 00:57:07,251 GEHOOR: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Peng: Somebody, kan jy my vertel waar 1245 00:57:09,000 --> 00:57:12,000 hierdie funksie GetString is afkomstig van? 1246 00:57:12,000 --> 00:57:13,660 >> GEHOOR: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Peng: string.h? 1248 00:57:15,256 --> 00:57:16,715 Jy dink dit is van string.h? 1249 00:57:16,715 --> 00:57:17,830 >> GEHOOR: [onhoorbaar]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Peng: Daar gaan jy. 1251 00:57:18,830 --> 00:57:21,280 Dit is van CS50.h. 1252 00:57:21,280 --> 00:57:24,530 As jy altyd verwar op waar 'n biblioteek lêer is of 'n kop lêer is, 1253 00:57:24,530 --> 00:57:28,450 google letterlik string.h, en ek sal jou vertel 1254 00:57:28,450 --> 00:57:30,450 wat al die funksies wat in string.h. 1255 00:57:30,450 --> 00:57:31,340 OK. 1256 00:57:31,340 --> 00:57:35,210 >> So nou dat ek 'n string geskep en ek het gevra die gebruiker vir dit, 1257 00:57:35,210 --> 00:57:38,770 Ek het dit in 'n veranderlike gestoor vernoem s, wat moet ek nou doen? 1258 00:57:38,770 --> 00:57:40,652 >> GEHOOR: kyk of dit in klein. 1259 00:57:40,652 --> 00:57:41,360 ANDI Peng: Jammer? 1260 00:57:41,360 --> 00:57:42,545 GEHOOR: kyk of dit in klein. 1261 00:57:42,545 --> 00:57:44,045 ANDI Peng: Alle reg, laat ons dit doen. 1262 00:57:44,045 --> 00:57:45,857 Hoe kan ek dit doen? 1263 00:57:45,857 --> 00:57:47,940 Eintlik, vir die doeleindes van die klas nou, 1264 00:57:47,940 --> 00:57:50,330 ons net gaan aanvaar dat alles 1265 00:57:50,330 --> 00:57:52,620 dat ons insette is reeds in klein. 1266 00:57:52,620 --> 00:57:55,430 As jy wou om te kyk, sou jy voeg net 'n voorwaardelike verklaring 1267 00:57:55,430 --> 00:57:59,640 wat nagegaan, dat deur gehardloop elke enkele verskeidenheid element 1268 00:57:59,640 --> 00:58:02,540 en kyk of dit tussen sekere waardes. 1269 00:58:02,540 --> 00:58:05,627 Ek vergeet wat die aantal waardes van klein is. 1270 00:58:05,627 --> 00:58:07,210 Jy kan dit sien op die ASCII tabel. 1271 00:58:07,210 --> 00:58:08,800 Maar ja, dit is 'n baie goeie punt. 1272 00:58:08,800 --> 00:58:11,758 Maar nou, ons is maar net gaan aanvaar dat al die snare ons insette 1273 00:58:11,758 --> 00:58:13,130 in klein. 1274 00:58:13,130 --> 00:58:13,870 OK. 1275 00:58:13,870 --> 00:58:18,069 >> So hoe sou ek gaan hierdie probleem is volgende? 1276 00:58:18,069 --> 00:58:18,860 GEHOOR: Vir lus. 1277 00:58:18,860 --> 00:58:19,340 ANDI Peng: Vir lus? 1278 00:58:19,340 --> 00:58:19,839 OK. 1279 00:58:19,839 --> 00:58:20,847 Vertel my wat om te tik. 1280 00:58:20,847 --> 00:58:25,230 >> GEHOOR: Vir int i gelyk 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Peng: OK. 1282 00:58:27,230 --> 00:58:36,350 >> GEHOOR: Ag, eintlik, dan moet jy doen 'n komma en doen n gelyk StrLen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI Peng: So belangrikste ding dat ek dink sy hier opgemerk 1284 00:58:38,940 --> 00:58:42,936 is dat ons nie hoef te sê int N die tweede keer het ons dit. 1285 00:58:42,936 --> 00:58:45,060 Weet net dat in 'n vir lus wanneer jy verklaar, 1286 00:58:45,060 --> 00:58:47,934 jy eintlik nie die int van nodig die tweede keer wat jy doen 'n veranderlike. 1287 00:58:47,934 --> 00:58:51,202 Jy kan n StrLen sê. 1288 00:58:51,202 --> 00:58:52,620 >> GEHOOR: S. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI Peng: s. 1290 00:58:53,510 --> 00:58:54,706 OK. 1291 00:58:54,706 --> 00:58:58,370 >> GEHOOR: Dan is 'n kommapunt. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI Peng: Natuurlik. 1293 00:59:00,130 --> 00:59:04,050 >> GEHOOR: En dan [onhoorbaar] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Dan ++ i. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Peng: Groot. 1297 00:59:11,780 --> 00:59:12,280 Alles reg. 1298 00:59:12,280 --> 00:59:14,690 Wat wil ons binne van hierdie lus nou? 1299 00:59:14,690 --> 00:59:17,820 Onthou, as ons gaan deur loop 'n string en hardloop deur middel van 'n skikking, 1300 00:59:17,820 --> 00:59:19,287 ons wil dinge so dit. 1301 00:59:19,287 --> 00:59:20,370 Wat gaan ons nodig? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Dit is 'n soort van die moeilike deel nou. 1304 00:59:26,900 --> 00:59:27,960 Iemand het 'n raaiskoot? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> OK. 1307 00:59:34,690 --> 00:59:37,830 So die eerste, hoe kan ons nog toegang? 1308 00:59:37,830 --> 00:59:41,610 Hoe moet ons selfs eerste tjek of toegang 'n element in die skikking? 1309 00:59:41,610 --> 00:59:42,920 Hoe kan ons dit doen? 1310 00:59:42,920 --> 00:59:47,120 Wat is die notasie wat ons gebruik om dit te doen? 1311 00:59:47,120 --> 00:59:50,920 Wat is die naam van hierdie reeks genoem? 1312 00:59:50,920 --> 00:59:52,400 Dit is bekend as s, reg? 1313 00:59:52,400 --> 00:59:54,850 >> Onthou, enige string is altyd 'n skikking. 1314 00:59:54,850 --> 00:59:58,210 So s bracket i, reg? 1315 00:59:58,210 --> 01:00:01,360 Want dit is die huidige waarde of indeks waarde ons nagaan. 1316 01:00:01,360 --> 01:00:05,156 En ons gaan om dit te stel gelyke aan- ons wil 'n klein waarde, reg? 1317 01:00:05,156 --> 01:00:07,530 Ons wil om te draai dat lower-- Jammer, ons wil 'n hoofletters. 1318 01:00:07,530 --> 01:00:10,014 Ons wil die klein draai waarde in 'n hoofletters. 1319 01:00:10,014 --> 01:00:11,805 En so like-- Ek is jammer, wat is jou naam? 1320 01:00:11,805 --> 01:00:12,580 >> GEHOOR: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI Peng: Jammer? 1322 01:00:12,940 --> 01:00:13,280 >> GEHOOR: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Peng: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Soos Heidi gesê aanvanklik, ons is waarskynlik 1325 01:00:15,850 --> 01:00:20,330 gaan nodig the-- ons waarskynlik gaan om te trek 1326 01:00:20,330 --> 01:00:22,630 32 uit watter charc dit is, reg? 1327 01:00:22,630 --> 01:00:24,680 Want op 'n ASCII tafel, die verskil 1328 01:00:24,680 --> 01:00:27,790 tussen 'n klein letter en 'n hoofletter is 32. 1329 01:00:27,790 --> 01:00:31,290 So wanneer ons dit doen, ons is waarskynlik gaan wil trek 32, reg? 1330 01:00:31,290 --> 01:00:33,910 >> So ons gaan s wat ek doen. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Maak almal verstaan ​​hoekom ek dit gedoen het? 1333 01:00:41,200 --> 01:00:45,760 Want nou, in ons verskeidenheid, Ons monitor die 0-indeks, reg? 1334 01:00:45,760 --> 01:00:49,190 En in die 0-indeks van die string, dit is die eerste karakter. 1335 01:00:49,190 --> 01:00:51,820 En dat karakter wat ons gaan om te aanvaar dit is klein. 1336 01:00:51,820 --> 01:00:55,980 As ons dit wil hoofletters maak, ons moet trek 32 van sy waarde, 1337 01:00:55,980 --> 01:00:58,620 want in ons ASCII tafel, dit is hoe ons dit kry 1338 01:00:58,620 --> 01:01:01,600 na die volgende ooreenstemmende waarde wat dit hoofletters maak. 1339 01:01:01,600 --> 01:01:03,714 Verstaan ​​almal dit? 1340 01:01:03,714 --> 01:01:04,213 Ja. 1341 01:01:04,213 --> 01:01:06,530 >> GEHOOR: jy kan ook moenie kleinletter a minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Peng: Ja, so dit is eintlik regtig goed. 1343 01:01:08,080 --> 01:01:10,455 Ek gaan om terug te kom na daardie vraag nadat ons dit doen. 1344 01:01:10,455 --> 01:01:11,060 Ja. 1345 01:01:11,060 --> 01:01:13,940 En dan as ek wil sien wat aangaan, 1346 01:01:13,940 --> 01:01:16,180 Ek is waarskynlik gaan om wil, reg te druk? 1347 01:01:16,180 --> 01:01:19,930 Iemand vertel my wat Ek wil hier te druk. 1348 01:01:19,930 --> 01:01:29,160 >> GEHOOR: printf persent c backslash [onhoorbaar]. 1349 01:01:29,160 --> 01:01:33,570 Dit is die waarde van [onhoorbaar] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI Peng: s i, jammer? 1351 01:01:34,614 --> 01:01:35,530 GEHOOR: [onhoorbaar]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Peng: Ek weet nie. 1354 01:01:39,550 --> 01:01:40,600 Wat dink jy? 1355 01:01:40,600 --> 01:01:44,016 >> GEHOOR: Wel, ek wouldn't-- Ek dink ek sou nie bring-- 1356 01:01:44,016 --> 01:01:46,944 Ek sou dit uit te neem van die binnekant, want [onhoorbaar]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Peng: O, jy sou gedoen het? 1359 01:01:51,392 --> 01:01:53,867 GEHOOR: Ja. 1360 01:01:53,867 --> 01:01:56,700 ANDI Peng: Kom ons laat dit die pad dit is nie, en ek sal later verduidelik hoekom. 1361 01:01:56,700 --> 01:01:58,533 Onthou, selfs wanneer jy 'n plekhouer, 1362 01:01:58,533 --> 01:02:00,701 jy wil hakies rondom dit. 1363 01:02:00,701 --> 01:02:01,200 Alles reg. 1364 01:02:01,200 --> 01:02:04,810 So dit moet 'n vaste funksie hier te wees. 1365 01:02:04,810 --> 01:02:06,370 Kom ons hardloop dit en kyk of dit stel. 1366 01:02:06,370 --> 01:02:08,750 Maak boonste. 1367 01:02:08,750 --> 01:02:09,250 Uh Oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Dit lyk nie te goed lyk. 1370 01:02:13,340 --> 01:02:14,507 Waarom gebeur dit? 1371 01:02:14,507 --> 01:02:17,340 Soos met enige fout, jy wil gaan rug en begin met die eerste een, 1372 01:02:17,340 --> 01:02:20,630 want tipies een fout oorsake baie van die ander foute nadat dit. 1373 01:02:20,630 --> 01:02:26,700 Hier sien ons upper.c: 18: 25, wat vertel My in hierdie program met die naam upper.c, 1374 01:02:26,700 --> 01:02:33,800 op die lyn 18, fout implisiet verklaar biblioteek van funksies StrLen met tipe 1375 01:02:33,800 --> 01:02:36,330 unassigned-- blah, weet ek nie wat gaan aan na daardie. 1376 01:02:36,330 --> 01:02:39,990 >> Al is dit vir my sê nou is dat iets gaan aan die StrLen. 1377 01:02:39,990 --> 01:02:43,520 En die rekenaar verwar, want Dit is soos ek weet nie wat StrLen is? 1378 01:02:43,520 --> 01:02:45,520 Wat doen wat waarskynlik vertel jy mis? 1379 01:02:45,520 --> 01:02:46,490 >> GEHOOR: Jy mis [onhoorbaar]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Peng: Jy is reg. 1381 01:02:47,630 --> 01:02:49,510 Presies. 1382 01:02:49,510 --> 01:02:52,140 So dit is waar dit is belangrik om seker te maak 1383 01:02:52,140 --> 01:02:56,970 dat elke funksie wat jy in gebruik jou kode is om die korrekte header 1384 01:02:56,970 --> 01:02:59,660 lêer vir die biblioteek, of anders jy gaan baie foute te kry 1385 01:02:59,660 --> 01:03:01,150 en jou kode is nie gaan om te weet wat aangaan. 1386 01:03:01,150 --> 01:03:03,050 So ons gaan string.h hier in te sluit. 1387 01:03:03,050 --> 01:03:06,270 >> Nou wanneer ons probeer boonste te stel. 1388 01:03:06,270 --> 01:03:08,410 Korrek op te stel. 1389 01:03:08,410 --> 01:03:09,960 Kom ons loop hierdie program. 1390 01:03:09,960 --> 01:03:12,000 So tik iets in klein. 1391 01:03:12,000 --> 01:03:14,920 Wat doen jy ouens wil tik? 1392 01:03:14,920 --> 01:03:16,546 Skree iets. 1393 01:03:16,546 --> 01:03:17,920 Alle reg, Charly net ingestap. 1394 01:03:17,920 --> 01:03:18,990 Ons sal die naam Charly se tik. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly in klein. 1397 01:03:22,840 --> 01:03:27,742 En hopelik, hopelik, dit is gaan uitroep en spoeg uit 1398 01:03:27,742 --> 01:03:28,575 Charly in hoofletters. 1399 01:03:28,575 --> 01:03:30,830 Yay! 1400 01:03:30,830 --> 01:03:33,430 nie almal verstaan ​​hoe Ek het oor die oplossing van dit? 1401 01:03:33,430 --> 01:03:36,190 Die manier wat ek kan manipuleer met behulp van heelgetalle 1402 01:03:36,190 --> 01:03:39,410 om iets op te los wat Ek wil om te doen in snare, 1403 01:03:39,410 --> 01:03:44,390 omdat die karakters en heelgetalle kan verwys word in die dieselfde manier, want 1404 01:03:44,390 --> 01:03:45,540 van ASCII kartering. 1405 01:03:45,540 --> 01:03:52,890 >> So om terug te gaan na jou punt, as ek wou hier plaas van 32 sit 1406 01:03:52,890 --> 01:03:58,959 hoofletters A minus kleinletter a net soos dat, sou dit ewe werk so goed, 1407 01:03:58,959 --> 01:04:01,750 want dit is eenvoudig net die verskil tussen die twee waardes. 1408 01:04:01,750 --> 01:04:09,570 As ek wil hierdie again-- Charly te maak. 1409 01:04:09,570 --> 01:04:10,320 Ag nee. 1410 01:04:10,320 --> 01:04:11,820 Ek dink ons ​​het die verkeerde manier, ja? 1411 01:04:11,820 --> 01:04:13,260 >> GEHOOR: [onhoorbaar] kleinletter a. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Peng: Daar gaan jy. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Yep. 1415 01:04:22,880 --> 01:04:24,920 En uitspoeg Charly. 1416 01:04:24,920 --> 01:04:28,020 So wees versigtig wanneer jy aftrekking waardes 1417 01:04:28,020 --> 01:04:30,400 om te onthou watter een is groter as die ander. 1418 01:04:30,400 --> 01:04:35,220 Byvoorbeeld, hier het ek vergeet wat klein is eintlik 'n 1419 01:04:35,220 --> 01:04:38,540 groter as hoofletters A. So toe ek probeer om hulle af te trek na die ander kant 1420 01:04:38,540 --> 01:04:40,600 rond, ek het negatiewe 32. 1421 01:04:40,600 --> 01:04:42,800 En my rekenaar was soos, Ek weet nie wat dit is nie. 1422 01:04:42,800 --> 01:04:45,810 Dit is net 'n paar random waarskynlikheid waarde wat is nie baie goed. 1423 01:04:45,810 --> 01:04:48,760 En so maak seker dat jy aftrekking in die regte lengte 1424 01:04:48,760 --> 01:04:52,831 om die karakter wat jy wil. 1425 01:04:52,831 --> 01:04:53,330 OK. 1426 01:04:53,330 --> 01:04:58,550 Is daar iemand verwar oor hoe ons gegaan oor die skryf van hierdie funksie? 1427 01:04:58,550 --> 01:04:59,180 OK. 1428 01:04:59,180 --> 01:05:04,830 So eintlik, 'n funksie wat reeds bestaan ​​in die biblioteek genoem ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Genoem ctype.h die biblioteek. 1430 01:05:06,417 --> 01:05:08,500 Hierdie funksie is eintlik reeds geskryf vir jou. 1431 01:05:08,500 --> 01:05:10,820 Dit is genoem na die boonste. 1432 01:05:10,820 --> 01:05:13,027 >> En so is dit vir doeleindes van hierdie pset, jy gaan 1433 01:05:13,027 --> 01:05:15,860 om uit te vind wat jy regtig wil gebruik 'n baie van die funksies soos vervat 1434 01:05:15,860 --> 01:05:17,390 binne die ctype biblioteek. 1435 01:05:17,390 --> 01:05:21,040 Na die boonste, te verlaag, is die boonste, is lower-- dit is al die funksies 1436 01:05:21,040 --> 01:05:24,914 dat jy in staat is om baie gebruik sal wees, baie vinnig in jou eie kode wat 1437 01:05:24,914 --> 01:05:26,080 doen presies wat dit doen. 1438 01:05:26,080 --> 01:05:28,941 Ons het uit hoe om te skakel 'n string na hoofletters. 1439 01:05:28,941 --> 01:05:31,440 Maar dit is eintlik die kode dat iemand anders geskryf het 1440 01:05:31,440 --> 01:05:33,800 en wat jy kan toegang via 'n ander funksie. 1441 01:05:33,800 --> 01:05:34,300 Ja? 1442 01:05:34,300 --> 01:05:39,570 >> GEHOOR: So jy net kopieer A's in daar en doen dit vir elke enkele brief? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Peng: Ja, omdat ek nie omgee vir die waardes van a. 1444 01:05:42,070 --> 01:05:44,540 Ek het net sorg dat die verskil tussen hulle is 32, reg? 1445 01:05:44,540 --> 01:05:48,210 Die verskil tussen klein b en hoofletters B is ook 32. 1446 01:05:48,210 --> 01:05:50,860 En die verskil tussen c en hoofletters C is altyd 32. 1447 01:05:50,860 --> 01:05:53,235 >> Ek moet net omgee vir die verskil tussen die twee, 1448 01:05:53,235 --> 01:05:56,666 want al die letters volg dieselfde patroon, reg? 1449 01:05:56,666 --> 01:05:58,540 As ek die verskil tussen een van hulle, 1450 01:05:58,540 --> 01:06:01,050 Ek weet wat die verskil tussen almal van hulle is. 1451 01:06:01,050 --> 01:06:01,740 Goeie vraag. 1452 01:06:01,740 --> 01:06:04,090 Ja. 1453 01:06:04,090 --> 01:06:06,660 Almal goeie? 1454 01:06:06,660 --> 01:06:09,080 OK. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> OK. 1458 01:06:15,270 --> 01:06:20,310 So 'n ander konsep wat gaan baie nuttig as jy moet wees 1459 01:06:20,310 --> 01:06:22,570 voortgaan om te ontwikkel jou kode is hierdie idee 1460 01:06:22,570 --> 01:06:25,430 van die skep van funksies of abstraksie. 1461 01:06:25,430 --> 01:06:28,479 So nou het ons al algebra geneem. 1462 01:06:28,479 --> 01:06:31,770 In algebra, jy het geleer dat daar ' hierdie wonderlike ding genaamd 'n funksie 1463 01:06:31,770 --> 01:06:35,300 masjien, waar as jy insette een soort nommer, 1464 01:06:35,300 --> 01:06:38,720 dit deur hierdie wonderlike funksie loop en uit verskyn 'n ander produksie, reg? 1465 01:06:38,720 --> 01:06:42,220 In-kode, dieselfde ding gebeur in enige soort funksie. 1466 01:06:42,220 --> 01:06:48,230 >> So ek kon fisies skryf in my liggaam van my kode 1467 01:06:48,230 --> 01:06:52,357 'n hoof verklaring wat eintlik nie ongeag die liggaam van die kode is om te doen. 1468 01:06:52,357 --> 01:06:54,940 Maar buite dit, kan ek ook skryf baie verskillende funksies 1469 01:06:54,940 --> 01:06:56,320 wat baie verskillende dinge te doen. 1470 01:06:56,320 --> 01:06:58,570 Byvoorbeeld, het ons reeds begin deur 'n paar van hulle. 1471 01:06:58,570 --> 01:07:00,610 Printf-- wat 'n funksie wat iemand anders 1472 01:07:00,610 --> 01:07:02,870 het reeds geskryf dat ons kan noem in ons kode. 1473 01:07:02,870 --> 01:07:05,410 Om upper-- in hierdie geval, upper-- is 'n ander funksie 1474 01:07:05,410 --> 01:07:07,330 ons het geskryf dat ons kan noem in ons kode. 1475 01:07:07,330 --> 01:07:09,520 En so ek dink waarom ons het selfs funksies? 1476 01:07:09,520 --> 01:07:12,100 Hoekom het ons nie net plop dit almal in dieselfde lyn van die kode? 1477 01:07:12,100 --> 01:07:13,730 Dit maak dit maklik vir almal. 1478 01:07:13,730 --> 01:07:19,200 >> Wel, die redenasie agter dat is, die eerste van alles, organisasie. 1479 01:07:19,200 --> 01:07:21,880 Dit is regtig irriterende gaan deur-kode iemand se 1480 01:07:21,880 --> 01:07:25,110 en een funksie soos printf. 1481 01:07:25,110 --> 01:07:28,570 As jy ouens eintlik geweet wat die funksie printf behels om te skryf, 1482 01:07:28,570 --> 01:07:30,530 dit is, soos, 1000 reëls van die kode. 1483 01:07:30,530 --> 01:07:32,357 >> As elke keer as ek wou iets printf, 1484 01:07:32,357 --> 01:07:35,440 Ek moes 1000 reëls van die kode te skryf, wat werklik irriterende om te lees sou wees, 1485 01:07:35,440 --> 01:07:36,290 reg? 1486 01:07:36,290 --> 01:07:38,860 Dit is hoekom ons het net het hierdie abstrakte funksie 1487 01:07:38,860 --> 01:07:41,670 dat ons reeds iemand anders het iewers anders geskryf. 1488 01:07:41,670 --> 01:07:44,920 En elke keer moet ons dit gebruik in ons kode, ons het net printf sê. 1489 01:07:44,920 --> 01:07:48,070 En wat in staat is om die funksie te gebruik iemand anders geskryf het in ons kode. 1490 01:07:48,070 --> 01:07:51,020 Dit maak dit makliker organiseer om die kode te lees. 1491 01:07:51,020 --> 01:07:53,460 >> Tweedens, dit is vereenvoudiging. 1492 01:07:53,460 --> 01:07:56,750 Dit vergemaklik die stappe wat ons het te neem om ons probleem op te los. 1493 01:07:56,750 --> 01:07:59,300 Printf, funksies soos printf, funksies soos om bo 1494 01:07:59,300 --> 01:08:03,560 alle dinge is wat ons toelaat om te vereenvoudig ons kode af so dit is makliker. 1495 01:08:03,560 --> 01:08:05,830 En die laaste ding is herbruikbaar. 1496 01:08:05,830 --> 01:08:08,710 >> So die feit dat ons ' 'n funksie genoem printf 1497 01:08:08,710 --> 01:08:11,990 dat ons kan noem baie verskillende tye en dit toelaat om herbruikbare wees. 1498 01:08:11,990 --> 01:08:14,980 As ek printf skryf, Ek skryf dit net een keer. 1499 01:08:14,980 --> 01:08:16,439 Dit bestaan ​​slegs in die een plek. 1500 01:08:16,439 --> 01:08:19,890 As ek wou dit weer doen, sal ek het om te kopieer en plak dit alles 1501 01:08:19,890 --> 01:08:21,760 in my tweede reël van die kode. 1502 01:08:21,760 --> 01:08:24,880 Dit is waarom, as ons skep 'n funksie wat bestaan ​​buite ons hoof, 1503 01:08:24,880 --> 01:08:26,880 kan ons roep dit en onthou dit wanneer 1504 01:08:26,880 --> 01:08:29,604 ons nodig het, sodat dit 'n baie makliker vir ons as programme te skryf. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> So die manier waarop ons sou eintlik skryf 'n funksie is baie soortgelyk, reg? 1507 01:08:35,549 --> 01:08:37,590 Dit is 'n soort van die eerste geval waar ons sal 1508 01:08:37,590 --> 01:08:42,830 sien 'n funksie op 'n styl anders as ons int main nietig. 1509 01:08:42,830 --> 01:08:46,779 In hierdie geval, as ek wou skryf 'n funksie genoem q, reg? 1510 01:08:46,779 --> 01:08:49,370 >> En die int waarde hier is al vir my vertel, 1511 01:08:49,370 --> 01:08:51,649 wat wil ek hierdie funksioneer om terug te keer na my toe? 1512 01:08:51,649 --> 01:08:54,484 As ek wil 'n heelgetal kubus, Ek gaan om te wil invoer. 1513 01:08:54,484 --> 01:08:55,525 Hierdie is die parameters. 1514 01:08:55,525 --> 01:08:58,490 Ek gaan 'n waarde van die tipe int insette. 1515 01:08:58,490 --> 01:09:01,300 En ek gaan om terug te keer 'n ander soort waarde van int. 1516 01:09:01,300 --> 01:09:03,050 En hier, soos jy kan sien, al wat ek doen 1517 01:09:03,050 --> 01:09:07,300 is cubing ookal my insette is as my uitset en die terugkeer. 1518 01:09:07,300 --> 01:09:10,790 >> So al hierdie funksie nie, is neem 'n soort van heelgetal. 1519 01:09:10,790 --> 01:09:14,979 Dit vermeerder dit self twee keer sodat dit cubes in effek. 1520 01:09:14,979 --> 01:09:17,729 En dan is dit terug wat dit ook al uitset is. 1521 01:09:17,729 --> 01:09:20,540 So in hierdie geval, dit is twee lyne van kode wat ons gehad het om ekstra te skryf. 1522 01:09:20,540 --> 01:09:22,880 Maar as ons wou noem oor hierdie verskeie kere, 1523 01:09:22,880 --> 01:09:26,210 dit is 'n baie makliker om te tik dat een lyn reg hier wat in kubus as 1524 01:09:26,210 --> 01:09:28,830 het om te gaan deur middel van verskeie keer. 1525 01:09:28,830 --> 01:09:34,180 >> So die manier wat in wese 'n opmaak vir enige soort funksie 1526 01:09:34,180 --> 01:09:36,420 gaan om te bestaan ​​is soos hier. 1527 01:09:36,420 --> 01:09:38,659 So het ons die naam funksie. 1528 01:09:38,659 --> 01:09:39,950 In hierdie geval, is dit genoem kubus. 1529 01:09:39,950 --> 01:09:42,033 En ons noem dit kubus omdat dit is maklik om te onthou. 1530 01:09:42,033 --> 01:09:44,220 Jy kan noem dit Square en dit kan eintlik in blokkies gesny. 1531 01:09:44,220 --> 01:09:45,500 Maak nie saak nie. 1532 01:09:45,500 --> 01:09:48,020 Net 'n naam wat jy toeken jou funksie. 1533 01:09:48,020 --> 01:09:51,660 >> Hierdie reg hier, int, is die tipe van die parameter wat jy nodig het. 1534 01:09:51,660 --> 01:09:54,149 So, wat hierdie funksie nie nodig het om te werk? 1535 01:09:54,149 --> 01:09:55,990 Wel, dit moet 'n inset. 1536 01:09:55,990 --> 01:09:56,704 Ek noem dit insette. 1537 01:09:56,704 --> 01:09:58,120 Jy kan dit noem wat jy wil. 1538 01:09:58,120 --> 01:10:00,500 Maar ek moet iets van die tipe int. 1539 01:10:00,500 --> 01:10:03,730 Dit gaan eintlik voer alles wat binne-in hier, 1540 01:10:03,730 --> 01:10:04,990 die liggaam van die funksie. 1541 01:10:04,990 --> 01:10:07,847 En dan is die soort opbrengs reg hier, hierdie int-- 1542 01:10:07,847 --> 01:10:09,680 al is dit vir my sê is dat hierdie funksie is 1543 01:10:09,680 --> 01:10:11,250 gaan om terug te keer na my int. 1544 01:10:11,250 --> 01:10:14,460 So dit gaan neem in 'n int, en dit gaan om jou terug te gee 'n int. 1545 01:10:14,460 --> 01:10:17,750 Maak almal verstaan ​​hoe die formatering van hierdie soort werk? 1546 01:10:17,750 --> 01:10:18,250 Koel. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> OK. 1549 01:10:25,740 --> 01:10:31,770 So moenie bekommerd wees as dit blyk 'n bietjie abstrakte nou. 1550 01:10:31,770 --> 01:10:33,450 Dit is iets wat ons sal praat. 1551 01:10:33,450 --> 01:10:36,310 Ons sal duik in dieper later in die kursus. 1552 01:10:36,310 --> 01:10:41,170 Die manier waarop 'n soort van 'n hoër vlak onttrekking van hierdie dinge werk 1553 01:10:41,170 --> 01:10:43,530 is dat, in die geheue, in jou rekenaar, alles 1554 01:10:43,530 --> 01:10:47,660 gestoor in hierdie tipe van stapel, sal ek sê. 1555 01:10:47,660 --> 01:10:49,070 >> So daar aan die bokant. 1556 01:10:49,070 --> 01:10:50,861 Ek weet nie of jy ouens wat goed kan sien nie. 1557 01:10:50,861 --> 01:10:52,590 Ek sal probeer om in te zoom. 1558 01:10:52,590 --> 01:10:55,111 Hier by die top, het ons die fisiese teks 1559 01:10:55,111 --> 01:10:57,860 van wat die rekenaar interpreting-- al die nulle en ene wat 1560 01:10:57,860 --> 01:10:59,540 bestaan ​​binne ons rekenaar. 1561 01:10:59,540 --> 01:11:03,390 En dan het ons die geïnisialiseer data en geïnitialiseerd data, 1562 01:11:03,390 --> 01:11:05,340 wat ons noem globale veranderlikes. 1563 01:11:05,340 --> 01:11:08,200 So veranderlikes wat bestaan oor al die programme 1564 01:11:08,200 --> 01:11:11,815 en in jou hele, wese, die kode. 1565 01:11:11,815 --> 01:11:13,940 Geen bekommernisse as jy ouens is soort onduidelik op hierdie punt. 1566 01:11:13,940 --> 01:11:16,060 Dit maak nie regtig saak nou. 1567 01:11:16,060 --> 01:11:18,680 >> En dan het ons wat is genoem 'n hoop in 'n stapel. 1568 01:11:18,680 --> 01:11:21,140 Dink aan 'n stapel letterlik as net soos 'n stapel van dinge, 1569 01:11:21,140 --> 01:11:23,098 'n stapel van verskillende dinge op die top gestoot 1570 01:11:23,098 --> 01:11:27,870 van mekaar dat die verskillende stoor veranderlikes en sintaksis in die kode. 1571 01:11:27,870 --> 01:11:31,460 En dan hier aan die onderkant, ons het die omgewing veranderlikes 1572 01:11:31,460 --> 01:11:35,480 van wat jy binne is die uitvoering net jou klein lyn van die kode. 1573 01:11:35,480 --> 01:11:40,510 >> En ons is net gaan om te vergroot in op die werklike stapel deel. 1574 01:11:40,510 --> 01:11:43,880 So reg hier, as ons zoom in op die net hierdie gebied van die stapel, 1575 01:11:43,880 --> 01:11:45,140 dit is wat dit lyk. 1576 01:11:45,140 --> 01:11:48,590 En dit is eintlik redelik belangrik wanneer jy ouens praat oor funksies, 1577 01:11:48,590 --> 01:11:52,330 omdat kennis dat die geheue van u rekenaar 1578 01:11:52,330 --> 01:11:55,600 is die stoor van die veranderlikes en die funksies 1579 01:11:55,600 --> 01:11:58,790 en die grense van beide jou funksie en jou hoof veranderlikes 1580 01:11:58,790 --> 01:12:00,190 op verskillende plekke. 1581 01:12:00,190 --> 01:12:03,390 >> So nou, hoof is die werklike funksie 1582 01:12:03,390 --> 01:12:04,780 dat jy die uitvoering in 'n kode. 1583 01:12:04,780 --> 01:12:08,050 Jy het die parameters hier gestoor en sy plaaslike veranderlikes hier gestoor word. 1584 01:12:08,050 --> 01:12:12,270 Plaaslike veranderlike beteken net enige veranderlike wat bestaan ​​slegs binne daardie funksie. 1585 01:12:12,270 --> 01:12:15,610 En bo-op dit, dit het jy afsonderlike funksie genoem kubus. 1586 01:12:15,610 --> 01:12:18,240 Jy het dit is parameters sowel as dié inwoners. 1587 01:12:18,240 --> 01:12:21,540 >> En die rede wat jy kan hier sien is dat dit wat 1588 01:12:21,540 --> 01:12:25,030 gebeur wanneer kubus neem in 'n waarde van jou belangrikste funksie 1589 01:12:25,030 --> 01:12:27,640 is dat dit eintlik kopiëring dat meer. 1590 01:12:27,640 --> 01:12:31,470 So as ek wou kubus 2 en terugkeer 8, wat 2 1591 01:12:31,470 --> 01:12:33,730 is eintlik ingevoer as 'n parameter en dit is 1592 01:12:33,730 --> 01:12:37,690 gekopieer oor sodat jy dit bestaande in twee verskillende plekke in die geheue. 1593 01:12:37,690 --> 01:12:40,520 En jy het baie versigtig te wees op onthou watter een van dié 1594 01:12:40,520 --> 01:12:42,520 jy is eintlik manipuleer. 1595 01:12:42,520 --> 01:12:47,170 En 'n voorbeeld van wat gebeur het wat baie, baie sleg wees 1596 01:12:47,170 --> 01:12:48,050 bestaan ​​hier. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> So hier het ek, in teorie, 'n program hier, 'n hooffunksie 1599 01:12:58,650 --> 01:13:02,180 dat ek verklaar 'n int x is gelyk aan 1. 1600 01:13:02,180 --> 01:13:04,505 Ek verklaar 'n ander int y is gelyk aan 2. 1601 01:13:04,505 --> 01:13:06,380 En dan is die uitvoer van dit wat ek deur middel van hierdie funksie 1602 01:13:06,380 --> 01:13:09,647 genoem ruil, waar ek aanvaar dat dit is die uitruiling van die twee waardes. 1603 01:13:09,647 --> 01:13:11,480 En dan gaan ek druk dit uit, reg? 1604 01:13:11,480 --> 01:13:13,220 Dit is wat ek wil hê dat hierdie program om te doen. 1605 01:13:13,220 --> 01:13:15,180 >> So laat afkom en 'n blik. 1606 01:13:15,180 --> 01:13:18,200 So as ek eintlik skryf 'n ander funksie, soos jy kan sien, 1607 01:13:18,200 --> 01:13:19,750 ons het ons belangrikste funksie hier. 1608 01:13:19,750 --> 01:13:22,860 En dan het ons ons tweede funksie hier. 1609 01:13:22,860 --> 01:13:24,520 Leemte ruil. 1610 01:13:24,520 --> 01:13:27,090 Leemte net beteken dat dit gaan niks terug te keer. 1611 01:13:27,090 --> 01:13:28,930 Die naam funksie is genoem ruil, en dit is 1612 01:13:28,930 --> 01:13:33,730 gaan inname twee veranderlikes, int a en int b, van jou [onhoorbaar] funksie. 1613 01:13:33,730 --> 01:13:39,010 >> So in wese hier, ons is verby x en y in hierdie funksie. 1614 01:13:39,010 --> 01:13:40,760 En as ons skep this-- so ons wil 1615 01:13:40,760 --> 01:13:42,420 om 'n tydelike waarde te skep, reg? 1616 01:13:42,420 --> 01:13:43,930 Ons gaan toewys dat a. 1617 01:13:43,930 --> 01:13:45,388 En dan 'n gaan nou gelyk b. 1618 01:13:45,388 --> 01:13:47,660 En b gaan om terug te wees waar die temp waarde was, 1619 01:13:47,660 --> 01:13:51,070 wat is 'n, want toe jy wil om dinge te ruil, 1620 01:13:51,070 --> 01:13:52,320 jy kan nie net wil ruil hulle. 1621 01:13:52,320 --> 01:13:54,360 >> Jy moet een uit te hou hier sodat dit onthou 1622 01:13:54,360 --> 01:13:56,485 wat dit is, want sodra jy een omruil, jy vergeet 1623 01:13:56,485 --> 01:13:58,200 wat dit oorspronklike waarde was, reg? 1624 01:13:58,200 --> 01:14:00,990 So in teorie, is hierdie program moet werk, reg? 1625 01:14:00,990 --> 01:14:03,630 As ek wou die ruil twee, moet hulle ruil. 1626 01:14:03,630 --> 01:14:05,490 So laat dit loop en kyk of dit werk. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> So as julle kan sien, x was eens 1 en y was eens 2. 1629 01:14:16,940 --> 01:14:21,475 En as ek druk dit uit, x is nog 1 en y is 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, is hierdie program lyk nie te wees werk op die manier wat ek wil om dit te werk. 1631 01:14:25,970 --> 01:14:29,950 Is daar iemand wat wil 'n skoot te neem op raai hoekom dit gebeur? 1632 01:14:29,950 --> 01:14:34,430 Dit het te doen met die manier waarop dat verskillende dinge 1633 01:14:34,430 --> 01:14:38,172 gestoor in verskillende plekke in die geheue. 1634 01:14:38,172 --> 01:14:39,377 >> OK. 1635 01:14:39,377 --> 01:14:41,960 So julle ouens nie hoef te bekommer te veel oor hierdie nou. 1636 01:14:41,960 --> 01:14:46,610 Maar weet dat kubus se plaaslike veranderlikes was a en b, 1637 01:14:46,610 --> 01:14:49,230 want hier in ons funksie, ons het verklaar a en b 1638 01:14:49,230 --> 01:14:53,570 as die veranderlikes wat bestaan binne kubus, daardie funksie. 1639 01:14:53,570 --> 01:14:59,490 Maar soos jy kan sien, is die parameters wat dit neem in is hier gestoor word. 1640 01:14:59,490 --> 01:15:01,370 Maar ons was nie eintlik enigiets terugkeer. 1641 01:15:01,370 --> 01:15:03,120 Ons was nie eintlik verander x en y. 1642 01:15:03,120 --> 01:15:04,440 Ons het net die verandering van a en b. 1643 01:15:04,440 --> 01:15:08,340 >> Ons het x en y gekopieer na iets genoem a en b. 1644 01:15:08,340 --> 01:15:11,092 Maar ons het nooit werklik gemanipuleer x en y self. 1645 01:15:11,092 --> 01:15:12,800 Is jy ouens sien hoe dit gebeur? 1646 01:15:12,800 --> 01:15:16,140 Is dat ons eenvoudig het gekopieer dit oor, maar ons het nie eintlik gehou 1647 01:15:16,140 --> 01:15:18,030 spoor van waar hulle in die geheue was. 1648 01:15:18,030 --> 01:15:20,127 >> En so nou die rekenaar soek, o, ek het 1649 01:15:20,127 --> 01:15:21,960 hardloop hierdie ding deur hierdie pragtige funksie. 1650 01:15:21,960 --> 01:15:23,690 Maar x en y is nog x en y. 1651 01:15:23,690 --> 01:15:26,240 Niks gebeur om hulle as gevolg van die feit 1652 01:15:26,240 --> 01:15:28,340 dat diegene parameters en plaaslike veranderlikes 1653 01:15:28,340 --> 01:15:30,150 word gestoor in 'n ander plaas in die geheue. 1654 01:15:30,150 --> 01:15:32,030 En dit is 'n hoër vlak konsep wat ons sal 1655 01:15:32,030 --> 01:15:34,300 begin sien later in die kursus. 1656 01:15:34,300 --> 01:15:36,950 Maar net weet dat dit 'n probleem wat kan gebeur 1657 01:15:36,950 --> 01:15:41,400 en dat ons sal uit te vind maniere oor hoe om hanteer dit later in die kursus. 1658 01:15:41,400 --> 01:15:41,900 OK. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Alles reg. 1661 01:15:48,250 --> 01:15:51,780 Sodat ons die laaste konsep is regtig gaan dek 1662 01:15:51,780 --> 01:15:53,880 wat gaan nuttig te wees vir die pset hierdie week 1663 01:15:53,880 --> 01:15:56,060 is wat genoem word command line argumente. 1664 01:15:56,060 --> 01:16:00,820 So Rob in sy lesing het deur soort kortliks op hoe hierdie werk. 1665 01:16:00,820 --> 01:16:02,770 Wese weet dat wanneer jy skryf 1666 01:16:02,770 --> 01:16:06,280 soos 'n hooffunksie, wanneer ons geskryf funksies voor in die verlede, 1667 01:16:06,280 --> 01:16:07,804 ons het int main nietig. 1668 01:16:07,804 --> 01:16:10,470 En die rede waarom ons moes leemte daar was omdat ons programme het nie 1669 01:16:10,470 --> 01:16:12,520 moet insetwaardes te hardloop, reg? 1670 01:16:12,520 --> 01:16:16,020 Toe ek gehardloop Mario, ek het nie nodig om werklik tik net in iets 1671 01:16:16,020 --> 01:16:16,970 toe ek gehardloop Mario. 1672 01:16:16,970 --> 01:16:20,170 Ek kon die gebruiker later gevra. 1673 01:16:20,170 --> 01:16:22,450 Maar dat die saak nie altyd sal wees. 1674 01:16:22,450 --> 01:16:24,980 >> Byvoorbeeld, in hierdie probleem week se stel, 1675 01:16:24,980 --> 01:16:28,365 jy gaan gevra word dat in Benewens die bestuur van jou program, 1676 01:16:28,365 --> 01:16:30,990 jy gaan om te wil om insette sekere dinge in 'n reguit soos jy 1677 01:16:30,990 --> 01:16:32,050 hardloop jou program. 1678 01:16:32,050 --> 01:16:34,720 So het die manier waarop ons dit doen word genoem 'n command line argument, wat 1679 01:16:34,720 --> 01:16:37,280 is soos 'n argument Jy kan insette direk 1680 01:16:37,280 --> 01:16:39,260 as jy probeer om jou program te hardloop. 1681 01:16:39,260 --> 01:16:44,680 >> So die notasie vir hierdie, dit is redelik kompleks-soek, 1682 01:16:44,680 --> 01:16:47,320 maar dit is regtig nie so moeilik. So int main-- 1683 01:16:47,320 --> 01:16:48,910 dit is net jou hoof funksie. 1684 01:16:48,910 --> 01:16:52,110 In argc komma string argv hakies. 1685 01:16:52,110 --> 01:16:56,040 So al wat sê, is dat hierdie int alles wat argc-- is wat jy vertel 1686 01:16:56,040 --> 01:17:00,560 is dat dit is die getal van argumente die rekenaar moet verwag. 1687 01:17:00,560 --> 01:17:03,130 >> So een ding wat werklik belangrik om tred te hou van 1688 01:17:03,130 --> 01:17:07,080 is die fisiese naam van jou program tel as een van daardie argumente. 1689 01:17:07,080 --> 01:17:11,080 So as ek wou my program het hardloop plus een bykomende command line 1690 01:17:11,080 --> 01:17:13,310 argument, ek is eintlik gaan twee het. 1691 01:17:13,310 --> 01:17:15,080 Argc is eintlik gaan twee wees. 1692 01:17:15,080 --> 01:17:18,010 En dan string argv bracket-- alles wat te doen, 1693 01:17:18,010 --> 01:17:20,410 dit gee my 'n verskeidenheid van snare wat 1694 01:17:20,410 --> 01:17:24,870 gaan net vertoon en stoor wat al daardie command line argumente is. 1695 01:17:24,870 --> 01:17:34,090 >> So byvoorbeeld, as ek wou dit hê program, ./copy infile outfile, reg? 1696 01:17:34,090 --> 01:17:37,330 Dit is net 'n tipiese Linux opdrag. 1697 01:17:37,330 --> 01:17:38,830 Wat is eintlik argc? 1698 01:17:38,830 --> 01:17:41,320 Hoeveel command line argumente is daar eintlik in hierdie? 1699 01:17:41,320 --> 01:17:45,130 Dit alles doen, is 'n afskrif van 'n infile van die naam van 'n lêer 1700 01:17:45,130 --> 01:17:47,070 en dit kopieer dit na 'n ander lêer, reg? 1701 01:17:47,070 --> 01:17:48,700 Dit is al hierdie doen. 1702 01:17:48,700 --> 01:17:53,080 Soos jy kan sien, ek doen dit op 'n lyn sonder om werklik nodig die program. 1703 01:17:53,080 --> 01:17:55,380 >> Wat is ons argc in hierdie geval? 1704 01:17:55,380 --> 01:17:58,968 Hoeveel argumente het ons? 1705 01:17:58,968 --> 01:17:59,634 GEHOOR: Drie? 1706 01:17:59,634 --> 01:18:01,200 ANDI Peng: Ons het drie, presies. 1707 01:18:01,200 --> 01:18:05,030 So dit is baie intuïtief dink net dat dit net 1708 01:18:05,030 --> 01:18:06,290 die infile en die outfile. 1709 01:18:06,290 --> 01:18:10,190 Maar weet dat die naam van die fisiese program wat jy loop tel as een. 1710 01:18:10,190 --> 01:18:13,220 So in hierdie geval, argc is eintlik drie. 1711 01:18:13,220 --> 01:18:15,860 Hoe gaan, wat is argv 0? 1712 01:18:15,860 --> 01:18:18,180 Onthou, al die command line argumente 1713 01:18:18,180 --> 01:18:20,500 is gestoor in 'n verskeidenheid van snare. 1714 01:18:20,500 --> 01:18:24,140 So as ek probeer om dit te bekom, wat sou argv bracket 0 gee my? 1715 01:18:24,140 --> 01:18:25,364 >> GEHOOR: [onhoorbaar]. 1716 01:18:25,364 --> 01:18:26,155 ANDI Peng: Presies. 1717 01:18:26,155 --> 01:18:28,550 Dit sou vir my die dot gee streep kopie, want dit is 1718 01:18:28,550 --> 01:18:31,070 die 0 element, die eerste element van my skikking. 1719 01:18:31,070 --> 01:18:33,236 Wat van argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> GEHOOR: Infile. 1721 01:18:33,945 --> 01:18:35,070 ANDI Peng: Infile, presies. 1722 01:18:35,070 --> 01:18:36,272 Wat van argv 2? 1723 01:18:36,272 --> 01:18:37,022 GEHOOR: outfile. 1724 01:18:37,022 --> 01:18:38,190 ANDI Peng: outfile. 1725 01:18:38,190 --> 01:18:39,290 Dit is nou 'n bietjie lastig. 1726 01:18:39,290 --> 01:18:42,630 Wat doen julle dink argv 3 gaan word gee my 1727 01:18:42,630 --> 01:18:45,522 As ek probeer om te druk wat uit? 1728 01:18:45,522 --> 01:18:48,260 >> GEHOOR: [onhoorbaar]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Peng: Het jy 'n hand? 1730 01:18:50,164 --> 01:18:50,663 Ja. 1731 01:18:50,663 --> 01:18:51,550 >> GEHOOR: 'n alternatief. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI Peng: Presies. 1733 01:18:52,341 --> 01:18:55,440 So onthou in lesing dat ons het aan die einde van 'n wedloop iets 1734 01:18:55,440 --> 01:18:56,640 bekend as 'n nul terminator? 1735 01:18:56,640 --> 01:18:58,890 Ons sal ook kry in hierdie verder in die klas. 1736 01:18:58,890 --> 01:19:02,472 Maar weet dat in notasie, die manier waarop jou rekenaar 1737 01:19:02,472 --> 01:19:04,430 weet dat dit die einde van die skikking is dat dit 1738 01:19:04,430 --> 01:19:07,310 sit iets genoem 'n nul terminator of 'n tikkie nul. 1739 01:19:07,310 --> 01:19:12,047 >> So as jy probeer om toegang te verkry argv 3, jy gaan om dit te stamp 0 getref. 1740 01:19:12,047 --> 01:19:13,630 Dit is selfs meer van 'n truuk vraag. 1741 01:19:13,630 --> 01:19:17,020 Wat van argv 4? 1742 01:19:17,020 --> 01:19:20,920 So, dit is die verlede null terminator, verby die grense van ons verskeidenheid. 1743 01:19:20,920 --> 01:19:24,380 Wat dink jy gaan gebeur wanneer ons probeer om dit te doen? 1744 01:19:24,380 --> 01:19:25,842 >> GEHOOR: [onhoorbaar]? 1745 01:19:25,842 --> 01:19:26,550 ANDI Peng: Jammer? 1746 01:19:26,550 --> 01:19:28,025 Sê dat 'n bietjie harder? 1747 01:19:28,025 --> 01:19:29,086 >> GEHOOR: [onhoorbaar]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Peng: Ja. 1749 01:19:29,710 --> 01:19:32,420 Dit is die naam van die gebied sal jy waarskynlik kry. 1750 01:19:32,420 --> 01:19:36,610 Maar weet dat argv 4-- wat jou toelaat om toegang 1751 01:19:36,610 --> 01:19:38,610 plekke in jou rekenaar se geheue wat jy regtig 1752 01:19:38,610 --> 01:19:41,650 moet nie raak nie, want nou weet jy wat argv is. 1753 01:19:41,650 --> 01:19:46,220 Jy weet dit is 'n verskeidenheid van grootte 3 wat dot kopie, infile en outfile. 1754 01:19:46,220 --> 01:19:50,200 >> As jy probeer om so ver gaan as wat dat jy verby die null terminator, 1755 01:19:50,200 --> 01:19:53,050 jou rekenaar het waarskynlik gestoor iets in argv 4. 1756 01:19:53,050 --> 01:19:55,790 En jy regtig moet nie toegelaat toegang tot argv 4, 1757 01:19:55,790 --> 01:19:58,130 omdat jy 'n lêer kabinet en jy is net 1758 01:19:58,130 --> 01:19:59,790 toegelaat om toegang tot die drie rakke. 1759 01:19:59,790 --> 01:20:02,870 Maar as jy probeer om ver verby te bereik die rak waar jy is toegelaat, 1760 01:20:02,870 --> 01:20:04,930 jy gaan om te begin geknoei met ander dinge in jou rekenaar se geheue. 1761 01:20:04,930 --> 01:20:06,690 Dit gaan baie, baie sleg wees. 1762 01:20:06,690 --> 01:20:07,440 So weet net dat. 1763 01:20:07,440 --> 01:20:10,370 Wees baie versigtig dat jy nie net lukraak begin 1764 01:20:10,370 --> 01:20:14,772 toegang elemente in 'n skikking wat was nie in wat jy wil skep. 1765 01:20:14,772 --> 01:20:17,114 Yep. 1766 01:20:17,114 --> 01:20:18,430 >> OK. 1767 01:20:18,430 --> 01:20:26,360 So ons gaan na 'n ander te doen terminale voorbeeld hier. 1768 01:20:26,360 --> 01:20:27,300 OK. 1769 01:20:27,300 --> 01:20:29,900 So Rob vinnig lesing die ander dag het 1770 01:20:29,900 --> 01:20:35,040 deur hierdie voorbeeld, waar hy het int main int argc string argv 1771 01:20:35,040 --> 01:20:39,090 hakies, wat my vertel dat ek gaan command line argumente het. 1772 01:20:39,090 --> 01:20:41,860 >> Hy het, as argc gelyk gelyk 2-- onthou, 1773 01:20:41,860 --> 01:20:45,070 gelyk gelykes beteken vergelyking. 1774 01:20:45,070 --> 01:20:47,980 As dit is gelyk aan 2, dan is ek gaan druk hello, 1775 01:20:47,980 --> 01:20:51,190 Wat ook al die eerste element van die skikking is. 1776 01:20:51,190 --> 01:20:54,100 Anders druk, hello world. 1777 01:20:54,100 --> 01:20:56,300 Wat gaan dit gebeur wese? 1778 01:20:56,300 --> 01:21:00,570 Kan iemand net verduidelik Engels wat hierdie program is om te doen? 1779 01:21:00,570 --> 01:21:01,272 Ja. 1780 01:21:01,272 --> 01:21:08,160 >> GEHOOR: As iemand in 'n opdrag getik en gesê hul eerste en laaste naam, 1781 01:21:08,160 --> 01:21:12,096 dit sal nie net druk die eerste een en sê hello, 1782 01:21:12,096 --> 01:21:14,090 Wat jou eerste naam is. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Peng: OK, laat ons voer dit uit. 1784 01:21:15,410 --> 01:21:22,470 So byvoorbeeld, as ek maak hierdie lêer maak hallo hallo aan- 1785 01:21:22,470 --> 01:21:24,500 aan- doen wat jy wil hê ek moet insette? 1786 01:21:24,500 --> 01:21:25,900 >> GEHOOR: Eerste en laaste naam. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Peng Eerste en laaste naam? 1788 01:21:27,280 --> 01:21:28,180 Ruimtes? 1789 01:21:28,180 --> 01:21:29,690 >> GEHOOR: Ja. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Peng: Kan iemand vertel my nou, wat is argc? 1791 01:21:33,490 --> 01:21:35,630 Net reg daar? 1792 01:21:35,630 --> 01:21:36,290 Oeps, jammer. 1793 01:21:36,290 --> 01:21:37,920 Laat my terug te gaan. 1794 01:21:37,920 --> 01:21:40,740 Hoeveel command line argumente are-- julle ouens kan regtig nie sien nie. 1795 01:21:40,740 --> 01:21:43,760 Maar ek sal probeer om in te zoem. 1796 01:21:43,760 --> 01:21:44,290 Ek probeer. 1797 01:21:44,290 --> 01:21:45,414 Ja, daar is drie, reg? 1798 01:21:45,414 --> 01:21:48,750 Dit is dot streep hello, dit is Andi, en dit is Peng. 1799 01:21:48,750 --> 01:21:51,870 >> So, wat doen julle dink hierdie program gaan word uit te druk? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Jammer. 1803 01:21:57,120 --> 01:21:57,810 Verkeerde naam. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Dit is uit te druk, hello wêreld. 1806 01:22:06,130 --> 01:22:09,603 Is daar iemand wat wil om te verduidelik waarom dit gebeur? 1807 01:22:09,603 --> 01:22:10,103 Ja? 1808 01:22:10,103 --> 01:22:11,019 >> GEHOOR: [onhoorbaar]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI Peng: Presies. 1811 01:22:15,230 --> 01:22:19,940 So hier is voorwaardelik is, as argc gelyk gelyk 2. 1812 01:22:19,940 --> 01:22:23,650 So net in die geval dat daar twee command line argumente. 1813 01:22:23,650 --> 01:22:25,850 Toe ek gaan druk, hello, wat dit ookal is. 1814 01:22:25,850 --> 01:22:28,210 Maar anders, ek gaan druk net, hello wêreld. 1815 01:22:28,210 --> 01:22:30,040 So het iemand wil my 'n voorbeeld gee 1816 01:22:30,040 --> 01:22:35,050 hoe ek in staat om werklik sou wees kry dit aan die waarde van argv 1 druk? 1817 01:22:35,050 --> 01:22:38,600 >> Wat sou ek insette hier? 1818 01:22:38,600 --> 01:22:39,840 Net een ding, reg? 1819 01:22:39,840 --> 01:22:42,900 Omdat die dot hallo vir al tel as die eerste argument. 1820 01:22:42,900 --> 01:22:43,930 Ek het net een meer. 1821 01:22:43,930 --> 01:22:46,470 So dot hallo as ek net doen Andi. 1822 01:22:46,470 --> 01:22:47,270 Hello, Andi. 1823 01:22:47,270 --> 01:22:49,186 Verstaan ​​almal waarom dit gebeur? 1824 01:22:49,186 --> 01:22:49,602 Ja. 1825 01:22:49,602 --> 01:22:52,500 >> GEHOOR: So die ruimte tussen die opdrag line-- is dit [onhoorbaar]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI Peng: No. 1828 01:22:56,830 --> 01:23:03,810 So die ruimte in 'n command line argument, x, na jou rekenaar te vertel 1829 01:23:03,810 --> 01:23:06,820 dat dit die begin van 'n nuwe string. 1830 01:23:06,820 --> 01:23:11,130 So string argv here-- dit winkels al jou opdragte line argumente 1831 01:23:11,130 --> 01:23:13,110 in stringe. 1832 01:23:13,110 --> 01:23:17,420 En so het die ruimte in die command line argument-- alles wat nie is wat jy vertel, 1833 01:23:17,420 --> 01:23:21,030 dit is aan die einde van 'n string en dit is tyd om aan te beweeg na 'n ander. 1834 01:23:21,030 --> 01:23:21,990 >> Ja. 1835 01:23:21,990 --> 01:23:23,530 Dit is redelik belangrik vir jou pset, omdat jy 1836 01:23:23,530 --> 01:23:24,613 gaan toets hierdie. 1837 01:23:24,613 --> 01:23:29,300 So het iemand het enige vrae oor hierdie? 1838 01:23:29,300 --> 01:23:30,016 OK, cool. 1839 01:23:30,016 --> 01:23:30,515 Ja? 1840 01:23:30,515 --> 01:23:35,008 >> GEHOOR: So die rede waarom jy sou sit heelgetal argument calc plaas 1841 01:23:35,008 --> 01:23:40,059 van [onhoorbaar] sou wees wanneer jy wil om bykomende inligting te tik 1842 01:23:40,059 --> 01:23:41,030 [Onhoorbaar]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Peng: Ja, presies. 1844 01:23:42,090 --> 01:23:45,370 Sommige programme sal jy nodig het om insette 'n command line argument 1845 01:23:45,370 --> 01:23:47,732 dat dit verby in en wat gebruik maak van dit. 1846 01:23:47,732 --> 01:23:49,035 Ja. 1847 01:23:49,035 --> 01:23:50,410 GEHOOR: So, wat as [onhoorbaar]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Peng: Wel, wat moet ek dan verander in my program? 1850 01:23:58,870 --> 01:23:59,870 >> GEHOOR: Slegs 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Peng: Hoekom is dit gebeur, dink jy? 1853 01:24:15,020 --> 01:24:18,940 >> GEHOOR: Omdat die [onhoorbaar]. 1854 01:24:18,940 --> 01:24:22,370 >> GEHOOR: Jy wil hê om verander dit na 2 [onhoorbaar]. 1855 01:24:22,370 --> 01:24:23,484 >> GEHOOR: 1 en 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI Peng: 1 en 2, presies. 1857 01:24:24,650 --> 01:24:29,150 So in hierdie geval, sou jy waarskynlik wil twee printf statements-- het 1858 01:24:29,150 --> 01:24:32,601 een wat argv 1 gedruk en die een wat gedruk argv 2. 1859 01:24:32,601 --> 01:24:33,100 Hier. 1860 01:24:33,100 --> 01:24:34,516 Ek kan eintlik nie dat 'n werklike vinnig. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Daar gaan jy. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Nie heeltemal wat jy wou. 1865 01:24:49,370 --> 01:24:52,590 Maar as jy ouens gemors rond met die opmaak, sal dit uit te kom. 1866 01:24:52,590 --> 01:24:54,981 Ja. 1867 01:24:54,981 --> 01:24:55,480 Koel. 1868 01:24:55,480 --> 01:24:57,670 Ek weet ons is 'n bietjie kort op tyd. 1869 01:24:57,670 --> 01:25:02,469 Maar ek is net gaan om vinnig spandeer paar minute gaan deur helpful-- 1870 01:25:02,469 --> 01:25:03,760 GEHOOR: Jy het twee minute. 1871 01:25:03,760 --> 01:25:05,010 ANDI Peng: Ek het twee minute? 1872 01:25:05,010 --> 01:25:06,340 Dankie. 1873 01:25:06,340 --> 01:25:09,180 'N paar vinnige pset wenke. 1874 01:25:09,180 --> 01:25:13,100 So vir hierdie pset, ek raai, soos ek gesê het, elkeen na die spec te lees. 1875 01:25:13,100 --> 01:25:16,804 Jy sal skryf drie programs-- een genoem initials.c, een wat geroep caesar.c, 1876 01:25:16,804 --> 01:25:17,720 een wat geroep vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Sommige belangrike wenke wat julle ouens regtig wil 1879 01:25:22,340 --> 01:25:25,040 so in mind-- te hou daar is 'n funksie 1880 01:25:25,040 --> 01:25:27,770 genoem atoi-- as ek wil sê, 'n trois. 1881 01:25:27,770 --> 01:25:29,520 Onduidelik of dit is eintlik hoe jy dit sê. 1882 01:25:29,520 --> 01:25:32,510 Maar al is dit doen, is dit skryf. 1883 01:25:32,510 --> 01:25:34,320 Dit vat 'n string na 'n int. 1884 01:25:34,320 --> 01:25:37,490 So 'n stel ASCII om i heelgetal. 1885 01:25:37,490 --> 01:25:40,310 Dit is net die omskakeling ASCII waardes waardes heelgetal. 1886 01:25:40,310 --> 01:25:44,510 So onthou argv, die skikking wat winkels al jou opdragte in lyn arguments-- 1887 01:25:44,510 --> 01:25:46,300 dit vir hulle al die winkels as snare. 1888 01:25:46,300 --> 01:25:50,010 En so as jy wil in staat wees om het een van hulle word 'n heelgetal is, 1889 01:25:50,010 --> 01:25:52,750 jy gaan te hê hierdie waarde hier te gebruik. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, soos wat ons gedek vroeër in die klas vandag 1891 01:25:56,690 --> 01:25:59,550 kan jy die het res van alles wat jy het. 1892 01:25:59,550 --> 01:26:03,620 So as ons regtig, regtig groot getalle in die keiser 1893 01:26:03,620 --> 01:26:06,117 wat as ons het die einde van 'n string van Vigenere? 1894 01:26:06,117 --> 01:26:08,450 Hoe gaan jy in staat wees om te kry wat om te draai rondom? 1895 01:26:08,450 --> 01:26:11,330 As ek getref z en ek wil dit om terug te gaan na 'n, 1896 01:26:11,330 --> 01:26:13,650 hoe gaan ek te kry wat om te draai rondom? 1897 01:26:13,650 --> 01:26:15,960 Waarskynlik wil hê na gebruik modulo daar iewers. 1898 01:26:15,960 --> 01:26:19,190 >> Tweedens, blaai om jou biblioteek. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Dit is 'n nuwe biblioteek wat ons het. 1900 01:26:20,680 --> 01:26:25,270 Jy sal 'n baie regtig te vind, nuttige functions-- isupper, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, ensovoorts. 1902 01:26:27,681 --> 01:26:30,680 Alle funksies wat baie nuttig sal wees wanneer jy probeer om uit te vind, 1903 01:26:30,680 --> 01:26:33,780 is hierdie karakter 'n klein letter? 1904 01:26:33,780 --> 01:26:35,730 Hoe kan ek hierdie skakel string om 'n hoofletters? 1905 01:26:35,730 --> 01:26:38,146 Al hierdie dinge sal baie wees, baie nuttig vir jou pset. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 OK. 1908 01:26:45,500 --> 01:26:49,644 >> Kantoorure vanaand is 08:00 tot 11:00 in die TEAL klaskamer môre 1909 01:26:49,644 --> 01:26:51,310 sowel as Woensdag en Donderdag nag. 1910 01:26:51,310 --> 01:26:53,280 Kantoorure in commons. 1911 01:26:53,280 --> 01:26:56,180 Hoogs stel voor dat jy ouens al dadelik te begin, 1912 01:26:56,180 --> 01:27:00,490 omdat jy nie wil wees dat kind wat Donderdagaand het probleme 1913 01:27:00,490 --> 01:27:03,870 die indiening van jou pset en soos, ek weet nie wat om te doen. 1914 01:27:03,870 --> 01:27:05,870 Ek het begin, ek klaar is, voorgelê ek. 1915 01:27:05,870 --> 01:27:09,737 Probeer om jouself te gee 'n paar kamer, want in die kode probleme altyd voorkom. 1916 01:27:09,737 --> 01:27:11,570 Jy wil om seker te maak dat jy jouself gee 1917 01:27:11,570 --> 01:27:14,810 'n baie tyd om in staat wees die psets voltooi. 1918 01:27:14,810 --> 01:27:15,310 Koel. 1919 01:27:15,310 --> 01:27:16,720 Ek sal hier rond te hang. 1920 01:27:16,720 --> 01:27:18,226 >> GEHOOR: Is reeds hierdie aanlyn? 1921 01:27:18,226 --> 01:27:20,850 ANDI Peng: Ek weet nie of dit is aanlyn reeds, maar dit sal wees. 1922 01:27:20,850 --> 01:27:23,500 Ek sal hier rond hang as iemand enige vrae reeds. 1923 01:27:23,500 --> 01:27:25,390 Dankie vir die kom. 1924 01:27:25,390 --> 01:27:27,105