1 00:00:00,000 --> 00:00:02,742 >> [Musik spiller] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Peng: Dette er CS50, og velkommen til uge to af sektionen. 4 00:00:09,090 --> 00:00:11,740 Dette er faktisk, mens uge to af vores class-- faktisk, 5 00:00:11,740 --> 00:00:14,550 den første uge, vi har haft sektion. 6 00:00:14,550 --> 00:00:18,897 Håndsoprækning, hvor mange af jer alle kom til super afsnit i sidste uge? 7 00:00:18,897 --> 00:00:19,480 OK, det er OK. 8 00:00:19,480 --> 00:00:20,020 Det er ok. 9 00:00:20,020 --> 00:00:23,110 Hvor mange af jer set super sektion i sidste uge? 10 00:00:23,110 --> 00:00:23,610 OK. 11 00:00:23,610 --> 00:00:25,702 Og du fyre gjorde fint på problemet sæt en? 12 00:00:25,702 --> 00:00:28,660 Så jeg har tænkt mig at tage det, at vi har en flok virkelig intelligente børn 13 00:00:28,660 --> 00:00:32,310 i denne klasse, og tingene vil være fint. 14 00:00:32,310 --> 00:00:33,180 OK. 15 00:00:33,180 --> 00:00:33,980 Så first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> Først, vi bare at kort gå over dagsordenen for i dag. 18 00:00:41,090 --> 00:00:42,700 Vi taler om kursus logistik. 19 00:00:42,700 --> 00:00:45,480 En masse af jer sikkert har spørgsmål vedrørende 20 00:00:45,480 --> 00:00:46,920 hvordan tingene kører i dette kursus. 21 00:00:46,920 --> 00:00:47,897 Vi vil besvare dem. 22 00:00:47,897 --> 00:00:49,730 Vi kommer til at kort gå over sløjfer i tilfælde 23 00:00:49,730 --> 00:00:51,410 nogen af ​​jer gik glip super sektion. 24 00:00:51,410 --> 00:00:53,240 Vi taler om ASCII kortlægning. 25 00:00:53,240 --> 00:00:56,180 Vi taler om arrays, funktioner, kommandolinjeargumenter. 26 00:00:56,180 --> 00:01:00,210 Og endelig, hvad du fyre sikkert alle virkelig ønsker at være her for at lære om, 27 00:01:00,210 --> 00:01:01,270 er din pset2. 28 00:01:01,270 --> 00:01:04,209 Vi vil have nogle pæne tricks og tips til hvordan man gør det. 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 Også det andet, vi har masser af slik her. 32 00:01:11,450 --> 00:01:13,583 Enhver, der kan lide slik, bare komme herop. 33 00:01:13,583 --> 00:01:14,430 Grib nogle. 34 00:01:14,430 --> 00:01:15,100 Jeg har en flok. 35 00:01:15,100 --> 00:01:16,390 Vi har et ton på kontoret. 36 00:01:16,390 --> 00:01:18,230 Jeg har ikke rigtig lyst at spise slik hele dagen. 37 00:01:18,230 --> 00:01:20,300 Du fyre bør spise alle de slik, fordi jeg bragte det her for jer. 38 00:01:20,300 --> 00:01:20,990 Bare spiser slik. 39 00:01:20,990 --> 00:01:24,080 Der vil være slik hver sektion. 40 00:01:24,080 --> 00:01:25,330 >> Så først, hvem er jeg? 41 00:01:25,330 --> 00:01:27,080 Mit navn er Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Jeg er leder TA af CS50 her på Yale. 43 00:01:30,270 --> 00:01:32,540 Og foruden det, vil jeg også være-- 44 00:01:32,540 --> 00:01:35,600 hvis nogen vil like-- dit løb kammerat, at din skulder at græde på. 45 00:01:35,600 --> 00:01:39,140 Hvis natten før din pset due, du har ingen idé om, hvad der foregår, 46 00:01:39,140 --> 00:01:40,080 hit mig op. 47 00:01:40,080 --> 00:01:42,770 Vi vil kondolere sammen, et cetera. 48 00:01:42,770 --> 00:01:46,100 Bare vide, at jeg er her som en ressource for dig som frontlinjen 49 00:01:46,100 --> 00:01:51,830 i at hjælpe jer regne ud, hvordan til at løse problemer i CS50 og udenfor. 50 00:01:51,830 --> 00:01:54,590 >> Min e-mail er andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Jeg vil også sende en individuel e-mail med mit telefonnummer i det 52 00:01:58,390 --> 00:02:01,860 så ikke alle på Internettet kan se mit telefonnummer. 53 00:02:01,860 --> 00:02:03,640 Du er velkommen til at ringe til mig når som helst. 54 00:02:03,640 --> 00:02:07,510 Seriøst, min telefon er normalt knyttet til min hånd. 55 00:02:07,510 --> 00:02:10,240 Jeg kan ikke reagere inden for et par minutter. 56 00:02:10,240 --> 00:02:11,984 Jeg kan ikke reagerer inden for et par timer. 57 00:02:11,984 --> 00:02:14,400 Men jeg kan garantere dig, hvis du e-mail mig, hvis du kalder mig, 58 00:02:14,400 --> 00:02:17,404 tekst mig, vil jeg reagere inden for 24 timer. 59 00:02:17,404 --> 00:02:19,820 Ofte vil jeg reagere før at, fordi jeg forstår 60 00:02:19,820 --> 00:02:23,900 at alle har fået nogle problemer, og du vil have dine svar 61 00:02:23,900 --> 00:02:26,110 skal besvares meget hurtigt. 62 00:02:26,110 --> 00:02:28,945 >> Men hvis du ringer mig 30 minutter før 63 00:02:28,945 --> 00:02:31,570 at stykke, der skyldes torsdag night-- være ligesom, Andi, hjælp mig, 64 00:02:31,570 --> 00:02:35,380 Jeg har ikke started-- jeg kan give dig, at skulder at græde ud ved. 65 00:02:35,380 --> 00:02:41,520 Men det kan være tid til at tænke hvordan man ikke gøre det næste gang. 66 00:02:41,520 --> 00:02:44,040 OK. 67 00:02:44,040 --> 00:02:44,944 Ups. 68 00:02:44,944 --> 00:02:45,850 Hvordan kan jeg gå tilbage? 69 00:02:45,850 --> 00:02:48,140 Der vi går. 70 00:02:48,140 --> 00:02:52,310 >> Så i dette kursus, har vi en ton for støtte til alle. 71 00:02:52,310 --> 00:02:54,640 Ud over blot sektioner her, som du 72 00:02:54,640 --> 00:02:57,000 hver uge kommer til at tilbringe 90 vidunderlige minutter med mig, 73 00:02:57,000 --> 00:02:58,330 vi har også kontortid. 74 00:02:58,330 --> 00:03:01,021 Hvor mange af jer har allerede været kontortid om hjælp? 75 00:03:01,021 --> 00:03:01,520 Great. 76 00:03:01,520 --> 00:03:05,700 Det er virkelig godt at se, fordi vi har en stab på over 45 AT'er og CA 77 00:03:05,700 --> 00:03:11,780 uddannet til dette kursus, der er her for at hjælpe jer med dine psets. 78 00:03:11,780 --> 00:03:14,580 >> Mandage de er afholdt i TEAL klasseværelse i 17 Hill House her 79 00:03:14,580 --> 00:03:15,350 på Yale. 80 00:03:15,350 --> 00:03:17,349 Tirsdage og torsdage, de er afholdt i overdrev. 81 00:03:17,349 --> 00:03:20,010 8:00 til 11:00 stort set hver ugedag. 82 00:03:20,010 --> 00:03:21,620 Kom ind, kom ud. 83 00:03:21,620 --> 00:03:24,030 Ethvert problem, nej problem-- lige kommet ind, 84 00:03:24,030 --> 00:03:26,650 og så vil vi hjælpe dig med det. 85 00:03:26,650 --> 00:03:31,640 >> For det andet, foruden kontortid og §§, vi har også shorts. 86 00:03:31,640 --> 00:03:35,930 Har nogen nogensinde set et par af shorts eller walkthroughs i videoerne 87 00:03:35,930 --> 00:03:36,750 på hjemmesiden? 88 00:03:36,750 --> 00:03:37,250 OK. 89 00:03:37,250 --> 00:03:39,510 Så de er virkelig, virkelig nyttige. 90 00:03:39,510 --> 00:03:42,470 Vores dejlige Harvard produktion hold derovre på den skole 91 00:03:42,470 --> 00:03:47,910 nordpå, har de filmet og produceret disse utrolige walkthrough videoer. 92 00:03:47,910 --> 00:03:52,290 >> De vil tage dig trin for trin gennem hvordan man kan gå om at løse et problem. 93 00:03:52,290 --> 00:03:56,340 Ofte, hvis du er forvirret om et simpelt koncept, en ental koncept, 94 00:03:56,340 --> 00:03:59,780 tage et kig, fordi vi sandsynligvis have en kort om det et sted på vores hjemmeside. 95 00:03:59,780 --> 00:04:03,800 Og det er normalt en stor ressource at kigge efter, når du er først 96 00:04:03,800 --> 00:04:06,510 tabt på, hvordan man håndterer et problem. 97 00:04:06,510 --> 00:04:09,750 >> For det tredje har vi også study50 og reference50. 98 00:04:09,750 --> 00:04:15,650 Så studere 50 på hjemmeside er bare et link. 99 00:04:15,650 --> 00:04:21,500 Det er, tror jeg, study.cs50.net eller sådan noget. 100 00:04:21,500 --> 00:04:22,860 Bare Google det. 101 00:04:22,860 --> 00:04:24,229 Vi har masser af dias forberedt. 102 00:04:24,229 --> 00:04:26,770 Vi har masser af shorts og walkthroughs-- ting hele kompileret 103 00:04:26,770 --> 00:04:31,070 meget nice og nydelige for jer alle til at gennemse, se nogen begreber 104 00:04:31,070 --> 00:04:32,860 at du er forvirret over. 105 00:04:32,860 --> 00:04:35,920 Det ville nok være dækket derovre i study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- lignende. 107 00:04:37,640 --> 00:04:41,510 Vi har en masse forskellige noter let tilgængelige for din rådighed. 108 00:04:41,510 --> 00:04:44,450 Og endelig har vi, hvad der er kaldet CS50 Diskuter, 109 00:04:44,450 --> 00:04:48,082 et forum, hvor, hvis aftenen før du laver dine problemer, siger, 110 00:04:48,082 --> 00:04:49,880 du har et spørgsmål. 111 00:04:49,880 --> 00:04:52,340 Log ind på CS50 Diskuter. 112 00:04:52,340 --> 00:04:53,190 Skriv dit spørgsmål. 113 00:04:53,190 --> 00:04:55,820 Og så en af ​​hundreds-- måske thousands-- af jævnaldrende 114 00:04:55,820 --> 00:04:57,960 tage denne klasse online vil logge ind. 115 00:04:57,960 --> 00:05:01,182 Og måske nogen kan få dit svar før en TA kan. 116 00:05:01,182 --> 00:05:03,390 Det er hovedsageligt bare en online forum, som vi alle kan 117 00:05:03,390 --> 00:05:04,556 bruge til at diskutere vores problemer. 118 00:05:04,556 --> 00:05:06,483 Det er sejt. 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 Så problemet sætter. 122 00:05:13,220 --> 00:05:17,840 Vi er ved retten i tyk problem indstille to. 123 00:05:17,840 --> 00:05:20,570 En masse af os har allerede kæmpede gennem problem sæt en. 124 00:05:20,570 --> 00:05:24,460 Vi ved allerede, at måske venter for den sidste nat til at gøre din pset 125 00:05:24,460 --> 00:05:28,170 er ikke den smarteste ting at gøre i CS50. 126 00:05:28,170 --> 00:05:32,380 >> Tips og tips hovedsagelig til succes læses hele spec. 127 00:05:32,380 --> 00:05:36,270 Hvor mange af jer har allerede læse spec for pset 2? 128 00:05:36,270 --> 00:05:36,770 OK. 129 00:05:36,770 --> 00:05:39,840 Det er et fast beløb. 130 00:05:39,840 --> 00:05:43,210 Jeg ved, du fyre har sikkert anerkendt nu specs er virkelig lang. 131 00:05:43,210 --> 00:05:45,700 De er virkelig, virkelig lang. 132 00:05:45,700 --> 00:05:49,630 >> Det er virkelig svært at læse hver linje af denne omhyggeligt ord for ord. 133 00:05:49,630 --> 00:05:52,780 Du ønsker at bare skimme til hvor det fortæller dig at gøre noget. 134 00:05:52,780 --> 00:05:54,459 Jeg kan garantere dig, skal du ikke gøre det. 135 00:05:54,459 --> 00:05:56,750 Hvis du gør det, er du sandsynligvis kommer til at savne et sted 136 00:05:56,750 --> 00:05:58,458 hvor det fortæller dig hvordan man starter et problem 137 00:05:58,458 --> 00:06:01,140 eller det fortæller dig hvad du skal navn dit problem, eller det fortæller dig, 138 00:06:01,140 --> 00:06:03,720 dette er sandsynligvis den bedste måde at begynde at gøre dit problem. 139 00:06:03,720 --> 00:06:05,050 Og så vil du blive tabt. 140 00:06:05,050 --> 00:06:08,219 >> Når du forsøger at læse dine spec halvvejs igennem, 141 00:06:08,219 --> 00:06:10,510 en masse af de vigtige information-- i, at du ikke er 142 00:06:10,510 --> 00:06:12,260 vil være i stand til virkelig at få adgang. 143 00:06:12,260 --> 00:06:13,219 Så læse hele spec. 144 00:06:13,219 --> 00:06:15,468 Prøv at læse hele spec før du kommer til afsnittet 145 00:06:15,468 --> 00:06:17,360 fordi så, når vi taler om pset, 146 00:06:17,360 --> 00:06:21,070 vi alle kan have en idé af, hvad der foregår. 147 00:06:21,070 --> 00:06:25,169 >> For det andet, det er et begreb at jeg vil gerne referere 148 00:06:25,169 --> 00:06:26,710 en masse hele kurset semester. 149 00:06:26,710 --> 00:06:30,070 Men det væsentlige, møde os halvvejs, ikke? 150 00:06:30,070 --> 00:06:33,970 Mig, som din TA og Jason som selvfølgelig manager og SCAZ som din professor 151 00:06:33,970 --> 00:06:37,120 og David som din professor og alle de andre dejlige AT'er i dette kursus, 152 00:06:37,120 --> 00:06:39,830 assistenter i denne course-- Vi vil gøre vores bedste 153 00:06:39,830 --> 00:06:42,965 at sikre, at du er indstillet op til at lykkes i dette kursus. 154 00:06:42,965 --> 00:06:43,840 Vi vil holde sektion. 155 00:06:43,840 --> 00:06:44,870 Vi vil holde kontortid. 156 00:06:44,870 --> 00:06:47,087 Vi vil besvare din telefon opkald, besvare dine e-mails, 157 00:06:47,087 --> 00:06:49,670 gøre alt, hvad vi kan for at gøre for, at dine spørgsmål er besvaret. 158 00:06:49,670 --> 00:06:51,460 >> Men hjælpe os også. 159 00:06:51,460 --> 00:06:52,450 Mød os halvvejs. 160 00:06:52,450 --> 00:06:56,040 Hvis du kommer til kontortid ikke at have gået til afsnittet ikke 161 00:06:56,040 --> 00:07:02,060 at have set forelæsningerne, der ikke har nogen idé om, hvad der foregår, være ligesom, hjælp mig. 162 00:07:02,060 --> 00:07:04,350 Jeg har tænkt mig at være ligesom, godt, jeg er ked af. 163 00:07:04,350 --> 00:07:06,410 Det kan være tid til at låne at skulder at græde ud ved, 164 00:07:06,410 --> 00:07:08,959 fordi jeg er ikke sikker hvad jeg kan gøre for at hjælpe dig 165 00:07:08,959 --> 00:07:12,000 hvis du ikke prøver at mindst hjælp dig selv en lille smule i begyndelsen. 166 00:07:12,000 --> 00:07:12,910 Mød os halvvejs. 167 00:07:12,910 --> 00:07:15,020 Du ved, du komme parat til at besvare og få 168 00:07:15,020 --> 00:07:16,353 klar til at engagere sig i materialet. 169 00:07:16,353 --> 00:07:19,342 Det gør tingene så meget lettere for alle involverede. 170 00:07:19,342 --> 00:07:22,970 Ja, det er temmelig meget det. 171 00:07:22,970 --> 00:07:23,720 >> Sortering. 172 00:07:23,720 --> 00:07:29,250 Så på pensum, er det temmelig dybdegående om, hvordan vi lønklasse. 173 00:07:29,250 --> 00:07:32,440 Men det væsentlige, fordelingen i dette er 50% af din klasse 174 00:07:32,440 --> 00:07:34,530 vil være de psets, som er dejligt, fordi det er 175 00:07:34,530 --> 00:07:37,400 hvor du udgifter langt størstedelen af ​​dit kursus tid på. 176 00:07:37,400 --> 00:07:39,854 Quizzer 40%, og din endelige projekt vil være 10%. 177 00:07:39,854 --> 00:07:42,520 Der vil være to quizzer hele løbet af semesteret. 178 00:07:42,520 --> 00:07:47,050 Jeg tror, ​​de tidspunkter og datoer er også noteret på pensum. 179 00:07:47,050 --> 00:07:49,210 >> Den måde, som vi vil være klassificering dine psets 180 00:07:49,210 --> 00:07:53,930 er, at vi stort set har fire værdier, som vi tildeler hver lønklasse. 181 00:07:53,930 --> 00:07:57,250 Vi har en værdi på anvendelsesområdet, korrekthed, design og stil. 182 00:07:57,250 --> 00:08:01,530 Så som du kan se, der er slags vores formel for beregning psets. 183 00:08:01,530 --> 00:08:03,640 Tre vi giver den mest vægt til korrekthed, 184 00:08:03,640 --> 00:08:06,140 fordi selvfølgelig din coach skal teste i de tilfælde, 185 00:08:06,140 --> 00:08:08,480 at vi ønsker det at teste for. 186 00:08:08,480 --> 00:08:11,000 >> Du fyre har alle check50 til din rådighed. 187 00:08:11,000 --> 00:08:13,730 Det er en meget nyttig funktion at du fyre kan alle 188 00:08:13,730 --> 00:08:17,560 uploade din kode til vores servere, hvor vi vil tjekke det for dig. 189 00:08:17,560 --> 00:08:20,800 Og du har set dem frowny ansigter, smilende ansigter. 190 00:08:20,800 --> 00:08:22,119 De er virkelig, virkelig nyttige. 191 00:08:22,119 --> 00:08:23,910 Vær venlig ikke at være det studerende, der gerne forsøger 192 00:08:23,910 --> 00:08:26,230 at hardcode i alle svarene på dem. 193 00:08:26,230 --> 00:08:30,050 Jeg har absolut set en pset hvor nogen så alle værdier af check50 194 00:08:30,050 --> 00:08:33,429 og de bare hårdt kodet in-- hvis dette nummer, udskrive dette nummer. 195 00:08:33,429 --> 00:08:35,080 Hvis dette nummer, udskrive dette nummer. 196 00:08:35,080 --> 00:08:36,090 Må ikke gøre det. 197 00:08:36,090 --> 00:08:39,360 >> Selvom teknisk check50 er korrekt, 198 00:08:39,360 --> 00:08:41,809 din måde at løse Problemet er ikke korrekt. 199 00:08:41,809 --> 00:08:45,770 Så bare bruge check50 sparsomt. 200 00:08:45,770 --> 00:08:48,497 Men også sørge for, at du forstå, hvordan det fungerer, 201 00:08:48,497 --> 00:08:50,580 programmet fungerer Ud over check50, 202 00:08:50,580 --> 00:08:53,120 fordi vi ikke kan teste alle muligt tilfælde af check50. 203 00:08:53,120 --> 00:08:55,440 Vi vil teste nogle af dem. 204 00:08:55,440 --> 00:09:00,390 >> Design er i det væsentlige, hvor godt designet er din kode? 205 00:09:00,390 --> 00:09:04,150 Hvis du er copy-paste flere kodelinjer mange, mange gange. 206 00:09:04,150 --> 00:09:06,960 Måske du ikke har helt det bedste design i din kode. 207 00:09:06,960 --> 00:09:09,470 Måske er det tid til at tilføje, at løkken. 208 00:09:09,470 --> 00:09:12,090 Væsentlige, her er det bare alle om at forsøge at gøre din kode, 209 00:09:12,090 --> 00:09:17,010 forsøger at skrive din kode så effektivt som muligt, så dit program kører 210 00:09:17,010 --> 00:09:19,630 så hurtigt som muligt. 211 00:09:19,630 --> 00:09:20,996 >> Endelig har vi stil. 212 00:09:20,996 --> 00:09:24,360 Så stil er form for en vilkårlige, subjektive sigt. 213 00:09:24,360 --> 00:09:27,470 Jeg ved, at vi officielt har en stil 50 vejledning til CS50, 214 00:09:27,470 --> 00:09:30,050 hvor det fortæller dig, åh, du skal have et mellemrum her. 215 00:09:30,050 --> 00:09:32,220 Du bør slags format din kode på denne måde. 216 00:09:32,220 --> 00:09:34,070 Du bør navngive tingene på denne måde. 217 00:09:34,070 --> 00:09:38,180 >> Jeg kan ikke rigtig pleje, per se, hvordan du vælger at style din kode, 218 00:09:38,180 --> 00:09:39,840 lige så længe du opholder dig konsekvent. 219 00:09:39,840 --> 00:09:43,732 For eksempel, hvis du kan lide at efterlade et mellemrum efter din fire 220 00:09:43,732 --> 00:09:45,690 før din fire loop, bare gøre det hver gang. 221 00:09:45,690 --> 00:09:46,523 Må ikke slags gøre det. 222 00:09:46,523 --> 00:09:47,730 Gør det ikke andre tidspunkter. 223 00:09:47,730 --> 00:09:51,046 Hvis du foretrækker at holde krøllet seler plads på en bestemt måde, 224 00:09:51,046 --> 00:09:52,170 bare altid gøre det på den måde. 225 00:09:52,170 --> 00:09:54,628 Må ikke slags gøre det et sted her og et sted der ikke. 226 00:09:54,628 --> 00:09:57,010 Når vi er klassificering, det er virkelig svært 227 00:09:57,010 --> 00:09:59,420 hvis jeg har ingen idé om, hvordan du formatere din kode, 228 00:09:59,420 --> 00:10:02,064 tingene er skøre og ud af sted. 229 00:10:02,064 --> 00:10:04,980 Hvis du bare holde det konsekvent, er det meget nemmere for mig som den større 230 00:10:04,980 --> 00:10:06,310 at være i stand til at læse din kode. 231 00:10:06,310 --> 00:10:09,393 Det er meget lettere for dig som studerende at være i stand til at se gennem din kode 232 00:10:09,393 --> 00:10:11,720 og se, hvad der er galt med det skråstreg, hvorfor der er problemer. 233 00:10:11,720 --> 00:10:15,740 Style er en af ​​de letteste ting du fyre kan gøre for at få fuld score. 234 00:10:15,740 --> 00:10:18,770 Væsentlige, hvis du bare ligeglad, hvis betaler du fem minutter af opmærksomhed 235 00:10:18,770 --> 00:10:22,760 til din kode hver uge, bør du være at få fuld stil point. 236 00:10:22,760 --> 00:10:26,020 >> Endelig har vi, hvad der kaldes multiplikatoren af ​​muligheder. 237 00:10:26,020 --> 00:10:28,890 Scope-- jeg ved, det er en stor ord, især i denne klasse. 238 00:10:28,890 --> 00:10:31,030 Men rækkevidde, alt det betyder er, at du forsøger 239 00:10:31,030 --> 00:10:33,670 de psets til bedste evne. 240 00:10:33,670 --> 00:10:37,180 Hvis du slår i tre ud af dine fire problemer 241 00:10:37,180 --> 00:10:39,460 og ikke engang forsøge sidste, er du sandsynligvis 242 00:10:39,460 --> 00:10:41,630 kommer til at miste nogle point på rækkevidde. 243 00:10:41,630 --> 00:10:44,560 >> Selv hvis du bare begynde problemet, gør dit bedste for at gå igennem den. 244 00:10:44,560 --> 00:10:47,691 Selv hvis det ikke virker, skal du dreje det i, fordi det viser og demonstrerer 245 00:10:47,691 --> 00:10:50,190 for os, at du forsøger, at du har forsøgt at problemet sæt 246 00:10:50,190 --> 00:10:51,430 til den bedste af dine evner. 247 00:10:51,430 --> 00:10:53,800 Og så kan vi give dig fuld point for rækkevidde. 248 00:10:53,800 --> 00:10:58,715 >> Scope er også meget vigtigt, når vi tale om den laveste pset score dråbe. 249 00:10:58,715 --> 00:11:02,010 Så i løbet af semester, du fyre har ni psets. 250 00:11:02,010 --> 00:11:05,340 Og vi vil faktisk slippe den laveste score ud af disse ni, 251 00:11:05,340 --> 00:11:07,670 men kun hvis du har fulde omfang point. 252 00:11:07,670 --> 00:11:11,120 >> Så hvis du slår i en ufuldstændig pset, Desværre kan vi ikke tabe, at man, 253 00:11:11,120 --> 00:11:13,540 fordi din rækkevidde punkter blev ikke gennemført. 254 00:11:13,540 --> 00:11:16,570 Så selvom du har den forfærdelige uge hvor du dø, og du er syg 255 00:11:16,570 --> 00:11:20,040 eller din hund dør, dør din kat, og du er overbebyrdet med lektier, 256 00:11:20,040 --> 00:11:21,074 bare forsøge pset. 257 00:11:21,074 --> 00:11:22,490 Gør det til det bedste af dine evner. 258 00:11:22,490 --> 00:11:23,840 Hvis det ikke virker, er det ligegyldigt. 259 00:11:23,840 --> 00:11:24,506 Bare slå det i. 260 00:11:24,506 --> 00:11:26,590 I det mindste vi kan give du peger for indsats. 261 00:11:26,590 --> 00:11:28,510 >> A for indsats i denne klasse. 262 00:11:28,510 --> 00:11:30,170 Mindst laveste score drop for indsats. 263 00:11:30,170 --> 00:11:32,354 Så ja. 264 00:11:32,354 --> 00:11:33,270 Det er temmelig meget det. 265 00:11:33,270 --> 00:11:36,521 Er der nogen der har spørgsmål, så langt på, hvordan vi kvalitet i klassen? 266 00:11:36,521 --> 00:11:37,187 Eller nogen af ​​disse? 267 00:11:37,187 --> 00:11:41,220 Enhver af disse, så far-- sektioner, kontortid? 268 00:11:41,220 --> 00:11:41,720 Cool. 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 >> Så dette er et emne, som ingen man virkelig kan lide at tale om. 272 00:11:51,260 --> 00:11:53,084 Jeg kan ikke rigtig lide at tale om det. 273 00:11:53,084 --> 00:11:55,250 Du fyre har ikke rigtig lyst at høre mig tale om det. 274 00:11:55,250 --> 00:11:57,690 Men desværre, vi alle nødt til at tale om det. 275 00:11:57,690 --> 00:12:00,110 David tilbragte 20 minutter a foredrag at tale om det. 276 00:12:00,110 --> 00:12:02,580 Og der er genstand af akademisk ærlighed. 277 00:12:02,580 --> 00:12:08,110 >> Så vi alle her har sikkert skrevet et essay engang i vores Yale karriere. 278 00:12:08,110 --> 00:12:11,800 Vi har sikkert fået en snak, hvor vi har fået at vide at ikke plagiere vores essay, 279 00:12:11,800 --> 00:12:13,940 fordi dette arbejde er ikke vores. 280 00:12:13,940 --> 00:12:18,109 I datalogi, har vi den samme form for koncept. 281 00:12:18,109 --> 00:12:20,150 Alt arbejde, som du indsender, alt kode, som du skriver 282 00:12:20,150 --> 00:12:21,900 skal være kode, som du har skrevet. 283 00:12:21,900 --> 00:12:24,280 Bør ikke være kode, som du har kopieret fra et andet sted. 284 00:12:24,280 --> 00:12:26,777 Bør ikke være kode, du har googled og plopped i 285 00:12:26,777 --> 00:12:28,360 og du ved ikke rigtig, om det virker. 286 00:12:28,360 --> 00:12:32,440 Du slags har en følelse af hvad det gør, men ikke rigtig. 287 00:12:32,440 --> 00:12:36,562 Når du er i tvivl, så væsentlige, det er bare være rimelig. 288 00:12:36,562 --> 00:12:38,520 På vores pensum, vi har en hel liste over ting 289 00:12:38,520 --> 00:12:40,560 vi ser som rimelig versus ikke rimeligt. 290 00:12:40,560 --> 00:12:43,820 >> For eksempel rimelig er dig og din ven 291 00:12:43,820 --> 00:12:47,360 diskutere, hvad den bedste måde at gå om logisk at løse et problem. 292 00:12:47,360 --> 00:12:48,910 Det er temmelig rimelig. 293 00:12:48,910 --> 00:12:53,244 Hvad ville der ikke være rimeligt er, hvis du fyre fik sammen, indtastet den samme kode, 294 00:12:53,244 --> 00:12:54,410 og drejes i samme kode. 295 00:12:54,410 --> 00:12:56,302 Det er ikke rimeligt. 296 00:12:56,302 --> 00:12:57,510 Samme ting, sådan et essay. 297 00:12:57,510 --> 00:12:59,290 Hvis du ønsker at diskutere med din ven, hey, 298 00:12:59,290 --> 00:13:00,220 dette er hvad jeg vil skrive om. 299 00:13:00,220 --> 00:13:02,500 Disse er de skridt, jeg ønsker at tage for at skrive om det, store. 300 00:13:02,500 --> 00:13:03,208 Det er vidunderligt. 301 00:13:03,208 --> 00:13:04,790 Samarbejder venligst med hinanden. 302 00:13:04,790 --> 00:13:06,540 Hvis du fyre starter skrive det samme, 303 00:13:06,540 --> 00:13:10,020 vende i samme essay, der er mindre OK. 304 00:13:10,020 --> 00:13:13,200 Så når du er i tvivl, skal du bare ikke gøre det. 305 00:13:13,200 --> 00:13:16,940 >> Her har vi i CS50, har vi scripts der kører at automatisere at teste 306 00:13:16,940 --> 00:13:21,740 ikke kun rigtigheden af ​​din kode, men også det unikke i din kode. 307 00:13:21,740 --> 00:13:25,920 Så skal du ikke sætte os i stand for at skulle henvise din sag til EXCOMM. 308 00:13:25,920 --> 00:13:31,110 Venligst bare for alle, lad os bare gøre dette til en vidunderlig oplevelse. 309 00:13:31,110 --> 00:13:33,600 Alle lærer bedre, vi alle er gladere, 310 00:13:33,600 --> 00:13:37,926 og vi er alle sat op til lykkes i dette kursus. 311 00:13:37,926 --> 00:13:39,800 Noget, der er meget unikt ved denne klasse 312 00:13:39,800 --> 00:13:42,660 at jeg tror, ​​at alle burde virkelig være opmærksom på, er, at vi har 313 00:13:42,660 --> 00:13:44,930 hvad der kaldes den beklagelse klausul i vores pensum. 314 00:13:44,930 --> 00:13:50,010 Så det væsentlige, inden for 72 timer, hvis du tror, ​​du har gjort noget 315 00:13:50,010 --> 00:13:53,240 du ikke er helt sikker på var hensigtsmæssigt, kan du komme til os. 316 00:13:53,240 --> 00:13:57,220 Vi lover dig, at inden for 72 timer vi vil håndtere selv sagen 317 00:13:57,220 --> 00:13:59,820 uden at henvise til en højere myndighed i administrationen. 318 00:13:59,820 --> 00:14:03,100 >> Så hvis du kommer til mig og siger, Andi, hey, jeg er virkelig ked af det, 319 00:14:03,100 --> 00:14:07,620 men jeg tror, ​​der er et par linier i min kode aftes, at jeg slags googlede, 320 00:14:07,620 --> 00:14:10,120 slap af Stack Overløb, kopiere og klistret, 321 00:14:10,120 --> 00:14:13,680 og jeg er virkelig, virkelig ked om det, så lad mig det vide. 322 00:14:13,680 --> 00:14:16,900 Vær venlig ikke bare lade det gnave og bare håbe, at jeg fange den. 323 00:14:16,900 --> 00:14:17,784 Vi vil fange den. 324 00:14:17,784 --> 00:14:18,450 Bare kom til mig. 325 00:14:18,450 --> 00:14:20,520 Lad mig vide, inden for 72 timer. 326 00:14:20,520 --> 00:14:22,240 Vi vil finde ud af en løsning. 327 00:14:22,240 --> 00:14:26,679 Og vi lover, at vi ikke vil henvise til universitetets myndigheder væsentlige. 328 00:14:26,679 --> 00:14:29,220 Så det er i din bedste interesse til bare at være ærlig med alle 329 00:14:29,220 --> 00:14:31,720 involveret i kurset. 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 Så nu, hurtigt før Jeg går videre, er der nogen 333 00:14:37,800 --> 00:14:42,670 har spørgsmål vedrørende logistik om, hvordan kurser, vi kommer til at køre, 334 00:14:42,670 --> 00:14:45,982 hvordan sektioner går at køre, noget af det? 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 >> PUBLIKUM: [uhørligt]? 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 Så quizzes-- hvor mange af jer er i mandag / onsdag sektion? 341 00:14:54,850 --> 00:14:56,700 Hvor mange af jer er i tirsdag / torsdag? 342 00:14:56,700 --> 00:14:58,550 OK, så det er en solid split her. 343 00:14:58,550 --> 00:15:00,900 Så den måde, at vi kører det på Yale er, at vi 344 00:15:00,900 --> 00:15:04,040 vil have to separate quizzes-- en for hver section-- som 345 00:15:04,040 --> 00:15:06,160 vil blive truffet i løbet af klassen. 346 00:15:06,160 --> 00:15:09,310 Jeg synes det er oktober slutningen af ​​oktober, noget, som uge én 347 00:15:09,310 --> 00:15:10,794 af quizzen. 348 00:15:10,794 --> 00:15:11,960 Ja, så bare komme til klassen. 349 00:15:11,960 --> 00:15:13,920 På den mandag eller onsdag du vil tage quizzen. 350 00:15:13,920 --> 00:15:16,336 På den tirsdag eller torsdag du vil tage en anden quiz. 351 00:15:16,336 --> 00:15:18,570 Men det samme materiale vil blive dækket. 352 00:15:18,570 --> 00:15:19,160 Ja. 353 00:15:19,160 --> 00:15:20,660 Godt spørgsmål. 354 00:15:20,660 --> 00:15:21,160 Ja. 355 00:15:21,160 --> 00:15:23,260 >> PUBLIKUM: Hvor skal vi gå til at tjekke vores karakterer? 356 00:15:23,260 --> 00:15:23,926 >> ANDI Peng: Ja. 357 00:15:23,926 --> 00:15:28,420 Så jeg vil sende ud en e-mail uanset hver uge 358 00:15:28,420 --> 00:15:31,460 når quizzer er graded-- eller, undskyld, når psets sorteres. 359 00:15:31,460 --> 00:15:34,120 Psets er normalt slået i ved middagstid eller fredag. 360 00:15:34,120 --> 00:15:37,540 Så jeg lover, at jeg vil forsøge at få dem tilbage til dig 361 00:15:37,540 --> 00:15:40,000 ved middagstid af den følgende fredag. 362 00:15:40,000 --> 00:15:44,950 >> Når jeg lønklasse en pset, vil jeg sende en meddelelse på karakterbogen 363 00:15:44,950 --> 00:15:47,070 der fortæller dig din score kan ses online. 364 00:15:47,070 --> 00:15:52,022 Så lige i denne uge, efter at jeg færdig med sortering sidste uges psets, 365 00:15:52,022 --> 00:15:54,230 jer vil få en e-mail meddelelse fortæller dig, 366 00:15:54,230 --> 00:15:55,870 hey dette er, hvor du gå til at se dine karakterer. 367 00:15:55,870 --> 00:15:57,680 Og du kan se hver opdeling af dine karakterer. 368 00:15:57,680 --> 00:15:58,555 Du kan se kommentarer. 369 00:15:58,555 --> 00:16:00,360 Åh, hurtig ting også. 370 00:16:00,360 --> 00:16:03,060 Kommentaren sektion i den store bog er, hvor jeg skal nok 371 00:16:03,060 --> 00:16:05,300 tilbringer størstedelen af ​​min tid sortering. 372 00:16:05,300 --> 00:16:07,094 Så én ting, der er virkelig vigtigt, når 373 00:16:07,094 --> 00:16:09,010 du fyre kigger dine karakterer på din psets 374 00:16:09,010 --> 00:16:11,400 ikke kun at se på det fysiske score 375 00:16:11,400 --> 00:16:14,630 men også at tage tid til virkelig læse mine kommentarer. 376 00:16:14,630 --> 00:16:17,820 >> Ofte, at giver dig feedback om, hvordan du løser et problem. 377 00:16:17,820 --> 00:16:20,480 Hvis du skal gøre noget lidt bedre, 378 00:16:20,480 --> 00:16:24,080 konstruktiv kritik normalt er bedst givet i disse bemærkninger afsnit. 379 00:16:24,080 --> 00:16:26,950 Så please, please, jeg har tænkt mig at bruge tid på at skrive kommentarer. 380 00:16:26,950 --> 00:16:30,440 Please, jeg ville virkelig sætte pris på det hvis du fyre ville læse disse bemærkninger. 381 00:16:30,440 --> 00:16:31,170 OK. 382 00:16:31,170 --> 00:16:34,150 Cool. 383 00:16:34,150 --> 00:16:34,680 >> Okay. 384 00:16:34,680 --> 00:16:40,680 Så vi kommer til at begynde at tale og bare gennemgå hurtigt 385 00:16:40,680 --> 00:16:45,040 noget af materialet fra uge nul bare så vi er 386 00:16:45,040 --> 00:16:48,760 på højre side for begynder denne uges problemer. 387 00:16:48,760 --> 00:16:52,600 Så while-løkken er en af de tre typer af løkker 388 00:16:52,600 --> 00:16:54,510 vi diskuterede tidligere i denne klasse. 389 00:16:54,510 --> 00:16:57,060 >> En while-løkke væsentlige er skrevet i syntaksen 390 00:16:57,060 --> 00:17:00,666 hvor der under en bestemt tilstand, gøre dette flere gange, ikke? 391 00:17:00,666 --> 00:17:02,040 Tænk på det på denne grafik her. 392 00:17:02,040 --> 00:17:04,780 Du kommer til at begynde på en bestemt punkt i din kode. 393 00:17:04,780 --> 00:17:09,030 Du kommer til at gå ind i løkken tilstand if-- Jeg kan ikke know-- x er mindre end én. 394 00:17:09,030 --> 00:17:11,677 >> Hvis det er sandt, du vil at udføre løkken kroppen. 395 00:17:11,677 --> 00:17:14,010 Og du kommer til at holde gør det igen, igen, igen, 396 00:17:14,010 --> 00:17:17,900 igen og over-- hvilket er hvorfor det er en loop-- indtil din tilstand bliver 397 00:17:17,900 --> 00:17:19,079 false. 398 00:17:19,079 --> 00:17:22,140 Så på denne måde, en while-løkke er en af ​​de enklere 399 00:17:22,140 --> 00:17:25,619 at skrive nogen form for betingelse, har brug for at gentage igen og igen og igen. 400 00:17:25,619 --> 00:17:28,109 Bare vær forsigtig, når du skriver nogen form for løkke 401 00:17:28,109 --> 00:17:32,140 at du har en exit tilstand som samt en opdatering til hvad det 402 00:17:32,140 --> 00:17:36,714 er så din løkke ikke bare køre igen og uendeligt. 403 00:17:36,714 --> 00:17:38,630 Under alle omstændigheder, er du nødt at ønsker at sikre, 404 00:17:38,630 --> 00:17:42,670 at du er ved at ændre nogle aspekter af din kode eller ved afslutningen af ​​sløjfen 405 00:17:42,670 --> 00:17:46,680 bare for at sikre, at du har en måde af fremskridt i retning af den tilstand 406 00:17:46,680 --> 00:17:48,400 at du ønsker at mødes for at ende. 407 00:17:48,400 --> 00:17:50,239 Giver det mening for alle? 408 00:17:50,239 --> 00:17:52,530 Vi har bare ikke lyst til at være fanget i denne spiral, hvor 409 00:17:52,530 --> 00:17:55,710 vi går rundt og rundt og der er ingen måde at bryde løkken. 410 00:17:55,710 --> 00:17:58,844 Og hver løkke væsentlige har en måde at gøre det. 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 >> For det andet, mange af jer i din Mario psets 414 00:18:06,060 --> 00:18:08,910 sandsynligvis havde til at ansætte denne type loop. 415 00:18:08,910 --> 00:18:11,802 Det kaldes en gør while-løkke. 416 00:18:11,802 --> 00:18:14,510 Først og fremmest, kan nogen fortælle mig hvad forskellen mellem en do 417 00:18:14,510 --> 00:18:16,586 mens loop og en while-løkke er? 418 00:18:16,586 --> 00:18:17,086 Ja. 419 00:18:17,086 --> 00:18:21,030 >> PUBLIKUM: Det gøre, mens løkken kører på første [uhørligt]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Peng: Ja, præcis. 421 00:18:22,120 --> 00:18:27,130 Så en gør mens løkke altid gør hvad er inde i do, inden konsollerne 422 00:18:27,130 --> 00:18:30,520 der, og gør denne betingelse før kontrol for til-- ked, 423 00:18:30,520 --> 00:18:32,940 gør denne kode før kontrol for tilstanden. 424 00:18:32,940 --> 00:18:37,200 Og det er især relevant for os her i denne klasse, fordi de fleste gange 425 00:18:37,200 --> 00:18:41,450 vi vil gerne bede brugeren for en slags input. 426 00:18:41,450 --> 00:18:43,520 Og så, afhængigt af input de giver os, 427 00:18:43,520 --> 00:18:46,150 så kan vi vurdere, åh, gør vi nødt til at bede dem igen? 428 00:18:46,150 --> 00:18:49,930 >> Så i Mario, hvis brugeren gav dig en negativ højde, for eksempel 429 00:18:49,930 --> 00:18:52,990 du kommer til at første prompt og gøre, hvad der er indeni. 430 00:18:52,990 --> 00:18:54,820 Så du kommer til at kontrollere, mens. 431 00:18:54,820 --> 00:18:57,570 Du ved, er negativ 1, er, at et positivt tal? 432 00:18:57,570 --> 00:19:00,680 Hvis det ikke er, jeg kommer til at gå tilbage og gentag gør og gentag 433 00:19:00,680 --> 00:19:03,950 og gentag og gentag, indtil de endelig give dig et nummer, som du kan lide, 434 00:19:03,950 --> 00:19:07,002 at vi alle kan anvende i vores kode. 435 00:19:07,002 --> 00:19:09,210 Det er temmelig vigtigt for væsentlige enhver brugerinput. 436 00:19:09,210 --> 00:19:11,760 Jeg kan garantere dig noget tid i en pset hvor 437 00:19:11,760 --> 00:19:15,070 vi bede dig om at indtaste nogen form for kode, er vi 438 00:19:15,070 --> 00:19:17,540 sandsynligvis vil give dig en prøvesag, hvor vi er 439 00:19:17,540 --> 00:19:21,200 kommer til at give dig noget slemt, der er vil forsøge at bryde din kode. 440 00:19:21,200 --> 00:19:25,044 >> Hvis vi forsøger at bede dig om at indtaste en heltal, kan vi bare give dig en streng 441 00:19:25,044 --> 00:19:26,460 og se hvordan du ville håndtere det. 442 00:19:26,460 --> 00:19:30,610 Hvis vi beder dig om at ansætte en alder, vi kan give dig et negativt tal 443 00:19:30,610 --> 00:19:32,340 at se, hvordan du ville klare det. 444 00:19:32,340 --> 00:19:37,260 Bare sørg for du fyre tester for tilfælde, hvor du ikke får det bedste 445 00:19:37,260 --> 00:19:38,590 input, lad os bare sige. 446 00:19:38,590 --> 00:19:40,510 Og en gør while-løkke er ofte den bedste 447 00:19:40,510 --> 00:19:45,260 måde at designe din kode så at det opfylder det omfang. 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 Så dette er nok den mest komplekse kablet ud af de tre 452 00:19:53,270 --> 00:19:54,990 at vi har kigget på indtil videre. 453 00:19:54,990 --> 00:19:56,689 Og det virker meget skræmmende i første omgang. 454 00:19:56,689 --> 00:19:59,730 Men jeg garanterer dig, når du fyre få hænge af, hvordan man bruger en for-løkke, 455 00:19:59,730 --> 00:20:03,320 det er en af ​​de mest nyttige ting, de fleste nyttige redskaber i dit arsenal 456 00:20:03,320 --> 00:20:05,300 til at komme videre i denne klasse. 457 00:20:05,300 --> 00:20:09,920 >> Så for eksempel i Scratch, Vi havde denne meget enkel blok 458 00:20:09,920 --> 00:20:13,180 at netop sagt gentage denne vis sætninger bestemt antal gange. 459 00:20:13,180 --> 00:20:16,260 Af den måde, SAJ-- det er SCAZ Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Vi oftentimes underskrive vores emails SAJ. 461 00:20:18,740 --> 00:20:20,360 Hvis vi siger SAJ, vær ikke forvirret. 462 00:20:20,360 --> 00:20:22,630 Det er bare os. 463 00:20:22,630 --> 00:20:28,600 >> Så i Scratch, kunne vi have en blok, der er sagt, gentager jeg elsker SAJ! 464 00:20:28,600 --> 00:20:29,430 10 gange. 465 00:20:29,430 --> 00:20:30,130 Meget enkel. 466 00:20:30,130 --> 00:20:32,302 Logikken bag det er en meget, meget simpelt, ikke? 467 00:20:32,302 --> 00:20:35,260 Jeg ønsker først at gå gennem den første tid og se, at anden gang 468 00:20:35,260 --> 00:20:38,510 og se, at tredje gang, så videre og så videre, indtil du rammer til 10. 469 00:20:38,510 --> 00:20:41,960 >> Og den måde, vi ville repræsentere det i kode er blot gennem en simpel for-løkke. 470 00:20:41,960 --> 00:20:45,440 Så for, er du nødt til at erklære din variabel her, i dette tilfælde, 471 00:20:45,440 --> 00:20:46,349 med en int. 472 00:20:46,349 --> 00:20:47,390 Vi kommer til at navngive det jeg. 473 00:20:47,390 --> 00:20:49,500 Vi kommer til at initialisere den til 0. 474 00:20:49,500 --> 00:20:52,490 Og indstilling udgave er vil være i er mindre end 10. 475 00:20:52,490 --> 00:20:54,622 Og opdateringen bliver jeg ++. 476 00:20:54,622 --> 00:20:57,750 >> Og inden for løkken, går det at udføre indtil behandlingen 477 00:20:57,750 --> 00:21:01,490 rammer enden af ​​Stand- hvor tilfælde, vil det bryde løkken. 478 00:21:01,490 --> 00:21:04,600 Der bør være ting, som du fyre har alle slags set før 479 00:21:04,600 --> 00:21:07,270 og havde at gøre for dit problem angive én. 480 00:21:07,270 --> 00:21:12,310 Er der nogen der har nogen spørgsmål med hensyn til loops lige nu? 481 00:21:12,310 --> 00:21:12,930 OK. 482 00:21:12,930 --> 00:21:13,430 Great. 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 Så for dem af jer, der har læse pset spec for denne uge 486 00:21:22,270 --> 00:21:27,690 ved, at vi bliver nødt til at ansætte noget, der hedder ASCII og ASCII tabellen. 487 00:21:27,690 --> 00:21:32,380 Så David i foredraget gik over kort hvordan computere essentially-- alt 488 00:21:32,380 --> 00:21:35,410 er indkodet i en computer i binær, i nuller og ettaller. 489 00:21:35,410 --> 00:21:39,740 Og den måde, computere er i stand at lagre forskellige værdier ud 490 00:21:39,740 --> 00:21:44,360 til nuller og ettaller er gennem kortlægning disse tal kan repræsentere andre cifre 491 00:21:44,360 --> 00:21:47,220 eller væsentlige andre karakterer. 492 00:21:47,220 --> 00:21:49,810 >> Så i dette tilfælde, en ASCII table-- alt den gør 493 00:21:49,810 --> 00:21:53,600 er kort tegn, eller chars, til numre. 494 00:21:53,600 --> 00:21:57,385 Så kildekoden fil i din computer-- det ser, 495 00:21:57,385 --> 00:22:00,010 hey, en flok af nuller og ettaller, nuller og ettaller, nuller og ettaller. 496 00:22:00,010 --> 00:22:02,350 Det er, hvad der er gemt i faktiske hukommelse på din computer. 497 00:22:02,350 --> 00:22:04,750 >> Men når vi mennesker ønsker at kommunikere med computeren, 498 00:22:04,750 --> 00:22:08,249 vi want-- sige, for eksempel, hvis jeg ønsker det store A, 499 00:22:08,249 --> 00:22:10,540 Jeg har tænkt mig at brug for nogle måde at fortælle computeren, åh, 500 00:22:10,540 --> 00:22:16,300 når jeg skriver store bogstaver A, mener jeg denne repræsentation i binær. 501 00:22:16,300 --> 00:22:22,260 >> Og så den måde, vi gør, der er smed en vilkårlige ting kaldet en ASCII tabel, 502 00:22:22,260 --> 00:22:25,020 hvor vi, som mennesker, som programmører, for nogen tid siden, 503 00:22:25,020 --> 00:22:28,660 vi vilkårligt besluttet, at vi skulle tildele disse tal 504 00:22:28,660 --> 00:22:30,960 værdier til disse tegn. 505 00:22:30,960 --> 00:22:32,720 >> Så du fyre kan google dette online. 506 00:22:32,720 --> 00:22:37,120 Jeg tror, ​​der er et link til det i din pset-- blot en ASCII kort bord, ASCII 507 00:22:37,120 --> 00:22:37,720 tabel. 508 00:22:37,720 --> 00:22:40,722 Det bare oversætter binær numre i tegn. 509 00:22:40,722 --> 00:22:42,930 Og det vil være meget nyttigt for dit problem sæt 510 00:22:42,930 --> 00:22:45,470 når du ønsker at beregne noget, eller hvis du 511 00:22:45,470 --> 00:22:47,880 ønsker at vise visse tegn eller tal 512 00:22:47,880 --> 00:22:50,327 eller manipulere bestemte tegn. 513 00:22:50,327 --> 00:22:52,160 Det kommer til at blive meget vigtigt, at du hele 514 00:22:52,160 --> 00:22:55,140 vide, hvordan man navigerer en ASCII tabel. 515 00:22:55,140 --> 00:23:01,260 >> Så for eksempel det store A er repræsenteret ved antallet 65. 516 00:23:01,260 --> 00:23:04,207 Og det lille en er repræsenteret ved 97. 517 00:23:04,207 --> 00:23:07,040 Så det er vigtigt at vide, at forskellen mellem de to værdier 518 00:23:07,040 --> 00:23:08,320 er 32. 519 00:23:08,320 --> 00:23:13,210 Ofte, hvis du har brug for at konvertere fra ene til den anden, er forskellen 32. 520 00:23:13,210 --> 00:23:15,710 Og du behøver ikke bekymre dig, hvis du er slags forvirret om dette i første omgang. 521 00:23:15,710 --> 00:23:20,230 Vi vil gå over, hvordan vi ville anvende det i faktiske 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 Så for dem af jer med bærbare computere ud, velkommen til at trække op en ASCII tabel, 525 00:23:30,770 --> 00:23:36,030 fordi disse vil sandsynligvis kræver jer til at henvise 526 00:23:36,030 --> 00:23:38,100 hvad tegnene er. 527 00:23:38,100 --> 00:23:38,640 OK. 528 00:23:38,640 --> 00:23:42,840 >> Så vel vidende, at visse tegn kort til bestemte numre, 529 00:23:42,840 --> 00:23:47,240 hvis jeg skulle køre bare den første linje, der code-- printf a, 530 00:23:47,240 --> 00:23:50,900 små bogstaver et minus store bogstaver A. Er der nogen 531 00:23:50,900 --> 00:23:55,880 har et gæt på, hvad der ville være udskrivning ud af skærmen lige nu? 532 00:23:55,880 --> 00:23:58,190 >> Så først og fremmest, hvad betyder små bogstaver et repræsentere? 533 00:23:58,190 --> 00:24:00,990 Hvilket nummer er, at kodet i ASCII-tabellen. 534 00:24:00,990 --> 00:24:01,490 Undskyld? 535 00:24:01,490 --> 00:24:02,630 >> PUBLIKUM: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Peng: 97, stor. 537 00:24:03,630 --> 00:24:05,077 Og hvad er store bogstaver A? 538 00:24:05,077 --> 00:24:06,330 >> PUBLIKUM: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Peng: Så hvad er 97 minus 65? 540 00:24:08,255 --> 00:24:09,227 >> PUBLIKUM: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Peng: OK. 542 00:24:09,810 --> 00:24:13,530 Så hvad gør du fyre tror kommer til at ske, når jeg input, linje kode 543 00:24:13,530 --> 00:24:14,670 ind i min computer? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> PUBLIKUM: [uhørligt]. 546 00:24:19,896 --> 00:24:21,020 ANDI Peng: Beklager, sige op. 547 00:24:21,020 --> 00:24:22,520 Ingen problemer. 548 00:24:22,520 --> 00:24:25,750 Dette er en meget sikker miljø, minus kameraet. 549 00:24:25,750 --> 00:24:27,550 Vi er alle gå at-- ingen bekymringer. 550 00:24:27,550 --> 00:24:30,940 Bare vi alle kommer til at lade som om det er bare os nedkøling i dette rum. 551 00:24:30,940 --> 00:24:31,480 Ingen problemer. 552 00:24:31,480 --> 00:24:33,410 Ingen spørgsmål er for dumme. 553 00:24:33,410 --> 00:24:35,300 Intet svar er en dum svar. 554 00:24:35,300 --> 00:24:38,260 Jeg sandsynligvis vil begå fejl i løbet af min undervisning. 555 00:24:38,260 --> 00:24:40,740 Seriøst, gutter, bare buse det ud. 556 00:24:40,740 --> 00:24:43,092 Være sikker på dig selv, du ved? 557 00:24:43,092 --> 00:24:43,800 Så hvad var det? 558 00:24:43,800 --> 00:24:47,990 Hvem sagde, at sidste svar? 559 00:24:47,990 --> 00:24:48,540 OK. 560 00:24:48,540 --> 00:24:50,380 Shout at nice og klar. 561 00:24:50,380 --> 00:24:51,220 >> PUBLIKUM: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Peng: 32. 563 00:24:51,850 --> 00:24:54,141 OK, lad os køre denne kode og se, om det er, hvad der sker. 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 Så som du fyre kan slags se, den typiske notation jeg har 568 00:25:06,360 --> 00:25:12,250 oprettet her for, hvordan vi ville ansætte nogen form for program på vores computer. 569 00:25:12,250 --> 00:25:14,770 Vi har vores vigtigste funktion inden for vores hovedfunktion. 570 00:25:14,770 --> 00:25:17,265 Jeg bare at kopiere og indsæt denne linje kode. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Også være forsigtig, når du fyre kopierer og indsætte kode. 573 00:25:23,540 --> 00:25:28,750 Sommetider visse erhvervsdrivende ikke indsætte over korrekt. 574 00:25:28,750 --> 00:25:31,397 I så fald minus tegn var faktisk en streg. 575 00:25:31,397 --> 00:25:32,980 Og så computeren ikke samle det op. 576 00:25:32,980 --> 00:25:35,870 Så jeg var nødt til at gå tilbage og fysisk genindtaste det. 577 00:25:35,870 --> 00:25:37,846 Bare vær forsigtig, når du fyre gør det. 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 Vi kommer til at køre dette her. 581 00:25:43,980 --> 00:25:45,670 Så vi kommer til at cd ind i vores section2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Jeg har kaldt dette program asciimath. 584 00:25:52,030 --> 00:25:55,690 Så husk, når vi kører en program, vil vi først kompilere det 585 00:25:55,690 --> 00:25:57,150 ved at køre det gennem vores make. 586 00:25:57,150 --> 00:26:00,030 Og så vil vi faktisk køre programmet ved at gøre dot-skråstreg. 587 00:26:00,030 --> 00:26:01,280 Så vi kommer til at ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Ret, der vi gå. 590 00:26:06,590 --> 00:26:07,410 Og vi ser 32. 591 00:26:07,410 --> 00:26:07,930 Godt gået. 592 00:26:07,930 --> 00:26:10,340 Du fortjener et stykke slik. 593 00:26:10,340 --> 00:26:11,160 Candy for dig. 594 00:26:11,160 --> 00:26:11,900 Undskyld. 595 00:26:11,900 --> 00:26:13,100 Okay. 596 00:26:13,100 --> 00:26:13,670 OK. 597 00:26:13,670 --> 00:26:18,070 Så vi kan gå tilbage til vores eksempel her. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, nr. 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 Jeg bare at holde det sådan. 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 Så som du fyre kan se, kan vi gøre masser af meget interessante ting, 608 00:26:55,340 --> 00:26:58,880 en masse meget cool ting, en masse meget komplicerede ting, der involverer 609 00:26:58,880 --> 00:27:02,720 ASCII-tegn og tal. 610 00:27:02,720 --> 00:27:05,890 Når du kommer ned til linje fem, der er en masse at følge med. 611 00:27:05,890 --> 00:27:07,640 Vi kommer ikke til at gå gennem sektionen. 612 00:27:07,640 --> 00:27:10,720 Du er velkommen til, hvis du kan, ræsonnere det ud på papir 613 00:27:10,720 --> 00:27:14,750 først på, hvad der skal ske, når du indtaster en sådan streng af værdier. 614 00:27:14,750 --> 00:27:19,720 For eksempel, i den sidste linje, vi har z-- som repræsenterer en vis number-- 615 00:27:19,720 --> 00:27:24,740 en-- som også repræsenterer en visse number-- plus 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 plus små bogstaver a. 617 00:27:26,750 --> 00:27:29,220 >> Hvis du fyre holde læsning gennem disse, du 618 00:27:29,220 --> 00:27:34,009 kan se et mønster kommer op i hvordan vi manipulere koden. 619 00:27:34,009 --> 00:27:36,050 Jeg stærkt, meget tyder efter sektion alle jer 620 00:27:36,050 --> 00:27:38,160 fyre gå videre og input dem alle i din computer 621 00:27:38,160 --> 00:27:40,060 og se, hvilken slags numre der kommer ud 622 00:27:40,060 --> 00:27:43,090 og ræsonnement gennem hvorfor de er sker, fordi for dine psets 623 00:27:43,090 --> 00:27:45,060 det vil være virkelig vigtigt for dig at forstå 624 00:27:45,060 --> 00:27:47,132 hvorfor visse ting sker. 625 00:27:47,132 --> 00:27:48,590 Alle disse slides vil være online. 626 00:27:48,590 --> 00:27:51,510 Så ingen bekymringer om at forsøge at fysisk kopi ned noter. 627 00:27:51,510 --> 00:27:52,510 Alt er online. 628 00:27:52,510 --> 00:27:54,050 Denne sektion selv vil være online. 629 00:27:54,050 --> 00:27:57,500 Alle mine kildekode, Jeg kører vil være online. 630 00:27:57,500 --> 00:27:58,180 Ja. 631 00:27:58,180 --> 00:27:59,430 Har du stadig har et spørgsmål? 632 00:27:59,430 --> 00:28:00,587 PUBLIKUM: Hvad er modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Peng: OK. 634 00:28:01,170 --> 00:28:05,620 Så modulo er en operatør, der kommer til være temmelig vigtigt for dine fyre s pset 635 00:28:05,620 --> 00:28:06,690 her. 636 00:28:06,690 --> 00:28:12,280 Så den måde, at operatørerne i C og i programmering arbejde 637 00:28:12,280 --> 00:28:16,360 er, at du har, hvad der kaldes den division symbol og modulus symbol 638 00:28:16,360 --> 00:28:18,350 som er ligesom procent tegn. 639 00:28:18,350 --> 00:28:24,840 >> Så i C, når du gør et heltal divideres med et tal med en skråstreg, 640 00:28:24,840 --> 00:28:27,720 C har en tendens til at vil klippe off alle de decimaler, 641 00:28:27,720 --> 00:28:30,290 fordi et heltal ønsker konverteres til et heltal. 642 00:28:30,290 --> 00:28:33,550 Det kommer ikke til at ønsker at være en dobbelt med en flok af decimaler alle efter det. 643 00:28:33,550 --> 00:28:39,322 >> Så hvis jeg gør 3 divideret med 2, går det at afskære 0,5 og bare give dig 1. 644 00:28:39,322 --> 00:28:41,530 Så det er noget at være meget forsigtig med, når du er 645 00:28:41,530 --> 00:28:45,294 laver nogen form for matematik i programmeringen, er, at de tal, du får 646 00:28:45,294 --> 00:28:47,210 kan ikke være tallene at du tænker, 647 00:28:47,210 --> 00:28:50,190 hvilket er grunden til afrunding i sidste pset er så vigtig. 648 00:28:50,190 --> 00:28:51,980 >> Modulo giver dig resten. 649 00:28:51,980 --> 00:28:56,200 Altså for eksempel, hvis jeg gjorde 3 modulo 2-- så 3 procent skilt 2-- 650 00:28:56,200 --> 00:28:58,020 det ville give dig resten af ​​det. 651 00:28:58,020 --> 00:29:00,460 Så 3 divideret med 2 er 1,5. 652 00:29:00,460 --> 00:29:01,410 Det er 1 resten af ​​1. 653 00:29:01,410 --> 00:29:04,600 Det ville give dig den 1, der er resten af ​​det. 654 00:29:04,600 --> 00:29:07,361 >> Så når du fyre bevæger gennem ASCII tabellen, 655 00:29:07,361 --> 00:29:09,735 modulo vil ende med at blive noget, der er meget vigtigt, 656 00:29:09,735 --> 00:29:11,240 og vi vil diskutere det senere. 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 Så noget, der er smuk, temmelig nye og temmelig enestående 660 00:29:27,300 --> 00:29:31,920 at vi har diskuteret i denne uge er begrebet hvilket array er. 661 00:29:31,920 --> 00:29:34,370 Så array er den første type datastruktur 662 00:29:34,370 --> 00:29:36,320 at vi kommer til at støder i denne klasse. 663 00:29:36,320 --> 00:29:40,010 Alle datastrukturen er en slags vilkårlig, 664 00:29:40,010 --> 00:29:43,370 bogstaveligt ting som struktur at vi som programmører har skabt, 665 00:29:43,370 --> 00:29:47,890 at vi har sat i vores kode, kan indeholde andre stykker kode. 666 00:29:47,890 --> 00:29:51,090 >> Så på denne måde, en array-- tænk på det som en arkivskab, 667 00:29:51,090 --> 00:29:53,470 hvor, hvis du åbner anderledes hylderne i dit arkivskab, 668 00:29:53,470 --> 00:29:55,630 du kan få adgang til forskellige ting. 669 00:29:55,630 --> 00:29:58,630 I hukommelsen, er et array bare gør de samme ting på din computer. 670 00:29:58,630 --> 00:30:01,730 Du kan have forskellige blocks-- vi kalde dem indices-- af et array. 671 00:30:01,730 --> 00:30:04,210 Det er ligesom en blok, en hylde hukommelse 672 00:30:04,210 --> 00:30:07,580 at vi har oprettet i din computer, du kan indtaste 673 00:30:07,580 --> 00:30:10,270 visse ting i forskellige rum. 674 00:30:10,270 --> 00:30:18,000 >> Så med et array, du altid nødt til at specify-- 675 00:30:18,000 --> 00:30:22,360 du nødt til at angive at erklære en array i følgende format. 676 00:30:22,360 --> 00:30:24,290 Du kommer til at først angive datatypen 677 00:30:24,290 --> 00:30:25,831 at du ønsker at skabe af array. 678 00:30:25,831 --> 00:30:28,870 Hvis jeg vil have en bred vifte af heltal, Jeg vil sætte int lige der. 679 00:30:28,870 --> 00:30:32,079 Hvis jeg vil have en bred vifte af strenge, Jeg har tænkt mig at sætte strenge der, 680 00:30:32,079 --> 00:30:34,995 navnet på din array, og derefter du kommer til at have firkantede parenteser. 681 00:30:34,995 --> 00:30:39,580 Og inde i kantede parenteser, er du kommer til at have størrelsen på din array. 682 00:30:39,580 --> 00:30:42,900 >> Noget, der er virkelig vigtigt at huske på, når du opretter arrays er 683 00:30:42,900 --> 00:30:46,530 at når du opretter en array, kan denne størrelse ikke ændres. 684 00:30:46,530 --> 00:30:50,180 Så hvis du ved, at lige nu du har en bred vifte af størrelse 10, 685 00:30:50,180 --> 00:30:54,550 du ved, at jeg har tænkt mig at have 10 celler inden for eller 10 indeks i denne array, 686 00:30:54,550 --> 00:30:56,830 og det er aldrig vil at udvide eller formindske 687 00:30:56,830 --> 00:30:59,850 uanset hvad, og at der er øjeblikket kun 10 blokke af rummet 688 00:30:59,850 --> 00:31:04,490 allokeret i din hukommelse, der kan gemme op til 10 ting af hvad du har lagt. 689 00:31:04,490 --> 00:31:08,790 >> Så på denne måde, et array datatype, datastrukturen, der er en matrix 690 00:31:08,790 --> 00:31:13,392 er meget forskellig fra nogle andre, vi vil være der dækker senere i dette kursus. 691 00:31:13,392 --> 00:31:15,170 Ja. 692 00:31:15,170 --> 00:31:20,080 For eksempel, hvis du ønsker at skabe en række size 3, der 693 00:31:20,080 --> 00:31:23,670 indeholdt variabler af integer-- Åh, undskyld, for temperature-- 694 00:31:23,670 --> 00:31:25,640 og temperatur, for Selvfølgelig er et helt tal. 695 00:31:25,640 --> 00:31:28,710 >> Så vi ville skabe int, som er datatype af, hvad vi ønsker at gemme. 696 00:31:28,710 --> 00:31:32,680 Vi kommer til at kalde dette temperaturer af hensyn til nomenklaturen for navngivning 697 00:31:32,680 --> 00:31:34,200 noget, vi alle forstår. 698 00:31:34,200 --> 00:31:35,900 Og vi vil have firkantede parenteser. 699 00:31:35,900 --> 00:31:37,200 Og vi ønsker tre numre. 700 00:31:37,200 --> 00:31:39,000 Så vi kommer til at sætte tre inde i den. 701 00:31:39,000 --> 00:31:41,041 >> Noget, der er virkelig vigtigt at huske på 702 00:31:41,041 --> 00:31:43,530 er, at arrays nul indekseret. 703 00:31:43,530 --> 00:31:46,410 Alle, der betyder, at du starte med indekset på 0, 704 00:31:46,410 --> 00:31:49,800 og du kører op gennem størrelsen af ​​arrayet minus 1. 705 00:31:49,800 --> 00:31:52,730 Så for eksempel her, vi har en bred vifte af størrelse 3. 706 00:31:52,730 --> 00:31:54,680 Det kommer til at være i stand at holde tre værdier. 707 00:31:54,680 --> 00:31:57,450 Men tallene themselves-- at nummer, array, nævnte indeks, 708 00:31:57,450 --> 00:32:00,271 array, er 0 til 2. 709 00:32:00,271 --> 00:32:03,520 Så gutter, være virkelig, virkelig forsigtig, når du går igennem dine problemer, der er 710 00:32:03,520 --> 00:32:06,500 og skabe nogen form for matrix, fordi en masse af de gange det er 711 00:32:06,500 --> 00:32:08,490 virkelig, virkelig let at glemme. 712 00:32:08,490 --> 00:32:11,840 Jeg faktisk ikke har indekset 3, at jeg i øjeblikket bare 713 00:32:11,840 --> 00:32:13,130 har indekset for 2. 714 00:32:13,130 --> 00:32:16,046 Og hvis du forsøger at adgang tredje indeks, 715 00:32:16,046 --> 00:32:18,170 det vil være, hvad der er kaldet null terminator. 716 00:32:18,170 --> 00:32:19,990 Det kommer ikke til at rent faktisk findes i arrayet. 717 00:32:19,990 --> 00:32:21,781 Og computeren er ikke kommer til at lide det. 718 00:32:21,781 --> 00:32:24,570 Så vær forsigtig, når du adgang til tingene bare 719 00:32:24,570 --> 00:32:28,070 at sikre, at du husker at arrays er nul-indekseret. 720 00:32:28,070 --> 00:32:28,880 >> OK. 721 00:32:28,880 --> 00:32:34,030 Så det første eksempel er blot en måde at skabe et array. 722 00:32:34,030 --> 00:32:36,790 Det andet eksempel, jeg har nedenfor er blot en separat måde 723 00:32:36,790 --> 00:32:40,210 for at skabe, hvad der er de samme data struktur, som vi lige har indtastet. 724 00:32:40,210 --> 00:32:44,347 Så i stedet for fysisk at køre igennem og sætte i temperatur på 0 725 00:32:44,347 --> 00:32:47,180 lig uanset hvad, temperatur 1 lig uanset, temperatur 2 ligemænd 726 00:32:47,180 --> 00:32:50,950 uanset hvad, kunne jeg faktisk bare direkte skaber det hele i én linje 727 00:32:50,950 --> 00:32:53,010 i temperatur firkantede parenteser lig. 728 00:32:53,010 --> 00:32:56,536 >> Og varsel i dette tilfælde, behøver du ikke at angive, hvor stor din array er, 729 00:32:56,536 --> 00:32:59,160 fordi computeren kommer til at gå igennem og se, at der er 730 00:32:59,160 --> 00:33:01,570 tre elementer i disse krøllede parenteser. 731 00:33:01,570 --> 00:33:04,000 Og det kommer til at vide, OK, Jeg har brug for en bred vifte af størrelse 3. 732 00:33:04,000 --> 00:33:07,440 Du kommer ikke til at brug for at input det på følgende måde. 733 00:33:07,440 --> 00:33:10,170 >> Og også, ja, på den måde. 734 00:33:10,170 --> 00:33:12,610 Er der nogen der har spørgsmål om, hvordan vi gør arrays 735 00:33:12,610 --> 00:33:17,391 eller hvordan strukturen af ​​et array virker? 736 00:33:17,391 --> 00:33:17,890 Ja. 737 00:33:17,890 --> 00:33:18,806 >> PUBLIKUM: [uhørligt]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Peng: Ja, præcis. 740 00:33:22,690 --> 00:33:26,150 Så hvis du var til at erklære og initialisere et array følgende metode, 741 00:33:26,150 --> 00:33:28,477 som er den anden måde, du kan bare lade dem. 742 00:33:28,477 --> 00:33:30,310 Og computeren ved automatisk at det 743 00:33:30,310 --> 00:33:33,950 nødt til at tælle, hvor mange elementer er i disse krøllede parenteser, adskilt 744 00:33:33,950 --> 00:33:34,930 af kommaer. 745 00:33:34,930 --> 00:33:37,517 >> Så her ser de 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Så computeren ved, åh, Der er tre heltal. 747 00:33:39,600 --> 00:33:45,960 Jeg ved at skabe en række navn temperatur med tre elementer i det. 748 00:33:45,960 --> 00:33:46,590 Godt spørgsmål. 749 00:33:46,590 --> 00:33:47,090 Ja. 750 00:33:47,090 --> 00:33:51,590 >> PUBLIKUM: Er det ikke muligt at skabe et array med forskellige typer af data 751 00:33:51,590 --> 00:33:53,021 der kunne indgås det? 752 00:33:53,021 --> 00:33:56,746 For eksempel med heltal [uhørligt]? 753 00:33:56,746 --> 00:33:59,120 ANDI Peng: I forbindelse af denne klasse, nej, lige nu. 754 00:33:59,120 --> 00:34:03,070 Når du opretter en data struktur som et array, 755 00:34:03,070 --> 00:34:04,990 du fortæller den computer, hey, jeg har brug for dig 756 00:34:04,990 --> 00:34:08,159 at afsætte så meget hukommelse i min harddisk, 757 00:34:08,159 --> 00:34:10,690 hvor hver enkelt celle en række bits. 758 00:34:10,690 --> 00:34:13,429 >> Husk vi lært i uge nul, at forskellige data 759 00:34:13,429 --> 00:34:15,300 typer har forskellige størrelser? 760 00:34:15,300 --> 00:34:17,630 Så for eksempel en streng er et andet beløb 761 00:34:17,630 --> 00:34:20,719 plads end en char, som er en anden mængde plads 762 00:34:20,719 --> 00:34:21,830 fra et heltal. 763 00:34:21,830 --> 00:34:25,534 Og så hvis du ikke angiver, og du mikse og matche, hvad slags variabler 764 00:34:25,534 --> 00:34:27,659 du har, computerens vil være meget forvirret. 765 00:34:27,659 --> 00:34:29,950 Og det kommer ikke til at vide hvor meget hukommelse til at give dig. 766 00:34:29,950 --> 00:34:32,480 Så af hensyn til retten nu, computere kan kun 767 00:34:32,480 --> 00:34:36,120 genkender en type af et array. 768 00:34:36,120 --> 00:34:37,940 Godt spørgsmål. 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 >> Så naturligvis, den andet spørgsmål, vi har 772 00:34:47,120 --> 00:34:50,760 er, ja, nu hvor vi har oprettet en array og vi har lagt alle disse ting 773 00:34:50,760 --> 00:34:54,190 i array, hvordan har vi vil være i stand til at få adgang til det? 774 00:34:54,190 --> 00:34:59,710 Så den typiske struktur, at vi altid adgang til en array er vores dejlige for løkke. 775 00:34:59,710 --> 00:35:03,830 Jeg lover jer, at vi vil være se en masse af denne fyr her. 776 00:35:03,830 --> 00:35:06,470 >> Væsentlige, når du vil indtaste værdier i et array 777 00:35:06,470 --> 00:35:09,940 eller du ønsker at få adgang til dem, den bedste måde at gøre det er en for-løkke, 778 00:35:09,940 --> 00:35:13,730 fordi der i en for-løkke, du vide, hvor mange gange du er 779 00:35:13,730 --> 00:35:17,290 vil ønsker at løbe gennem array, fordi du har et stop udgave, ikke? 780 00:35:17,290 --> 00:35:19,680 Og hver gang du kører igennem, kan du få adgang til 781 00:35:19,680 --> 00:35:21,310 en anden del af matrixen. 782 00:35:21,310 --> 00:35:26,920 >> Og også dette er en grund til typisk vi starter vores efter sløjfer på 0 værdi, 783 00:35:26,920 --> 00:35:30,080 fordi når du får adgang til arrays, du kan få adgang til nul-indekset. 784 00:35:30,080 --> 00:35:32,070 Og så det paralleller meget pænt. 785 00:35:32,070 --> 00:35:35,295 Du fyre kan have ønsket at skrive for int jeg lig med 1. 786 00:35:35,295 --> 00:35:37,330 i er mindre end eller lig med 3. 787 00:35:37,330 --> 00:35:39,890 >> Men det ville ikke fungere helt så godt her, fordi du kun 788 00:35:39,890 --> 00:35:42,010 har elementer af 0, 1 og 2. 789 00:35:42,010 --> 00:35:45,815 Og så hvis du skulle starte din i på element 1, 2, og 3, 790 00:35:45,815 --> 00:35:48,440 du kommer til at ende med at køre ud af grænserne for dit array, 791 00:35:48,440 --> 00:35:50,440 og dårlige ting kommer til at ske. 792 00:35:50,440 --> 00:35:54,480 >> Så jeg håber, du fyre se segue på, hvorfor de tidligere klasser 793 00:35:54,480 --> 00:35:58,560 vi underviste jer, hvordan du kører og formatere en for-løkke den måde, at vi var. 794 00:35:58,560 --> 00:36:01,900 Det er fordi, vi nu har skiftet i arrays, 795 00:36:01,900 --> 00:36:06,760 du kan se, hvorfor de 0 låner selv meget pænt at få adgang. 796 00:36:06,760 --> 00:36:09,880 >> Så den måde, vi gør det er at-- jeg er bare udskrive det ud her for skyld 797 00:36:09,880 --> 00:36:10,830 for at printe det ud. 798 00:36:10,830 --> 00:36:13,750 Men jeg har min pladsholder, komma. 799 00:36:13,750 --> 00:36:15,645 Og selve Adgang del, der sker. 800 00:36:15,645 --> 00:36:17,520 Navnet på arrayet hed temperatur. 801 00:36:17,520 --> 00:36:21,570 Så det er temperaturen og i'te element i arrayet. 802 00:36:21,570 --> 00:36:24,400 >> Så som for-løkken løber gennem, det vil starte ved 0. 803 00:36:24,400 --> 00:36:27,640 Det kommer til at udskrive 0. oversigt for dette array. 804 00:36:27,640 --> 00:36:29,599 Så det kommer til at udskrive ud det første element. 805 00:36:29,599 --> 00:36:31,431 Så det kommer til at udskrive den anden. 806 00:36:31,431 --> 00:36:32,880 Og så vil vi bryde. 807 00:36:32,880 --> 00:36:36,718 Er alle klar på hvordan det sker? 808 00:36:36,718 --> 00:36:37,217 Great. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Okay. 811 00:36:44,100 --> 00:36:47,270 Så her har vi en måde at sige, hvis vi ikke ønsker 812 00:36:47,270 --> 00:36:50,020 til hårdt-kode in-- mig som programmør. 813 00:36:50,020 --> 00:36:53,320 Jeg ønskede ikke at rent fysisk sat i hvert enkelt element 814 00:36:53,320 --> 00:36:54,020 af dette array. 815 00:36:54,020 --> 00:36:56,500 Hvis jeg ønskede at stedet har de bruger input værdier, 816 00:36:56,500 --> 00:36:58,100 hvad er den bedste måde at gøre det? 817 00:36:58,100 --> 00:37:00,920 >> Nå, her har jeg lavet denne dejlige funktion, 818 00:37:00,920 --> 00:37:03,560 hvor jeg kan erklære et array. 819 00:37:03,560 --> 00:37:06,210 Så int scores-- lad os bare sige vi ønsker at gøre 820 00:37:06,210 --> 00:37:10,660 et array, der holdt kvaliteter af alle 18 af de studerende her i dette afsnit. 821 00:37:10,660 --> 00:37:12,670 Jeg tror, ​​vi har fået en smule mere end 18 børn i dag. 822 00:37:12,670 --> 00:37:16,460 Men for eksempel skyld, lad os bare antage, vi havde 18. 823 00:37:16,460 --> 00:37:21,580 Jeg vil skabe en række navn scoringer med typen int, fordi scoringer, selvfølgelig, 824 00:37:21,580 --> 00:37:22,987 er tal. 825 00:37:22,987 --> 00:37:24,820 Og jeg har tænkt mig at have 18 i kantede parenteser, 826 00:37:24,820 --> 00:37:29,900 fordi det er, hvor mange elever jeg vil være i stand til at lagre snesevis af. 827 00:37:29,900 --> 00:37:32,206 >> Og den måde, jeg ville befolke array er, at jeg havde 828 00:37:32,206 --> 00:37:35,572 køre det igennem en for-løkke, af Selvfølgelig, hvor 0 er min 0. indeks. 829 00:37:35,572 --> 00:37:38,030 Og derefter med 18 bliver min standsning udgave, fordi der er 830 00:37:38,030 --> 00:37:39,690 18 elementer i arrayet. 831 00:37:39,690 --> 00:37:44,620 Og så er jeg tænkt mig at gøre printf, Enter score for student-- yada yada yada. 832 00:37:44,620 --> 00:37:51,171 >> Kan nogen fortælle mig, hvorfor her er jeg udskrivning i plus 1 og ikke jeg? 833 00:37:51,171 --> 00:37:52,920 Det er lidt af et trick spørgsmål, ikke rigtig. 834 00:37:52,920 --> 00:37:56,020 Det gør ikke rent fysisk påvirke driften af ​​koden. 835 00:37:56,020 --> 00:37:56,520 Ja. 836 00:37:56,520 --> 00:37:57,909 >> PUBLIKUM: [uhørligt] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Peng: Ja, præcis. 838 00:37:58,950 --> 00:38:02,620 Det er en smule akavet at sige, hey, du er den 0. elev i denne klasse. 839 00:38:02,620 --> 00:38:03,780 Det er lidt underligt. 840 00:38:03,780 --> 00:38:08,340 Så os, som mennesker, kan ikke rigtig lide at tænke på, hvordan computere tænker. 841 00:38:08,340 --> 00:38:10,930 Så selv om i computer, er det opbevaring værdier 842 00:38:10,930 --> 00:38:13,310 i 0-th indeks, når vi er mennesker, vi ikke rigtig 843 00:38:13,310 --> 00:38:15,520 gerne henvise til os selv som nul. 844 00:38:15,520 --> 00:38:18,119 Så når jeg bare udskrive det, Jeg har tænkt mig at udskrive og tilføje 845 00:38:18,119 --> 00:38:19,410 1 bare for overskuelighedens skyld. 846 00:38:19,410 --> 00:38:22,447 Så når jeg udskriver, vil jeg være stand til at udskrive de studerende 1 til 18. 847 00:38:22,447 --> 00:38:24,530 Det behøver faktisk ikke påvirker driften af ​​koden 848 00:38:24,530 --> 00:38:27,110 på nogen måde, den måde jeg udskrive. 849 00:38:27,110 --> 00:38:30,380 >> Men vær forsigtig, når du er faktisk adgang arrayet. 850 00:38:30,380 --> 00:38:32,780 Når du ser de scores I, bemærke her Jeg er faktisk 851 00:38:32,780 --> 00:38:38,200 adgang til 0. indekset og ikke 1 plus 0-- eller 1 plus 1, 852 00:38:38,200 --> 00:38:45,530 i dette tilfælde, indeks så at det faktisk er klar. 853 00:38:45,530 --> 00:38:48,870 Er alle slags OK på hvordan det kører gennem 854 00:38:48,870 --> 00:38:51,470 og med hver indekset jeg sætte en værdi i array 855 00:38:51,470 --> 00:38:55,340 og skabe et array med 18 numre at brugeren kommer til input? 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 Cool. 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 Vi har nu flytte ind i noget, der er temmelig relevant for dette stykke sæt samt. 862 00:39:12,220 --> 00:39:15,020 Jeg kender i foredrag, David-- undskyld, du havde et spørgsmål? 863 00:39:15,020 --> 00:39:16,840 >> PUBLIKUM: Kan du forstørre det? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Peng: Ja, så jeg prøvede. 865 00:39:18,080 --> 00:39:18,788 Men jeg ved det ikke. 866 00:39:18,788 --> 00:39:21,437 Af en eller anden grund, dette version af PowerPoint 867 00:39:21,437 --> 00:39:23,270 er virkelig ikke i orden godt med displayet. 868 00:39:23,270 --> 00:39:25,260 Så vi bare at holde det på denne måde. 869 00:39:25,260 --> 00:39:27,280 Alle disse vil blive uploadet online. 870 00:39:27,280 --> 00:39:28,218 Beklager, gutter. 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 >> Så kan vi også have strenge. 874 00:39:35,530 --> 00:39:39,320 Så hvis du fyre faktisk notice-- jeg ved Rob gik over dette i denne foredrag 875 00:39:39,320 --> 00:39:43,652 at han did-- en streng er faktisk blot et array af tegn, 876 00:39:43,652 --> 00:39:44,860 hvis du tænker over det, ikke? 877 00:39:44,860 --> 00:39:47,500 En streng er et navn eller et sætning eller et ord, ikke? 878 00:39:47,500 --> 00:39:52,975 >> Hvis jeg skulle lave en streng med navnet Andi-- bare mit navn, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Du tænker på det som blot en variabel. 880 00:39:55,460 --> 00:39:58,630 Men faktisk, det er opdelt i bare en vifte af tegn. 881 00:39:58,630 --> 00:40:01,910 Så det har fået en karakter af en lagret i et array værdi. 882 00:40:01,910 --> 00:40:05,420 Det har fået en karakter n lagret i andet indeks, og så videre og så videre. 883 00:40:05,420 --> 00:40:08,660 >> Så på en sådan måde, vi faktisk har denne form 884 00:40:08,660 --> 00:40:10,970 med strukturen sat i sted for vores strenge. 885 00:40:10,970 --> 00:40:14,660 Så her, hvis jeg var at indtaste ordet "spise" - så string ordet er lig med 886 00:40:14,660 --> 00:40:15,540 få strengen. 887 00:40:15,540 --> 00:40:19,260 Hvis jeg var at indtaste ordet "spise," at er fysisk den måde, at min computer 888 00:40:19,260 --> 00:40:21,870 gemmer denne streng i min hukommelse. 889 00:40:21,870 --> 00:40:27,140 >> Og hvis jeg ønskede at køre gennem det og print, der out-- så for ind i 890 00:40:27,140 --> 00:40:30,890 er lig med nul, husk, i foredrag, vi dækket noget, der hedder strlen, 891 00:40:30,890 --> 00:40:32,990 eller længden af ​​strengen. 892 00:40:32,990 --> 00:40:36,520 Fordi jeg faktisk ikke ved hvor stor array er 893 00:40:36,520 --> 00:40:38,210 uanset brugerens inputting-- 894 00:40:38,210 --> 00:40:40,370 >> For eksempel, jeg inputted ordet "spise", og jeg ved, 895 00:40:40,370 --> 00:40:41,870 det er tre tegn, ikke? 896 00:40:41,870 --> 00:40:44,700 Så jeg kunne sætte i en tre der og alt vil være fint. 897 00:40:44,700 --> 00:40:49,290 Men hvis din bruger input noget det er et andet antal værdier, 898 00:40:49,290 --> 00:40:52,760 du vil ikke være i stand til virkelig ved, at når du programmerer din kode. 899 00:40:52,760 --> 00:40:56,040 >> Så den måde, som vi håndterer testcases ligesom det er, at vi har noget 900 00:40:56,040 --> 00:41:00,070 kaldet strlen, som er blot en funktion der fortæller dig, hvor lang tid en streng er. 901 00:41:00,070 --> 00:41:02,080 Så strlen af ​​ord. 902 00:41:02,080 --> 00:41:03,470 Mit ord er spise. 903 00:41:03,470 --> 00:41:05,990 n er lig strlen af ​​ord. 904 00:41:05,990 --> 00:41:08,930 Kan nogen fortælle mig, hvad der værdi faktisk er lige der? 905 00:41:08,930 --> 00:41:12,550 Hvad betyder n repræsenterer højre nu, i dette eksempel, hvis jeg havde spise? 906 00:41:12,550 --> 00:41:13,530 >> PUBLIKUM: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Peng: 3, nøjagtigt. 908 00:41:14,520 --> 00:41:18,820 Så vi har for int i lig nul, n er 3, i det væsentlige. 909 00:41:18,820 --> 00:41:22,355 Og jeg vil køre indtil det er mindre end 3i ++. 910 00:41:22,355 --> 00:41:24,980 Og det kommer til at væsentlige gå igennem og gøre det samme. 911 00:41:24,980 --> 00:41:26,979 Det kommer til at udskrive hver værdi og giver dig 912 00:41:26,979 --> 00:41:29,700 E-A-T. Det er bare betegner en anderledes måde at skrive det. 913 00:41:29,700 --> 00:41:31,170 Det kommer til at være meget nyttig. 914 00:41:31,170 --> 00:41:31,670 Ja. 915 00:41:31,670 --> 00:41:35,174 PUBLIKUM: Hvad er fordelene ved at sætte n er lig strlen ord inde, 916 00:41:35,174 --> 00:41:36,894 for-løkke [uhørligt]? 917 00:41:36,894 --> 00:41:37,560 ANDI Peng: Ja. 918 00:41:37,560 --> 00:41:44,880 Så hvis jeg var at-- sige, for eksempel, hvis jeg skulle gøre det, og derefter 919 00:41:44,880 --> 00:41:51,935 do-- oop-- at i min kode, ville det faktisk være at gøre ligesom de samme ting. 920 00:41:51,935 --> 00:41:55,060 Men den måde, at David forklarede det under foredrag, hvis nogen af ​​jer gutter 921 00:41:55,060 --> 00:41:57,854 Husk, var, som mennesker, som programmører, 922 00:41:57,854 --> 00:42:00,270 vi virkelig forsøger at programmere vores kode, så vores computer har 923 00:42:00,270 --> 00:42:04,070 at arbejde som minimalt som muligt, så at vores kode er meget effektiv. 924 00:42:04,070 --> 00:42:06,850 >> Så hvis jeg havde, at der, hvad ville ske gennem min for-løkke 925 00:42:06,850 --> 00:42:10,790 er, at jeg først ville erklære en variabel med navnet jeg kommer til at være 0. 926 00:42:10,790 --> 00:42:13,350 Jeg kommer til at kontrollere, åh, hvad er strlen af ​​ord? 927 00:42:13,350 --> 00:42:15,000 Åh, strlen er 3. 928 00:42:15,000 --> 00:42:16,191 Så er jeg mindre end tre? 929 00:42:16,191 --> 00:42:16,690 Ja det er. 930 00:42:16,690 --> 00:42:17,870 Jeg har tænkt mig at køre. 931 00:42:17,870 --> 00:42:21,130 >> Og så anden gang tilbage omkring løkken, jeg har tænkt mig at forøge i. 932 00:42:21,130 --> 00:42:22,550 Jeg kommer til at være en. 933 00:42:22,550 --> 00:42:25,600 Og jeg kommer til at kontrollere, åh, men hvad er strlen af ​​ord? 934 00:42:25,600 --> 00:42:26,839 Åh, det er tre. 935 00:42:26,839 --> 00:42:29,880 Og gør det synes slags spild, hver gang du kører gennem løkken, 936 00:42:29,880 --> 00:42:33,340 at kontrollere funktionen, selv om strlen af ​​ord 937 00:42:33,340 --> 00:42:35,490 faktisk aldrig ændrer sig? 938 00:42:35,490 --> 00:42:38,590 >> Så det er ekstra strøm til en computer. 939 00:42:38,590 --> 00:42:42,180 Når du begynder at tale om ting der er milliarder og milliarder 940 00:42:42,180 --> 00:42:44,431 og milliarder af steder lang, forestille din computer 941 00:42:44,431 --> 00:42:47,430 skulle fysisk gå igennem og kontrollere alle, at hver eneste gang. 942 00:42:47,430 --> 00:42:53,170 Det er grunden til, at gøre netop af hensyn til effektivitet, 943 00:42:53,170 --> 00:42:57,620 Vi har en tendens til bare at gøre dette, fordi denne måde er vi kun 944 00:42:57,620 --> 00:42:59,850 kalde funktionen én gang i begyndelsen, 945 00:42:59,850 --> 00:43:01,766 og at hver gang det går gennem det vil 946 00:43:01,766 --> 00:43:03,789 at lagre værdien 3 der, at du ikke 947 00:43:03,789 --> 00:43:05,330 nødt til løbende at kontrollere hver gang. 948 00:43:05,330 --> 00:43:05,743 Ja. 949 00:43:05,743 --> 00:43:06,409 >> PUBLIKUM: Beklager. 950 00:43:06,409 --> 00:43:09,070 Bare [uhørligt]. 951 00:43:09,070 --> 00:43:13,985 Kunne du int n er strlen og sætte at der over kanten af ​​for-løkken 952 00:43:13,985 --> 00:43:15,364 samt? 953 00:43:15,364 --> 00:43:16,030 ANDI Peng: Ja. 954 00:43:16,030 --> 00:43:17,100 Du kan gøre det, absolut. 955 00:43:17,100 --> 00:43:19,970 Grunden til at vi har det i her er fordi den måde en for-løkke værker 956 00:43:19,970 --> 00:43:23,500 er, at det har krævet en lokal variabel i den forstand 957 00:43:23,500 --> 00:43:26,150 at alt, hvad du er skabe inde i for-løkken 958 00:43:26,150 --> 00:43:27,890 kun eksisterer inde i for-løkken. 959 00:43:27,890 --> 00:43:31,530 >> Så variablen jeg kun findes i de parenteser. 960 00:43:31,530 --> 00:43:35,260 Og her variabler af n også kun eksisterer i disse parentes. 961 00:43:35,260 --> 00:43:39,350 Så hvis du skulle bruge strlen af ordet flere gange ned nedenfor, 962 00:43:39,350 --> 00:43:42,230 absolut den bedste måde at gøre det ville være at erklære den op i toppen 963 00:43:42,230 --> 00:43:43,563 så du ikke behøver at gøre det én gang. 964 00:43:43,563 --> 00:43:45,420 Ja. 965 00:43:45,420 --> 00:43:47,670 PUBLIKUM: Hvorfor har du en ny linje efter procent 966 00:43:47,670 --> 00:43:51,300 se, om du ønsker at sætte alle bogstaverne ved siden af ​​det adskille? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Peng: Åh, jeg ønskede at udskrive dem alle på hver linje. 968 00:43:54,140 --> 00:43:54,890 Det betyder ikke noget. 969 00:43:54,890 --> 00:43:55,890 Ja, det er en formatering. 970 00:43:55,890 --> 00:43:57,181 Det er et godt spørgsmål, selv om. 971 00:43:57,181 --> 00:43:59,360 Ja, hvis jeg ønskede at udskrive det hele på blot én linje, 972 00:43:59,360 --> 00:44:02,731 Jeg ville ikke have den streg i. 973 00:44:02,731 --> 00:44:03,230 OK. 974 00:44:03,230 --> 00:44:06,880 Alle godt? 975 00:44:06,880 --> 00:44:07,500 OK. 976 00:44:07,500 --> 00:44:08,000 Cool. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Så jeg tror, ​​jeg har talt nok. 979 00:44:14,750 --> 00:44:20,040 Du fyre tur til at løbe gennem kode og fortælle mig, hvad der er galt her. 980 00:44:20,040 --> 00:44:21,560 Hvor er fejlen? 981 00:44:21,560 --> 00:44:26,920 Så som du kan se, har jeg erklæret en ny vifte af strengen typen navngivne klasse. 982 00:44:26,920 --> 00:44:30,220 Og jeg har indtastet Sam, Jess og Kim ind i det. 983 00:44:30,220 --> 00:44:33,400 Og jeg forsøger at udskrive alle elementer i array. 984 00:44:33,400 --> 00:44:36,796 Kan nogen fortælle mig, hvorfor denne kommer til at give mig problemer? 985 00:44:36,796 --> 00:44:39,320 Jeg vil give jer 10 sekunder til at tænke over dette. 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 >> PUBLIKUM: Er venstre center lig med 3 eller [uhørligt]? 990 00:45:01,972 --> 00:45:02,680 ANDI Peng: Right. 991 00:45:02,680 --> 00:45:06,784 Så hvor mange gange er det faktisk kommer til at løbe gennem denne løkke? 992 00:45:06,784 --> 00:45:07,620 >> PUBLIKUM: Fire. 993 00:45:07,620 --> 00:45:08,070 >> ANDI Peng: Præcis. 994 00:45:08,070 --> 00:45:09,445 Det kommer til at gennem fire gange. 995 00:45:09,445 --> 00:45:12,250 Det kommer til at køre igennem ved 0, 1, 2 og 3, 996 00:45:12,250 --> 00:45:15,200 fordi deres element er jeg er mindre end eller lig med 3. 997 00:45:15,200 --> 00:45:16,960 Det kommer ikke til at stoppe, når det er 2. 998 00:45:16,960 --> 00:45:18,800 Det kommer til at holde går, indtil den rammer 3. 999 00:45:18,800 --> 00:45:21,720 Og som vi ved, er der kun tre elementer i vores faktiske matrix. 1000 00:45:21,720 --> 00:45:27,260 >> Hvis vi forsøger at få adgang til fjerde element eller indekset for 3, 1001 00:45:27,260 --> 00:45:30,357 du kommer til at ramme et eller andet sted i hukommelsen, der ikke eksisterer. 1002 00:45:30,357 --> 00:45:31,690 Det hedder null terminator. 1003 00:45:31,690 --> 00:45:32,856 Intet kommer til at være der. 1004 00:45:32,856 --> 00:45:35,324 Din computer vil ikke at være meget tilfreds med dig. 1005 00:45:35,324 --> 00:45:36,170 Ja. 1006 00:45:36,170 --> 00:45:38,430 Er der nogen der har spørgsmål om, hvorfor det skete? 1007 00:45:38,430 --> 00:45:39,679 Det er et fælles område for at undgå. 1008 00:45:39,679 --> 00:45:40,712 Ja. 1009 00:45:40,712 --> 00:45:45,777 >> PUBLIKUM: Er ikke den første glide også have en streng af 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI Peng: Nej. 1011 00:45:46,360 --> 00:45:49,610 Så det væsentlige, når du laver et array, 1012 00:45:49,610 --> 00:45:51,540 at beslaget til højre der, at alle number-- 1013 00:45:51,540 --> 00:45:53,480 det fortæller dig er, hvordan mange elementer jeg har. 1014 00:45:53,480 --> 00:45:55,840 Det er faktisk ikke fortæller mig indekserne for noget. 1015 00:45:55,840 --> 00:45:58,760 Så i dette tilfælde, jeg ved, jeg vil have at skrive med tre, 1016 00:45:58,760 --> 00:46:02,690 med tre fysiske steder til holde, hvad jeg ønsker at holde. 1017 00:46:02,690 --> 00:46:04,510 Så det er grunden til, at nummer tre er der. 1018 00:46:04,510 --> 00:46:06,560 , Hvis jeg ønskede dog faktisk adgang til det, 1019 00:46:06,560 --> 00:46:11,220 hvis jeg ønskede at sige, printf klasse beslag nummer, så 1020 00:46:11,220 --> 00:46:14,560 du vil faktisk lægge den fysiske indeks der. 1021 00:46:14,560 --> 00:46:16,330 Ja, godt spørgsmål. 1022 00:46:16,330 --> 00:46:20,065 >> PUBLIKUM: Så er den fysiske indeks formodes at være [uhørligt]? 1023 00:46:20,065 --> 00:46:20,940 ANDI Peng: Jeg er ked af det. 1024 00:46:20,940 --> 00:46:21,500 Kan du taler lidt op? 1025 00:46:21,500 --> 00:46:24,208 >> PUBLIKUM: Så er den fysiske indeks [Uhørligt] hver af kasserne? 1026 00:46:24,208 --> 00:46:25,260 [Uhørligt]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI Peng: Ja. 1028 00:46:26,040 --> 00:46:28,970 Så jeg har tænkt mig at gå tilbage til lige her. 1029 00:46:28,970 --> 00:46:31,120 Tænk på lige her. 1030 00:46:31,120 --> 00:46:32,820 Vi har en bred vifte af størrelse 3. 1031 00:46:32,820 --> 00:46:35,540 Der er tre steder, ligesom, fysiske pladsholdere i her. 1032 00:46:35,540 --> 00:46:37,620 Men de er navngivet 0, 1, og 2. 1033 00:46:37,620 --> 00:46:40,700 Så hvis jeg ønskede at få adgang til dem, den måde, at jeg få adgang til dem 1034 00:46:40,700 --> 00:46:43,480 er printf af hvad jeg ville i her. 1035 00:46:43,480 --> 00:46:45,485 Du ville have til at udskrive ud af navnet på den, 1036 00:46:45,485 --> 00:46:47,610 fordi så computeren ved, åh, jeg nødt til at se 1037 00:46:47,610 --> 00:46:51,391 i dette array for 0. indeks. 1038 00:46:51,391 --> 00:46:51,890 Ja. 1039 00:46:51,890 --> 00:46:53,306 Men størrelsen af ​​det ændres ikke. 1040 00:46:53,306 --> 00:46:55,492 Størrelsen er 3, uanset hvordan du mærke dem. 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 Alle godt? 1044 00:47:01,387 --> 00:47:02,970 PUBLIKUM: Så hver gang jeg [uhørligt]? 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 Så i dette tilfælde, har vi ikke rigtig komme ind i det lige nu i kurset. 1048 00:47:13,270 --> 00:47:16,760 Men ved, at en string-- ligesom jeg sagde før, en streng er hovedsagelig 1049 00:47:16,760 --> 00:47:18,440 et array af tegn. 1050 00:47:18,440 --> 00:47:21,430 Så hvis jeg opretter et array af strenge, jeg slags 1051 00:47:21,430 --> 00:47:24,430 har en bred vifte af matrix tegn, ikke? 1052 00:47:24,430 --> 00:47:27,720 >> Så i dette tilfælde, fordi jeg har en vifte af strenge, 1053 00:47:27,720 --> 00:47:31,340 hvis du var at indtaste en rigtig lang ord, der stadig fylder kun ét rum, 1054 00:47:31,340 --> 00:47:33,230 fordi det er den ene streng. 1055 00:47:33,230 --> 00:47:37,492 Men hvis du skulle tænke på karakterer af den opstilling, 1056 00:47:37,492 --> 00:47:40,450 så der er at tage op en masse mere tegn end nogen af ​​de andre ord 1057 00:47:40,450 --> 00:47:41,372 er. 1058 00:47:41,372 --> 00:47:42,830 Ikke virkelig vigtigt for lige nu. 1059 00:47:42,830 --> 00:47:44,921 Men det er bare generelt hvordan det fungerer. 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 Så det er noget, jeg vil lade dig gøre en masse i løbet af semestret. 1063 00:47:55,840 --> 00:47:57,500 Jeg har brug for at hvile min stemme. 1064 00:47:57,500 --> 00:47:59,530 Du fyre nødt til at stimulere jer selv. 1065 00:47:59,530 --> 00:48:02,300 En masse af jer sikkert nødt til at sove lige nu. 1066 00:48:02,300 --> 00:48:05,960 Jeg indtaster tilfældige problemer hvor vi som en klasse, eller du 1067 00:48:05,960 --> 00:48:09,480 med en partner ved siden af ​​du vil at tilbringe et par minutter diskuterer 1068 00:48:09,480 --> 00:48:14,980 om, hvordan vi ville gå om at løse eller oprette et program som dette. 1069 00:48:14,980 --> 00:48:17,100 >> Så lige nu, vi ønsker at skabe en program-- 1070 00:48:17,100 --> 00:48:19,560 vi kommer til at kalde det upper.c-- at konvertitter 1071 00:48:19,560 --> 00:48:24,787 et lille ord til en overklasse string-- store bogstaver, undskyld. 1072 00:48:24,787 --> 00:48:26,370 Ord i strygere, undskyld, er synonyme. 1073 00:48:26,370 --> 00:48:28,370 Jeg har tænkt mig at ændre dem til at betyde det samme. 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 Tag et par minutter. 1077 00:48:34,540 --> 00:48:37,130 Det behøver ikke at være skrevet på alle sprog. 1078 00:48:37,130 --> 00:48:39,890 Bare i pseudokode kode eller logisk, hvordan vi ville endda 1079 00:48:39,890 --> 00:48:42,083 gå om at gøre sådan et problem. 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 SAMTALE] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Jeg bemærkede også, at du fyre can-- Jeg slags ser allerede programmet. 1085 00:49:22,130 --> 00:49:24,600 Jeg gætter min mangel på præsentationstilstand er et problem. 1086 00:49:24,600 --> 00:49:27,410 Men det er OK. 1087 00:49:27,410 --> 00:49:30,410 >> [SIDE SAMTALE] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Ja, tak, gutter. 1090 00:50:04,380 --> 00:50:05,400 Kommer få slik. 1091 00:50:05,400 --> 00:50:06,372 Kommer få slik. 1092 00:50:06,372 --> 00:50:07,698 >> Publikum: Ja! 1093 00:50:07,698 --> 00:50:09,958 >> [SIDE SAMTALE] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI Peng: Også, yeah, Jeg vil begynde at smide slik 1096 00:50:18,100 --> 00:50:20,280 på folk, der ikke besvare spørgsmål. 1097 00:50:20,280 --> 00:50:22,260 Så du bør alle besvare spørgsmål. 1098 00:50:22,260 --> 00:50:24,895 Eller jeg formoder folk, der besvarer spørgsmål. 1099 00:50:24,895 --> 00:50:26,070 Ja, anden vej rundt. 1100 00:50:26,070 --> 00:50:28,570 >> [SIDE SAMTALE] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 PUBLIKUM: [uhørligt] 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 SAMTALE] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Okay, gutter. 1109 00:51:41,590 --> 00:51:44,731 Tag lignende, 10 sekunder mere. 1110 00:51:44,731 --> 00:51:48,210 >> [SIDE SAMTALE] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> OK, gutter. 1113 00:52:11,750 --> 00:52:14,920 Så før vi begynder at forsøge at rent fysisk skrive kode, 1114 00:52:14,920 --> 00:52:20,650 en god vane at udvikle er, at vi ønsker at første form for grund 1115 00:52:20,650 --> 00:52:22,737 ud logisk, hvordan vi ville gøre det. 1116 00:52:22,737 --> 00:52:24,570 Du ønsker at være sikker på, før du fysisk 1117 00:52:24,570 --> 00:52:27,210 begynde at forsøge at kode i Mario, at du laver 1118 00:52:27,210 --> 00:52:28,870 sikker på, at du har din pseudokode. 1119 00:52:28,870 --> 00:52:31,235 Det tager dig gennem hvad du har brug for at skabe så 1120 00:52:31,235 --> 00:52:33,360 at når du fysisk skriv dit program senere, 1121 00:52:33,360 --> 00:52:36,640 du er bedre i stand til at fange fejl i din kode, og sådan noget. 1122 00:52:36,640 --> 00:52:40,460 >> Så vi kommer til at bare starte by-- på engelsk, i pseudokode, 1123 00:52:40,460 --> 00:52:43,320 Er der nogen ønsker at give mig en generisk forklaring 1124 00:52:43,320 --> 00:52:46,250 af, hvordan vi ville gå om at gøre dette? 1125 00:52:46,250 --> 00:52:48,102 Ja. 1126 00:52:48,102 --> 00:52:49,664 >> PUBLIKUM: [uhørligt]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Peng: Sure, ingen bekymringer. 1128 00:52:50,830 --> 00:52:57,233 PUBLIKUM: Kan du bede den om at eller bede nogen til at få snor 1-- yeah, snor, 1129 00:52:57,233 --> 00:52:58,160 og så-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Peng: Ja, så dette er en god start. 1131 00:52:59,826 --> 00:53:01,972 Jeg vil begynde at skrive, undskyld, som du taler. 1132 00:53:01,972 --> 00:53:02,471 So-- 1133 00:53:02,471 --> 00:53:05,698 >> PUBLIKUM: --the små bogstaver tal er højere, ikke? 1134 00:53:05,698 --> 00:53:08,519 Eller de små bogstaver har høje tal? 1135 00:53:08,519 --> 00:53:09,310 ANDI Peng: Præcis. 1136 00:53:09,310 --> 00:53:16,156 PUBLIKUM: Så vi trækker 32 uanset [uhørligt]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Peng: Great. 1139 00:53:29,870 --> 00:53:35,020 Så vi slags har en generel følelse af, hvordan man arbejder om dette problem. 1140 00:53:35,020 --> 00:53:40,060 Vel vidende, at vi har sådan lært den fysiske måde, at strenge 1141 00:53:40,060 --> 00:53:43,320 gemmes i hukommelsen, hvad gør du allerede 1142 00:53:43,320 --> 00:53:45,920 vide, at du kommer til at sandsynligvis nødt til at skrive i din kode 1143 00:53:45,920 --> 00:53:48,288 For at bevæge sig gennem strengen? 1144 00:53:48,288 --> 00:53:49,259 >> PUBLIKUM: Til løkke. 1145 00:53:49,259 --> 00:53:50,550 ANDI Peng: en for-løkke, nøjagtigt. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Great. 1148 00:53:57,220 --> 00:54:00,539 Så vi slags har en generisk pseudokode nedskrevet 1149 00:54:00,539 --> 00:54:02,330 den slags giver du bemærker, hvordan du 1150 00:54:02,330 --> 00:54:03,900 ville flytte om at løse problemet. 1151 00:54:03,900 --> 00:54:06,150 Nu hvor du har det, du kan referere til senere 1152 00:54:06,150 --> 00:54:08,233 når du forsøger at rent faktisk at skrive din kode. 1153 00:54:08,233 --> 00:54:10,240 Så kan vi faktisk gå her. 1154 00:54:10,240 --> 00:54:25,130 Og jeg har en funktion kaldet upper.c-- der det is-- for bare en tom skabelon 1155 00:54:25,130 --> 00:54:28,510 lige nu, at du fyre kommer til at hjælpe mig finde ud af, hvordan man skriver 1156 00:54:28,510 --> 00:54:30,430 denne linje af code-- ikke linje kode. 1157 00:54:30,430 --> 00:54:32,890 Det vil være flere linjer kode. 1158 00:54:32,890 --> 00:54:35,710 >> Når du starter nogen form af blank pset, hvad er 1159 00:54:35,710 --> 00:54:37,418 den første ting, jeg har brug for at huske at gøre? 1160 00:54:37,418 --> 00:54:39,290 >> PUBLIKUM: [uhørligt]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI Peng: Great Yep. 1162 00:54:41,000 --> 00:54:41,500 Medtag. 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 Ofte er dette en af den mest nemme fejl folk 1166 00:54:49,640 --> 00:54:51,598 vil gøre, når de er skrivning, er, at de vil 1167 00:54:51,598 --> 00:54:54,180 glemmer at omfatte en vigtige bibliotek, de har brug for. 1168 00:54:54,180 --> 00:54:57,689 Så hvis det er kontortid, og du er ligesom, Jeg ved ikke, hvorfor min kode ikke virker. 1169 00:54:57,689 --> 00:54:59,230 Kan du fortælle mig, hvorfor det ikke virker? 1170 00:54:59,230 --> 00:55:00,730 Vi vil sige har du # include? 1171 00:55:00,730 --> 00:55:02,520 Du bør # include det. 1172 00:55:02,520 --> 00:55:03,270 OK. 1173 00:55:03,270 --> 00:55:07,230 >> Så vi har fået den standard I / O her. 1174 00:55:07,230 --> 00:55:10,740 Er det den eneste bibliotek vi vil få brug for her? 1175 00:55:10,740 --> 00:55:12,681 Hvad skal vi gøre? 1176 00:55:12,681 --> 00:55:13,180 Undskyld. 1177 00:55:13,180 --> 00:55:14,562 Nogen bare skrige det ud? 1178 00:55:14,562 --> 00:55:15,666 >> PUBLIKUM: [uhørligt]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Peng: Der du går. 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 Og hvordan gør jeg gå om at starte nogen form funktion, enhver slags hovedfunktion 1183 00:55:26,070 --> 00:55:28,760 inden for vores 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 Hvad skal jeg sætte ind her? 1188 00:55:35,970 --> 00:55:37,640 Hvad er det første, du ønsker at gøre? 1189 00:55:37,640 --> 00:55:39,910 Hvis vi ønsker at få en snor fra brugeren, 1190 00:55:39,910 --> 00:55:43,870 hvad skal vi have at gøre på denne første linje? 1191 00:55:43,870 --> 00:55:46,120 Beklager, du fyre bare føler fri til at sige op og højt. 1192 00:55:46,120 --> 00:55:47,123 Bare råbe uanset. 1193 00:55:47,123 --> 00:55:48,772 >> PUBLIKUM: Spørg bruger? 1194 00:55:48,772 --> 00:55:49,980 ANDI Peng: Hvordan gør vi det? 1195 00:55:49,980 --> 00:55:51,873 Ask-- er jeg kommer til at skrive "spørge brugeren"? 1196 00:55:51,873 --> 00:55:52,600 >> PUBLIKUM: 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 Hvad ønsker jeg at printf? 1200 00:55:57,372 --> 00:55:58,776 >> PUBLIKUM: Indtast noget. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Peng: Ligesom det? 1203 00:56:03,840 --> 00:56:05,430 Gutter, foregive som om jeg er en computer. 1204 00:56:05,430 --> 00:56:08,475 Fysisk fortælle mig hvert skridt at jeg har brug for at skrive i her? 1205 00:56:08,475 --> 00:56:09,600 Gør jeg noget forkert? 1206 00:56:09,600 --> 00:56:10,743 Skal jeg har skrevet noget? 1207 00:56:10,743 --> 00:56:11,690 >> PUBLIKUM: Du har brug for citater. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Peng: Jeg har brug for citater? 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 >> PUBLIKUM: Og så ny linje. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Semikolon. 1215 00:56:22,465 --> 00:56:23,340 ANDI Peng: semikolon? 1216 00:56:23,340 --> 00:56:24,060 OK. 1217 00:56:24,060 --> 00:56:24,560 Godt. 1218 00:56:24,560 --> 00:56:27,060 >> PUBLIKUM: Og måske specificere at du vil have det med små bogstaver? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Peng: Great. 1221 00:56:31,415 --> 00:56:33,540 Du fyre griner ad mig glemme at sætte et semikolon. 1222 00:56:33,540 --> 00:56:36,350 Jeg garanterer dig et eller andet sted i løbet af denne klasse, 1223 00:56:36,350 --> 00:56:38,260 vil du glemmer at sætte et semikolon, og det 1224 00:56:38,260 --> 00:56:41,116 vil tage dig tre timer at regne ud af, hvorfor din kode ikke virker. 1225 00:56:41,116 --> 00:56:42,240 Det er sket for os alle. 1226 00:56:42,240 --> 00:56:43,950 Det vil sandsynligvis ske for dig. 1227 00:56:43,950 --> 00:56:46,352 Få i en god vane med at bruge semikoloner. 1228 00:56:46,352 --> 00:56:46,852 OK. 1229 00:56:46,852 --> 00:56:49,010 >> PUBLIKUM: Vil du have til at gøre det baglæns skråstreg? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI Peng: Selvfølgelig. 1231 00:56:50,398 --> 00:56:51,856 Har du lyst til at gøre det baglæns skråstreg? 1232 00:56:51,856 --> 00:56:53,020 >> Publikum: Ja. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Peng: Great. 1234 00:56:54,330 --> 00:56:54,830 OK. 1235 00:56:54,830 --> 00:56:57,872 Hvad gør jeg nu? 1236 00:56:57,872 --> 00:56:58,964 >> PUBLIKUM: Få streng. 1237 00:56:58,964 --> 00:56:59,880 ANDI Peng: Få streng. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Så hvad gør jeg skriver? 1240 00:57:03,830 --> 00:57:04,233 Nogen? 1241 00:57:04,233 --> 00:57:05,040 >> PUBLIKUM: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI Peng: String s. 1243 00:57:05,873 --> 00:57:07,251 PUBLIKUM: getString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Peng: Nogen, kan du fortælle mig, hvor 1245 00:57:09,000 --> 00:57:12,000 denne funktion getString kommer fra? 1246 00:57:12,000 --> 00:57:13,660 >> PUBLIKUM: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Peng: string.h? 1248 00:57:15,256 --> 00:57:16,715 Du tror det er fra string.h? 1249 00:57:16,715 --> 00:57:17,830 >> PUBLIKUM: [uhørligt]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Peng: Der du går. 1251 00:57:18,830 --> 00:57:21,280 Det er fra CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Hvis du altid er forvirret om, hvor en bibliotek fil eller en header fil, 1253 00:57:24,530 --> 00:57:28,450 google bogstaveligt string.h, og jeg vil fortælle dig 1254 00:57:28,450 --> 00:57:30,450 hvad er alle de funktioner der er i string.h. 1255 00:57:30,450 --> 00:57:31,340 OK. 1256 00:57:31,340 --> 00:57:35,210 >> Så nu, at jeg har skabt en streng og jeg har bede brugeren om det, 1257 00:57:35,210 --> 00:57:38,770 Jeg har gemt det i en variabel navngivne s, hvad skal jeg gøre nu? 1258 00:57:38,770 --> 00:57:40,652 >> PUBLIKUM: Kontroller, om det er med små bogstaver. 1259 00:57:40,652 --> 00:57:41,360 ANDI Peng: Beklager? 1260 00:57:41,360 --> 00:57:42,545 PUBLIKUM: Kontroller, om det er med små bogstaver. 1261 00:57:42,545 --> 00:57:44,045 ANDI Peng: Okay, lad os gøre det. 1262 00:57:44,045 --> 00:57:45,857 Hvordan gør jeg det? 1263 00:57:45,857 --> 00:57:47,940 Faktisk, med henblik af klassen lige nu, 1264 00:57:47,940 --> 00:57:50,330 vi bare gå til antage, at alt 1265 00:57:50,330 --> 00:57:52,620 at vi input er allerede i små bogstaver. 1266 00:57:52,620 --> 00:57:55,430 Hvis du ønskede at kontrollere, ville du blot tilføje en betinget erklæring 1267 00:57:55,430 --> 00:57:59,640 der checket, der løb igennem hver enkelt array element 1268 00:57:59,640 --> 00:58:02,540 og kontrolleres, hvis det er mellem visse værdier. 1269 00:58:02,540 --> 00:58:05,627 Jeg glemmer, hvad nummeret af værdier af små bogstaver er. 1270 00:58:05,627 --> 00:58:07,210 Du kan slå det op på ASCII tabellen. 1271 00:58:07,210 --> 00:58:08,800 Men ja, det er en rigtig god pointe. 1272 00:58:08,800 --> 00:58:11,758 Men lige nu, er vi bare at antage, at alle strengene vi input 1273 00:58:11,758 --> 00:58:13,130 er med små bogstaver. 1274 00:58:13,130 --> 00:58:13,870 OK. 1275 00:58:13,870 --> 00:58:18,069 >> Så hvordan ville jeg gå om dette problem næste? 1276 00:58:18,069 --> 00:58:18,860 PUBLIKUM: Til løkke. 1277 00:58:18,860 --> 00:58:19,340 ANDI Peng: For loop? 1278 00:58:19,340 --> 00:58:19,839 OK. 1279 00:58:19,839 --> 00:58:20,847 Fortæl mig, hvad de skal skrive. 1280 00:58:20,847 --> 00:58:25,230 >> PUBLIKUM: Til int i lig 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Peng: OK. 1282 00:58:27,230 --> 00:58:36,350 >> PUBLIKUM: Åh, faktisk, så er du gøre et komma, og gøre n lig strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI Peng: Så vigtig ting at jeg synes hun er bemærket her 1284 00:58:38,940 --> 00:58:42,936 er, at vi ikke behøvede at sige int n anden gang vi gjorde dette. 1285 00:58:42,936 --> 00:58:45,060 Bare vide, at i et for løkke, når du erklære, 1286 00:58:45,060 --> 00:58:47,934 du faktisk ikke har brug for int af anden gang du gør en variabel. 1287 00:58:47,934 --> 00:58:51,202 Du kan sige n strlen. 1288 00:58:51,202 --> 00:58:52,620 >> PUBLIKUM: Af 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 >> PUBLIKUM: Så et semikolon. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI Peng: Selvfølgelig. 1293 00:59:00,130 --> 00:59:04,050 >> PUBLIKUM: Og så [uhørligt] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Så jeg ++. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Peng: Great. 1297 00:59:11,780 --> 00:59:12,280 Okay. 1298 00:59:12,280 --> 00:59:14,690 Hvad ønsker vi inde af denne for-løkke nu? 1299 00:59:14,690 --> 00:59:17,820 Husk, at hvis vi kommer til at køre igennem en streng og køre gennem en række, 1300 00:59:17,820 --> 00:59:19,287 Vi ønsker at kontrollere tingene i det. 1301 00:59:19,287 --> 00:59:20,370 Hvad skal vi bruge? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Dette er form for den vanskelige del nu. 1304 00:59:26,900 --> 00:59:27,960 Nogen der har et gæt? 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 Så først, hvordan får vi endda få adgang? 1308 00:59:37,830 --> 00:59:41,610 Hvordan kan vi selv første check eller adgang til et element i arrayet? 1309 00:59:41,610 --> 00:59:42,920 Hvordan gør vi det? 1310 00:59:42,920 --> 00:59:47,120 Hvad er notation, vi bruger til at gøre det? 1311 00:59:47,120 --> 00:59:50,920 Hvad er navnet på dette array kaldet? 1312 00:59:50,920 --> 00:59:52,400 Det hedder s, right? 1313 00:59:52,400 --> 00:59:54,850 >> Husk, enhver streng er altid et array. 1314 00:59:54,850 --> 00:59:58,210 Så s beslag jeg, ikke? 1315 00:59:58,210 --> 01:00:01,360 Fordi det er den aktuelle værdi eller indeksværdi vi tjekker. 1316 01:00:01,360 --> 01:00:05,156 Og vi vil sætte, at lige at-- vi ønsker et lille værdi, ikke? 1317 01:00:05,156 --> 01:00:07,530 Vi ønsker at vende det lower-- beklager, vi ønsker et stort. 1318 01:00:07,530 --> 01:00:10,014 Vi ønsker at vende små bogstaver værdi i et stort. 1319 01:00:10,014 --> 01:00:11,805 Og så like-- jeg er ked af, hvad er dit navn? 1320 01:00:11,805 --> 01:00:12,580 >> PUBLIKUM: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI Peng: Beklager? 1322 01:00:12,940 --> 01:00:13,280 >> PUBLIKUM: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Peng: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Ligesom Heidi sagde i første omgang, er vi sandsynligvis 1325 01:00:15,850 --> 01:00:20,330 vil få brug for til-- vi er sandsynligvis nødt til at trække 1326 01:00:20,330 --> 01:00:22,630 32 uanset charc der er, ikke? 1327 01:00:22,630 --> 01:00:24,680 Fordi på en ASCII bord, forskellen 1328 01:00:24,680 --> 01:00:27,790 mellem et lille bogstav og et stort bogstav er 32. 1329 01:00:27,790 --> 01:00:31,290 Så når vi gør det, er vi sandsynligvis vil ønsker at trække 32, ikke? 1330 01:00:31,290 --> 01:00:33,910 >> Så vi kommer til at gøre s i. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Har alle forstå, hvorfor jeg gjorde det? 1333 01:00:41,200 --> 01:00:45,760 Fordi lige nu, i vores array, vi kontrollere 0. indeks, ikke? 1334 01:00:45,760 --> 01:00:49,190 Og i 0. indeks streng, det er det første tegn. 1335 01:00:49,190 --> 01:00:51,820 Og denne karakter vil vi til at påtage sig det er små bogstaver. 1336 01:00:51,820 --> 01:00:55,980 Hvis vi ønsker at gøre det store bogstaver, vi nødt til at trække 32 fra dens værdi, 1337 01:00:55,980 --> 01:00:58,620 fordi der i vores ASCII tabel, det er, hvordan vi får det 1338 01:00:58,620 --> 01:01:01,600 til næste tilsvarende værdi, der gør det store bogstaver. 1339 01:01:01,600 --> 01:01:03,714 Har alle forstår det? 1340 01:01:03,714 --> 01:01:04,213 Ja. 1341 01:01:04,213 --> 01:01:06,530 >> PUBLIKUM: Kunne du også gør små bogstaver et minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Peng: Ja, så det er faktisk rigtig godt. 1343 01:01:08,080 --> 01:01:10,455 Jeg har tænkt mig at komme tilbage til det spørgsmål efter vi gør dette. 1344 01:01:10,455 --> 01:01:11,060 Ja. 1345 01:01:11,060 --> 01:01:13,940 Og derefter, hvis jeg ønsker at se, hvad der foregår, 1346 01:01:13,940 --> 01:01:16,180 Jeg sandsynligvis vil ønsker at udskrive, ikke? 1347 01:01:16,180 --> 01:01:19,930 Nogen fortælle mig, hvad Jeg ønsker at udskrive her. 1348 01:01:19,930 --> 01:01:29,160 >> PUBLIKUM: printf procent c omvendt skråstreg [uhørligt]. 1349 01:01:29,160 --> 01:01:33,570 Det er værdien af ​​[uhørligt] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI Peng: s jeg, undskyld? 1351 01:01:34,614 --> 01:01:35,530 PUBLIKUM: [uhørligt]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Peng: Jeg ved det ikke. 1354 01:01:39,550 --> 01:01:40,600 Hvad synes du? 1355 01:01:40,600 --> 01:01:44,016 >> PUBLIKUM: Nå, jeg wouldn't-- Jeg tror, ​​jeg ville ikke bring-- 1356 01:01:44,016 --> 01:01:46,944 Jeg ville tage det ud indeni, fordi [uhørligt]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Peng: Åh, du ville have gjort det? 1359 01:01:51,392 --> 01:01:53,867 Publikum: Ja. 1360 01:01:53,867 --> 01:01:56,700 ANDI Peng: Lad os overlade det den måde det er, og jeg vil forklare, hvorfor senere. 1361 01:01:56,700 --> 01:01:58,533 Husk, selv når du have et sted indehaver, 1362 01:01:58,533 --> 01:02:00,701 du ønsker at sætte parentes omkring det. 1363 01:02:00,701 --> 01:02:01,200 Okay. 1364 01:02:01,200 --> 01:02:04,810 Så dette bør være en fast funktion her. 1365 01:02:04,810 --> 01:02:06,370 Lad os køre den og se om det kompilerer. 1366 01:02:06,370 --> 01:02:08,750 Gøre øverste. 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 Det ser ikke alt for godt. 1370 01:02:13,340 --> 01:02:14,507 Hvorfor sker det? 1371 01:02:14,507 --> 01:02:17,340 Som med enhver fejl, du ønsker at gå tilbage og starte med den første, 1372 01:02:17,340 --> 01:02:20,630 fordi typisk én fejl årsager masser af andre fejl efter den. 1373 01:02:20,630 --> 01:02:26,700 Her ser vi upper.c: 18: 25, som fortæller mig i dette program ved navn upper.c, 1374 01:02:26,700 --> 01:02:33,800 på linje 18, fejl implicit erklære bibliotek af funktioner strlen med type 1375 01:02:33,800 --> 01:02:36,330 unassigned-- bla, jeg ikke kender hvad der foregår efter det. 1376 01:02:36,330 --> 01:02:39,990 >> Alt det fortæller mig lige nu er at noget der foregår i strlen. 1377 01:02:39,990 --> 01:02:43,520 Og computeren er forvirret, fordi Det er ligesom, jeg ved ikke, hvad strlen er? 1378 01:02:43,520 --> 01:02:45,520 Hvad betyder det sandsynligvis fortælle dig, du mangler? 1379 01:02:45,520 --> 01:02:46,490 >> PUBLIKUM: Du mangler [uhørligt]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Peng: Du har ret. 1381 01:02:47,630 --> 01:02:49,510 Præcis. 1382 01:02:49,510 --> 01:02:52,140 Så dette er, hvor det er vigtigt at sørge 1383 01:02:52,140 --> 01:02:56,970 at hver funktion du bruger i din kode har den korrekte header 1384 01:02:56,970 --> 01:02:59,660 fil til biblioteket, ellers du kommer til at få masser af fejl 1385 01:02:59,660 --> 01:03:01,150 og din kode vil ikke at vide, hvad der foregår. 1386 01:03:01,150 --> 01:03:03,050 Så vi kommer til at omfatte string.h her. 1387 01:03:03,050 --> 01:03:06,270 >> Nu når vi forsøger at kompilere øverste. 1388 01:03:06,270 --> 01:03:08,410 Kompilere korrekt. 1389 01:03:08,410 --> 01:03:09,960 Lad os køre dette program. 1390 01:03:09,960 --> 01:03:12,000 Så skriv noget med små bogstaver. 1391 01:03:12,000 --> 01:03:14,920 Hvad tror du fyre vil skrive? 1392 01:03:14,920 --> 01:03:16,546 Råbe noget. 1393 01:03:16,546 --> 01:03:17,920 Okay, Charly bare gik i. 1394 01:03:17,920 --> 01:03:18,990 Vi vil skrive Charly navn. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly med små bogstaver. 1397 01:03:22,840 --> 01:03:27,742 Og forhåbentlig, forhåbentlig, det er kommer til at råbe og spytte ud 1398 01:03:27,742 --> 01:03:28,575 Charly store bogstaver. 1399 01:03:28,575 --> 01:03:30,830 Yay! 1400 01:03:30,830 --> 01:03:33,430 gør alle forstår, hvordan Jeg gik om at løse det? 1401 01:03:33,430 --> 01:03:36,190 Den måde, at jeg kan manipulere bruge heltal 1402 01:03:36,190 --> 01:03:39,410 at løse noget, Jeg ønsker at gøre i strygere, 1403 01:03:39,410 --> 01:03:44,390 fordi tegn og heltal kan refereres på samme måde, fordi 1404 01:03:44,390 --> 01:03:45,540 af ASCII-kortlægning. 1405 01:03:45,540 --> 01:03:52,890 >> Så for at gå tilbage til din pointe, hvis jeg ønskede at sætte her i stedet for 32 1406 01:03:52,890 --> 01:03:58,959 store bogstaver Et minus små bogstaver et ligesom det, ville der fungerer lige så godt, 1407 01:03:58,959 --> 01:04:01,750 fordi det er simpelthen bare den Forskellen mellem disse to værdier. 1408 01:04:01,750 --> 01:04:09,570 Hvis jeg ønsker at gøre dette igen-- charly. 1409 01:04:09,570 --> 01:04:10,320 Åh nej. 1410 01:04:10,320 --> 01:04:11,820 Jeg tror, ​​vi gik den forkerte vej, ikke? 1411 01:04:11,820 --> 01:04:13,260 >> PUBLIKUM: [uhørlig] små bogstaver a. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Peng: Der du går. 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 Og ud spytter charly. 1416 01:04:24,920 --> 01:04:28,020 Så vær forsigtig, når du fratrække værdier 1417 01:04:28,020 --> 01:04:30,400 at huske, hvilken en er større end den anden. 1418 01:04:30,400 --> 01:04:35,220 For eksempel heroppe glemte jeg at små bogstaver a er faktisk 1419 01:04:35,220 --> 01:04:38,540 større end store bogstaver A. Så når jeg forsøgte at trække dem på en anden måde 1420 01:04:38,540 --> 01:04:40,600 omkring, jeg fik negativ 32. 1421 01:04:40,600 --> 01:04:42,800 Og min computer var ligesom, Jeg ved ikke, hvad det er. 1422 01:04:42,800 --> 01:04:45,810 Det er sandsynlighed bare nogle tilfældige værdi, der ikke er meget god. 1423 01:04:45,810 --> 01:04:48,760 Og så sørg for, at du er trække i den rigtige længde 1424 01:04:48,760 --> 01:04:52,831 at finde det tegn, du ønsker. 1425 01:04:52,831 --> 01:04:53,330 OK. 1426 01:04:53,330 --> 01:04:58,550 Er der nogen forvirret om, hvordan vi gik om at skrive denne funktion? 1427 01:04:58,550 --> 01:04:59,180 OK. 1428 01:04:59,180 --> 01:05:04,830 Så faktisk, en funktion der allerede findes i biblioteket kaldes ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Bibliotekets hedder ctype.h. 1430 01:05:06,417 --> 01:05:08,500 Denne funktion er faktisk allerede skrevet til dig. 1431 01:05:08,500 --> 01:05:10,820 Det kaldes til øverste. 1432 01:05:10,820 --> 01:05:13,027 >> Og så med henblik på denne pset, du vil 1433 01:05:13,027 --> 01:05:15,860 at opdage, at du virkelig ønsker at bruge en masse af de funktioner, der er indeholdt 1434 01:05:15,860 --> 01:05:17,390 inden for CIndtast biblioteket. 1435 01:05:17,390 --> 01:05:21,040 Til øverste, for at sænke, er øverste, er lower-- de er alle funktioner 1436 01:05:21,040 --> 01:05:24,914 at du vil være i stand til at bruge meget, meget hurtigt i din egen kode, 1437 01:05:24,914 --> 01:05:26,080 gør præcis, hvad det gør. 1438 01:05:26,080 --> 01:05:28,941 Vi skrev ud af at konvertere en streng til store bogstaver. 1439 01:05:28,941 --> 01:05:31,440 Men det er faktisk koden at nogen andre har skrevet 1440 01:05:31,440 --> 01:05:33,800 og at du kan få adgang til via en anden funktion. 1441 01:05:33,800 --> 01:05:34,300 Ja? 1442 01:05:34,300 --> 01:05:39,570 >> PUBLIKUM: Så du bare kopiere en er derinde og gøre det for hver enkelt bogstav? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Peng: Ja, fordi jeg ikke bekymre sig om værdierne af a. 1444 01:05:42,070 --> 01:05:44,540 Jeg bare ligeglad, at forskellen mellem dem er 32, ikke? 1445 01:05:44,540 --> 01:05:48,210 Forskellen mellem små bogstaver b og store B er også 32. 1446 01:05:48,210 --> 01:05:50,860 Og forskellen mellem C og store bogstaver C er altid 32. 1447 01:05:50,860 --> 01:05:53,235 >> Jeg bare nødt til at bekymre sig om forskellen mellem de to, 1448 01:05:53,235 --> 01:05:56,666 fordi alle bogstaverne følger det samme mønster, ikke? 1449 01:05:56,666 --> 01:05:58,540 Hvis jeg har forskellen mellem en af ​​dem, 1450 01:05:58,540 --> 01:06:01,050 Jeg ved, hvad forskellen mellem dem alle er. 1451 01:06:01,050 --> 01:06:01,740 Godt spørgsmål. 1452 01:06:01,740 --> 01:06:04,090 Ja. 1453 01:06:04,090 --> 01:06:06,660 Alle godt? 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 Så en anden koncept, der er vil være meget anvendelige som man 1459 01:06:20,310 --> 01:06:22,570 fortsætte med at udvikle din kode er denne idé 1460 01:06:22,570 --> 01:06:25,430 skabe funktioner eller abstraktion. 1461 01:06:25,430 --> 01:06:28,479 Så lige nu har vi alle taget algebra. 1462 01:06:28,479 --> 01:06:31,770 I algebra, er du lært, at der er denne vidunderlige ting kaldet en funktion 1463 01:06:31,770 --> 01:06:35,300 maskine, hvor, hvis du indgang én slags tal, 1464 01:06:35,300 --> 01:06:38,720 det løber gennem denne vidunderlige funktion og ud popper en anden udgang, right? 1465 01:06:38,720 --> 01:06:42,220 I kode, sker det samme i nogen form for funktion. 1466 01:06:42,220 --> 01:06:48,230 >> Så jeg kunne fysisk skrive i min krop af min kode 1467 01:06:48,230 --> 01:06:52,357 en vigtigste erklæring om, at faktisk gør uanset kroppen af ​​koden gør. 1468 01:06:52,357 --> 01:06:54,940 Men uden for det, kan jeg også skriver mange forskellige funktioner 1469 01:06:54,940 --> 01:06:56,320 at gøre mange forskellige ting. 1470 01:06:56,320 --> 01:06:58,570 For eksempel har vi allerede begyndte at bruge nogle af dem. 1471 01:06:58,570 --> 01:07:00,610 Printf--, der er en funktion, en anden 1472 01:07:00,610 --> 01:07:02,870 har allerede skrevet, at vi kan kalde vores kode. 1473 01:07:02,870 --> 01:07:05,410 At upper-- i denne sag, upper-- er en anden funktion 1474 01:07:05,410 --> 01:07:07,330 vi har skrevet, at vi kan ringe i vores kode. 1475 01:07:07,330 --> 01:07:09,520 Og så jeg gætte hvorfor Vi har endda funktioner? 1476 01:07:09,520 --> 01:07:12,100 Hvorfor gør vi ikke bare plask det alle i samme linje kode? 1477 01:07:12,100 --> 01:07:13,730 Det gør det nemt for alle. 1478 01:07:13,730 --> 01:07:19,200 >> Nå, det ræsonnement bag det er først og fremmest, organisation. 1479 01:07:19,200 --> 01:07:21,880 Det er virkelig irriterende at gå gennem nogen kode 1480 01:07:21,880 --> 01:07:25,110 og en funktion som printf. 1481 01:07:25,110 --> 01:07:28,570 Hvis du fyre rent faktisk vidste, hvad det funktion printf indebar at skrive, 1482 01:07:28,570 --> 01:07:30,530 Det er, ligesom, 1.000 linjer kode. 1483 01:07:30,530 --> 01:07:32,357 >> Hvis hver gang jeg ønskede at printf noget, 1484 01:07:32,357 --> 01:07:35,440 Jeg var nødt til at skrive 1.000 linjer kode, det ville være virkelig irriterende at læse, 1485 01:07:35,440 --> 01:07:36,290 højre? 1486 01:07:36,290 --> 01:07:38,860 Det er derfor, vi har bare oprettet denne abstrakte funktion 1487 01:07:38,860 --> 01:07:41,670 at vi allerede har en, ellers har skrevet et andet sted. 1488 01:07:41,670 --> 01:07:44,920 Og hver gang vi har brug for at bruge det i vores kode, vi bare nødt til at sige printf. 1489 01:07:44,920 --> 01:07:48,070 Og som er i stand til at bruge funktionen en anden har skrevet i vores kode. 1490 01:07:48,070 --> 01:07:51,020 Det gør det lettere organisatorisk at læse koden. 1491 01:07:51,020 --> 01:07:53,460 >> For det andet er det en forenkling. 1492 01:07:53,460 --> 01:07:56,750 Det forenkler de skridt, vi har at tage for at løse vores problem. 1493 01:07:56,750 --> 01:07:59,300 Printf, funktioner som printf, funktioner som til øvre 1494 01:07:59,300 --> 01:08:03,560 er alle ting, der giver os mulighed for at forenkle vores kode ned, så det er nemmere. 1495 01:08:03,560 --> 01:08:05,830 Og sidste ting er genanvendelighed. 1496 01:08:05,830 --> 01:08:08,710 >> Så det faktum, at vi har en funktion kaldet printf 1497 01:08:08,710 --> 01:08:11,990 at vi kan kalde mange forskellige gange og gør det muligt at kunne genbruges. 1498 01:08:11,990 --> 01:08:14,980 Hvis jeg skulle skrive printf, Jeg kun skrive det én gang. 1499 01:08:14,980 --> 01:08:16,439 Det eksisterer kun i den ét sted. 1500 01:08:16,439 --> 01:08:19,890 Hvis jeg ønskede at gøre det igen, ville jeg nødt til at kopiere og indsætte alt dette 1501 01:08:19,890 --> 01:08:21,760 ind i min anden linje kode. 1502 01:08:21,760 --> 01:08:24,880 Det er derfor, hvis vi skaber en funktion der eksisterer uden for vores vigtigste, 1503 01:08:24,880 --> 01:08:26,880 Vi kan bare opfordre det og genbruge det, når 1504 01:08:26,880 --> 01:08:29,604 vi har brug for, så det er meget nemmere for os som programmer til at skrive. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Så den måde, at vi rent faktisk ville skrive en funktion er meget ens, ikke? 1507 01:08:35,549 --> 01:08:37,590 Dette er slags den første tilfælde, hvor vi får 1508 01:08:37,590 --> 01:08:42,830 se en funktion tage på en stil anderledes end vores int main tomrum. 1509 01:08:42,830 --> 01:08:46,779 I dette tilfælde, hvis jeg ønskede at skrive en funktion kaldet q, ikke? 1510 01:08:46,779 --> 01:08:49,370 >> Og int værdi her er alle fortæller mig, 1511 01:08:49,370 --> 01:08:51,649 hvad gør jeg ønsker, at dette funktion til at vende tilbage til mig? 1512 01:08:51,649 --> 01:08:54,484 Hvis jeg ønsker i Cube et heltal, Jeg har tænkt mig at vil indtaste. 1513 01:08:54,484 --> 01:08:55,525 Det er parametrene. 1514 01:08:55,525 --> 01:08:58,490 Jeg har tænkt mig at indgange en værdi af typen int. 1515 01:08:58,490 --> 01:09:01,300 Og jeg har tænkt mig at vende tilbage en anden type værdi int. 1516 01:09:01,300 --> 01:09:03,050 Og herinde, som du kan se, alt jeg gør 1517 01:09:03,050 --> 01:09:07,300 er cubing uanset mine input er som min output og returnere det. 1518 01:09:07,300 --> 01:09:10,790 >> Så alt denne funktion gør, er tager en slags heltal. 1519 01:09:10,790 --> 01:09:14,979 Det ganger det af sig selv to gange så det kuber i kraft. 1520 01:09:14,979 --> 01:09:17,729 Og derefter returnerer den uanset hvad, at produktionen er. 1521 01:09:17,729 --> 01:09:20,540 Så i dette tilfælde, er det to linjer af kode, som vi havde til at skrive ekstra. 1522 01:09:20,540 --> 01:09:22,880 Men hvis vi ønskede at kalde over dette flere gange, 1523 01:09:22,880 --> 01:09:26,210 det er meget nemmere at skrive, at man line lige her, der er i terning end 1524 01:09:26,210 --> 01:09:28,830 nødt til at gå igennem flere gange. 1525 01:09:28,830 --> 01:09:34,180 >> Så den måde, at i det væsentlige enhver formatering for enhver form for funktion 1526 01:09:34,180 --> 01:09:36,420 kommer til at eksistere er ligesom her. 1527 01:09:36,420 --> 01:09:38,659 Så vi har den funktion navn. 1528 01:09:38,659 --> 01:09:39,950 I dette tilfælde kaldes det terning. 1529 01:09:39,950 --> 01:09:42,033 Og vi kalder det terning, fordi det er nemt at huske. 1530 01:09:42,033 --> 01:09:44,220 Du kan navngive det firkantede og Det kan faktisk være kubik. 1531 01:09:44,220 --> 01:09:45,500 Betyder ikke noget. 1532 01:09:45,500 --> 01:09:48,020 Bare et navn, som du er tildele din funktion. 1533 01:09:48,020 --> 01:09:51,660 >> Denne ret her, int, er den type den parameter, du har brug for. 1534 01:09:51,660 --> 01:09:54,149 Så hvad betyder denne funktion behøver for at kunne fungere? 1535 01:09:54,149 --> 01:09:55,990 Tja, det har brug for et input. 1536 01:09:55,990 --> 01:09:56,704 Jeg kaldte den input. 1537 01:09:56,704 --> 01:09:58,120 Du kan kalde det hvad du vil. 1538 01:09:58,120 --> 01:10:00,500 Men jeg har brug for noget af typen int. 1539 01:10:00,500 --> 01:10:03,730 Det kommer til at faktisk udføre hvad der er inde herfra, 1540 01:10:03,730 --> 01:10:04,990 kroppen af ​​funktionen. 1541 01:10:04,990 --> 01:10:07,847 Og så afkastet typen lige her, denne int-- 1542 01:10:07,847 --> 01:10:09,680 alle det er fortæller mig er at denne funktion 1543 01:10:09,680 --> 01:10:11,250 kommer til at vende tilbage til mig i int. 1544 01:10:11,250 --> 01:10:14,460 Så det kommer til at tage i en int, og det kommer til at give dig tilbage en int. 1545 01:10:14,460 --> 01:10:17,750 Har alle forstå, hvordan formatering af denne art virker? 1546 01:10:17,750 --> 01:10:18,250 Cool. 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 Så du skal ikke være bekymret, hvis dette synes lidt abstrakt lige nu. 1550 01:10:31,770 --> 01:10:33,450 Det er noget, vi vil tale om. 1551 01:10:33,450 --> 01:10:36,310 Vi vil dykke dybere senere i kurset. 1552 01:10:36,310 --> 01:10:41,170 Den måde, at enhver form for højere niveau indvinding af disse ting arbejde 1553 01:10:41,170 --> 01:10:43,530 er, at i hukommelsen, i din computer, alt 1554 01:10:43,530 --> 01:10:47,660 lagres i denne type af stakken, skal jeg sige. 1555 01:10:47,660 --> 01:10:49,070 >> Så deroppe på toppen. 1556 01:10:49,070 --> 01:10:50,861 Jeg ved ikke, om du fyre kan se, at godt. 1557 01:10:50,861 --> 01:10:52,590 Jeg vil prøve at zoome ind. 1558 01:10:52,590 --> 01:10:55,111 Her på toppen, vi har den fysiske tekst 1559 01:10:55,111 --> 01:10:57,860 af, hvad computeren er interpreting-- alle de nuller og ettaller, der 1560 01:10:57,860 --> 01:10:59,540 Der findes inden for vores computer. 1561 01:10:59,540 --> 01:11:03,390 Og så har vi den initialiseret data og initialiseret data, 1562 01:11:03,390 --> 01:11:05,340 hvad vi kalder globale variabler. 1563 01:11:05,340 --> 01:11:08,200 Så variabler, der findes på tværs af alle programmer 1564 01:11:08,200 --> 01:11:11,815 og på tværs af hele din, væsentlige kode. 1565 01:11:11,815 --> 01:11:13,940 Ingen bekymringer, hvis du fyre er slags uklar på dette. 1566 01:11:13,940 --> 01:11:16,060 Det er faktisk ligegyldigt lige nu. 1567 01:11:16,060 --> 01:11:18,680 >> Og så har vi, hvad der er kaldes en bunke i en stabel. 1568 01:11:18,680 --> 01:11:21,140 Tænk på en stak bogstaveligt som ligesom en stak ting, 1569 01:11:21,140 --> 01:11:23,098 en stak forskellige ting bliver skubbet på toppen 1570 01:11:23,098 --> 01:11:27,870 af hinanden, at opbevare de forskellige variabler og syntaks i din kode. 1571 01:11:27,870 --> 01:11:31,460 Og så her i bunden, vi har de miljøvariabler 1572 01:11:31,460 --> 01:11:35,480 af, hvad du udfører inden bare din lille linje kode. 1573 01:11:35,480 --> 01:11:40,510 >> Og vi bare at zoome ind på selve stakken del. 1574 01:11:40,510 --> 01:11:43,880 Så lige her, hvis vi skulle zoome på netop dette område af stablen, 1575 01:11:43,880 --> 01:11:45,140 dette er, hvad det ser ud. 1576 01:11:45,140 --> 01:11:48,590 Og det er faktisk temmelig vigtigt når du fyre taler om funktioner, 1577 01:11:48,590 --> 01:11:52,330 fordi varsel at hukommelse på din computer 1578 01:11:52,330 --> 01:11:55,600 er lagring af variabler og de funktioner 1579 01:11:55,600 --> 01:11:58,790 og parametrene for både din funktion og dine vigtigste variabler 1580 01:11:58,790 --> 01:12:00,190 på forskellige steder. 1581 01:12:00,190 --> 01:12:03,390 >> Så lige nu, vigtigste er den aktuelle funktion 1582 01:12:03,390 --> 01:12:04,780 at du udfører i en kode. 1583 01:12:04,780 --> 01:12:08,050 Du har dens parametre gemmes her og dens lokale variable gemmes her. 1584 01:12:08,050 --> 01:12:12,270 Lokal variabel bare forstås enhver variabel som kun findes i den pågældende funktion. 1585 01:12:12,270 --> 01:12:15,610 Og oven i det, du har denne separat funktion kaldes terning. 1586 01:12:15,610 --> 01:12:18,240 Du har, der er parametre samt de lokale. 1587 01:12:18,240 --> 01:12:21,540 >> Og grunden til at du kan ser her er, at det 1588 01:12:21,540 --> 01:12:25,030 sker, når kube tager i en værdi fra din vigtigste funktion 1589 01:12:25,030 --> 01:12:27,640 er, at faktisk er det at kopiere, at over. 1590 01:12:27,640 --> 01:12:31,470 Så hvis jeg ønskede at terning 2 og returnere 8, at 2 1591 01:12:31,470 --> 01:12:33,730 er faktisk indlæst som parameter, og det er 1592 01:12:33,730 --> 01:12:37,690 kopieret over, så du har det eksisterende i to forskellige steder i hukommelsen. 1593 01:12:37,690 --> 01:12:40,520 Og du er nødt til at være meget forsigtige om at huske hvilken en af ​​dem 1594 01:12:40,520 --> 01:12:42,520 du faktisk manipulere. 1595 01:12:42,520 --> 01:12:47,170 Og et eksempel på, hvad der skete det ville være meget, meget dårlig 1596 01:12:47,170 --> 01:12:48,050 eksisterer lige her. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Så lige her, jeg har fået, i teorien, et program lige her, en hovedfunktion 1599 01:12:58,650 --> 01:13:02,180 at jeg erklære en int x er lig med 1. 1600 01:13:02,180 --> 01:13:04,505 Jeg erklære en anden int y lig med 2. 1601 01:13:04,505 --> 01:13:06,380 Og så er jeg kører det gennem denne funktion 1602 01:13:06,380 --> 01:13:09,647 kaldet swap, hvor jeg antager, at det er at bytte de to værdier. 1603 01:13:09,647 --> 01:13:11,480 Og så vil jeg printe dem ud, ikke? 1604 01:13:11,480 --> 01:13:13,220 Det er, hvad jeg ønsker, at dette program til at gøre. 1605 01:13:13,220 --> 01:13:15,180 >> Så lad os komme ned og tage et kig. 1606 01:13:15,180 --> 01:13:18,200 Så hvis jeg rent faktisk at skrive en anden funktion, som du kan se, 1607 01:13:18,200 --> 01:13:19,750 vi har vores vigtigste funktion her. 1608 01:13:19,750 --> 01:13:22,860 Og så har vi vores anden funktion her. 1609 01:13:22,860 --> 01:13:24,520 Void swap. 1610 01:13:24,520 --> 01:13:27,090 Void betyder bare, at det er ikke kommer til at vende tilbage noget. 1611 01:13:27,090 --> 01:13:28,930 Funktionen navn er kaldet swap, og det er 1612 01:13:28,930 --> 01:13:33,730 gå til indtagelse to variabler, int a og int b, fra din [uhørligt] funktion. 1613 01:13:33,730 --> 01:13:39,010 >> Så det væsentlige i her, er vi passerer x og y i denne funktion. 1614 01:13:39,010 --> 01:13:40,760 Og hvis vi skulle oprette denne-- så vi ønsker 1615 01:13:40,760 --> 01:13:42,420 at skabe en midlertidig værdi, ikke? 1616 01:13:42,420 --> 01:13:43,930 Vi kommer til at tildele det til en. 1617 01:13:43,930 --> 01:13:45,388 Og så en vil nu lige b. 1618 01:13:45,388 --> 01:13:47,660 Og b kommer til at være tilbage hvor temp værdien var, 1619 01:13:47,660 --> 01:13:51,070 som er en, fordi når du ønsker at bytte ting, 1620 01:13:51,070 --> 01:13:52,320 du kan ikke bare gerne bytte dem. 1621 01:13:52,320 --> 01:13:54,360 >> Du er nødt til at holde en ud her, så det husker 1622 01:13:54,360 --> 01:13:56,485 hvad det er, fordi når du bytte en, du glemmer 1623 01:13:56,485 --> 01:13:58,200 hvad det oprindelige værdi var, ikke? 1624 01:13:58,200 --> 01:14:00,990 Så i teorien, dette program bør arbejde, ikke? 1625 01:14:00,990 --> 01:14:03,630 Hvis jeg ønskede at skifte to, skal de bytte. 1626 01:14:03,630 --> 01:14:05,490 Så lad os køre det og se om det virker. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Så som du fyre kan se, x var engang 1 og y var engang 2. 1629 01:14:16,940 --> 01:14:21,475 Og hvis jeg printe den ud, x er stadig 1, og y er 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, er dette program ikke synes at være arbejder den måde, at jeg vil have det til at virke. 1631 01:14:25,970 --> 01:14:29,950 Er der nogen ønsker at tage et skud på gætte hvorfor dette skete? 1632 01:14:29,950 --> 01:14:34,430 Det har at gøre med den måde at forskellige ting er 1633 01:14:34,430 --> 01:14:38,172 oplagres på forskellige steder i hukommelsen. 1634 01:14:38,172 --> 01:14:39,377 >> OK. 1635 01:14:39,377 --> 01:14:41,960 Så du fyre ikke behøver at bekymre dig for meget om det lige nu. 1636 01:14:41,960 --> 01:14:46,610 Men ved, at terningen lokale variabler var a og b, 1637 01:14:46,610 --> 01:14:49,230 fordi her i vores funktion, vi har erklæret a og b 1638 01:14:49,230 --> 01:14:53,570 som de variabler, der findes inden kube, denne funktion. 1639 01:14:53,570 --> 01:14:59,490 Men som du kan se, de parametre, det tager i blev opbevaret her. 1640 01:14:59,490 --> 01:15:01,370 Men vi var faktisk ikke tilbage noget. 1641 01:15:01,370 --> 01:15:03,120 Vi var faktisk ikke ændrer x og y. 1642 01:15:03,120 --> 01:15:04,440 Vi var blot skiftende a og b. 1643 01:15:04,440 --> 01:15:08,340 >> Vi havde kopieret x og y ind noget, der hedder a og b. 1644 01:15:08,340 --> 01:15:11,092 Men vi faktisk aldrig manipuleret x og y selv. 1645 01:15:11,092 --> 01:15:12,800 Er du fyre ser hvordan det sker? 1646 01:15:12,800 --> 01:15:16,140 Er, at vi simpelthen har kopieret det overstået, men vi har faktisk ikke holdt 1647 01:15:16,140 --> 01:15:18,030 styr på, hvor de var i hukommelsen. 1648 01:15:18,030 --> 01:15:20,127 >> Og så nu computeren ser, åh, jeg har 1649 01:15:20,127 --> 01:15:21,960 køre denne ting gennem denne dejlige funktion. 1650 01:15:21,960 --> 01:15:23,690 Men x og y er stadig x og y. 1651 01:15:23,690 --> 01:15:26,240 Intet er sket med dem på grund af det faktum, 1652 01:15:26,240 --> 01:15:28,340 at disse parametre og lokale variabler 1653 01:15:28,340 --> 01:15:30,150 lagres i en anden placere i hukommelsen. 1654 01:15:30,150 --> 01:15:32,030 Og dette er et højere niveau koncept, som vi får 1655 01:15:32,030 --> 01:15:34,300 begynde at se senere i løbet. 1656 01:15:34,300 --> 01:15:36,950 Men bare vide, at det er et problem der kan ske 1657 01:15:36,950 --> 01:15:41,400 og at vi vil finde ud af måder til, hvordan man beskæftige sig med dette senere i kurset. 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 Okay. 1661 01:15:48,250 --> 01:15:51,780 Så den sidste koncept, vi er virkelig kommer til at dække 1662 01:15:51,780 --> 01:15:53,880 der kommer til at være nyttig for pset denne uge 1663 01:15:53,880 --> 01:15:56,060 er det, der kaldes kommandolinjeargumenter. 1664 01:15:56,060 --> 01:16:00,820 Så Rob i sit foredrag gik igennem slags kort på, hvordan disse arbejde. 1665 01:16:00,820 --> 01:16:02,770 Væsentlige ved, at når du skriver 1666 01:16:02,770 --> 01:16:06,280 som en hovedfunktion, når vi skrev funktioner inden i fortiden, 1667 01:16:06,280 --> 01:16:07,804 vi havde int main tomrum. 1668 01:16:07,804 --> 01:16:10,470 Og årsagen til at vi havde ugyldig der var fordi vores programmer ikke gjorde 1669 01:16:10,470 --> 01:16:12,520 skal indtaste værdier for at køre, ikke? 1670 01:16:12,520 --> 01:16:16,020 Når jeg løb Mario, har jeg ikke brug for til rent faktisk bare skrive noget 1671 01:16:16,020 --> 01:16:16,970 da jeg kørte Mario. 1672 01:16:16,970 --> 01:16:20,170 Jeg kunne bede brugeren senere. 1673 01:16:20,170 --> 01:16:22,450 Men det vil ikke altid være tilfældet. 1674 01:16:22,450 --> 01:16:24,980 >> For eksempel, i dette uges problem sæt, 1675 01:16:24,980 --> 01:16:28,365 du vil blive spurgt, at i Ud over at køre dit program, 1676 01:16:28,365 --> 01:16:30,990 du vil vil indtaste visse ting i lige, som du 1677 01:16:30,990 --> 01:16:32,050 køre dit program. 1678 01:16:32,050 --> 01:16:34,720 Så den måde, vi gør, der kaldes en kommandolinje argument, som 1679 01:16:34,720 --> 01:16:37,280 er som et argument du kan indtaste direkte 1680 01:16:37,280 --> 01:16:39,260 som du forsøger at køre dit program. 1681 01:16:39,260 --> 01:16:44,680 >> Så notation for dette, det er ret kompliceret udseende, 1682 01:16:44,680 --> 01:16:47,320 men det er virkelig ikke så vanskelig. Så int main-- 1683 01:16:47,320 --> 01:16:48,910 det er bare din vigtigste funktion. 1684 01:16:48,910 --> 01:16:52,110 Into argc komma string argv parentes. 1685 01:16:52,110 --> 01:16:56,040 Så alt det siger, er, at dette int argc-- alt, der er at fortælle dig 1686 01:16:56,040 --> 01:17:00,560 er, at de er antallet af argumenter computeren skal forvente. 1687 01:17:00,560 --> 01:17:03,130 >> Så én ting, der er virkelig vigtigt at holde styr på 1688 01:17:03,130 --> 01:17:07,080 er den fysiske navnet på dit program tæller som en af ​​disse argumenter. 1689 01:17:07,080 --> 01:17:11,080 Så hvis jeg ville have mit program køre plus en ekstra kommandolinje 1690 01:17:11,080 --> 01:17:13,310 argument, jeg er faktisk vil have to. 1691 01:17:13,310 --> 01:17:15,080 Argc er faktisk kommer til at være to. 1692 01:17:15,080 --> 01:17:18,010 Og derefter snor argv bracket-- alt, hvad der gør, 1693 01:17:18,010 --> 01:17:20,410 det giver mig en vifte af strenge, der er 1694 01:17:20,410 --> 01:17:24,870 vil blot vise og lagre, hvad alle disse kommandolinjeargumenter er. 1695 01:17:24,870 --> 01:17:34,090 >> Så for eksempel, hvis jeg ville have det program, ./copy INFILE outfile, ikke? 1696 01:17:34,090 --> 01:17:37,330 Det er bare en typisk Linux kommando. 1697 01:17:37,330 --> 01:17:38,830 Hvad der rent faktisk er argc? 1698 01:17:38,830 --> 01:17:41,320 Hvor mange kommandolinjeargumenter er der faktisk i denne? 1699 01:17:41,320 --> 01:17:45,130 Alt dette gør, er at lave en kopi af en infile af navnet på en fil 1700 01:17:45,130 --> 01:17:47,070 og den kopierer det ind en anden fil, right? 1701 01:17:47,070 --> 01:17:48,700 Det er alt dette gør. 1702 01:17:48,700 --> 01:17:53,080 Som du kan se, jeg gør det på én linje uden egentlig at behøve programmet. 1703 01:17:53,080 --> 01:17:55,380 >> Hvad er vores argc i dette tilfælde? 1704 01:17:55,380 --> 01:17:58,968 Hvor mange argumenter har vi? 1705 01:17:58,968 --> 01:17:59,634 PUBLIKUM: Tre? 1706 01:17:59,634 --> 01:18:01,200 ANDI Peng: Vi har tre, nøjagtigt. 1707 01:18:01,200 --> 01:18:05,030 Så det er meget intuitiv at bare tror, ​​at det er bare 1708 01:18:05,030 --> 01:18:06,290 den infile og outfile. 1709 01:18:06,290 --> 01:18:10,190 Men ved, at den fysiske navn program, du kører tæller som én. 1710 01:18:10,190 --> 01:18:13,220 Så i dette tilfælde, argc er faktisk tre. 1711 01:18:13,220 --> 01:18:15,860 Hvad med, hvad der er argv 0? 1712 01:18:15,860 --> 01:18:18,180 Husk, alle de kommandolinjeargumenter 1713 01:18:18,180 --> 01:18:20,500 blev opbevaret i et array af strenge. 1714 01:18:20,500 --> 01:18:24,140 Så hvis jeg prøver at få adgang til det, hvad ville argv beslag 0 give mig? 1715 01:18:24,140 --> 01:18:25,364 >> PUBLIKUM: [uhørligt]. 1716 01:18:25,364 --> 01:18:26,155 ANDI Peng: Præcis. 1717 01:18:26,155 --> 01:18:28,550 Det ville give mig dot slash kopi, fordi det er 1718 01:18:28,550 --> 01:18:31,070 den 0. element, den første element i min array. 1719 01:18:31,070 --> 01:18:33,236 Hvad med argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> PUBLIKUM: INFILE. 1721 01:18:33,945 --> 01:18:35,070 ANDI Peng: INFILE, nøjagtigt. 1722 01:18:35,070 --> 01:18:36,272 Hvad med argv 2? 1723 01:18:36,272 --> 01:18:37,022 PUBLIKUM: outfile. 1724 01:18:37,022 --> 01:18:38,190 ANDI Peng: outfile. 1725 01:18:38,190 --> 01:18:39,290 Dette er en smule tricky nu. 1726 01:18:39,290 --> 01:18:42,630 Hvad tror du fyre tror argv 3 vil være at give mig 1727 01:18:42,630 --> 01:18:45,522 hvis jeg forsøgte at udskrive det ud? 1728 01:18:45,522 --> 01:18:48,260 >> PUBLIKUM: [uhørligt]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Peng: Havde du en hånd op? 1730 01:18:50,164 --> 01:18:50,663 Ja. 1731 01:18:50,663 --> 01:18:51,550 >> PUBLIKUM: Et alternativ. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI Peng: Præcis. 1733 01:18:52,341 --> 01:18:55,440 Så husk på foredrag, som vi har ved udgangen af ​​et løb noget 1734 01:18:55,440 --> 01:18:56,640 kaldes en null terminator? 1735 01:18:56,640 --> 01:18:58,890 Vi vil komme ind i dette også videre i klassen. 1736 01:18:58,890 --> 01:19:02,472 Men ved, at i notation, den måde, din computer 1737 01:19:02,472 --> 01:19:04,430 ved, at det er slutningen af arrayet er, at det 1738 01:19:04,430 --> 01:19:07,310 sætter noget, der hedder en null terminator eller en bindestreg nul. 1739 01:19:07,310 --> 01:19:12,047 >> Så hvis du forsøger at få adgang til argv 3, du kommer til at ramme denne bindestreg 0. 1740 01:19:12,047 --> 01:19:13,630 Dette er endnu mere af et trick spørgsmål. 1741 01:19:13,630 --> 01:19:17,020 Hvad med argv 4? 1742 01:19:17,020 --> 01:19:20,920 Så dette er fortid null terminator, forbi grænserne for vores array. 1743 01:19:20,920 --> 01:19:24,380 Hvad tror du kommer til at ske, når vi forsøger at gøre det? 1744 01:19:24,380 --> 01:19:25,842 >> PUBLIKUM: [uhørligt]? 1745 01:19:25,842 --> 01:19:26,550 ANDI Peng: Beklager? 1746 01:19:26,550 --> 01:19:28,025 Sige, at en lidt højere? 1747 01:19:28,025 --> 01:19:29,086 >> PUBLIKUM: [uhørligt]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Peng: Ja. 1749 01:19:29,710 --> 01:19:32,420 Det er navnet på den område, du vil højst sandsynligt få. 1750 01:19:32,420 --> 01:19:36,610 Men ved, at argv 4-- der tillader dig at få adgang 1751 01:19:36,610 --> 01:19:38,610 steder i computerens hukommelse, som du virkelig 1752 01:19:38,610 --> 01:19:41,650 bør ikke være rørende, fordi lige nu ved du hvad argv er. 1753 01:19:41,650 --> 01:19:46,220 Du ved, at det er en bred vifte af størrelse 3 der har dot kopiere, infile og outfile. 1754 01:19:46,220 --> 01:19:50,200 >> Hvis du forsøger at gå så langt ud over dette at du er forbi den null terminator, 1755 01:19:50,200 --> 01:19:53,050 din computer har sandsynligvis lagret noget i argv 4. 1756 01:19:53,050 --> 01:19:55,790 Og du burde virkelig ikke være gives adgang til argv 4, 1757 01:19:55,790 --> 01:19:58,130 fordi du har en fil skab, og du er kun 1758 01:19:58,130 --> 01:19:59,790 tillades adgang til disse tre hylder. 1759 01:19:59,790 --> 01:20:02,870 Men hvis du forsøger at nå langt ud over hylden, hvor du er tilladt, 1760 01:20:02,870 --> 01:20:04,930 du kommer til at starte rode med andre ting i computerens hukommelse. 1761 01:20:04,930 --> 01:20:06,690 Det kommer til at være virkelig, virkelig dårlig. 1762 01:20:06,690 --> 01:20:07,440 Så bare vide, at. 1763 01:20:07,440 --> 01:20:10,370 Vær meget forsigtig, at du ikke bare tilfældigt starte 1764 01:20:10,370 --> 01:20:14,772 adgang elementer i et array, der var ikke i, hvad du ønskede at skabe. 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 Så vi kommer til at gøre en anden terminale eksempel her. 1768 01:20:26,360 --> 01:20:27,300 OK. 1769 01:20:27,300 --> 01:20:29,900 Så Rob hurtigt i foredrag den anden dag gik 1770 01:20:29,900 --> 01:20:35,040 gennem dette eksempel, hvor han havde int main int argc snor argv 1771 01:20:35,040 --> 01:20:39,090 beslag, som fortæller mig, at jeg er vil have kommandolinjeargumenter. 1772 01:20:39,090 --> 01:20:41,860 >> Han har, hvis argc lig lig 2-- huske, 1773 01:20:41,860 --> 01:20:45,070 lig ligemænd betyder sammenligning. 1774 01:20:45,070 --> 01:20:47,980 Hvis det er lig 2, så er jeg kommer til at udskrive hej, 1775 01:20:47,980 --> 01:20:51,190 uanset den første element i arrayet er. 1776 01:20:51,190 --> 01:20:54,100 Else print, hej verden. 1777 01:20:54,100 --> 01:20:56,300 Hvad dette vil ske væsentlige? 1778 01:20:56,300 --> 01:21:00,570 Kan nogen lige forklare i Engelsk, hvad dette program gør? 1779 01:21:00,570 --> 01:21:01,272 Ja. 1780 01:21:01,272 --> 01:21:08,160 >> PUBLIKUM: Hvis nogen har skrevet i en kommando og sagde deres for- og efternavn, 1781 01:21:08,160 --> 01:21:12,096 Det vil ikke bare udskrive første og sige, hej, 1782 01:21:12,096 --> 01:21:14,090 uanset hvad dit fornavn er. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Peng: OK, lad os køre den. 1784 01:21:15,410 --> 01:21:22,470 Altså for eksempel, hvis jeg skulle gøre denne fil gøre hej at-- hej 1785 01:21:22,470 --> 01:21:24,500 at-- hvad vil du have mig til input? 1786 01:21:24,500 --> 01:21:25,900 >> PUBLIKUM: For- og efternavn. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Peng: Første og sidste navn? 1788 01:21:27,280 --> 01:21:28,180 Rum? 1789 01:21:28,180 --> 01:21:29,690 >> Publikum: Ja. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Peng: Kan nogen fortælle mig lige nu, hvad er argc? 1791 01:21:33,490 --> 01:21:35,630 Bare lige der? 1792 01:21:35,630 --> 01:21:36,290 Ups, undskyld. 1793 01:21:36,290 --> 01:21:37,920 Lad mig gå tilbage. 1794 01:21:37,920 --> 01:21:40,740 Hvor mange kommandolinjeargumenter are-- du fyre kan ikke rigtig se. 1795 01:21:40,740 --> 01:21:43,760 Men jeg vil prøve at zoome ind. 1796 01:21:43,760 --> 01:21:44,290 Jeg forsøger. 1797 01:21:44,290 --> 01:21:45,414 Ja, der er tre, ikke? 1798 01:21:45,414 --> 01:21:48,750 Det er dot skråstreg hej, det er Andi, og det er Peng. 1799 01:21:48,750 --> 01:21:51,870 >> Så hvad gør du fyre tror, ​​at dette Programmet kommer til at udskrive? 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 Åh undskyld. 1803 01:21:57,120 --> 01:21:57,810 Forkert navn. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Det er udskrivning ud, hej verden. 1806 01:22:06,130 --> 01:22:09,603 Er der nogen ønsker at forklare hvorfor det sker? 1807 01:22:09,603 --> 01:22:10,103 Ja? 1808 01:22:10,103 --> 01:22:11,019 >> PUBLIKUM: [uhørligt]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI Peng: Præcis. 1811 01:22:15,230 --> 01:22:19,940 Så her, er betingede er, hvis argc lig er lig med 2. 1812 01:22:19,940 --> 01:22:23,650 Så kun i tilfælde, at der er to kommandolinjeargumenter. 1813 01:22:23,650 --> 01:22:25,850 Så jeg har tænkt mig at udskrive, hej, hvad det er. 1814 01:22:25,850 --> 01:22:28,210 Men ellers, jeg har tænkt mig at udskrive bare, hej verden. 1815 01:22:28,210 --> 01:22:30,040 Så er der nogen ønsker at give mig et eksempel 1816 01:22:30,040 --> 01:22:35,050 af, hvordan jeg ville være i stand til rent faktisk få det til at udskrive værdien af ​​argv 1? 1817 01:22:35,050 --> 01:22:38,600 >> Hvad ville jeg nødt til at input her? 1818 01:22:38,600 --> 01:22:39,840 Kun én ting, ikke? 1819 01:22:39,840 --> 01:22:42,900 Fordi dot goddag til allerede tæller som det første argument. 1820 01:22:42,900 --> 01:22:43,930 Jeg har kun en mere. 1821 01:22:43,930 --> 01:22:46,470 Så dot hej, hvis jeg bare gøre Andi. 1822 01:22:46,470 --> 01:22:47,270 Hej, Andi. 1823 01:22:47,270 --> 01:22:49,186 Er alle forstår hvorfor det sker? 1824 01:22:49,186 --> 01:22:49,602 Ja. 1825 01:22:49,602 --> 01:22:52,500 >> PUBLIKUM: Så rummet mellem kommando line-- er det [uhørligt]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI Peng: Nej. 1828 01:22:56,830 --> 01:23:03,810 Så rummet i en kommandolinje argument, x, for at fortælle din computer 1829 01:23:03,810 --> 01:23:06,820 at dette er starten på en ny streng. 1830 01:23:06,820 --> 01:23:11,130 Så snor argv her-- det butikker alle dine kommandoer linje argumenter 1831 01:23:11,130 --> 01:23:13,110 i strenge. 1832 01:23:13,110 --> 01:23:17,420 Og så pladsen i kommandolinjen argument-- alt det gør, er at fortælle dig, 1833 01:23:17,420 --> 01:23:21,030 dette er ved enden af ​​en snor og det er tid til at gå videre til en anden. 1834 01:23:21,030 --> 01:23:21,990 >> Ja. 1835 01:23:21,990 --> 01:23:23,530 Dette er temmelig vigtigt for din pset, fordi du er 1836 01:23:23,530 --> 01:23:24,613 vil teste disse. 1837 01:23:24,613 --> 01:23:29,300 Så nogen der har spørgsmål om dette? 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 >> PUBLIKUM: Så grunden til at du ville sætte heltal argument calc stedet 1841 01:23:35,008 --> 01:23:40,059 af [uhørligt] ville være, når du vil at skrive yderligere oplysninger til 1842 01:23:40,059 --> 01:23:41,030 [Uhørligt]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Peng: Ja, præcis. 1844 01:23:42,090 --> 01:23:45,370 Nogle programmer kræver, at du at indtaste en kommandolinje argument 1845 01:23:45,370 --> 01:23:47,732 at den passerer ind og som bruger det. 1846 01:23:47,732 --> 01:23:49,035 Ja. 1847 01:23:49,035 --> 01:23:50,410 PUBLIKUM: Så hvad nu hvis [uhørligt]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Peng: Nå, hvad skal jeg at ændre så i mit program? 1850 01:23:58,870 --> 01:23:59,870 >> PUBLIKUM: Bare 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Peng: Hvorfor er det sker, tror du? 1853 01:24:15,020 --> 01:24:18,940 >> PUBLIKUM: Da [uhørligt]. 1854 01:24:18,940 --> 01:24:22,370 >> PUBLIKUM: Du er nødt til at ændre det til 2 [uhørligt]. 1855 01:24:22,370 --> 01:24:23,484 >> PUBLIKUM: 1 og 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI PENG: 1 og 2, nøjagtigt. 1857 01:24:24,650 --> 01:24:29,150 Så i dette tilfælde, ville du sandsynligvis ønsker at have to printf statements-- 1858 01:24:29,150 --> 01:24:32,601 en, der trykte argv 1 og den, der udskrives argv 2. 1859 01:24:32,601 --> 01:24:33,100 Her. 1860 01:24:33,100 --> 01:24:34,516 Jeg kan faktisk gøre det rigtig hurtigt. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Værs'go. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Ikke helt, hvad du ville. 1865 01:24:49,370 --> 01:24:52,590 Men hvis du fyre rode rundt med formateringen, vil det komme ud. 1866 01:24:52,590 --> 01:24:54,981 Ja. 1867 01:24:54,981 --> 01:24:55,480 Cool. 1868 01:24:55,480 --> 01:24:57,670 Jeg ved, vi er en smule kort på tid. 1869 01:24:57,670 --> 01:25:02,469 Men jeg bare hurtigt tilbringe en par minutter går gennem helpful-- 1870 01:25:02,469 --> 01:25:03,760 PUBLIKUM: Du har to minutter. 1871 01:25:03,760 --> 01:25:05,010 ANDI Peng: Jeg har to minutter? 1872 01:25:05,010 --> 01:25:06,340 Tak. 1873 01:25:06,340 --> 01:25:09,180 Nogle hurtige pset tips. 1874 01:25:09,180 --> 01:25:13,100 Så for denne pset, jeg stærkt anbefale, som jeg sagde, at alle læse spec. 1875 01:25:13,100 --> 01:25:16,804 Du vil skrive tre programs-- én kaldet initials.c, en kaldet caesar.c, 1876 01:25:16,804 --> 01:25:17,720 en kaldet vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Nogle vigtige tips, der du fyre virkelig ønsker 1879 01:25:22,340 --> 01:25:25,040 at holde mind-- så der er denne funktion 1880 01:25:25,040 --> 01:25:27,770 kaldet atoi-- som jeg gerne sige, en trois. 1881 01:25:27,770 --> 01:25:29,520 Uklart, om det er faktisk, hvordan du siger det. 1882 01:25:29,520 --> 01:25:32,510 Men alt det gør, er det indtastning. 1883 01:25:32,510 --> 01:25:34,320 Det konverterer en streng til en int. 1884 01:25:34,320 --> 01:25:37,490 Så a repræsenterer ASCII til i heltal. 1885 01:25:37,490 --> 01:25:40,310 Det er bare at konvertere ASCII værdier heltalsværdier. 1886 01:25:40,310 --> 01:25:44,510 Så husk argv, array, der gemmer alle dine kommandoer linje arguments-- 1887 01:25:44,510 --> 01:25:46,300 lagrer dem alle som strenge. 1888 01:25:46,300 --> 01:25:50,010 Og så hvis du ønsker at være i stand til har en af ​​dem til at blive et heltal, 1889 01:25:50,010 --> 01:25:52,750 du kommer til at have at bruge denne værdi her. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, ligesom vi dækket tidligere i klassen i dag, 1891 01:25:56,690 --> 01:25:59,550 giver dig mulighed for at have den Resten af ​​hvad du har. 1892 01:25:59,550 --> 01:26:03,620 Så hvis vi har rigtig, rigtig store tal i Cæsar, 1893 01:26:03,620 --> 01:26:06,117 hvad hvis vi har enden af en streng af Vigenere? 1894 01:26:06,117 --> 01:26:08,450 Hvordan vil du være i stand til at få det til at ombrydes omkring? 1895 01:26:08,450 --> 01:26:11,330 Hvis jeg ramte z og jeg vil det til at gå tilbage til en, 1896 01:26:11,330 --> 01:26:13,650 hvordan skal jeg få at for at wrap omkring? 1897 01:26:13,650 --> 01:26:15,960 Sandsynligvis vil bruge modulo derinde et sted. 1898 01:26:15,960 --> 01:26:19,190 >> For det andet, browse rundt dit bibliotek. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Det er et nyt bibliotek, vi har. 1900 01:26:20,680 --> 01:26:25,270 Du kan finde en masse virkelig, virkelig nyttige functions-- isupper, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, et cetera. 1902 01:26:27,681 --> 01:26:30,680 Alle funktioner, der vil være meget nyttigt når du forsøger at finde ud af, 1903 01:26:30,680 --> 01:26:33,780 er denne karakter et lille bogstav? 1904 01:26:33,780 --> 01:26:35,730 Hvordan kan jeg konvertere dette streng til et stort? 1905 01:26:35,730 --> 01:26:38,146 Alle disse ting vil være meget, meget nyttigt for din 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 >> Kontortid i aften er 8:00 til 11:00 i TEAL klasseværelset i morgen 1909 01:26:49,644 --> 01:26:51,310 samt onsdag og torsdag aften. 1910 01:26:51,310 --> 01:26:53,280 Kontortid er i overdrev. 1911 01:26:53,280 --> 01:26:56,180 Meget tyder jer alle komme i gang med det samme, 1912 01:26:56,180 --> 01:27:00,490 fordi du ikke ønsker at være, at barn, der torsdag aften har problemer 1913 01:27:00,490 --> 01:27:03,870 indsende dit pset og lignende, jeg ved ikke hvad de skal gøre. 1914 01:27:03,870 --> 01:27:05,870 Jeg begyndte, jeg færdig, indgav jeg. 1915 01:27:05,870 --> 01:27:09,737 Prøv at give dig selv lidt plads, fordi der i kode problemer altid opstår. 1916 01:27:09,737 --> 01:27:11,570 Du ønsker at være sikker at du giver dig selv 1917 01:27:11,570 --> 01:27:14,810 en masse tid at være i stand at fuldføre psets. 1918 01:27:14,810 --> 01:27:15,310 Cool. 1919 01:27:15,310 --> 01:27:16,720 Jeg vil hænge rundt her. 1920 01:27:16,720 --> 01:27:18,226 >> PUBLIKUM: Er dette online allerede? 1921 01:27:18,226 --> 01:27:20,850 ANDI Peng: Jeg ved ikke, om det er online allerede, men det vil være. 1922 01:27:20,850 --> 01:27:23,500 Jeg vil hænge rundt her, hvis nogen har nogen spørgsmål allerede. 1923 01:27:23,500 --> 01:27:25,390 Tak for at komme. 1924 01:27:25,390 --> 01:27:27,105