1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Okay. 3 00:00:13,870 --> 00:00:16,770 Velkommen til den første sektion. 4 00:00:16,770 --> 00:00:17,480 Jeg er Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Jeg er Josef. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Så vi vil dykke ret i. 7 00:00:21,540 --> 00:00:23,420 Første ting at snakke om er Appliance. 8 00:00:23,420 --> 00:00:27,150 Så forhåbentlig de fleste af jer har downloadet det allerede. 9 00:00:27,150 --> 00:00:37,180 Men du kan se vejledningen ved cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Åh gud, nu er jeg selvbevidst. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Jeg kan stadig høre den. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, det lyder som det er desorienteret. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Så nogle mennesker har haft problemer med det, så du skal ikke vente, indtil 15 00:00:52,460 --> 00:00:54,940 det sidste minut af problemet indstillet til forsøge at løse Appliance og 16 00:00:54,940 --> 00:00:56,320 at finde ud af, at det ikke virker. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: Og hvis noget ikke fungerer og du har brug for hjælp, kan du gå til 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion hvor vi have et forum, hvor du 19 00:01:03,390 --> 00:01:04,110 kan sende dine spørgsmål. 20 00:01:04,110 --> 00:01:06,655 Og vi vil komme til dem i sidste ende. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Okay. 22 00:01:07,490 --> 00:01:12,180 Så dette er hvad den Appliance ser ud. 23 00:01:12,180 --> 00:01:15,480 Igen, det er bare et helt andet operativsystem, der kører inden for 24 00:01:15,480 --> 00:01:19,440 uanset operativsystem du kører på din bærbare computer. 25 00:01:19,440 --> 00:01:24,450 Og de vigtigste ting, du vil skal bruge er gedit. 26 00:01:24,450 --> 00:01:28,050 Så forhåbentlig har allerede blevet et velkendt site. 27 00:01:28,050 --> 00:01:29,470 Terminalen. 28 00:01:29,470 --> 00:01:31,890 >> Og du kan også køre Chrome inden for Appliance. 29 00:01:31,890 --> 00:01:33,860 Der har været et par af mennesker der har rapporteret internet 30 00:01:33,860 --> 00:01:35,390 ikke arbejde i Appliance. 31 00:01:35,390 --> 00:01:38,090 Og nogle af dem har netop antaget at der ikke formodes at være 32 00:01:38,090 --> 00:01:39,190 internet i Appliance. 33 00:01:39,190 --> 00:01:40,750 Men ja, er der formodes at være internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Jeg vil sige det lige nu, men det gør ikke virkelig betyder noget. 36 00:01:46,410 --> 00:01:50,680 Hvis internettet ikke fungerer, dette er hvad du har tendens til brug 37 00:01:50,680 --> 00:01:52,180 til at køre for at ordne det. 38 00:01:52,180 --> 00:01:55,602 Hvis du har internet problemer, ikke huske det, bare skrive det på 39 00:01:55,602 --> 00:01:57,560 Diskuter, og vi vil sige, at køre det. 40 00:01:57,560 --> 00:02:00,420 Men internettet skal arbejde. 41 00:02:00,420 --> 00:02:06,650 >> Så den eneste anden ting - ja, intet andet er virkelig relevant. 42 00:02:06,650 --> 00:02:08,979 Men jeg ville bare påpege, at - 43 00:02:08,979 --> 00:02:13,290 se i denne nederste højre hjørne. 44 00:02:13,290 --> 00:02:16,530 Så hver af dine apparater bør har en IP-adresse. 45 00:02:16,530 --> 00:02:22,350 Og senere i semesteret, denne IP adresse vil blive mere relevante, når 46 00:02:22,350 --> 00:02:27,230 du arbejder på internettet p-sæt, fordi vil du være i stand til at få adgang til 47 00:02:27,230 --> 00:02:32,310 websted, du arbejder på fra din lokal Chrome ved hjælp af denne IP-adresse. 48 00:02:32,310 --> 00:02:35,400 >> Men hvad jeg kan lide at bruge IP-adressen for - og du behøver ikke at gøre dette, jeg 49 00:02:35,400 --> 00:02:37,460 blot ønsker at påpege det - 50 00:02:37,460 --> 00:02:39,540 er her. 51 00:02:39,540 --> 00:02:42,910 Så dette er en terminal vindue på min Mac, er dette ikke i 52 00:02:42,910 --> 00:02:44,580 Appliance overhovedet. 53 00:02:44,580 --> 00:02:47,190 Og du kan se op, hvad denne kommando gør. 54 00:02:47,190 --> 00:02:51,855 Men jeg har tænkt mig at SSH direkte til min Appliance. 55 00:02:51,855 --> 00:02:53,410 Jeg ved ikke, hvad IP er. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Så når jeg er færdig med dette, logge ind 59 00:02:59,950 --> 00:03:05,450 Nu, dybest set, det er identisk med et terminal vindue i mit Appliance. 60 00:03:05,450 --> 00:03:10,280 Så jeg temmelig meget faktisk aldrig fungeret indefra selve apparatet. 61 00:03:10,280 --> 00:03:12,550 Jeg har bare altid det kører i baggrunden minimeret 62 00:03:12,550 --> 00:03:15,890 og SSHed ind i det. 63 00:03:15,890 --> 00:03:24,270 >> Problemet med dette er, at du ikke går til let at kunne bruge gedit 64 00:03:24,270 --> 00:03:25,600 direkte fra dette. 65 00:03:25,600 --> 00:03:31,500 Men hvis du ønsker at være en virkelig cool hacker, så skal du vænne dig til en 66 00:03:31,500 --> 00:03:34,220 kommandolinje tekst editor alligevel. 67 00:03:34,220 --> 00:03:39,620 Så Vim og Emacs og Nano, alle disse er forskellige alternativer. 68 00:03:39,620 --> 00:03:41,560 Nano har en tendens til at være den nemmeste. 69 00:03:41,560 --> 00:03:45,006 Og jeg tror, ​​det har noget syntaksfremhævning. 70 00:03:45,006 --> 00:03:47,620 Åh, nej, det helt gør. 71 00:03:47,620 --> 00:03:49,870 Så du kan bruge Nano, fordi at man er temmelig let. 72 00:03:49,870 --> 00:03:52,000 >> Du kan se alle disse kommandoer nederst. 73 00:03:52,000 --> 00:03:54,750 Denne lille gulerod symbol. 74 00:03:54,750 --> 00:03:57,620 Hvis du ikke har set det før, vil du sandsynligvis se det en masse nu. 75 00:03:57,620 --> 00:04:02,350 Det betyder generelt kontrol gulerod, ligesom nederste venstre del på dit tastatur 76 00:04:02,350 --> 00:04:04,130 kontrol karakter. 77 00:04:04,130 --> 00:04:07,260 Så her er det fortæller mig hernede - 78 00:04:07,260 --> 00:04:08,710 Åh, det er ikke skåret væk, hvis jeg zoome ind 79 00:04:08,710 --> 00:04:11,040 Så Control X er hvor Jeg har tænkt mig at afslutte. 80 00:04:11,040 --> 00:04:14,710 Og det siger jeg kan ramme Y for Ja, for at spare, N for Nej 81 00:04:14,710 --> 00:04:17,190 Så det er Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim og Emacs tendens til at være lidt mere kompliceret og overvældende. 83 00:04:22,860 --> 00:04:28,840 Men du kan vænne dig til det, og så vil du elske det. 84 00:04:28,840 --> 00:04:30,590 Så det er det. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Ingen grund til at gøre det. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Ja. 87 00:04:31,840 --> 00:04:37,510 Du er velkommen til at bruge gedit til resten af ​​semestret. 88 00:04:37,510 --> 00:04:40,630 Så enhver apparat-relaterede spørgsmål? 89 00:04:40,630 --> 00:04:42,820 Eller har du nogen tanker om, hvad der ellers behov for at blive talt om om 90 00:04:42,820 --> 00:04:43,610 apparatet? 91 00:04:43,610 --> 00:04:43,996 Ja. 92 00:04:43,996 --> 00:04:47,720 >> SPEAKER 1: Når du SSHed ind i dit ting, var kodeordet Crimson? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Ja. 94 00:04:48,390 --> 00:04:50,170 Adgangskoden til stort set alt i Appliance går 95 00:04:50,170 --> 00:04:52,473 være Crimson. 96 00:04:52,473 --> 00:04:56,517 >> SPEAKER 2: Installer som en rigtig IDE på apparatet, vil det fungere? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Jeg forestiller mig Eclipse har en Fedora-version, i hvilket tilfælde, ja, 99 00:05:07,290 --> 00:05:08,420 du kan gøre det. 100 00:05:08,420 --> 00:05:10,875 Det er nok ikke virkelig det værd. 101 00:05:10,875 --> 00:05:11,742 >> SPEAKER 2: OK. 102 00:05:11,742 --> 00:05:15,924 Så det er nok nemmere, hvis jeg ønskede at bruge Eclipse, bare bruge den indfødte og 103 00:05:15,924 --> 00:05:17,646 derefter uploade til - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Åh, det er sandsynligvis også lettere. 105 00:05:21,090 --> 00:05:24,046 Men du kan få det til at virke inden for Appliance. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: Og til kameraet, er spørgsmålet var, kan du installere en anden 107 00:05:27,740 --> 00:05:29,490 IDE indersiden af ​​Appliance? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse være en eksempel på en IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Andre apparater spørgsmål? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Ok. 113 00:05:38,680 --> 00:05:44,920 >> Så vi vil nu gå videre til kommandolinjen grænseflade-relaterede ting, så CLI. 114 00:05:44,920 --> 00:05:47,990 Og igen, jeg bare kommer til at arbejde i her, fordi det er identisk med 115 00:05:47,990 --> 00:05:52,780 arbejde inden for et terminal vindue inden for Appliance. 116 00:05:52,780 --> 00:05:54,160 Hvordan denne skrifttype leder? 117 00:05:54,160 --> 00:05:55,970 Er det stort nok? 118 00:05:55,970 --> 00:05:57,000 Ok. 119 00:05:57,000 --> 00:06:02,480 >> Så der er en masse kommandoer, du skal komme temmelig brugt til 120 00:06:02,480 --> 00:06:04,490 hele semesteret. 121 00:06:04,490 --> 00:06:09,480 De to store til at navigere er ls, liste filerne i denne mappe, og 122 00:06:09,480 --> 00:06:11,380 cd, så skifter mappe. 123 00:06:11,380 --> 00:06:18,390 Så jeg kan skifte til skrivebordet og derefter et meget almindeligt mønster er cd til en 124 00:06:18,390 --> 00:06:22,550 bibliotek og straks ls Hvad er der i kataloget. 125 00:06:22,550 --> 00:06:25,540 >> Folk også undertiden ikke klar at Tab afslutning er en ting. 126 00:06:25,540 --> 00:06:28,370 Så ligesom cd, vh, og så jeg ramte Tab. 127 00:06:28,370 --> 00:06:30,790 Jeg næsten aldrig skrive ud hele ting. 128 00:06:30,790 --> 00:06:32,920 Og så hvis jeg holde rammer Tab igen, vil det automatisk 129 00:06:32,920 --> 00:06:33,670 begynde notering for mig. 130 00:06:33,670 --> 00:06:37,000 Så jeg kan cd vhosts, lokale vært. 131 00:06:37,000 --> 00:06:39,880 Og det er bare at gå til - 132 00:06:39,880 --> 00:06:43,380 i tilfælde af at du ikke har hørt udtrykket før, bibliotek er bare et andet ord 133 00:06:43,380 --> 00:06:45,170 for mappe. 134 00:06:45,170 --> 00:06:49,930 Så nu, hvis du ser - 135 00:06:49,930 --> 00:06:51,810 lad os bringe det til toppen. 136 00:06:51,810 --> 00:06:55,380 >> Så nu, hvis du kan se i parentes, du se den lille tilde, skråstreg, vhost, 137 00:06:55,380 --> 00:06:56,810 skråstreg, lokale vært. 138 00:06:56,810 --> 00:07:00,040 Så tilde, der refererer til mit hjem bibliotek. 139 00:07:00,040 --> 00:07:03,090 Det er et bibliotek, du er ind, når du SSH i. 140 00:07:03,090 --> 00:07:05,660 Det er det bibliotek, du er i, når du åbner en terminal. 141 00:07:05,660 --> 00:07:08,650 Det er hvor du starter. 142 00:07:08,650 --> 00:07:13,110 Og så er jeg inde i mit hjem bibliotek, og jeg er inde i vhost 143 00:07:13,110 --> 00:07:14,475 mappe inde i mit hjem bibliotek. 144 00:07:14,475 --> 00:07:19,670 Og så er jeg inde i den lokale vært bibliotek inde i det. 145 00:07:19,670 --> 00:07:23,740 >> Så nogle andre nyttige ting med CD - 146 00:07:23,740 --> 00:07:29,220 eller godt, i almindelighed, så dot altid refererer til den aktuelle mappe. 147 00:07:29,220 --> 00:07:31,130 Cd, prik er en temmelig værdiløs kommando. 148 00:07:31,130 --> 00:07:35,150 Men det ændrer sig til aktuelle mappe. 149 00:07:35,150 --> 00:07:38,230 En mere nyttig en i form af cd er prik, prik, der er 150 00:07:38,230 --> 00:07:40,220 bare gå et bibliotek. 151 00:07:40,220 --> 00:07:43,360 >> Og bemærk, at disse - 152 00:07:43,360 --> 00:07:48,610 Jeg ønsker at sige aliaser, men disse symboler, prik, og prik, prik, der arbejder 153 00:07:48,610 --> 00:07:51,740 for stort set enhver kommando, du er kommer til at tænke på at køre. 154 00:07:51,740 --> 00:07:55,370 Så ligesom cd er nok, hvor du vil være ved hjælp af de fleste, men disse er ikke 155 00:07:55,370 --> 00:07:56,780 ting, der bare cd forstår. 156 00:07:56,780 --> 00:07:59,980 Det er temmelig meget noget hele din kommandolinjen forstår. 157 00:07:59,980 --> 00:08:01,932 En masse programmer forstår prik og prik, prik. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Så de andre nyttige dem - cd, Dash. 160 00:08:09,090 --> 00:08:13,460 Så det kommer til at bringe mig til sidste mappe, som jeg var i. 161 00:08:13,460 --> 00:08:15,980 Så nogle gange vil jeg gøre noget lignende, åh, jeg arbejder her. 162 00:08:15,980 --> 00:08:21,110 Og jeg ser nogle fejl med noget, og Jeg vil gå undersøge det ved at gå til 163 00:08:21,110 --> 00:08:24,020 nogle tilfældige mappe eller andet sted. 164 00:08:24,020 --> 00:08:25,260 Og jeg ved ikke, om det vil lad mig derinde. 165 00:08:25,260 --> 00:08:25,720 Det vil. 166 00:08:25,720 --> 00:08:27,615 Så jeg gør, hvad jeg vil i denne mappe. 167 00:08:27,615 --> 00:08:28,950 Blah, blah, blah, blah, blah. 168 00:08:28,950 --> 00:08:31,770 Og jeg var ligesom, okay, jeg vil at gå tilbage til hvor jeg var. 169 00:08:31,770 --> 00:08:34,490 cd, bindestreg, og det bringer mig tilbage. 170 00:08:34,490 --> 00:08:39,970 >> Så jeg har tænkt mig at smide en masse af disse på dig i dag. 171 00:08:39,970 --> 00:08:43,730 Jeg forventer ikke, at du huske dem alle. 172 00:08:43,730 --> 00:08:46,170 Det er slags bare vide at de findes. 173 00:08:46,170 --> 00:08:48,690 Og så senere, når du er ligesom, hmm, jeg ønsker at gå tilbage til 174 00:08:48,690 --> 00:08:51,870 bibliotek, jeg var bare på, oh, vent, noget, der eksisterer. 175 00:08:51,870 --> 00:08:53,980 Du behøver ikke at bare skrive på alle kategorier igen. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: Og til sidst vil du bare bruge dem igen og igen, og 177 00:08:56,090 --> 00:08:57,830 det vil blive muskel hukommelse. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Ja. 179 00:09:00,090 --> 00:09:02,930 Så hvordan jeg sagde før, at tilde er dit hjem bibliotek. 180 00:09:02,930 --> 00:09:04,820 Så jeg kan cd, tilde. 181 00:09:04,820 --> 00:09:07,280 Men jeg behøver ikke engang at gøre det, hvis jeg bare - 182 00:09:07,280 --> 00:09:09,760 Jeg vil gå tilbage til den mappe, så det er ikke en meningsløs eksempel. 183 00:09:09,760 --> 00:09:14,560 Men hvis jeg bare gøre cd, det er også den samme som, gå til mit hjem bibliotek. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Jeg gør Kommando, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Du kan også skrive klar, ord, og det bør klare det. 187 00:09:24,015 --> 00:09:28,650 >> ROB: Og jeg tror også Control L også gør det. 188 00:09:28,650 --> 00:09:29,690 Så masser af forskellige måder. 189 00:09:29,690 --> 00:09:34,070 Jeg tror, ​​der er nogle forskelle, hvor klar og Kontrol, L vil bare 190 00:09:34,070 --> 00:09:37,280 virkelig skubbe det til toppen og Jeg kan stadig bladre tilbage. 191 00:09:37,280 --> 00:09:40,580 Kommando, K bogstaveligt ødelægger alt, og du 192 00:09:40,580 --> 00:09:42,960 kan ikke rulle op igen. 193 00:09:42,960 --> 00:09:45,530 I det mindste, det er hvordan det fungerer i iTerm2. 194 00:09:45,530 --> 00:09:48,690 Jeg ved ikke, hvordan andre ting - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Med SSHing, så hvis du er på Windows, du er nødt til at hente PuTTY 197 00:09:55,450 --> 00:10:02,360 For at SSH da Windows ikke har ligesom en indbygget SSH værktøj. 198 00:10:02,360 --> 00:10:06,150 Fra Macs, kan du bare SSH direkte fra et terminal vindue. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Spørgsmål? 202 00:10:11,840 --> 00:10:19,260 >> Med ls, noget så at vænne sig til med de fleste af disse kommandoer er - 203 00:10:19,260 --> 00:10:20,060 Nå, jeg vil bare gøre én. 204 00:10:20,060 --> 00:10:21,310 Ls, bindestreg, l. 205 00:10:21,310 --> 00:10:26,330 Så streg, jeg er, hvad vi vil at kalde et flag til ls. 206 00:10:26,330 --> 00:10:30,770 Og en masse af disse kommandoer har flag at du kan videregive til dem. 207 00:10:30,770 --> 00:10:35,020 Så i dette tilfælde, streg, jeg er et flag der fortæller den til at give mig en fuld 208 00:10:35,020 --> 00:10:37,850 notering af alle de oplysninger, af disse filer. 209 00:10:37,850 --> 00:10:44,790 >> Så vi ser her, at skrivebordet var ændret den 30. juli at 12:54. 210 00:10:44,790 --> 00:10:47,160 Downloads blev ændret ved 6. september. 211 00:10:47,160 --> 00:10:52,350 Det er den aktuelle størrelse og bytes af disse mapper. 212 00:10:52,350 --> 00:10:54,412 Du behøver ikke at forstå alt dette. 213 00:10:54,412 --> 00:11:00,380 >> Denne ting til venstre, disse drwx s, der vil blive langt mere relevant 214 00:11:00,380 --> 00:11:02,290 senere, når du er nødt til at beskæftige sig med - 215 00:11:02,290 --> 00:11:05,900 der har at gøre med, hvem der har tilladelser til at se på disse filer. 216 00:11:05,900 --> 00:11:09,880 Og så hvis du ikke var den eneste bruger på denne computer, vil du være i stand til 217 00:11:09,880 --> 00:11:13,345 sige, OK, skal jeg være den eneste lov til at se på denne fil eller jeg 218 00:11:13,345 --> 00:11:14,870 kommer til at give alle til at se på denne fil. 219 00:11:14,870 --> 00:11:17,710 Så en anden på min computer kan se på denne fil. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Jeg ved ikke engang, hvad det - hvad betyder dette gøre? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Jeg er ikke helt sikker, faktisk. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Ingen idé. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Men hvis du ikke kender, er der et nyttigt kommando, som du kan bruge 225 00:11:30,530 --> 00:11:31,680 fortælle dig, hvad outputtet betyder. 226 00:11:31,680 --> 00:11:33,780 Og hvis du skriver i mennesket før kommandoen - 227 00:11:33,780 --> 00:11:35,000 så M-A-N. ROB: Man. 228 00:11:35,000 --> 00:11:37,690 Så mennesket er en anden som er meget nyttigt. 229 00:11:37,690 --> 00:11:39,540 Og mand, ls. 230 00:11:39,540 --> 00:11:47,320 Så man-sider, har de begge kommandoer, du skal bruge 231 00:11:47,320 --> 00:11:50,330 på kommandolinjen, og de har også funktioner, der vil være relevante 232 00:11:50,330 --> 00:11:52,530 med C. Så du kan mennesket - 233 00:11:52,530 --> 00:11:53,720 og jeg ignorerede 3. 234 00:11:53,720 --> 00:11:57,410 Men mennesket 3 printf vil bringe op C version af printf. 235 00:11:57,410 --> 00:12:01,030 Men hvis jeg bare gøre mennesket printf, er dette kommer til at opdrage kommandoen printf 236 00:12:01,030 --> 00:12:03,540 der sker på kommandolinjen. 237 00:12:03,540 --> 00:12:05,730 >> Så mand, ls. 238 00:12:05,730 --> 00:12:09,030 Man-siderne kan være temmelig overvældende. 239 00:12:09,030 --> 00:12:12,770 Her vil man dog se denne liste af alle disse flag, ls 240 00:12:12,770 --> 00:12:14,300 forstår. 241 00:12:14,300 --> 00:12:17,876 Så hvis vi går til tankestreg, l, og - 242 00:12:17,876 --> 00:12:19,300 Jeg bare at smide det på dig. 243 00:12:19,300 --> 00:12:23,050 Men for at søge, du ønsker til første hit på spørgsmålet 244 00:12:23,050 --> 00:12:24,780 mark eller skråstreg knappen. 245 00:12:24,780 --> 00:12:26,040 Så skråstreg. 246 00:12:26,040 --> 00:12:29,000 >> Og så kan jeg søge for hvad jeg vil. 247 00:12:29,000 --> 00:12:33,780 Så jeg har tænkt mig at skære til instrumentbrættet, l.. 248 00:12:33,780 --> 00:12:35,110 Og det var der. 249 00:12:35,110 --> 00:12:37,450 Så brug en lang liste format. 250 00:12:37,450 --> 00:12:40,060 Det hjælper mig ikke regne ud, hvad som bestemt søjle betød, men jeg 251 00:12:40,060 --> 00:12:44,480 antage et eller andet sted i her Det ville forklare det. 252 00:12:44,480 --> 00:12:48,740 Så bruger man-pages for enhver kommando at du ikke straks forstå. 253 00:12:48,740 --> 00:12:51,080 >> Jeg er temmelig sikker på at du kan endda mand, mand. 254 00:12:51,080 --> 00:12:53,070 En grænseflade til online referencemanualer. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Åh, en sidste en, der er måske lidt relevant er ls, bindestreg, et. 257 00:13:03,570 --> 00:13:08,490 Så varsel, hvis jeg bare gøre ls, Jeg får disse fem filer. 258 00:13:08,490 --> 00:13:11,480 Hvis jeg gør ls, Dash, en, jeg få en masse flere filer. 259 00:13:11,480 --> 00:13:15,350 Så ting til fælles mellem alle disse nye filer er dot forhånd. 260 00:13:15,350 --> 00:13:21,220 >> Så konventionen er, at en fil, begynder med en prik er skjult. 261 00:13:21,220 --> 00:13:25,300 Så du ikke ønsker at se, at filen, du ønsker ikke at have det rod med 262 00:13:25,300 --> 00:13:26,750 din katalogliste. 263 00:13:26,750 --> 00:13:30,020 Det er kun, når du udtrykkeligt spørger, okay, ls, bindestreg, en, vis mig. 264 00:13:30,020 --> 00:13:32,830 Den a står for alle filer, herunder skjulte dem. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Så nogle andre kommandoer. 267 00:13:39,270 --> 00:13:41,323 Åh, spørgsmål på dette punkt? 268 00:13:41,323 --> 00:13:41,746 Ja. 269 00:13:41,746 --> 00:13:45,914 >> SPEAKER 3: Når du gør ls, en, hvad er prik, prik? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Så dette er hvad jeg talte om. 272 00:13:48,780 --> 00:13:50,890 Det er den samme ting, hvor Jeg kan lide cd, prik, prik. 273 00:13:50,890 --> 00:13:56,790 Så teknisk set prik og prik, prik er filer, der findes i hvert enkelt 274 00:13:56,790 --> 00:14:03,620 mappe, hvor dot-filen refererer til den aktuelle mappe. 275 00:14:03,620 --> 00:14:06,930 Så hvis jeg cd, prik, jeg bare at bo i kataloget. 276 00:14:06,930 --> 00:14:10,870 Og prik, prik henviser altid til den forrige mappe et niveau op. 277 00:14:10,870 --> 00:14:18,200 Så hvis jeg går ind i træstammer og ls, bindestreg, al, Jeg vil se prik, prik. cd til prik, prik 278 00:14:18,200 --> 00:14:20,390 bringer mig til den forrige mappe. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Ja. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Så en anden temmelig vigtigt Kommandoen er rm. 284 00:14:33,070 --> 00:14:35,650 Så det er, hvad vi vil bruge til at fjerne. 285 00:14:35,650 --> 00:14:38,100 Og lad mig faktisk gøre en anden kommando først. 286 00:14:38,100 --> 00:14:39,610 Så mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir er, hvordan du kan oprette mapper. 288 00:14:42,770 --> 00:14:47,530 Og jeg vil oprette en midlertidig mappe og gå ind i det midlertidige bibliotek. 289 00:14:47,530 --> 00:14:49,590 Og som forventet, er det tomt. 290 00:14:49,590 --> 00:14:53,680 Men hvis jeg ls, bindestreg, en, jeg har stadig dot og prik, prik, fordi prik refererer til 291 00:14:53,680 --> 00:14:54,480 den aktuelle mappe. 292 00:14:54,480 --> 00:14:56,170 Og prik, prik refererer til forrige mappe. 293 00:14:56,170 --> 00:14:58,700 Og de vil altid eksistere, uanset den mappe du er i. 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Og det er en helt unødvendig kommando, men touch. 296 00:15:09,010 --> 00:15:11,880 Jeg er bare at bruge det, fordi det er en nem måde at oprette filer. 297 00:15:11,880 --> 00:15:16,180 Så røre ved en, touch b, touch c er blot kommer til at lave tre filer, der kaldes en, 298 00:15:16,180 --> 00:15:17,845 b og c, der er helt tom. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Så pointen mig skabe dem i den første sted er lige så rm er 301 00:15:24,980 --> 00:15:26,250 hvordan vi kan fjerne dem. 302 00:15:26,250 --> 00:15:27,850 Så rm en. 303 00:15:27,850 --> 00:15:30,960 Det kommer til at spørge mig, fjerne regelmæssig tom fil a? 304 00:15:30,960 --> 00:15:33,170 Og så vil jeg sige ja. 305 00:15:33,170 --> 00:15:39,090 >> Så hvis jeg ved med sikkerhed, at jeg ønsker at slette filen uden at skulle være 306 00:15:39,090 --> 00:15:44,500 bedt om det, fjerne regelmæssig tom fil?, så rm, bindestreg, f kommer til at være den 307 00:15:44,500 --> 00:15:48,230 flag, der siger, tvinge fjerne uden Endda uden at spørge mig, åh, er du 308 00:15:48,230 --> 00:15:49,710 sikker på du ønsker at slette filen? 309 00:15:49,710 --> 00:15:50,810 Ja, jeg er sikker. 310 00:15:50,810 --> 00:15:56,050 Så rm, bindestreg, fb vil bare gøre det uden at spørge. 311 00:15:56,050 --> 00:15:57,950 >> Så lad os gøre nogle flere mapper. 312 00:15:57,950 --> 00:16:03,670 mkdir, TMP2, cd, TMP2, røre ved en, touch-B. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Så nu ønsker jeg at fjerne TMP2 som en mappe. 315 00:16:08,180 --> 00:16:10,316 Så rm TMP2. 316 00:16:10,316 --> 00:16:12,920 Du kan ikke fjerne TMP2, det er en mappe. 317 00:16:12,920 --> 00:16:21,370 Så spørgsmålet her er, at rm ikke straks arbejde på mapper. 318 00:16:21,370 --> 00:16:26,530 Det er kun beregnet til filer som ikke-biblioteksfiler. 319 00:16:26,530 --> 00:16:30,800 >> Og så hvad vi kan gøre her er rm, bindestreg, r. 320 00:16:30,800 --> 00:16:35,160 Det står for rekursivt, hvilket måske ikke betyder noget for dig endnu. 321 00:16:35,160 --> 00:16:38,280 Men når du kommer til rekursion det vil betyde mere. 322 00:16:38,280 --> 00:16:43,540 Så rm, bindestreg, r, TMP2 kommer til at rekursivt gå ind i denne mappe. 323 00:16:43,540 --> 00:16:45,540 Så ned i mappen TMP2? 324 00:16:45,540 --> 00:16:47,330 Ja, lad os gå ind i det. 325 00:16:47,330 --> 00:16:49,360 Ønsker vi at fjerne TMP2 / a? 326 00:16:49,360 --> 00:16:49,745 Ja. 327 00:16:49,745 --> 00:16:51,830 Ønsker vi at fjerne TMP2 / b? 328 00:16:51,830 --> 00:16:52,840 Ja. 329 00:16:52,840 --> 00:16:55,170 Nu ønsker vi at fjerne mappen TMP2? 330 00:16:55,170 --> 00:16:56,040 Ja. 331 00:16:56,040 --> 00:16:58,410 Og så nu biblioteket og alt inde 332 00:16:58,410 --> 00:16:59,660 det er blevet fjernet. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Der er teknisk set en kommando rmdir som du kan bruge til at fjerne 335 00:17:07,250 --> 00:17:11,670 mapper, men det virker kun på tomme mapper alligevel. 336 00:17:11,670 --> 00:17:14,109 Og for at se det, så lad os bare gøre mkdir, TMP2 igen. 337 00:17:14,109 --> 00:17:15,940 TMP2, røre ved en. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Så hvis jeg prøver at fjerne dirtmp2, vil det sige, biblioteket ikke er tom. 340 00:17:22,770 --> 00:17:29,540 Så jeg temmelig aldrig bruge remove dir kommando alligevel, fordi rm, bindestreg, 341 00:17:29,540 --> 00:17:35,140 r vil arbejde på tomme mapper og ikke-tomme mapper. 342 00:17:35,140 --> 00:17:37,760 >> Og også, hvis jeg ikke ønsker at skulle gå igennem hele denne proces 343 00:17:37,760 --> 00:17:40,720 faldende i mappen og fjerne hver enkelt fil, rm, 344 00:17:40,720 --> 00:17:44,190 bindestreg, rf, TMP2. 345 00:17:44,190 --> 00:17:45,670 Og nu er det væk. 346 00:17:45,670 --> 00:17:51,220 >> Noget at være forsigtig om, er rm, bindestreg, rf. 347 00:17:51,220 --> 00:17:53,660 Og det skræmmer mig at selv skrive det, fordi hvis jeg ved et uheld 348 00:17:53,660 --> 00:17:55,090 trykke Enter eller noget. 349 00:17:55,090 --> 00:18:02,735 Så rm, bindestreg, rf, tilde ville, uden spørge mig, har f ikke anledning 350 00:18:02,735 --> 00:18:05,670 mig, vil det automatisk fjerne Hele mit hjem bibliotek, og 351 00:18:05,670 --> 00:18:06,780 alt i den. 352 00:18:06,780 --> 00:18:11,460 Så du tror måske det er en dum ting at gøre. 353 00:18:11,460 --> 00:18:12,830 Og godt, det er. 354 00:18:12,830 --> 00:18:18,600 >> Men det kan ske meget let ved ulykke, hvis, siger, jeg ønskede at fjerne 355 00:18:18,600 --> 00:18:21,640 min slash, vhost bibliotek. 356 00:18:21,640 --> 00:18:26,610 Og bare i hurtig indtastning, Jeg ved et uheld gøre dette. 357 00:18:26,610 --> 00:18:31,880 Det vil fjerne rekursivt både min hjemmebibliotek og vhost biblioteket 358 00:18:31,880 --> 00:18:35,450 i dette særlige bibliotek, der bare tilfældigvis ikke eksisterer lige nu. 359 00:18:35,450 --> 00:18:39,520 Men det ville stadig fjerne Hele mit hjem bibliotek. 360 00:18:39,520 --> 00:18:43,090 Mindst ved ikke at have en f, det ville bede mig først. 361 00:18:43,090 --> 00:18:45,670 Og jeg ville være ligesom, åh, nej, jeg ønsker ikke at gøre det. 362 00:18:45,670 --> 00:18:50,570 Men folk, skråstreg, herunder mig en tendens til at komme ind i 363 00:18:50,570 --> 00:18:53,090 vane altid rf-ing. 364 00:18:53,090 --> 00:18:58,713 Selv almindelige filer, som jeg bare kan RM, c, jeg har en tendens til bare rm, bindestreg, rf, ca. 365 00:18:58,713 --> 00:19:01,330 Bare vær forsigtig, når du er rf-ing. 366 00:19:01,330 --> 00:19:03,160 >> SPEAKER 4: Hvad betyder C gøre? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C er, jeg taler om, at C-fil i denne mappe, at rm, ca. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: Og mere faretruende, hvis du bruger en stjerne, henviser det til alt i 369 00:19:15,730 --> 00:19:16,450 Vejviseren. 370 00:19:16,450 --> 00:19:20,040 Så hvad jeg normalt har en tendens til at gøre, er jeg nok gå ind i en mappe, og jeg ønsker at 371 00:19:20,040 --> 00:19:21,510 fjerne alle de filer derinde. 372 00:19:21,510 --> 00:19:23,640 Så rm, bindestreg, rf, stjerne. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Ja. 374 00:19:25,700 --> 00:19:26,780 Rm, bindestreg, rf, stjerne. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: Og hvis du ikke er forsigtig hvad mappe du befinder dig i - 376 00:19:29,530 --> 00:19:33,340 Jeg var ikke i temp, men jeg var et uheld i mit hjem bibliotek, 377 00:19:33,340 --> 00:19:35,450 så vil jeg fjerne alt i mit hjem bibliotek. 378 00:19:35,450 --> 00:19:39,095 Og jeg har faktisk gjort det før, og Jeg tror, ​​du har gjort dette før eller 379 00:19:39,095 --> 00:19:40,640 Jay har gjort det før. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Jeg har ved et uheld fjernet - 381 00:19:42,480 --> 00:19:44,480 så ignorere denne kommando for lidt. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Ikke sjovt. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Så i skråstreg bin bibliotek er en bundt af binære filer, hvor der vil vær 384 00:19:52,650 --> 00:19:54,840 være kendte dem som klang. 385 00:19:54,840 --> 00:20:00,740 Nå, clang og dybest set alle disse ting, som jeg kører på kommando 386 00:20:00,740 --> 00:20:02,060 linje er i denne skråstreg bin. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Ligesom ls er i her. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Så dot, skråstreg, ls ville liste denne mappe. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm er også i denne mappe. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Jeg har ved et uheld RM, rf-ed bin, som fjernede enhver kommando jeg kunne 391 00:20:12,770 --> 00:20:14,380 eventuelt nogensinde ønsker. 392 00:20:14,380 --> 00:20:18,085 Hvilket så jeg bare geninstallere en ny Appliance på dette punkt. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Så vær meget forsigtig, når du bruger denne kommando. 394 00:20:20,170 --> 00:20:21,120 >> PUBLIKUM: [uhørligt]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Ja. 396 00:20:22,640 --> 00:20:24,135 Det er også en dårlig vane at komme ind. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Hvis du bemærker, er jeg nu - 399 00:20:30,170 --> 00:20:33,580 godt, kan du ikke mærke, men mit zoom-in måske kan. 400 00:20:33,580 --> 00:20:35,360 Så jeg er nu root @ apparatet. 401 00:20:35,360 --> 00:20:39,790 Så jharvard er brugeren, vi ønsker du altid bruge. 402 00:20:39,790 --> 00:20:43,820 Root er den bruger, der har tilladelse at gøre hvad som helst. 403 00:20:43,820 --> 00:20:50,260 >> Så mærke til, når jeg er jharvard, hvis jeg prøver at cd - 404 00:20:50,260 --> 00:20:52,461 hvad er en mappe, der? 405 00:20:52,461 --> 00:20:53,980 Åh, rod er et godt eksempel. 406 00:20:53,980 --> 00:20:54,950 Så cd, rod. 407 00:20:54,950 --> 00:20:56,030 Tilladelse nægtet. 408 00:20:56,030 --> 00:21:00,060 For hvis vi ser på denne liste - 409 00:21:00,060 --> 00:21:02,410 og igen, behøver du ikke at helt forstå dette. 410 00:21:02,410 --> 00:21:09,210 Men disse tre streger siger som ikke lader nogen anden 411 00:21:09,210 --> 00:21:11,120 bruger i denne mappe. 412 00:21:11,120 --> 00:21:14,540 Og biblioteket sker være ejet af brugeren root. 413 00:21:14,540 --> 00:21:20,310 >> Så det faktum, at jeg er jharvard og nej en, der ikke rod er tilladt ind 414 00:21:20,310 --> 00:21:23,490 denne mappe, det betyder, at jeg er kommer til at få tilladelse nægtet når jeg 415 00:21:23,490 --> 00:21:25,160 prøv at cd ind i det. 416 00:21:25,160 --> 00:21:31,370 Så når jeg rod, jeg har tilladelse til at gøre absolut alt, herunder 417 00:21:31,370 --> 00:21:34,660 slette vigtige filer på apparatet og 418 00:21:34,660 --> 00:21:36,640 ødelægge hele ting. 419 00:21:36,640 --> 00:21:41,240 >> Så det er en dårlig vane at komme ind blot går rundt dit 420 00:21:41,240 --> 00:21:43,650 operativsystem som root. 421 00:21:43,650 --> 00:21:46,520 Jeg gør det alligevel. 422 00:21:46,520 --> 00:21:48,710 Spørgsmål? 423 00:21:48,710 --> 00:21:52,230 Og jeg vil afslutte rod, ophold som jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Flere relevante kommandoer. 426 00:21:55,820 --> 00:22:03,975 Så gå tilbage i vores temp, den Kommandoen mv står for træk. 427 00:22:03,975 --> 00:22:05,450 Du kan flytte et. 428 00:22:05,450 --> 00:22:07,610 Nu ønsker vi at kalde det b, så nu er det hedder b.. 429 00:22:07,610 --> 00:22:10,650 Eller måske vi ønsker at flytte b et bibliotek op. 430 00:22:10,650 --> 00:22:12,730 Så nu denne mappes tom. 431 00:22:12,730 --> 00:22:15,410 Jeg vil gå tilbage til mit hjem bibliotek, og vi se, at b er her, fordi 432 00:22:15,410 --> 00:22:19,230 home bibliotek var en mappe op fra den mappe, B havde været i. 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Der er også cp. 435 00:22:26,580 --> 00:22:33,210 Så cp er kopiere super sektion, dot, tekst. 436 00:22:33,210 --> 00:22:35,750 Jeg kan kalde det er, prik, tekst. 437 00:22:35,750 --> 00:22:39,780 Nu har vi begge super sektion, prik, tekst og s, prik, tekst. 438 00:22:39,780 --> 00:22:41,340 Dette virker også på mapper. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Jeg rF-ed en enkelt fil. 441 00:22:46,560 --> 00:22:48,200 Så cp - 442 00:22:48,200 --> 00:22:51,710 Nå, lad os prøve cp, tmp, TMP2. 443 00:22:51,710 --> 00:22:53,220 Så udelade mappen tmp. 444 00:22:53,220 --> 00:22:57,440 Så ligner RM, standard opførsel er ikke at arbejde på mapper. 445 00:22:57,440 --> 00:23:01,570 >> Og igen, svarende til RM, standard adfærd - godt, at få det til at virke 446 00:23:01,570 --> 00:23:04,230 med mapper er en, streg-r væk. 447 00:23:04,230 --> 00:23:09,240 Så kopiere rekursivt temp biblioteket i TMP2. 448 00:23:09,240 --> 00:23:13,700 Og så nu har vi både TMP og TMP2, og det er ikke så nyttigt, da tmp 449 00:23:13,700 --> 00:23:16,814 var tom i første omgang. 450 00:23:16,814 --> 00:23:18,660 TMP2. 451 00:23:18,660 --> 00:23:22,680 >> Lad os nu kopiere tmp i TMP2. 452 00:23:22,680 --> 00:23:27,900 Og vi ser, at TMP2 har også filen en, fordi biblioteket og 453 00:23:27,900 --> 00:23:32,220 alt inde i det mappe er kopieret. 454 00:23:32,220 --> 00:23:36,000 Og det kan være noget nyttigt hvis siger du arbejder 455 00:23:36,000 --> 00:23:38,860 på problemet indstille en - 456 00:23:38,860 --> 00:23:41,320 eller faktisk, senere problem sæt er endnu vigtigere, fordi der 457 00:23:41,320 --> 00:23:43,660 vil være en hel flok af filer og ting. 458 00:23:43,660 --> 00:23:47,010 >> Men du blot ønsker at for en split sekund, du kan lide, okay, jeg er 459 00:23:47,010 --> 00:23:50,210 kommer til at prøve noget anderledes. 460 00:23:50,210 --> 00:23:57,860 Lad mig bare kopiere hele min pset1 biblioteket i pset1 sikkerhedskopi, så hvis 461 00:23:57,860 --> 00:24:01,490 Jeg ender skrue tingene op, kan jeg gå tilbage til min backup mappe. 462 00:24:01,490 --> 00:24:07,340 Der er mere hensigtsmæssige måder versionering sikkerhedskopiere din kode, men 463 00:24:07,340 --> 00:24:10,610 det er altid en hurtig måde at bare gøre at du har en kopi af noget 464 00:24:10,610 --> 00:24:11,860 at du er ved at ændre. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Så ekko er også en one-off kommando, slags sillily vil bare udskrive til 467 00:24:27,090 --> 00:24:31,540 kommandolinje præcis, hvad du ønskede at ekko. 468 00:24:31,540 --> 00:24:32,680 Så echo hej. 469 00:24:32,680 --> 00:24:35,420 Vi vil bare udskrive hej. 470 00:24:35,420 --> 00:24:38,030 Echo hej verden. 471 00:24:38,030 --> 00:24:39,800 Vi vil udskrive hej verden. 472 00:24:39,800 --> 00:24:44,350 Der kommer i brug, når du begynde at kombinere kommandoer. 473 00:24:44,350 --> 00:24:48,300 >> Og igen, forventer ikke, at du helt forstå det endnu, men det er 474 00:24:48,300 --> 00:24:49,910 noget at se. 475 00:24:49,910 --> 00:24:52,470 Og så hvis du Googling for eksempler eller du indser du ønsker at gøre 476 00:24:52,470 --> 00:24:55,030 noget, kan det være nyttigt. 477 00:24:55,030 --> 00:24:59,020 Så lad os, som et eksempel, så ls, bindestreg, l. 478 00:24:59,020 --> 00:25:01,160 Så her ser jeg output af ls, bindestreg, l.. 479 00:25:01,160 --> 00:25:06,560 Og jeg siger, OK, jeg ønsker at gemme det i en fil. 480 00:25:06,560 --> 00:25:11,620 Alt dette output her, jeg vil at sætte ind i en separat fil. 481 00:25:11,620 --> 00:25:16,080 >> Så denne lille større end symbol er, hvad vi vil kalde. 482 00:25:16,080 --> 00:25:18,570 Vi omdirigere output til en fil. 483 00:25:18,570 --> 00:25:21,680 Lad os kalde filen bla, fordi det er hvad jeg har en tendens til altid kalde det. 484 00:25:21,680 --> 00:25:26,430 Så nu ser vi, at vi har et fil bla lige her. 485 00:25:26,430 --> 00:25:30,270 Og hvis jeg åbner den op, vil jeg se, det er præcis output fra kommandoen 486 00:25:30,270 --> 00:25:31,990 at jeg løb bare. 487 00:25:31,990 --> 00:25:36,020 Og på samme måde, kan du - 488 00:25:36,020 --> 00:25:41,260 hvis dette var output til en fil, denne er at få input fra en fil. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Hvad er en kommando, som jeg - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Jeg tror, ​​du kan bruge mere eller mindre, sandsynligvis. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Men hvad bare mindre bla? 493 00:25:53,031 --> 00:25:53,930 Det ved jeg ikke. 494 00:25:53,930 --> 00:25:57,870 Hvis du kommer ind i dette scenario, ligesom der er psets, at det er nyttigt for. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Du kan rør det i ekko. 496 00:25:59,950 --> 00:26:02,920 Pipe filen i ekko at se det. 497 00:26:02,920 --> 00:26:04,060 >> ROB: det er rør. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Undskyld. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Okay. 500 00:26:06,190 --> 00:26:12,720 Så dette er output til en fil. 501 00:26:12,720 --> 00:26:18,700 Det er at få teksten fra filen og udlevere dem til programmet. 502 00:26:18,700 --> 00:26:20,560 Og du vil også se denne fyr. 503 00:26:20,560 --> 00:26:24,410 Så dette er en slags gør begge på én gang. 504 00:26:24,410 --> 00:26:28,310 Og faktisk vil jeg præsentere to nye kommandoer bare for at gøre brug af det. 505 00:26:28,310 --> 00:26:33,060 >> Historien er en handy kommando, der er lige kommer til at udskrive en liste over 506 00:26:33,060 --> 00:26:34,940 noget jeg nogensinde har kørt en kommandolinje. 507 00:26:34,940 --> 00:26:38,290 Så vi ser her, alt det, jeg har kørt hele denne tid. 508 00:26:38,290 --> 00:26:39,540 Masser af ls er. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> Og en anden nyttig kommando er grep at dens formål er at søge over 511 00:26:48,470 --> 00:26:52,060 tekst leder efter mønstre, ja, leder efter hvad du 512 00:26:52,060 --> 00:26:53,310 ønsker det skal se efter. 513 00:26:53,310 --> 00:26:59,770 Og så en praktisk anvendelse her er, siger vi ønsker at få fat i historien. 514 00:26:59,770 --> 00:27:03,860 Og jeg ønsker at søge efter kommandoerne hvor jeg - hvad er en 515 00:27:03,860 --> 00:27:05,000 nyttigt en til at kigge efter? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [uhørligt]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Eller lad os bare kigge efter alle rører, uanset årsagen. 518 00:27:09,710 --> 00:27:13,850 Så dette er hvad det vil se ud. 519 00:27:13,850 --> 00:27:15,560 Og du behøver ikke helt at forstå det. 520 00:27:15,560 --> 00:27:20,570 Men ideen er her, er historie giver det samme output det gjorde here 521 00:27:20,570 --> 00:27:25,030 hvor det er at udskrive hele historie af alt, jeg nogensinde har kørt. 522 00:27:25,030 --> 00:27:27,030 Vi derefter passerer det - 523 00:27:27,030 --> 00:27:30,230 så i stedet for at udskrive det til skærmen, vi ønsker at videregive det til 524 00:27:30,230 --> 00:27:34,640 kommando grep der er på udkig efter alle forekomster af ordet berøring. 525 00:27:34,640 --> 00:27:40,280 >> Og så ved hjælp af denne kombination af værktøjer historie og grep, kan jeg se, OK, 526 00:27:40,280 --> 00:27:44,820 her er alle de kommandoer, jeg nogensinde har løbe, og her er en noget fælles én. 527 00:27:44,820 --> 00:27:45,510 Vi er i bunden. 528 00:27:45,510 --> 00:27:47,930 Og det er også at give mig kommandoen Jeg løb bare der havde 529 00:27:47,930 --> 00:27:51,240 Ordet røre i det. 530 00:27:51,240 --> 00:27:58,500 Men røret er en temmelig nyttig ting for at kombinere flere programmer. 531 00:27:58,500 --> 00:28:04,670 Og faktisk, det er en genvej for lad mig output historie at indgive blah, og 532 00:28:04,670 --> 00:28:10,190 lad mig grep bruge fil blah som hvad jeg ønsker at kigge forbi. 533 00:28:10,190 --> 00:28:13,460 Så røret er blot en genvej for disse to kommandoer. 534 00:28:13,460 --> 00:28:13,950 Ja. 535 00:28:13,950 --> 00:28:15,306 >> SPEAKER 4: [uhørligt]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Ja. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Hvad er - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Lad os prøve. 541 00:28:24,820 --> 00:28:29,170 Så kat, hund, fisk. 542 00:28:29,170 --> 00:28:33,770 Så jeg vil til grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, igen, kommer til at være rekursivt, så jeg vil gerne ned ned 544 00:28:37,680 --> 00:28:38,870 alle mapper. 545 00:28:38,870 --> 00:28:43,210 Jeg ønsker at rekursivt grep for alle - og lad mig midlertidigt få 546 00:28:43,210 --> 00:28:44,460 dette ud af vejen. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Ignorer mig. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Så jeg vil gerne midlertidigt grep for alle forekomster af ordet fisk. 551 00:28:56,740 --> 00:29:00,510 Og så her, hvad jeg gør er grepping rekursivt for ordet fisk. 552 00:29:00,510 --> 00:29:05,410 Og stjerne betyder over alle disse filer i denne mappe. 553 00:29:05,410 --> 00:29:08,930 Og så det gav mig en Permission Denied, fordi det ikke er tilladt at læse, at 554 00:29:08,930 --> 00:29:10,060 bestemt fil. 555 00:29:10,060 --> 00:29:14,040 Men det fandt fisk i filen, test. 556 00:29:14,040 --> 00:29:18,450 >> Jeg kunne også sige specifikt, jeg kun ønsker at se i filen bla, i 557 00:29:18,450 --> 00:29:19,580 hvilket tilfælde det ikke vil finde noget. 558 00:29:19,580 --> 00:29:20,990 Jeg ønsker kun at kigge i filen, test. 559 00:29:20,990 --> 00:29:22,240 Det vil finde fisk. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Det er en temmelig nyttig kommando at vide i almindelighed. 562 00:29:29,260 --> 00:29:31,640 Der er nogle alternativer til grep der formodes at være mere 563 00:29:31,640 --> 00:29:36,780 programmør venlige, men jeg har en tendens til stadig at falde tilbage på grep. 564 00:29:36,780 --> 00:29:38,030 Spørgsmål? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Er der andre kommandoer? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Blot en one-off, som jeg altid finde på at være sjove er cal. 570 00:29:48,370 --> 00:29:55,610 Så mærke til, når jeg er i denne dejlige fuld skærm, jeg har ingen lignende top 571 00:29:55,610 --> 00:29:56,720 værktøjslinje eller noget. 572 00:29:56,720 --> 00:29:59,530 Så cal bare giver mig en dejlig lille kalender, der er rigtigt 573 00:29:59,530 --> 00:30:02,380 nu afskåret, antager jeg. 574 00:30:02,380 --> 00:30:04,770 Men dejligt lille kommando. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Det er [uhørligt]. 576 00:30:06,540 --> 00:30:09,170 Andre kommandoer, som du måtte have set omfatter klang og gøre. 577 00:30:09,170 --> 00:30:11,180 Vi vil gå over dem i mere detaljeret senere. 578 00:30:11,180 --> 00:30:13,400 Men hvis du har arbejdet på den PSET, skal du være 579 00:30:13,400 --> 00:30:15,160 bekendt med dem. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Okay. 581 00:30:16,640 --> 00:30:18,520 Spørgsmål om kommandolinje ting? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Ok. 584 00:30:23,260 --> 00:30:27,416 Så lad os gå videre til nogle C-relaterede ting. 585 00:30:27,416 --> 00:30:28,666 Variable matematik. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Så ligesom vi havde matematik i Scratch, du kan også bruge matematik i C. 589 00:30:45,230 --> 00:30:49,270 >> Før vi kommer til det helt, så variabler. 590 00:30:49,270 --> 00:30:53,920 Husk, at når du erklære en variabel ligesom int x eller float y, du 591 00:30:53,920 --> 00:30:56,710 nødt til at give det at skrive før variabelnavnet. 592 00:30:56,710 --> 00:31:03,020 Så typer, vi har set hidtil, er int, float, dobbelt, lang lang, hvilket jeg 593 00:31:03,020 --> 00:31:06,150 faktisk ikke ved, om vi har ses, at hidtil. 594 00:31:06,150 --> 00:31:07,700 >> Der er nogle andre. 595 00:31:07,700 --> 00:31:09,990 Vi har se char. 596 00:31:09,990 --> 00:31:13,920 Der er kort, der er som det er modsatte af lang lang, hvor det er 597 00:31:13,920 --> 00:31:16,650 mindre end et heltal. 598 00:31:16,650 --> 00:31:18,580 Vi har også set streng. 599 00:31:18,580 --> 00:31:23,070 Så hvad er det særlige ved streng? 600 00:31:23,070 --> 00:31:25,350 Hvorfor skulle jeg sige, det er ikke helt som int? 601 00:31:25,350 --> 00:31:27,030 >> SPEAKER 4: Det er ikke rigtig eksisterer. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Ja. 603 00:31:27,990 --> 00:31:31,820 Så den eneste grund til at vi har snor er fordi, når du gør 604 00:31:31,820 --> 00:31:33,215 hash, omfatter cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 Og vi vil se eksempler på dette senere - åh, betyder det ikke håndtere det godt - 607 00:31:42,670 --> 00:31:46,160 hvor cs50.h laver noget i retning af typen 608 00:31:46,160 --> 00:31:49,230 def, char stjerne, streng. 609 00:31:49,230 --> 00:31:53,280 >> Og så siger, at vi ikke engang vide, hvad en char stjerne er endnu. 610 00:31:53,280 --> 00:31:56,770 Men det siger vi ønsker streng. 611 00:31:56,770 --> 00:32:00,250 Ethvert sted du har brugt streng, du kunne have brugt char stjerne, 612 00:32:00,250 --> 00:32:04,670 som faktisk er en type, der findes i C-sprog. 613 00:32:04,670 --> 00:32:06,680 Men vi vil komme til at. 614 00:32:06,680 --> 00:32:07,860 Åh, og det går helt tilbage. 615 00:32:07,860 --> 00:32:10,170 Neat. 616 00:32:10,170 --> 00:32:15,370 >> Så samme med bool hvor sandt og falsk. 617 00:32:15,370 --> 00:32:22,510 Det er egentlig ikke en indbygget type C. I stedet er det bare, har det 618 00:32:22,510 --> 00:32:23,740 værdien nul? 619 00:32:23,740 --> 00:32:26,200 Så vil vi lige overveje det at være falsk. 620 00:32:26,200 --> 00:32:27,350 Har dette værdien - 621 00:32:27,350 --> 00:32:30,530 godt, har det nogen værdi, der ikke er nul? 622 00:32:30,530 --> 00:32:32,200 Så vil vi anser det for at være sandt. 623 00:32:32,200 --> 00:32:35,940 Så man er sandt, to er sandt, noget nonzero er sandt. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Så det er dem. 626 00:32:42,790 --> 00:32:47,624 Spørgsmål om at erklære variabler og variable typer og alt det? 627 00:32:47,624 --> 00:32:48,100 Ja. 628 00:32:48,100 --> 00:32:52,384 >> SPEAKER 4: For lang lang, i bogen, det sagde det skulle være lang lang int. 629 00:32:52,384 --> 00:32:54,288 Men vil bare lang lang arbejde? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Så disse type modifikatorer. 632 00:33:01,470 --> 00:33:04,170 Så int x. 633 00:33:04,170 --> 00:33:07,710 Så kan vi også sige unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Vi kan sige kort int x. 635 00:33:09,640 --> 00:33:12,570 Vi kan sige lang lang int x. 636 00:33:12,570 --> 00:33:17,250 Men temmelig meget nogen af ​​disse ting, jeg lige har sagt, unsigned int, kort int, 637 00:33:17,250 --> 00:33:21,480 lang lang int, kan du slippe af med INT og det vil bare antage 638 00:33:21,480 --> 00:33:22,510 at du mente int. 639 00:33:22,510 --> 00:33:26,045 Så usignerede x, hvilket blot betyder - 640 00:33:26,045 --> 00:33:29,400 du ved, hvor der normalt med en int, du kan sige x lig negativ 3? 641 00:33:29,400 --> 00:33:31,636 Med en usigneret int, kan du ikke. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: Og igen, for kameraet, Spørgsmålet var, hvad er forskellen 643 00:33:34,480 --> 00:33:37,796 mellem lang lang int og lige længe længe? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Ja. 645 00:33:38,410 --> 00:33:42,850 Så jeg vil næsten aldrig skrive lang lang int. 646 00:33:42,850 --> 00:33:44,100 Jeg vil skrive lang lang. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Eventuelle spørgsmål? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Så dum lille påmindelse om, er, hvordan vi erklærer en variabel og initialisere 652 00:34:02,390 --> 00:34:04,450 de variable og erklære en anden variabel og initialisere 653 00:34:04,450 --> 00:34:05,870 det hele i én arbejdsgang. 654 00:34:05,870 --> 00:34:09,370 Så erklæringen af ​​variable og initialiseringen variabel ikke har 655 00:34:09,370 --> 00:34:11,120 til, men kan være på den samme linje. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Så vi har standard matematiske operatører at du er vant til - 658 00:34:20,060 --> 00:34:22,199 plus, minus, dividere, gange. 659 00:34:22,199 --> 00:34:24,389 Der er også modulo, som vi vil se. 660 00:34:24,389 --> 00:34:29,060 Der er ikke, i det mindste C, en indbygget magt 661 00:34:29,060 --> 00:34:31,765 eksponentiering indskudsmærke operatør. 662 00:34:31,765 --> 00:34:33,770 Tja, der er en hat operatør, men det er ikke magt. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Men det er ikke eksponentiering, Ja. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Brug ikke indskudsmærke at antage, at det betyder 665 00:34:36,210 --> 00:34:39,980 ligesom firkantede eller hvad. 666 00:34:39,980 --> 00:34:42,289 Så nogle ting at huske på tankerne om division. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Jeg vil stå. 669 00:34:48,880 --> 00:34:51,315 Så erklærede initialisere svar. 670 00:34:51,315 --> 00:34:54,670 Så vi siger float svar lig med 1 divideret med 10. 671 00:34:54,670 --> 00:34:57,500 Udskriv svar til to decimaler. 672 00:34:57,500 --> 00:35:02,180 >> Og dette er den slags ting, jeg ville mennesket printf at regne ud, at 673 00:35:02,180 --> 00:35:05,110 hvad dælen betyder%, prik, mener 2f? 674 00:35:05,110 --> 00:35:07,930 Og det betyder bare, ja, ignorere 0.2. 675 00:35:07,930 --> 00:35:10,420 Og% f er, hvad vi bruger at udskrive til at flyde. 676 00:35:10,420 --> 00:35:15,370 0,2 siger, print, flyde til to decimaler. 677 00:35:15,370 --> 00:35:19,600 Så dette program har en fejl, og du kan har set det før i nogle 678 00:35:19,600 --> 00:35:20,870 før CS kursus. 679 00:35:20,870 --> 00:35:22,170 Men hvad er det bug? 680 00:35:22,170 --> 00:35:23,050 >> SPEAKER 5: Zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Ja. 682 00:35:24,130 --> 00:35:29,630 Så når vi siger, er lig med svar 1 divideret med 10, vi ønsker 683 00:35:29,630 --> 00:35:31,610 besvare til 0,1. 684 00:35:31,610 --> 00:35:37,450 Men 1 divideret med 10, 1 er en heltal, 10 er et heltal. 685 00:35:37,450 --> 00:35:41,060 Og så når vi gør et heltal divideret med et heltal, vi kommer til at komme tilbage 686 00:35:41,060 --> 00:35:42,190 et heltal. 687 00:35:42,190 --> 00:35:43,660 Så 1 divideret med 10 er 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Da det er nødvendigt at give os et heltal, det er bare at smide væk, at 689 00:35:46,760 --> 00:35:49,410 decimal og sige, at svaret er 0. 690 00:35:49,410 --> 00:35:55,314 Og så når vi udskriver besvare her, det kommer til at udskrive 0.00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: Og lige som en note, er det faktisk smider, hvad der er efter 692 00:35:58,430 --> 00:35:59,390 kommaet. 693 00:35:59,390 --> 00:36:03,180 Så hvis du i stedet havde 6 divideret med 10, du måske tror, ​​at det ville give dig 694 00:36:03,180 --> 00:36:05,200 0,6 og så ville du runde op til 1. 695 00:36:05,200 --> 00:36:10,520 Men faktisk, hvad der sker, når det skriver opgaver, det er, at det falder, hvad der er 696 00:36:10,520 --> 00:36:11,470 efter kommaet. 697 00:36:11,470 --> 00:36:13,020 Så 0,6 gør bliver 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Ja. 699 00:36:13,370 --> 00:36:15,160 Og vi vil sige truncate for. 700 00:36:15,160 --> 00:36:21,760 Så når du kaster til en int, decimalen er afkortet. 701 00:36:21,760 --> 00:36:23,980 Så fix for det - der er faktisk to. 702 00:36:23,980 --> 00:36:27,890 Og jeg har tænkt mig at gøre det andet fordi denne ene er en meget nemmere fix. 703 00:36:27,890 --> 00:36:32,670 >> Så en fix er at bruge flåd i divisionen. 704 00:36:32,670 --> 00:36:34,720 Og virkelig, du kun behøver at gøre en af ​​dem en float. 705 00:36:34,720 --> 00:36:37,400 Men det er noget klarere bare at gøre dem begge flyder. 706 00:36:37,400 --> 00:36:41,170 Så 1,0 divideret med 10,0 er dividere to flydere. 707 00:36:41,170 --> 00:36:43,970 Så svaret vil ende med at blive en float, og så vil du 708 00:36:43,970 --> 00:36:48,050 korrekt udskrive 0.10 her. 709 00:36:48,050 --> 00:36:52,220 >> Noget, der ikke fungerer så godt om der er, ja, ja, det var let 710 00:36:52,220 --> 00:36:56,240 nok til at konvertere 1 til en flyde ved at gøre det 1.0. 711 00:36:56,240 --> 00:37:02,180 Men hvad hvis man i stedet havde vi to heltal ligesom int x er lig med 1 og int y 712 00:37:02,180 --> 00:37:05,660 lig 10, og så ville vi at gøre x divideret med y? 713 00:37:05,660 --> 00:37:10,420 Så det er ikke nemt at bare gøre X.0 eller noget. 714 00:37:10,420 --> 00:37:12,790 >> Så fix til, der er udslagsgivende. 715 00:37:12,790 --> 00:37:19,780 Så støbning er en måde i C for at omdanne fra én variabel til en anden. 716 00:37:19,780 --> 00:37:22,320 Så her, 1 er et helt tal. 717 00:37:22,320 --> 00:37:27,050 Og ved at sætte denne float foran det, vi casting 1 til en float. 718 00:37:27,050 --> 00:37:30,350 Og så dette vil konvertere 1 til 1,0. 719 00:37:30,350 --> 00:37:33,380 Og det vil konvertere 10 til et 10,0. 720 00:37:33,380 --> 00:37:36,790 >> Og så tingene opfører sig på samme måde som tidligere version vi bare viste 721 00:37:36,790 --> 00:37:42,190 hvor, som forventet, får vi 0.10 og det vil udskrive det. 722 00:37:42,190 --> 00:37:44,120 Og vi kan gøre dette med variabler, også. 723 00:37:44,120 --> 00:37:47,376 Så vi kan sige, float x divideret med float y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Eventuelle spørgsmål? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Så ligesom i almindelig matematik, vi har operatør forrang. 727 00:38:00,090 --> 00:38:06,960 Så i matematik klasse, er du mere tilbøjelige at kalde det rækkefølgen af ​​operationer. 728 00:38:06,960 --> 00:38:09,890 Her den officielle betegnelse er operatør forrang. 729 00:38:09,890 --> 00:38:15,230 Men operatøren forrang, eller de fleste operatører, er som du ville forvente. 730 00:38:15,230 --> 00:38:22,660 >> Så ligesom i matematik, 2 gange 10 er kommer til at blive grupperet nøjere end 731 00:38:22,660 --> 00:38:25,410 denne 10 divideret med 2 og derefter 2. 732 00:38:25,410 --> 00:38:29,745 Rækkefølgen af ​​operationer, vil det gøre 2 gange 10, 10 divideret med 2 og derefter 733 00:38:29,745 --> 00:38:32,720 det vil gøre 20 plus 5 plus 2. 734 00:38:32,720 --> 00:38:37,020 Så det er som forventet, og du kan bruge parenteser til at gruppere udtryk. 735 00:38:37,020 --> 00:38:41,063 Du kan ikke bruge kantede parenteser at gruppere udtryk. 736 00:38:41,063 --> 00:38:41,544 Ja? 737 00:38:41,544 --> 00:38:43,468 >> SPEAKER 5: Kunne du rent faktisk bare gå et sekund? 738 00:38:43,468 --> 00:38:47,316 Kan du kaster en int til en streng? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Så i C, du kan kaste noget du ønsker at noget, du ønsker. 740 00:38:53,330 --> 00:38:55,600 Det betyder ikke, det er en god ting at gøre. 741 00:38:55,600 --> 00:38:59,760 Så når du kaster en int til en streng, det betyder - 742 00:38:59,760 --> 00:39:03,240 og vi vil komme ind i dette langt mere grundigt - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Meget senere. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Jeg ønskede ikke at sige meget senere, så jeg prøvede at ændre min sætning. 745 00:39:06,840 --> 00:39:13,370 Vi vil komme ind i det meget mere grundigt senere hvor virkelig når du har en 746 00:39:13,370 --> 00:39:14,810 streng variabel - 747 00:39:14,810 --> 00:39:17,160 så en streng kan være vilkårligt lang, right? 748 00:39:17,160 --> 00:39:21,850 Og vi har sagt, at en int er fire bytes og Lang Lang er otte 749 00:39:21,850 --> 00:39:23,620 byte og en flyder er fire byte. 750 00:39:23,620 --> 00:39:29,520 Så en snor, ligesom en int, kun har et vist antal bytes til det. 751 00:39:29,520 --> 00:39:31,800 Og der vil være fire bytes. 752 00:39:31,800 --> 00:39:34,750 >> Men en streng kan være temmelig vilkårligt længe, ​​right? 753 00:39:34,750 --> 00:39:40,190 Så hej verden allerede, hvis det er 10 tegn eller hvad, det er allerede 754 00:39:40,190 --> 00:39:42,670 kommer til at være over 4 byte Jeg kan passe ind i en streng. 755 00:39:42,670 --> 00:39:51,140 Og så hvordan strings virkelig arbejde, er, at de, hvor i hukommelsen denne streng 756 00:39:51,140 --> 00:39:52,380 bliver holdt. 757 00:39:52,380 --> 00:39:57,290 >> Og så over her, når jeg siger strengen x lig hej verden, inde i x er 758 00:39:57,290 --> 00:40:01,840 siger bare, åh, hej verden er gemt på dette særlige sted i hukommelsen. 759 00:40:01,840 --> 00:40:07,060 Så hvis vi forsøger at kaste et heltal til en snor, så vi prøver at tolke 760 00:40:07,060 --> 00:40:10,500 en tilfældig del af hukommelsen som en streng. 761 00:40:10,500 --> 00:40:14,465 Og der næsten altid bryder ting. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Men hvis det forvirrer dig, vil vi være der dækker det 763 00:40:17,040 --> 00:40:17,550 mere i dybden senere. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Ja. 765 00:40:17,850 --> 00:40:20,540 Det er her, du kommer at komme ind pointere. 766 00:40:20,540 --> 00:40:25,485 Og det er en væsentlig bid på to uger i dette kursus. 767 00:40:25,485 --> 00:40:28,275 >> SPEAKER 6: Virker det som objekter på andre sprog ikke rigtig eller? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Så med andre sprog, genstande ville være repræsenteret ved hjælp af pointers. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Det er ikke det samme, selv om. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Nogen tanker? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Nej. 774 00:40:43,760 --> 00:40:44,185 Ingen tanker. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Næste. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Bare gå med det. 778 00:40:48,255 --> 00:40:48,670 Ok. 779 00:40:48,670 --> 00:40:51,120 Så modulo. 780 00:40:51,120 --> 00:40:53,900 Ligesom vi har plus, minus, dele og formere sig. 781 00:40:53,900 --> 00:40:56,720 Så modulo er en du kan ikke har set før. 782 00:40:56,720 --> 00:40:59,540 Og det bare siger, giver mig resten af. 783 00:40:59,540 --> 00:41:02,850 Så 55% 10. 784 00:41:02,850 --> 00:41:06,840 Den resterende del af at gøre 55 divideret med 10 ville være 5.. 785 00:41:06,840 --> 00:41:09,630 Så 55% 10 er 5. 786 00:41:09,630 --> 00:41:12,260 Og 3% 5 være 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 vil være 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 vil være 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: En ting at bemærke med dette, også, er det måske ikke fungerer som forventet 790 00:41:20,670 --> 00:41:22,700 hvis du bruger et negativt tal. 791 00:41:22,700 --> 00:41:26,215 Så negativ 5% 4, nogle mennesker måske tror det er - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 hvad ville du tænke negativt 5% 4 ville være? 794 00:41:33,808 --> 00:41:34,792 >> SPEAKER 5: One. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Så nogle mennesker siger ét, nogle mennesker siger negativ. 796 00:41:37,920 --> 00:41:38,450 Men hvad - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Jeg ville ikke engang have den ene af dem. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Two, undskyld. 799 00:41:42,370 --> 00:41:43,240 Nogle mennesker siger - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Tre. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Tre? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negativ - 803 00:41:44,890 --> 00:41:45,950 hvad var det - negative fem - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Tre, tre, tre. 805 00:41:47,100 --> 00:41:48,450 Undskyld. 806 00:41:48,450 --> 00:41:51,910 Fordi modulo generelt når du har set det andre steder, det betyder normalt, 807 00:41:51,910 --> 00:41:54,000 returnere et positivt tal, right? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Så når vi siger i matematik,% 10'ere, de har tendens til at ønsker at give dig - 809 00:42:01,160 --> 00:42:05,980 hvis vi Mod af 10, så vi forventer at få et tal mellem 0 og 9. 810 00:42:05,980 --> 00:42:09,860 I her, det er ikke sådan, at du vil få negative tal returneres. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Så negativ 5% 4 vil være negativ 1.. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Men det er sjældent, at du er mod-ing negative tal til at begynde med. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Spring dette. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Ja. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Så en sidste ting at påpege om flåd er det en farlig adfærd, 819 00:42:36,400 --> 00:42:39,850 men flåd er ikke en eksakt repræsentation. 820 00:42:39,850 --> 00:42:46,190 Så gå tilbage til bytes igen, husker at en int altid er fire bytes og et 821 00:42:46,190 --> 00:42:47,830 flyderen altid fire byte. 822 00:42:47,830 --> 00:42:51,340 Så Lucas eksempel er temmelig godt. 823 00:42:51,340 --> 00:42:55,730 >> Så tænk på 1 divideret med 3. 824 00:42:55,730 --> 00:42:57,800 Så 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Hvis jeg har kun 32 bits, hvordan kan Jeg gemmer 0,33333 præcist? 826 00:43:03,540 --> 00:43:07,250 Og måske, uanset af hvilken grund, du siger, okay, ja, lad os bare sige 827 00:43:07,250 --> 00:43:13,210 at denne særlige 1011001, lad os bare sige, at skulle være 0,333333. 828 00:43:13,210 --> 00:43:16,960 Nå, har du kun et begrænset antal disse bits, så det er umuligt at 829 00:43:16,960 --> 00:43:22,550 repræsentere hver eneste floating point værdi givet blot 32 bits. 830 00:43:22,550 --> 00:43:25,580 >> Tja, det er umuligt at repræsentere nogen decimaltalsværdi givet uendelig - 831 00:43:25,580 --> 00:43:28,480 godt, givet nogen endeligt antal bit. 832 00:43:28,480 --> 00:43:38,265 Så spørgsmålet her er, ja, når vi brugte udskrive til to decimaler, 833 00:43:38,265 --> 00:43:42,000 vi har foretaget en korrekt få svaret 0.10. 834 00:43:42,000 --> 00:43:47,510 Men under hætten, det er virkelig blive lagret som tæt som muligt på 835 00:43:47,510 --> 00:43:51,790 0,10 da disse bits kan repræsentere. 836 00:43:51,790 --> 00:43:53,200 Er det på det næste dias? 837 00:43:53,200 --> 00:43:53,830 Eller er det ikke? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Ja, det er det. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Ja, du kan bare trække tonerne lidt op. 841 00:43:57,760 --> 00:43:59,700 >> ROB: jeg bare at zoome i den sidste på det. 842 00:43:59,700 --> 00:44:00,950 Åh min gosh, det er [uhørligt]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Så nummer. 845 00:44:08,300 --> 00:44:12,300 Det er, hvad der vil blive udskrevet hvis vi køre dette program. 846 00:44:12,300 --> 00:44:20,340 Og bemærk det er ikke virkelig en big deal hvis vi kun er at bekymre sig om ligesom 847 00:44:20,340 --> 00:44:21,920 02:58 decimaler. 848 00:44:21,920 --> 00:44:26,700 Ligesom vi kun oprindeligt trykt 0,10, og det er derfor, vi så noget forkert. 849 00:44:26,700 --> 00:44:31,380 Men når vi begynder at komme ind i eksakte nøjagtige antal, at det er 850 00:44:31,380 --> 00:44:35,660 repræsenterer, ser vi, at det ikke kan præcis repræsentere 0.1. 851 00:44:35,660 --> 00:44:40,900 >> Og en del af problemet her er ligesom, okay, det er fint, men, ja, 852 00:44:40,900 --> 00:44:46,120 første, hvad nu hvis vi forsøgte at gøre, Svaret er lig lig 0,1? 853 00:44:46,120 --> 00:44:49,200 Er det kommer til at returnere sandt eller falsk? 854 00:44:49,200 --> 00:44:51,850 Og så det er svært at sige. 855 00:44:51,850 --> 00:44:53,330 Jeg tror, ​​det faktisk kunne returnere sandt. 856 00:44:53,330 --> 00:44:55,265 Vil den først - 857 00:44:55,265 --> 00:44:56,180 Det ved jeg ikke. 858 00:44:56,180 --> 00:45:00,090 Svaret er, når du begynde at behandle med kommeværdier du smukke 859 00:45:00,090 --> 00:45:05,150 meget skal ikke bruge ligestillingen på grund af denne unøjagtighed. 860 00:45:05,150 --> 00:45:09,470 >> Og til alle du kender, det er hundrededel decimal at 861 00:45:09,470 --> 00:45:13,670 floating point var ikke i stand til korrekt håndtere. 862 00:45:13,670 --> 00:45:18,180 Og så kønnene vil bare ikke selv selv om antallet - hvis du havde været 863 00:45:18,180 --> 00:45:24,450 hjælp præcise tal, tallene bør har været nøjagtig det samme. 864 00:45:24,450 --> 00:45:27,790 Det er i løbet af lignende 50 beregninger med disse flydende 865 00:45:27,790 --> 00:45:30,270 point-værdier, kan fejlen bygge op og op og op, og 866 00:45:30,270 --> 00:45:31,125 tingene bare galt. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: Og der har været virkelig berømte eksempler på, at dette sker. 868 00:45:33,870 --> 00:45:37,190 Ligesom NASA ingeniører har fået denne forkerte, der forårsager raketter til at eksplodere i 869 00:45:37,190 --> 00:45:38,665 luften efter de er blevet lanceret. 870 00:45:38,665 --> 00:45:41,490 Og masser af spørgsmål som dette. 871 00:45:41,490 --> 00:45:41,956 Så ja. 872 00:45:41,956 --> 00:45:45,218 >> SPEAKER 6: Når du siger 0,3 f, betyder det afkorte resten? 873 00:45:45,218 --> 00:45:46,468 Eller er det runde op eller ned? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Vil printf runde det? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Jeg tror printf trunkater. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Så vi kan ligeledes gå i den modsatte retning af det her, i dette tilfælde, 879 00:45:59,890 --> 00:46:03,320 tættest at det kan være 0.1 var med dette nummer. 880 00:46:03,320 --> 00:46:06,820 Det tætteste det kunne være i stand til at udgør 0,2 er i den modsatte 881 00:46:06,820 --> 00:46:11,420 retning, 0,199999996356 eller noget. 882 00:46:11,420 --> 00:46:17,480 Så hvis vi gik i den retning af ting, så printf 0,3 f ville vende tilbage 883 00:46:17,480 --> 00:46:20,866 1,99 i stedet for 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Og jeg er ikke helt sikker på det. 885 00:46:22,960 --> 00:46:25,430 Du vil måske skrive en lille, lidt program til lige tjekke det. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Selvom, hvad vi er sikre på, er, at hvis du forsøgte at kaste det til en 887 00:46:29,370 --> 00:46:33,660 int, og casting til en int kommer til at få det til at afkorte decimal, hvis 888 00:46:33,660 --> 00:46:38,140 du forsøger at kaste 1.9999999 til en int, får du 1. 889 00:46:38,140 --> 00:46:41,440 Og så skal du normalt bruge rund funktion i matematik biblioteket. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Spørgsmål? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Så går videre til betingelser og boolske udtryk. 895 00:46:54,000 --> 00:46:58,120 Så du har set disse før. 896 00:46:58,120 --> 00:47:07,420 Og faktisk, lad mig gøre sikker på min computer er i det rigtige format her. 897 00:47:07,420 --> 00:47:08,670 Space. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Undskyld, vi kommer til at beskæftige en lidt med cutoff ved kanterne. 900 00:47:13,870 --> 00:47:15,830 >> Men ja, har du fyre set før i Scratch. 901 00:47:15,830 --> 00:47:19,930 Så dette her er et udtryk som anvendes i 902 00:47:19,930 --> 00:47:21,250 en betinget erklæring. 903 00:47:21,250 --> 00:47:23,930 Så besvare større end nul vilje fortælle dig sande eller falske. 904 00:47:23,930 --> 00:47:26,530 Og disse er virkelig vigtigt, fordi de tillader os at introducere 905 00:47:26,530 --> 00:47:28,670 logik i vores kode. 906 00:47:28,670 --> 00:47:32,820 >> Så for eksempel er et program skrevet i Scratch, der spørger brugeren 907 00:47:32,820 --> 00:47:36,980 for et heltal, og fortæller dem, om heltal, at de gav dig, var en 908 00:47:36,980 --> 00:47:38,690 positivt eller negativt tal. 909 00:47:38,690 --> 00:47:42,980 Og omdannelsen herover for at se, er du først udskrive erklæringen, 910 00:47:42,980 --> 00:47:43,870 give mig et heltal. 911 00:47:43,870 --> 00:47:45,980 Og så spørger du dem for et heltal. 912 00:47:45,980 --> 00:47:49,870 >> Og så skal du bruge betinget logik i her for at kontrollere, om dette nummer 913 00:47:49,870 --> 00:47:52,030 var faktisk større end nul eller ikke. 914 00:47:52,030 --> 00:47:58,960 Så her har vi en boolsk udtryk indersiden af ​​en betinget Hvis erklæring. 915 00:47:58,960 --> 00:48:00,660 Er der nogen spørgsmål? 916 00:48:00,660 --> 00:48:03,030 Er der nogen spørgsmål om det? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Så der er mere end bare større end, selvfølgelig. 919 00:48:06,140 --> 00:48:10,385 Du kan konstruere boolske udtryk bruge det meste af den slags ting, du 920 00:48:10,385 --> 00:48:11,150 ville tænke på i matematik. 921 00:48:11,150 --> 00:48:12,370 Så større end. 922 00:48:12,370 --> 00:48:13,740 Det burde være en mindre end. 923 00:48:13,740 --> 00:48:14,990 Undskyld. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 Og afstanden. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Gud forbyde du forlader den. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: Okay. 928 00:48:23,620 --> 00:48:25,950 Så større end, mindre end, større end eller lig med, mindre 929 00:48:25,950 --> 00:48:27,070 end eller lig med. 930 00:48:27,070 --> 00:48:31,980 Vi bruger dobbelt ligemænd til at kontrollere for lighed, fordi enkelt lig midler 931 00:48:31,980 --> 00:48:32,810 opgave, right? 932 00:48:32,810 --> 00:48:33,140 Ja. 933 00:48:33,140 --> 00:48:37,130 Og så kan vi heller ikke lig med bruge udråbstegn, lig. 934 00:48:37,130 --> 00:48:41,530 >> Og dette udråbstegn symbol kan også udvides, så hvis du vil 935 00:48:41,530 --> 00:48:44,050 at vende enhver slags Boolean udtryk, kan du gøre det. 936 00:48:44,050 --> 00:48:48,530 Så dette vil evaluere til sand hvis svaret er mindre 937 00:48:48,530 --> 00:48:51,240 end eller lig med nul. 938 00:48:51,240 --> 00:48:53,950 Eventuelle spørgsmål om det? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Så du kan også kombinere disse udtryk ved hjælp af logisk And og 941 00:48:58,840 --> 00:48:59,790 logisk eller. 942 00:48:59,790 --> 00:49:03,530 Så dette er blot And symbol, som bør være Shift 7. 943 00:49:03,530 --> 00:49:07,720 Og det er røret symbol, som er ikke en lavere sag L. Det er den ene 944 00:49:07,720 --> 00:49:09,440 der er lige over din Enter-tasten. 945 00:49:09,440 --> 00:49:12,870 Så du bruge to af disse til at symbolisere logisk Og logisk OR. 946 00:49:12,870 --> 00:49:18,180 >> Så det vil kun returnere sand, hvis svar er en, to, tre eller fire. 947 00:49:18,180 --> 00:49:23,030 Og det vil kun returnere sand, hvis svar er ud over, at der på begge sider. 948 00:49:23,030 --> 00:49:26,190 Så det er ikke en, to, tre eller fire. 949 00:49:26,190 --> 00:49:28,385 Og den måde, du ville bruge at i et udtryk - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Eller et nul eller et fem. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: Nul eller en fem. 952 00:49:32,200 --> 00:49:32,380 Undskyld. 953 00:49:32,380 --> 00:49:33,320 Ja, ja, ja. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 Og herovre nu, på samme måde, som du ville bruge det udtryk, en mindre 956 00:49:38,980 --> 00:49:42,000 udtryk side af en Hvis betinget erklæring, ville du også bruge det 957 00:49:42,000 --> 00:49:47,800 samme måde ved blot at sætte det inde i parentes i If-sætningen. 958 00:49:47,800 --> 00:49:54,020 Så denne printf vil kun blive udløst, hvis svar er en, to, tre eller fire. 959 00:49:54,020 --> 00:49:56,002 Eventuelle spørgsmål om at kombinere udtryk? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Så der er en anden betinget konstruere vi kalder en If / Else. 962 00:50:04,240 --> 00:50:08,120 Så dybest set, det betyder nu, OK, hvis noget jeg ønskede at tjekke ikke var 963 00:50:08,120 --> 00:50:11,600 sandt, så gå til Else og udføre den anden handling. 964 00:50:11,600 --> 00:50:15,570 Så i dette særlige tilfælde, spurgte jeg brugeren om et heltal. 965 00:50:15,570 --> 00:50:17,790 Er det hele tal større end nul? 966 00:50:17,790 --> 00:50:18,310 Ja? 967 00:50:18,310 --> 00:50:20,100 Nå, så de plukkes et positivt tal. 968 00:50:20,100 --> 00:50:22,320 Hvis ikke, så må det have været negativ eller et nul. 969 00:50:22,320 --> 00:50:27,530 Så du plukket et negativt tal eller et nul i dette tilfælde. 970 00:50:27,530 --> 00:50:29,235 Ja. 971 00:50:29,235 --> 00:50:30,485 Eller et nul. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> Og så har vi også If / Else, Hvis og Else. 974 00:50:39,300 --> 00:50:45,640 Så det lader os udføre en sekvens af ting, hvis de første mislykkes. 975 00:50:45,640 --> 00:50:49,540 Så i dette tilfælde, vi nu laver den sidste du vælger nul. 976 00:50:49,540 --> 00:50:53,080 Så hvis de hverken plukket en positiv eller et negativt tal, så skal de 977 00:50:53,080 --> 00:50:53,640 har plukket nul. 978 00:50:53,640 --> 00:50:56,720 Så det bare går ned i kæde som denne. 979 00:50:56,720 --> 00:50:59,960 >> Så et eksempel på, hvordan en Hvis det er forskelligt fra - 980 00:50:59,960 --> 00:51:02,590 en If / Else er forskellig fra bare en sekvens af Ifs. 981 00:51:02,590 --> 00:51:07,680 Og det er et fælles spørgsmål, folk spørger er, godt, hvis du får som en 982 00:51:07,680 --> 00:51:11,265 95 i CS50, hvad vil dette Programmet fortæller dig? 983 00:51:11,265 --> 00:51:12,600 >> SPEAKER 5: Du fik et A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Ja. 985 00:51:13,490 --> 00:51:14,960 Du fik hver eneste en af ​​dem til højre. 986 00:51:14,960 --> 00:51:17,130 Du fik en A, du fik en B, du fik et C og et D, right? 987 00:51:17,130 --> 00:51:19,770 Så alle disse bliver evalueret i orden. 988 00:51:19,770 --> 00:51:23,570 Så mens 95 er større end 90, er det også større end 80, er det også 989 00:51:23,570 --> 00:51:25,790 større end 70, og det er også mere end 60. 990 00:51:25,790 --> 00:51:27,620 Så du fik alle disse kvaliteter. 991 00:51:27,620 --> 00:51:31,630 Og jeg formoder, du ville kun ønsker A. 992 00:51:31,630 --> 00:51:34,060 >> Den måde at løse det er at erstatte dem med Else / If 's. 993 00:51:34,060 --> 00:51:37,540 Så i dette scenario, den ser, at 95 er større end 90, og så gør det 994 00:51:37,540 --> 00:51:38,885 evaluerer ikke resten af de udsagn. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Eventuelle spørgsmål om det? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Så der er en anden betinget slags struktur, som vi har her, som vi 999 00:51:52,470 --> 00:51:53,390 kalde en switch-statement. 1000 00:51:53,390 --> 00:51:57,390 Så det giver dig mulighed for stort set kontrollere hvad værdien af ​​et nummer, du sætter 1001 00:51:57,390 --> 00:51:59,000 i switch-statementet er. 1002 00:51:59,000 --> 00:52:03,200 Så i dette scenario, vi skifter på n, og vi siger, åh, hvis n er 1003 00:52:03,200 --> 00:52:04,710 en, så udskrive denne erklæring. 1004 00:52:04,710 --> 00:52:07,910 Og derefter bryde, hvilket betyder exit ud af switch-statementet. 1005 00:52:07,910 --> 00:52:12,670 >> Hvis det ikke var en, så, ja, bare i sidste ende kontrollere alle disse sager. 1006 00:52:12,670 --> 00:52:16,280 Og så det tjekker, om det er en eller to eller tre, og den udskriver i overensstemmelse hermed. 1007 00:52:16,280 --> 00:52:19,780 Og hvad denne standard søgeord hernede middel er, hvis de ikke har indtastet nogen 1008 00:52:19,780 --> 00:52:21,690 af dem, så siger Invalid. 1009 00:52:21,690 --> 00:52:25,910 Så lad os sige, at jeg beder om n og brugeren giver mig fire. 1010 00:52:25,910 --> 00:52:29,470 Tja, det passer ingen af ​​disse sager, så det vil udskrive hvad der er i 1011 00:52:29,470 --> 00:52:30,540 standard sektion. 1012 00:52:30,540 --> 00:52:31,180 Ja, spørgsmål? 1013 00:52:31,180 --> 00:52:32,614 >> SPEAKER 5: Kan man bruge Boolean udtryk i stedet for 1014 00:52:32,614 --> 00:52:33,570 én, to eller tre? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Så spørgsmålet er, kan du bruge Boolske udtryk i stedet for én, 1016 00:52:36,940 --> 00:52:37,940 to og tre? 1017 00:52:37,940 --> 00:52:40,520 Og i C, jeg tror du kan ikke gøre det. 1018 00:52:40,520 --> 00:52:44,320 Men på andre sprog, som du måske støde på udgangen af 1019 00:52:44,320 --> 00:52:46,460 semester som JavaScript, du kan. 1020 00:52:46,460 --> 00:52:50,050 Nå, ville du nødt til at beregne første denne værdi og derefter bruge det i 1021 00:52:50,050 --> 00:52:50,650 skifte erklæring. 1022 00:52:50,650 --> 00:52:50,930 Ja? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Så en del af fordelen ved kontakt udsagn er at tænke på, hvis du gjorde det 1024 00:52:54,760 --> 00:52:58,680 som en If / Else, så gerne, hvis n er lig med svarer til en eller hvad. 1025 00:52:58,680 --> 00:53:00,300 Else / Hvis n er lig med lig med to, uanset hvad. 1026 00:53:00,300 --> 00:53:01,960 Else / Hvis n er lig med lig med tre. 1027 00:53:01,960 --> 00:53:05,930 Så den måde, programmet vil køre, er det vil sekventielt gå ned denne liste 1028 00:53:05,930 --> 00:53:07,500 og tjek, er n en? 1029 00:53:07,500 --> 00:53:08,040 Nope. 1030 00:53:08,040 --> 00:53:09,070 Er n to? 1031 00:53:09,070 --> 00:53:09,490 Nope. 1032 00:53:09,490 --> 00:53:10,940 Er n tre? 1033 00:53:10,940 --> 00:53:11,710 Ja. 1034 00:53:11,710 --> 00:53:12,610 Gør dette. 1035 00:53:12,610 --> 00:53:15,270 >> Betragtninger med switch udsagn, er det faktisk er i stand til at kompilere det at være 1036 00:53:15,270 --> 00:53:16,360 rigtig hurtigt. 1037 00:53:16,360 --> 00:53:19,550 Og så snart det siger switch, det siger, okay, n er to, er jeg 1038 00:53:19,550 --> 00:53:23,060 straks kommer til at springe til, hvor Jeg skulle begynde at udføre. 1039 00:53:23,060 --> 00:53:26,080 Jeg har ikke tænkt mig at først kontrollere, er n et, er n to? 1040 00:53:26,080 --> 00:53:28,860 Det kan umiddelbart begynde at gøre hvad det er meningen at gøre. 1041 00:53:28,860 --> 00:53:33,830 >> Og på grund af det, kan det ikke tage boolske betingelser. 1042 00:53:33,830 --> 00:53:36,480 Ellers ville det have at gøre det sekventiel, ligesom, okay, er n 1043 00:53:36,480 --> 00:53:37,820 større end nul? 1044 00:53:37,820 --> 00:53:41,140 Else er n større end 10 eller hvad. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: I dette tilfælde, hvis du har brugt Hvis / Else, Ifs, så kontakten ville 1046 00:53:44,780 --> 00:53:47,792 køre cirka tre gange hurtigere end If / Else If. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Vi kan arrangere kontakten i sådan en måde, som vi ikke bryder 1049 00:53:56,040 --> 00:53:57,520 efter hvert af tilfældene. 1050 00:53:57,520 --> 00:54:00,960 Så i dette tilfælde, jeg opdele numre, som vi vælger i én og 1051 00:54:00,960 --> 00:54:04,250 to er ikke høje tal, og tre er et stort antal. 1052 00:54:04,250 --> 00:54:08,290 >> Så i dette tilfælde, hvis n er en eller to, det vil ramme sagen, og så vil det 1053 00:54:08,290 --> 00:54:10,640 falde igennem, fordi der ikke er nogen pause. 1054 00:54:10,640 --> 00:54:11,610 Og det vil ende her. 1055 00:54:11,610 --> 00:54:15,360 Så hvis vi vælger en, vil det gøre det printf og derefter bryde således at ingen af 1056 00:54:15,360 --> 00:54:17,610 dette udføres. 1057 00:54:17,610 --> 00:54:21,870 Og selvfølgelig, hvis de kommer ind i tre eller noget andet, så vil det springe 1058 00:54:21,870 --> 00:54:25,320 dem, og ikke gå der, og det vil udføre i stedet 1059 00:54:25,320 --> 00:54:27,490 tilsvarende linje. 1060 00:54:27,490 --> 00:54:29,390 Er der nogen spørgsmål om det? 1061 00:54:29,390 --> 00:54:29,780 Ja? 1062 00:54:29,780 --> 00:54:32,642 >> SPEAKER 4: Vil du får en fejl, hvis du havde en pause efter sag en, men det 1063 00:54:32,642 --> 00:54:34,550 ikke have noget for det at gøre? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: Så spørgsmålet er ville du få en fejl, hvis du har en pause efter 1065 00:54:37,820 --> 00:54:39,730 og små én, men der er ikke noget at gøre? 1066 00:54:39,730 --> 00:54:41,520 Og svaret er nej. 1067 00:54:41,520 --> 00:54:43,172 Du vil faktisk ikke få en fejl. 1068 00:54:43,172 --> 00:54:44,590 Yeah, mm hmm. 1069 00:54:44,590 --> 00:54:54,540 >> Så som en slags lille ændring her, Jeg har tænkt mig at sætte en printf her. 1070 00:54:54,540 --> 00:54:55,790 Whoops. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Så hvad ville dette udskrive, hvis Jeg sætter en i som input? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Ja. 1075 00:55:07,770 --> 00:55:10,360 Det vil fortælle dig, det ikke tage et højt antal gange, right? 1076 00:55:10,360 --> 00:55:13,500 Fordi det ville ramme det første tilfælde ville det ikke i stykker, og det ville falde 1077 00:55:13,500 --> 00:55:15,730 igennem til det andet tilfælde. 1078 00:55:15,730 --> 00:55:16,950 Eventuelle spørgsmål om det? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Har du har et andet spørgsmål? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, afkøles. 1081 00:55:20,840 --> 00:55:22,400 Ok. 1082 00:55:22,400 --> 00:55:25,780 Så der er noget andet, vi kalder en ternære operatør som er dybest set en 1083 00:55:25,780 --> 00:55:29,010 alternativ syntaks til at gøre Hvis og så Else. 1084 00:55:29,010 --> 00:55:30,470 Og det kan du gøre det hele på én linje. 1085 00:55:30,470 --> 00:55:34,110 Så i dette program, Jeg beder brugeren for n. 1086 00:55:34,110 --> 00:55:37,190 Og hvis n er større end 100, siger jeg dem de plukkes et højt tal. 1087 00:55:37,190 --> 00:55:39,560 Else Jeg fortæller dem, at de plukket et lavt tal. 1088 00:55:39,560 --> 00:55:43,030 >> Så vi kan bruge dette virkelig lang syntaks, snor, S, og derefter kontrollere, hvis n er 1089 00:55:43,030 --> 00:55:45,260 større end 100 og tildele det i overensstemmelse hermed. 1090 00:55:45,260 --> 00:55:49,450 Men vi kan gøre det meget mere kortfattet ved at bruge denne ternære operatør syntaks 1091 00:55:49,450 --> 00:55:52,090 som omfatter et spørgsmål mark og et kolon. 1092 00:55:52,090 --> 00:55:55,070 Så spørgsmålstegnet er hovedsagelig stille et spørgsmål, right? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Måske zoome ind på det. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Ja. 1095 00:55:57,372 --> 00:56:00,210 God pointe. 1096 00:56:00,210 --> 00:56:02,550 Så dette er den ternære operatør. 1097 00:56:02,550 --> 00:56:06,100 Jeg først stille spørgsmålet, er n større end 100? 1098 00:56:06,100 --> 00:56:09,770 Hvis det er, så jeg udføre den første del før tyktarmen. 1099 00:56:09,770 --> 00:56:13,360 Hvis det ikke er, så vil jeg udføre anden del efter kolon. 1100 00:56:13,360 --> 00:56:16,640 Så hvis n er større end 100, så det opfanger højt og sætter 1101 00:56:16,640 --> 00:56:18,360 der i streng s. 1102 00:56:18,360 --> 00:56:22,170 Hvis n er mindre end 100, det opfanger lav og så sætter det ind i strengen s. 1103 00:56:22,170 --> 00:56:30,186 Så det vil kondensere denne store luns ned i bare denne ene linje. 1104 00:56:30,186 --> 00:56:32,010 >> SPEAKER 5: Er det populært? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Ja, det er meget populært for ting, hvor det væsentlige, du ønsker at 1106 00:56:36,070 --> 00:56:38,700 ikke en opgave baseret på en slags tilstand. 1107 00:56:38,700 --> 00:56:43,110 Og i dette tilfælde, vi forsøgte at tildele en værdi til strengen s. 1108 00:56:43,110 --> 00:56:44,840 Det er ikke så - 1109 00:56:44,840 --> 00:56:47,670 Jeg behøver vel ikke rigtig foretrækker den i andre tilfælde. 1110 00:56:47,670 --> 00:56:49,390 Men det er især nyttig til denne opgave. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Det er en smuk fælles mønster hvor du har nogle variabel, 1112 00:56:54,490 --> 00:56:58,200 du kommer til at sige, hvis noget, sæt variablen til en værdi, ellers, sæt 1113 00:56:58,200 --> 00:56:59,810 denne variabel til en anden værdi. 1114 00:56:59,810 --> 00:57:03,360 Og det er det scenario hvor bruge en tredelt. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: Og du gemmer masser af linjer, right? 1116 00:57:05,220 --> 00:57:08,090 Og det bare gør din kode velsagtens en lille smule mere læsevenlig. 1117 00:57:08,090 --> 00:57:08,635 Ja, spørgsmål? 1118 00:57:08,635 --> 00:57:12,384 >> SPEAKER 6: For et ternære, kan du gå, string s ligemænd s, spørgsmålstegn? 1119 00:57:12,384 --> 00:57:15,280 Og så kunne du have, siger, fem forskellige muligheder. 1120 00:57:15,280 --> 00:57:18,310 Og afhængigt af, hvad antallet af n var, ville du vælge en af ​​dem? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Så spørgsmålet er, er der en slags syntaks, hvor du kan gøre strengen 1122 00:57:22,210 --> 00:57:25,910 s lig n, og så har mere end to Valg efter at spørgsmålstegnet? 1123 00:57:25,910 --> 00:57:29,740 Og et simpelt svar er nej, er der ikke virkelig en god måde at gøre det, medmindre 1124 00:57:29,740 --> 00:57:33,850 du ønsker at indlejre flere ternære operatører inde i hinanden. 1125 00:57:33,850 --> 00:57:38,050 >> Du kan gøre ligesom n større end 100, spørgsmålstegn, og derefter en anden 1126 00:57:38,050 --> 00:57:41,850 ternære operatør, n større end 50, spørgsmålstegn, og reden det på den måde. 1127 00:57:41,850 --> 00:57:45,240 Men i dette scenario, din kode er få slags ulæselig og rodet, 1128 00:57:45,240 --> 00:57:47,920 og det ville være bedre at bare gå til en If / Else redegørelse på dette punkt. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: Og også, som en side bemærkning, PHP forkert gennemfører ternære 1130 00:57:54,530 --> 00:57:58,053 operatør sådan at indlejrede ternaries ikke engang arbejde som de burde. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Ja. 1132 00:57:58,840 --> 00:58:01,170 Så det bliver en lille smule forvirrende, især når du går 1133 00:58:01,170 --> 00:58:02,145 til forskellige sprog. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Det er forvirrende nok, at sprog er forkert om det. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Så faktisk, bare for at afklare, gør alle ved, hvad det 1137 00:58:11,510 --> 00:58:13,900 % S gør herovre? 1138 00:58:13,900 --> 00:58:15,650 Eventuelle spørgsmål om det? 1139 00:58:15,650 --> 00:58:19,760 Jeg gætter bare for kameraet,% s dybest set lader os sætte en pladsholder 1140 00:58:19,760 --> 00:58:20,790 for en streng. 1141 00:58:20,790 --> 00:58:23,920 Og så til sidst, vi angive, at variabel vi ønsker at sætte ind i denne 1142 00:58:23,920 --> 00:58:25,500 pladsholder er s. 1143 00:58:25,500 --> 00:58:27,730 Så dybest set tager s og det sætter det i her. 1144 00:58:27,730 --> 00:58:32,130 Og så vil det udskrive, du valgte en høj eller du plukket et lavt tal. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Så sløjfer giver dig mulighed for at udføre ting i cirkulære bevægelser, right? 1147 00:58:36,970 --> 00:58:40,300 Du har måske stødt på dette i Scratch i form af Forever sløjfer 1148 00:58:40,300 --> 00:58:45,650 eller Gentag Indtil eller Gentag en bestemt antal gange. 1149 00:58:45,650 --> 00:58:47,540 Så hvorfor er det godt for os? 1150 00:58:47,540 --> 00:58:51,500 Tja, i C, lad os sige, at vi har denne sang implementeret i Scratch, at 1151 00:58:51,500 --> 00:58:53,450 synger, er sangen , der aldrig ender. 1152 00:58:53,450 --> 00:58:55,710 Den bliver bare ved og ved og for evigt og evigt. 1153 00:58:55,710 --> 00:58:59,395 Nå, kan du ikke rigtig lave et program , der har et uendeligt antal printf 1154 00:58:59,395 --> 00:59:00,850 udsagn i det, ikke? 1155 00:59:00,850 --> 00:59:04,900 >> Så i denne situation, en måde at du kan gøre dette arbejde, og 1156 00:59:04,900 --> 00:59:09,330 for at gøre det udskrive evigt er til i stedet bruge en while-løkke. 1157 00:59:09,330 --> 00:59:13,640 Så en while-løkke vil udføre, hvad der er i kroppen af ​​de to seler, 1158 00:59:13,640 --> 00:59:17,250 tilhører det baseret på, hvad tilstanden er. 1159 00:59:17,250 --> 00:59:21,170 Så i dette særlige eksempel før, hvis vi ønsker at udskrive dette for evigt, hvad 1160 00:59:21,170 --> 00:59:23,590 kan vi gøre? 1161 00:59:23,590 --> 00:59:25,190 Nå, sikker, right? 1162 00:59:25,190 --> 00:59:32,290 >> Så denne slags kombinerer ideen nogle Boolsk udtryk 1163 00:59:32,290 --> 00:59:33,610 sammen med en løkke. 1164 00:59:33,610 --> 00:59:35,780 Og vi lærte om Boolean udtryk tidligere. 1165 00:59:35,780 --> 00:59:39,650 Så når betingelsen indersiden af at mens stadig sandt, denne løkke 1166 00:59:39,650 --> 00:59:41,480 vil køre på og på og på. 1167 00:59:41,480 --> 00:59:44,640 Og i dette tilfælde, hvis vi bare levere det med sand, dette bevirker en uendelig 1168 00:59:44,640 --> 00:59:49,310 løkke der udskriver sangen om og om og da vi ønskede før uden 1169 00:59:49,310 --> 00:59:52,410 har et program, der har en uendelig Antallet af printf udtalelser, der er 1170 00:59:52,410 --> 00:59:55,220 ikke mulig. 1171 00:59:55,220 --> 00:59:57,810 >> Så mere overbevisende, selv om, du kan bruge dette med en 1172 00:59:57,810 --> 00:59:59,710 variabel og en betingelse. 1173 00:59:59,710 --> 01:00:04,420 Så lad os sige at vi vil gentage sætning, helt loopy, 10 gange. 1174 01:00:04,420 --> 01:00:08,380 Så hvad du kan gøre med en while-løkke er kan du først initialisere en tæller 1175 01:00:08,380 --> 01:00:10,860 variabel uden for Mens løkke til 10. 1176 01:00:10,860 --> 01:00:14,360 Og så dybest set, hver gang du går gennem While loop, du udskriver 1177 01:00:14,360 --> 01:00:19,090 erklæringen, og derefter du mindske tællervariablen indtil slutningen, 1178 01:00:19,090 --> 01:00:23,020 på et tidspunkt, når vi trækker jeg nok gange, 1 fra I nok gange - 1179 01:00:23,020 --> 01:00:27,290 og bare for at tydeliggøre, I minus minus betyder, at jeg er lig I minus 1. 1180 01:00:27,290 --> 01:00:31,280 >> Det vil som udgangspunkt bringe jeg ned til punkt, hvor når jeg ramte nul, dette 1181 01:00:31,280 --> 01:00:35,260 betingelse er ikke længere sandt, og så det kommer ud af sløjfen. 1182 01:00:35,260 --> 01:00:37,045 Så helt loopy udskriver kun 10 gange. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Eventuelle spørgsmål om et Mens loop? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Så der er en måde, vi kan gøre, hvad vi lige gjorde i en mere kortfattet måde med 1188 01:00:50,550 --> 01:00:51,715 hvad vi kalder en for-løkke. 1189 01:00:51,715 --> 01:00:55,750 Så en for-løkke består af en initialisering, en tilstand, og en 1190 01:00:55,750 --> 01:00:58,950 opdatering, ligesom vi havde før i denne Mens løkke. 1191 01:00:58,950 --> 01:00:59,890 Så lad os tage et kig. 1192 01:00:59,890 --> 01:01:02,900 I denne Mens loop, vi havde en initialisering, så havde vi en 1193 01:01:02,900 --> 01:01:04,260 betingelse, at vi kontrolleret. 1194 01:01:04,260 --> 01:01:06,450 Og så havde vi en opdatering trin på toppen. 1195 01:01:06,450 --> 01:01:10,060 >> Med en for-løkke, det dybest set tager disse tre ting og kondenserer det 1196 01:01:10,060 --> 01:01:11,370 ned i en linje. 1197 01:01:11,370 --> 01:01:15,130 Så det første, at det gør i For løkke er initialiseringen. 1198 01:01:15,130 --> 01:01:19,090 Og så skal du gøre et semikolon, og derefter du gør den betingelse, som er jeg 1199 01:01:19,090 --> 01:01:22,200 større end nul går derovre, og derefter opdateringen trin. 1200 01:01:22,200 --> 01:01:26,470 Så det bliver udført på slutningen af ​​løkken kroppen. 1201 01:01:26,470 --> 01:01:28,790 Så disse to programmer er væsentlige tilsvarende. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Eventuelle spørgsmål? 1204 01:01:33,870 --> 01:01:37,000 Så hvad er en forskel mellem disse to? 1205 01:01:37,000 --> 01:01:38,000 Kan nogen påpege det? 1206 01:01:38,000 --> 01:01:40,480 Det kan være lidt subtil. 1207 01:01:40,480 --> 01:01:41,930 Det er bare en meget lille forskel. 1208 01:01:41,930 --> 01:01:42,330 Ja? 1209 01:01:42,330 --> 01:01:49,008 >> SPEAKER 5: Du ville ikke være i stand til at bruge I variabel uden For-løkken 1210 01:01:49,008 --> 01:01:49,962 [Uhørligt]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Præcis. 1212 01:01:50,900 --> 01:01:53,550 Så det er noget, vi vil komme til senere kaldet variabel rækkevidde. 1213 01:01:53,550 --> 01:01:56,610 Men det væsentlige, det int i liv uden for dette Mens løkke. 1214 01:01:56,610 --> 01:01:59,800 Så når denne Mens løkke er færdig udførelse, vil jeg være i stand til at bruge jeg senere 1215 01:01:59,800 --> 01:02:00,880 på i programmet. 1216 01:02:00,880 --> 01:02:05,430 >> Hvorimod med dette For-løkke, denne int jeg er scoped inde i denne For-løkke. 1217 01:02:05,430 --> 01:02:10,240 Og fordi det er inde i denne del i For-løkke, der starter 1218 01:02:10,240 --> 01:02:13,200 ved parenteser og slutter med den klammeparentes derovre. 1219 01:02:13,200 --> 01:02:16,120 Noget, der er erklæret inde i her kan ikke bruges uden for. 1220 01:02:16,120 --> 01:02:20,420 Så hvis jeg forsøger at bruge jeg udenfor, det vil fortælle mig, sort symbol. 1221 01:02:20,420 --> 01:02:22,420 Og i det væsentlige, ville jeg ikke være i stand til at bruge det. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: Og godt 10 år siden, i bogstaveligt alle tilfælde krøllede parenteser er 1223 01:02:28,460 --> 01:02:31,140 hvad du har brugt til at bestemme omfanget af en variabel. 1224 01:02:31,140 --> 01:02:37,240 Så i der, int jeg svarer til 10 deklareres på indersiden af ​​dette 1225 01:02:37,240 --> 01:02:38,520 sæt krøllede parenteser. 1226 01:02:38,520 --> 01:02:42,530 Og så så så længe du forsøger at bruge I før denne klammeparentes, det er fint. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Du vil måske se, når du skriver at gøre, du se instrumentbrættet, bindestreg, std, lig, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Så det er en nyere version af C, der GCC har gennemført, som også giver 1230 01:02:57,100 --> 01:02:58,740 denne genvej. 1231 01:02:58,740 --> 01:03:03,505 Så dette bruges til at ikke være tilladt i C. Og du kan se, hvorfor, fordi denne int 1232 01:03:03,505 --> 01:03:07,600 Jeg er uden for dette klammeparentes men er det stadig anses for at være i 1233 01:03:07,600 --> 01:03:09,750 omfanget af disse krøllede parenteser. 1234 01:03:09,750 --> 01:03:14,120 Men dette er en meget bekvem ting, og det er en god forlængelse. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Eventuelle spørgsmål? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Så hvad er mere nyttige er, at nogle gange du ønsker slags dynamik i 1239 01:03:22,820 --> 01:03:23,410 dit loop, right? 1240 01:03:23,410 --> 01:03:26,350 Du ønsker ikke at bare nødvendigvis udskrive helt loopy hele tiden, du 1241 01:03:26,350 --> 01:03:28,650 ønsker at tælle ned fra 10 eller noget. 1242 01:03:28,650 --> 01:03:32,010 Og så kan du bruge tællervariablen indersiden af ​​denne løkke samt. 1243 01:03:32,010 --> 01:03:35,530 Og i dette tilfælde, dette program blot tæller ned fra 10 hele vejen ned. 1244 01:03:35,530 --> 01:03:39,260 Og hvad betyder det ikke udskrive? 1245 01:03:39,260 --> 01:03:42,790 Det udskriver ikke nul, ret, fordi når - 1246 01:03:42,790 --> 01:03:45,460 Ja, det også udskrives ikke 11. 1247 01:03:45,460 --> 01:03:49,200 >> Så det udskrives ikke nul, fordi når Jeg er nul, husk, det vurderer 1248 01:03:49,200 --> 01:03:52,170 tilstanden før det går på at udføre løkken kroppen. 1249 01:03:52,170 --> 01:03:56,820 Og når jeg er nul, det er falsk, så det ikke udskrive tælle ned 1250 01:03:56,820 --> 01:04:00,200 nul, det bare udskriver optælling ned 10 hele vejen ned til 1. 1251 01:04:00,200 --> 01:04:03,420 Hvis vi faktisk ønskede det til at udskrive nul, så ville vi sætte et lighedstegn 1252 01:04:03,420 --> 01:04:04,750 efter denne større end tegn. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Så en måde at gøre input validering, der er, når du beder brugeren om at gøre 1256 01:04:16,410 --> 01:04:18,620 noget, du ønsker at sikre, at de følge dine anvisninger, er at bruge 1257 01:04:18,620 --> 01:04:19,400 While loop, right? 1258 01:04:19,400 --> 01:04:22,990 Så i dette tilfælde, jeg spørger for et positivt tal, og så er jeg 1259 01:04:22,990 --> 01:04:23,810 venter på input. 1260 01:04:23,810 --> 01:04:28,210 >> Og så jeg tjekket Mens indgangen er mindre end nul, at spørge dem. 1261 01:04:28,210 --> 01:04:32,100 Så så længe de giver mig et tal det er ikke positivt, at spørge, 1262 01:04:32,100 --> 01:04:33,600 holde stille, at spørge. 1263 01:04:33,600 --> 01:04:35,860 Men hvad er en slags underligt ved det? 1264 01:04:35,860 --> 01:04:38,570 Eller synes ikke hvad optimal om denne struktur lige her? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Nogen? 1267 01:04:44,758 --> 01:04:45,234 Ja? 1268 01:04:45,234 --> 01:04:47,614 >> SPEAKER 6: Du gentage instruktion to gange. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Right. 1270 01:04:48,100 --> 01:04:50,090 Så vi har to printf udsagn her, ikke? 1271 01:04:50,090 --> 01:04:53,440 Så der er en måde, vi kunne få det bare ned til en, der ville gøre vores 1272 01:04:53,440 --> 01:04:57,170 kode lettere at læse og et lidt mere ren. 1273 01:04:57,170 --> 01:05:00,180 Og så ville vi ikke have at har Kom i dobbelt så godt. 1274 01:05:00,180 --> 01:05:03,740 Og en måde du kan gøre dette er ved hjælp af en gør-while-løkke. 1275 01:05:03,740 --> 01:05:07,670 >> Og en Do-While løkke er dybest set en anden form for en while-løkke, hvor 1276 01:05:07,670 --> 01:05:11,460 hvad der er inden for de krøllede parenteser bliver henrettet mindst én gang. 1277 01:05:11,460 --> 01:05:14,840 Så i her, erklærer jeg, int input, uden først. 1278 01:05:14,840 --> 01:05:18,100 Og så vil jeg bare sige, at gøre dette instruktion mens input 1279 01:05:18,100 --> 01:05:19,140 er mindre end nul. 1280 01:05:19,140 --> 01:05:20,530 Så det rammer Do først. 1281 01:05:20,530 --> 01:05:24,190 Det vil altid udføre denne mindst én gang, så det vil altid bede brugeren 1282 01:05:24,190 --> 01:05:25,960 for input mindst én gang. 1283 01:05:25,960 --> 01:05:29,390 Og så vurderer, at input, og det går på i en cirkel. 1284 01:05:29,390 --> 01:05:30,135 Ja, spørgsmål? 1285 01:05:30,135 --> 01:05:32,602 >> SPEAKER 6: Er der en måde at gøre det [Uhørligt] typer, ligesom hvis du siger, 1286 01:05:32,602 --> 01:05:34,268 GetString, og nogen [uhørligt] 1287 01:05:34,268 --> 01:05:35,220 er der en måde at [uhørligt] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Så spørgsmålet er, er der en måde at gøre input validering, hvis brugeren 1289 01:05:40,060 --> 01:05:41,850 ikke sat i den rigtige type variabel? 1290 01:05:41,850 --> 01:05:44,460 Så hvis vi beder om en int, og de give os en streng i stedet. 1291 01:05:44,460 --> 01:05:49,110 Og i de funktioner, som vi implementerer for dig, GetInt, getString i alle 1292 01:05:49,110 --> 01:05:52,680 disse funktioner, de faktisk allerede gøre den slags grundtype input 1293 01:05:52,680 --> 01:05:54,120 valideringen under kølerhjelmen. 1294 01:05:54,120 --> 01:05:57,390 Så hvis du bruger de funktioner, som vi gav dig, behøver du ikke virkelig nødt til. 1295 01:05:57,390 --> 01:06:01,380 >> Men hvis du ønsker at se mere på, hvordan du rent faktisk kan gøre det, kan du kigge 1296 01:06:01,380 --> 01:06:03,360 under kølerhjelmen på filen I/O-- 1297 01:06:03,360 --> 01:06:07,990 ikke filen, standard I / O-funktioner som en læser fra standard input og 1298 01:06:07,990 --> 01:06:08,580 standard output. 1299 01:06:08,580 --> 01:06:10,630 Og du kan få en bedre fornemmelse af, hvordan du kan gøre det. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Et spørgsmål, selv om, er specifikt med det eksempel, du 1301 01:06:13,670 --> 01:06:17,070 sagt, du forventer en streng og jeg indtaste en int. 1302 01:06:17,070 --> 01:06:20,110 Hvordan vil du fortælle forskellen mellem bevidst ønsker det 1303 01:06:20,110 --> 01:06:23,130 streng 123 versus ønsker int 123? 1304 01:06:23,130 --> 01:06:29,230 Så streng, det er temmelig meget er der ingen validering, det er bare hvad de 1305 01:06:29,230 --> 01:06:31,600 indtastet du vil fortolke som en streng. 1306 01:06:31,600 --> 01:06:35,790 >> Int er nemmere, fordi uanset input du tager fra brugeren, er du 1307 01:06:35,790 --> 01:06:37,470 altid tage en streng. 1308 01:06:37,470 --> 01:06:40,650 Og så streng, du derefter kan check, er alle disse 1309 01:06:40,650 --> 01:06:44,218 faktisk numeriske cifre? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Eventuelle spørgsmål om et Do-While loop? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Åh, og det er også - 1313 01:06:49,170 --> 01:06:55,130 gå tilbage til rækkevidde, en noget fælles fejl prøver at bruge nogle lokale 1314 01:06:55,130 --> 01:06:59,540 variabel fra inden for dette Do-While loop inde i denne tilstand. 1315 01:06:59,540 --> 01:07:02,850 Og faktisk, hvis vi bare sluppet af dette og sagde, int input lig 1316 01:07:02,850 --> 01:07:06,990 GetInt, så compileren vil råbe på os, fordi input ikke eksisterer 1317 01:07:06,990 --> 01:07:08,900 uden for rammerne af Disse krøllede parenteser. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: Og det er derfor, vi brug for denne lineup her. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Så du kan også bryde ud af en loop tidligt, hvis du ønsker det. 1322 01:07:17,530 --> 01:07:21,240 Så dette er en anden måde gennemføre det, vi netop gennemført. 1323 01:07:21,240 --> 01:07:24,340 Og i stedet for at anvende betingelsen i parentes, vi ved hjælp af en 1324 01:07:24,340 --> 01:07:26,920 Hvis meddelelsen indersiden af ​​kroppen af Do-While løkke. 1325 01:07:26,920 --> 01:07:30,000 >> Og dybest set, når indgangen er endelig større end nul, vil vi 1326 01:07:30,000 --> 01:07:31,000 bryde ud af sløjfen. 1327 01:07:31,000 --> 01:07:33,420 Og så vil vi gå hele vejen herned. 1328 01:07:33,420 --> 01:07:37,920 Og du kan se, at dette ville formentlig blive foretrukket i denne 1329 01:07:37,920 --> 01:07:39,870 scenarie, fordi det er lidt lidt renere og lidt 1330 01:07:39,870 --> 01:07:41,380 lidt nemmere at læse. 1331 01:07:41,380 --> 01:07:45,210 Dette, du slags have ekstra linjer i det. 1332 01:07:45,210 --> 01:07:47,890 Det er bare en lille smule grimmere, Jeg gætter på, i en vis forstand. 1333 01:07:47,890 --> 01:07:48,530 Ja, spørgsmål? 1334 01:07:48,530 --> 01:07:52,178 >> SPEAKER 4: Vil kun bryde få dig ud af et sæt seler? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Right. 1336 01:07:53,080 --> 01:07:58,100 Så spørgsmålet er, vil kun bryde få dig ud af en løkke? 1337 01:07:58,100 --> 01:07:59,280 Og svaret er ja. 1338 01:07:59,280 --> 01:08:04,290 Så hvis du har indlejret For loops, for eksempel, hvis jeg har for int I lig 0 1339 01:08:04,290 --> 01:08:09,040 indtil 10 og derefter Til int J er lig med 0 indtil den 10., hvis jeg bryder ud af den indre 1340 01:08:09,040 --> 01:08:12,310 loop, vil jeg stadig gå til den ydre sløjfe. 1341 01:08:12,310 --> 01:08:15,760 Så det vil holde udfører operationer på ydersiden. 1342 01:08:15,760 --> 01:08:17,640 Eventuelle spørgsmål om det? 1343 01:08:17,640 --> 01:08:18,000 Ja? 1344 01:08:18,000 --> 01:08:21,760 >> SPEAKER 5: Men bryde fungerer kun for krøllede parenteser, ikke for andre 1345 01:08:21,760 --> 01:08:22,230 udsagn? 1346 01:08:22,230 --> 01:08:22,700 [Uhørligt] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Så spørgsmålet er, vil bryde kun fungere efter sløjfer i modsætning til 1348 01:08:27,620 --> 01:08:29,014 andre udsagn som nu hvis? 1349 01:08:29,014 --> 01:08:32,950 Og ja, det er tilfældet, fordi du bryde ud af en løkke, til højre, 1350 01:08:32,950 --> 01:08:33,630 i en vis forstand. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: I langt de fleste tilfælde, er det dette er den slags Hvis noget, 1352 01:08:37,215 --> 01:08:37,660 derefter bryde. 1353 01:08:37,660 --> 01:08:41,580 Så du behøver ikke at bryde til at gælde for , hvis der er indpakning omkring det. 1354 01:08:41,580 --> 01:08:45,250 Og dette er ikke meget af en løkke, men husk, at afbrydere er også 1355 01:08:45,250 --> 01:08:46,340 brudt ud af ved pauser. 1356 01:08:46,340 --> 01:08:48,390 Vi så pauser bliver brugt med kontakter før. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: Og du kan også bruge dem i mens løkker og sløjfer. 1358 01:08:52,189 --> 01:08:54,560 Eventuelle spørgsmål? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Så næste op er funktioner. 1361 01:08:57,779 --> 01:09:01,500 Så du måske har brugt en af ​​disse BYOB blokke i dit Scratch projektet. 1362 01:09:01,500 --> 01:09:04,569 Og det dybest set giver at definere et sæt 1363 01:09:04,569 --> 01:09:05,680 anvisninger skal følges. 1364 01:09:05,680 --> 01:09:09,569 >> Og hvad jeg mener med det er lad os tænke tilbage til matematik, til højre, algebra. 1365 01:09:09,569 --> 01:09:13,370 Du har, hvad vi kalder en funktion af x, nogle variable, og lad os sige det 1366 01:09:13,370 --> 01:09:16,080 funktion er f af x er lig x plus 5. 1367 01:09:16,080 --> 01:09:20,410 Så du kan tænke på f af x som denne sorte boks, der tager 15 i og derefter 1368 01:09:20,410 --> 01:09:22,590 producerer 20. 1369 01:09:22,590 --> 01:09:26,630 >> Så mere generelt, en funktion er noget, der tager nogle input og 1370 01:09:26,630 --> 01:09:27,880 derefter producerer nogle udgange. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 Og hvorfor er funktioner godt? 1373 01:09:32,960 --> 01:09:35,189 De er gode for en række årsager. 1374 01:09:35,189 --> 01:09:40,470 Så er der nogen ønsker at tage et stik på, hvad organisationen betyder? 1375 01:09:40,470 --> 01:09:42,630 Med hensyn til hvorfor funktioner er nyttig? 1376 01:09:42,630 --> 01:09:43,090 Ja? 1377 01:09:43,090 --> 01:09:44,735 >> SPEAKER 4: Det gør din kode mere læsbar. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Right. 1379 01:09:45,399 --> 01:09:47,670 Så en af ​​de ting er det gør din kode mere læsbar, right? 1380 01:09:47,670 --> 01:09:53,710 I stedet for som int x er lig med x gange x gange x, kan jeg have terning af x, 1381 01:09:53,710 --> 01:09:57,190 som er lettere at læse og mere forståeligt for en læser. 1382 01:09:57,190 --> 01:10:01,150 >> Organisationen er også i form af opdele din kode i håndterbare 1383 01:10:01,150 --> 01:10:05,610 portioner, således at i stedet for at forsøge at gennemføre alt dette i én lang sektion 1384 01:10:05,610 --> 01:10:09,070 i hoved, kan du slags splitte det op ind ligesom, OK, lad os skrive en funktion 1385 01:10:09,070 --> 01:10:11,910 i Cube noget, så lad os skrive et fungere til firkantet noget. 1386 01:10:11,910 --> 01:10:15,950 På den måde kan du dele den op i små, små dele, som du kan tackle 1387 01:10:15,950 --> 01:10:18,944 i modsætning til at forsøge at tackle et stort problem på én gang. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Eller selv små, små dele, du og en partner kan tackle. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Ja. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Så i stedet for begge Forsøger du at implantere en 1391 01:10:23,855 --> 01:10:27,170 fungere på samme tid. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Forenkling. 1393 01:10:28,800 --> 01:10:30,050 Nogen ønsker at tage et gæt? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Ja? 1396 01:10:33,410 --> 01:10:34,675 >> SPEAKER 5: Mere gentagelse. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Right. 1398 01:10:35,260 --> 01:10:39,210 Så én ting, du kan gøre med forenkling er, at det er lidt på 1399 01:10:39,210 --> 01:10:42,520 samme måde som genbrugelighed er, at når jeg skriver en terning funktion, kan jeg 1400 01:10:42,520 --> 01:10:45,410 bare bruge det igen og igen og igen igen i mit program i stedet for at skrive 1401 01:10:45,410 --> 01:10:49,610 x gange x gange x end og igen og igen. 1402 01:10:49,610 --> 01:10:52,980 Og forenkling her også bare betyder, at det gør din kode slags 1403 01:10:52,980 --> 01:10:55,900 nemmere at fejlsøge, når du opdele dette op i funktioner. 1404 01:10:55,900 --> 01:10:58,250 Fordi så kan du lokalisere hvor dine problemer slags er. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Eventuelle spørgsmål? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Så en anden idé er abstraktion, right? 1409 01:11:06,540 --> 01:11:07,390 Denne sorte boks. 1410 01:11:07,390 --> 01:11:11,360 Ligesom ved du hvad GetInt gør til at modtage input fra brugeren? 1411 01:11:11,360 --> 01:11:12,510 Vi har ikke rigtig fortalt dig, ikke? 1412 01:11:12,510 --> 01:11:15,670 Alt, hvad vi har fortalt dig, er GetInt gør præcis, hvad det siger, det gør. 1413 01:11:15,670 --> 01:11:18,440 Så selv om vi ikke fortælle dig, hvordan det virker, har du stadig kender. 1414 01:11:18,440 --> 01:11:21,670 >> Så i dette særlige tilfælde, er det en firedobbelt funktion, der gør 1415 01:11:21,670 --> 01:11:24,520 forskellige ting til en indgang at frembringe et udgangssignal. 1416 01:11:24,520 --> 01:11:28,050 Og du kan firdoble en række ved at multiplicere det med fire. 1417 01:11:28,050 --> 01:11:30,790 Eller du kan, hvad vi kalder bitskift det med to. 1418 01:11:30,790 --> 01:11:32,960 Og vi vil dække dette lidt senere. 1419 01:11:32,960 --> 01:11:36,570 Og der er ingen grund til at vide, hvordan denne fungerer funktionen, så længe det 1420 01:11:36,570 --> 01:11:37,640 virker som anført. 1421 01:11:37,640 --> 01:11:40,740 >> Så under kølerhjelmen, kunne jeg være ligesom, returnere input gange 1422 01:11:40,740 --> 01:11:41,690 otte divideret med to. 1423 01:11:41,690 --> 01:11:42,510 Og du ville ikke vide, vel? 1424 01:11:42,510 --> 01:11:44,970 Alt du behøver at vide er det gør hvad den siger. 1425 01:11:44,970 --> 01:11:48,070 Så det er nyttig ting om abstraktion. 1426 01:11:48,070 --> 01:11:52,910 >> Og en anden ting er slags denne idé lokalisere din kode til en 1427 01:11:52,910 --> 01:11:54,280 bestemt afsnit. 1428 01:11:54,280 --> 01:11:57,450 Så hvis du har et problem, du ikke nødt til at gå hele din kode forsøger 1429 01:11:57,450 --> 01:11:58,730 at fastsætte, hvor problemet var. 1430 01:11:58,730 --> 01:12:00,990 Så i dette tilfælde, implementeret jeg terning forkert. 1431 01:12:00,990 --> 01:12:02,820 Jeg troede terning var multiplicere med tre. 1432 01:12:02,820 --> 01:12:05,760 >> Så i dette tilfælde, er dette et program der bare har at gange med tre 1433 01:12:05,760 --> 01:12:06,750 overalt. 1434 01:12:06,750 --> 01:12:10,910 Og der er et andet program, der har indregnet terning ud i en funktion. 1435 01:12:10,910 --> 01:12:14,040 Og så nu, hvis jeg ønsker at lave min fejl her, jeg er nødt til at løse hver enkelt linje 1436 01:12:14,040 --> 01:12:15,620 kode i dette program. 1437 01:12:15,620 --> 01:12:19,190 Mens på den anden side, hvis jeg bruger funktion, jeg behøver kun at ændre 1438 01:12:19,190 --> 01:12:20,650 hvad der var galt på ét sted. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Så i datalogi, vi ringe input og output. 1441 01:12:28,730 --> 01:12:31,640 Indgange kaldes parametre eller argumenter, og udgange kaldes 1442 01:12:31,640 --> 01:12:32,950 returnere værdier. 1443 01:12:32,950 --> 01:12:39,000 Og vi vil se, hvordan det hjælper os med at sortere af definere en funktion i en anden. 1444 01:12:39,000 --> 01:12:41,430 Så dette er en funktion definition for cubing. 1445 01:12:41,430 --> 01:12:45,110 Så det tager et input, og derefter den returnerer at antal gange 1446 01:12:45,110 --> 01:12:47,020 selv tre gange. 1447 01:12:47,020 --> 01:12:48,020 Så lad os bryde det ned. 1448 01:12:48,020 --> 01:12:53,090 >> Så vi har en funktion header, som dybest set består af tre ting. 1449 01:12:53,090 --> 01:12:56,050 Så vi har parametrene, som er, som jeg sagde før, 1450 01:12:56,050 --> 01:12:57,680 inputs til denne funktion. 1451 01:12:57,680 --> 01:12:59,300 Og så giver vi funktionen et navn. 1452 01:12:59,300 --> 01:13:00,740 I dette tilfælde hedder den terning. 1453 01:13:00,740 --> 01:13:03,860 Og så skal vi angive, hvad den type af returværdien. 1454 01:13:03,860 --> 01:13:06,760 >> Så i dette tilfælde min terning funktion tager et heltal, og det også 1455 01:13:06,760 --> 01:13:07,890 returnerer et heltal. 1456 01:13:07,890 --> 01:13:11,510 Så hvis jeg går i to, to er et heltal, den returnerer otte til mig, hvilket 1457 01:13:11,510 --> 01:13:13,250 er et helt tal. 1458 01:13:13,250 --> 01:13:15,420 Så tilbage typenavn parametre. 1459 01:13:15,420 --> 01:13:16,670 Spørgsmål om det? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> Og så er returværdien faktisk angivet i slutningen ved at sige afkast 1462 01:13:24,230 --> 01:13:27,540 og derefter returnere uanset indeholder returværdien. 1463 01:13:27,540 --> 01:13:30,940 Så i dette tilfælde, hvis vi sætter det hele sammen, en funktion tager i 1464 01:13:30,940 --> 01:13:35,100 parametre, det hedder noget, og den returnerer noget, er den type 1465 01:13:35,100 --> 01:13:36,350 at vi siger, at det skulle være. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Eventuelle spørgsmål? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Så hvordan kan vi bruge en funktion? 1470 01:13:45,080 --> 01:13:49,230 Nå, skriver vi en funktion og derefter vi bruger det i vores program, right? 1471 01:13:49,230 --> 01:13:51,565 Så jeg kaldte det terning, og så kan jeg bruge terning. 1472 01:13:51,565 --> 01:13:54,200 >> Men hvad der er vigtigt at bemærke, er nævnte rækkefølge spørgsmål. 1473 01:13:54,200 --> 01:13:58,100 Hvis jeg har terning under main, det er vil løbe ind i terningen. 1474 01:13:58,100 --> 01:14:00,360 Og på dette punkt, er der intet kaldet terning i programmet, og det er 1475 01:14:00,360 --> 01:14:02,550 bare at være ligesom, jeg har ingen idé om, hvad terningen er. 1476 01:14:02,550 --> 01:14:05,060 >> Så det vil fortælle dig, implicit erklæring af funktionen. 1477 01:14:05,060 --> 01:14:06,690 Det er den fejl, der dukker op. 1478 01:14:06,690 --> 01:14:10,230 Og så i dette tilfælde, terning er under vigtigste, så det kommer ikke 1479 01:14:10,230 --> 01:14:12,006 at vide det. 1480 01:14:12,006 --> 01:14:14,724 >> SPEAKER 5: Så vigtigste er normalt Den sidste funktion defineret? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Så spørgsmålet er, er vigtigste normalt den sidste 1482 01:14:17,290 --> 01:14:18,170 ting, som du ville definere? 1483 01:14:18,170 --> 01:14:19,730 Og nej. 1484 01:14:19,730 --> 01:14:22,280 Det er fordi vi normalt gerne main at være på toppen, right? 1485 01:14:22,280 --> 01:14:24,640 Fordi det er den første ting, du ønsker programmøren åbner 1486 01:14:24,640 --> 01:14:25,640 program at se. 1487 01:14:25,640 --> 01:14:29,950 Og så hvordan løser vi dette problem for vi ønsker vigtigste at være på toppen, men den 1488 01:14:29,950 --> 01:14:33,750 funktioner, som vi ønsker, vi vil have dem at være under main alligevel være i stand til at anvende 1489 01:14:33,750 --> 01:14:34,930 dem inde i main? 1490 01:14:34,930 --> 01:14:36,870 >> Nå, vi bruger det, vi kalder en funktion prototype. 1491 01:14:36,870 --> 01:14:40,830 Så hvad en funktion prototype væsentlige er det først tager, hvad 1492 01:14:40,830 --> 01:14:45,060 signaturen eller funktionen header af, hvad vi ønsker at gennemføre ned 1493 01:14:45,060 --> 01:14:47,420 her, og vi sætter det på toppen af ​​et program. 1494 01:14:47,420 --> 01:14:51,400 >> Så vi siger i dette tilfælde, ja, senere i vores program, vil vi 1495 01:14:51,400 --> 01:14:55,010 at gøre et løfte om at gennemføre denne funktion kaldet int terning, som tager 1496 01:14:55,010 --> 01:14:56,260 et heltal input. 1497 01:14:56,260 --> 01:15:00,870 Så nu, fordi det er over hoved, main, går det til at sige, åh, ja, 1498 01:15:00,870 --> 01:15:03,910 senere i programmet, er der kommer til at være der, så jeg kan henvise til det, så jeg vil 1499 01:15:03,910 --> 01:15:05,230 bare lade det gå igennem for nu. 1500 01:15:05,230 --> 01:15:07,660 >> Og derefter ved bunden, vi gennemfører terning. 1501 01:15:07,660 --> 01:15:11,180 Og derefter vigtigste vil bare sige, godt, vil det sortere link 1502 01:15:11,180 --> 01:15:12,250 disse to symboler sammen. 1503 01:15:12,250 --> 01:15:14,320 Og vi vil dække, hvad der betyder senere. 1504 01:15:14,320 --> 01:15:17,090 Og så vil vide, at dette er den terning funktion, den skal bruge. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: Den [uhørligt] om at ville main forneden eller 1507 01:15:23,383 --> 01:15:24,880 top, jeg har set begge. 1508 01:15:24,880 --> 01:15:28,630 Der er ting, der bare kan lide at sætte vigtigste nederst. 1509 01:15:28,630 --> 01:15:32,520 Men når et projekt bliver især store, normalt vigtigste er i en 1510 01:15:32,520 --> 01:15:34,290 fil alle sine egne. 1511 01:15:34,290 --> 01:15:38,170 Og på det tidspunkt, som int terning linje ville - 1512 01:15:38,170 --> 01:15:42,460 indersiden af ​​stdio.h er en flok af linjer ligesom at int 1513 01:15:42,460 --> 01:15:44,010 terning int input linje. 1514 01:15:44,010 --> 01:15:50,170 >> Og så disse prototyper er ting, du tendens til at sætte ind i header-filer, på 1515 01:15:50,170 --> 01:15:52,140 hvilket tidspunkt, det gør ikke noget. 1516 01:15:52,140 --> 01:15:54,700 Tja, det gør ikke noget. 1517 01:15:54,700 --> 01:15:56,070 De går altid på toppen. 1518 01:15:56,070 --> 01:15:59,490 Og hvis hoved er ikke en fil alle sine egne, du behøver ikke at bekymre dig om at sætte 1519 01:15:59,490 --> 01:16:02,360 enkelte funktion prototyper i filen. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: Og vi vil komme til at lidt lidt senere, da Rob begynder at tale 1521 01:16:05,370 --> 01:16:06,380 om kompilering. 1522 01:16:06,380 --> 01:16:09,480 Og så er der også en forskel mellem parameter og argument. 1523 01:16:09,480 --> 01:16:12,500 Og parameter er lige, hvad Vi kalder disse input, når 1524 01:16:12,500 --> 01:16:13,820 vi definere funktionen. 1525 01:16:13,820 --> 01:16:16,950 Og vi kalder det et argument, når vi faktisk passere det ind i funktionen. 1526 01:16:16,950 --> 01:16:19,600 >> Så i dette tilfælde, er en parameter, som vi sagde før. 1527 01:16:19,600 --> 01:16:24,130 Og når vi rent faktisk bruger det derovre, terning af x, så x selv er 1528 01:16:24,130 --> 01:16:25,910 hvad vi kalder et argument til funktionen terningen. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Så parameter argumenter er - 1530 01:16:28,150 --> 01:16:33,270 der er denne forskel, meget forvirret flæng. 1531 01:16:33,270 --> 01:16:37,090 På dette punkt, for mig, det er ligesom en af de ord, når jeg ser det i 1532 01:16:37,090 --> 01:16:41,190 naturen, kan jeg ikke hjælpe, men straks spørgsmålet om, hvorvidt de bruger det i 1533 01:16:41,190 --> 01:16:44,120 den rette sammenhæng, fordi Forskellen er subtil nok, at bare 1534 01:16:44,120 --> 01:16:45,500 alle har tendens - 1535 01:16:45,500 --> 01:16:48,530 Jeg næsten altid sige argument uanset hvad jeg mener. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> Josef og funktioner er også nyttige for det, vi kalder bivirkninger. 1538 01:16:54,630 --> 01:16:59,230 Så en funktion kan tage nogen input, og det kan også producere nogen udgange. 1539 01:16:59,230 --> 01:17:03,280 Så i dette særlige tilfælde, er jeg definerer en subrutine, der ikke har 1540 01:17:03,280 --> 01:17:03,970 returværdi. 1541 01:17:03,970 --> 01:17:07,730 Og for at præcisere, at vi bruger hvad vi kalder et tomrum herovre. 1542 01:17:07,730 --> 01:17:10,890 Og så den bivirkning af denne funktion er, at det bare udskriver ting 1543 01:17:10,890 --> 01:17:11,920 ud til siden. 1544 01:17:11,920 --> 01:17:13,840 Det behøver faktisk ikke tage nogen input, og det ikke 1545 01:17:13,840 --> 01:17:15,360 faktisk producere eventuelle udgange. 1546 01:17:15,360 --> 01:17:18,230 >> Men dette kan være nyttigt i den forstand, hvis du vil, for eksempel, debug 1547 01:17:18,230 --> 01:17:21,530 noget i dit program, hvis du ønsker til at skrive en lille subrutine der 1548 01:17:21,530 --> 01:17:25,160 udskriver, lad os sige, at indholdet hukommelse eller noget. 1549 01:17:25,160 --> 01:17:29,800 Og så disse bivirkninger er undertiden anvendelig uden for den sammenhæng 1550 01:17:29,800 --> 01:17:33,010 af bare gerne input og output. 1551 01:17:33,010 --> 01:17:34,260 Eventuelle spørgsmål? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> Og for at afslutte denne særlige segment, hvad betyder dette program gøre? 1554 01:17:44,240 --> 01:17:47,420 Jeg vil give jer et par sekunder at læse igennem den. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 På et meget grundlæggende niveau, hvad vi ønsker at sige, at det swaps x og y, right? 1557 01:17:56,880 --> 01:18:00,090 >> Så hvor mange af jer rent faktisk tror, dette vil bytte x og y? 1558 01:18:00,090 --> 01:18:02,160 Løft din hånd. 1559 01:18:02,160 --> 01:18:02,760 Ingen. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Der mener, at det vil ikke bytte x og y? 1562 01:18:06,720 --> 01:18:09,120 Og summen af ​​det var ikke hele rummet. 1563 01:18:09,120 --> 01:18:10,440 Så nogle mennesker er ikke sikker. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 Det er rimeligt. 1566 01:18:11,630 --> 01:18:16,450 >> Så lad os gå igennem, hvad der sker, når du faktisk kalde funktioner først i 1567 01:18:16,450 --> 01:18:18,320 For at besvare dette spørgsmål. 1568 01:18:18,320 --> 01:18:21,430 Så dette er hvad hukommelse slags ligner. 1569 01:18:21,430 --> 01:18:23,860 Det er lidt ligesom en forenklet model af, hvad hukommelse ser ud, når 1570 01:18:23,860 --> 01:18:24,800 du kører et program. 1571 01:18:24,800 --> 01:18:27,270 Så der er noget, der hedder stakken herned og 1572 01:18:27,270 --> 01:18:28,330 noget, der hedder den bunke. 1573 01:18:28,330 --> 01:18:30,950 Og disse vokse i retning af midt i hukommelsen. 1574 01:18:30,950 --> 01:18:33,860 >> Så i dette særlige tilfælde, hvor du kalder en funktion, er det 1575 01:18:33,860 --> 01:18:35,680 bliver sat på stakken. 1576 01:18:35,680 --> 01:18:38,900 Og så hvad der er indeholdt i denne funktionen forbliver i det, vi kalder at 1577 01:18:38,900 --> 01:18:40,550 funktionens stack ramme. 1578 01:18:40,550 --> 01:18:44,500 Og så for at få en flot visualisering af dette, let's - for eksempel, havde vi 1579 01:18:44,500 --> 01:18:45,960 program vigtigste tidligere. 1580 01:18:45,960 --> 01:18:47,820 Og inde i hoved, vi kaldte terning. 1581 01:18:47,820 --> 01:18:50,650 Så main ville først gå på stakken indramme, fordi det er den første funktion 1582 01:18:50,650 --> 01:18:51,640 det hedder. 1583 01:18:51,640 --> 01:18:55,740 >> Og da terning kaldes indersiden af vigtigste, det bliver lagt på toppen af ​​hoved 1584 01:18:55,740 --> 01:18:57,790 indersiden af ​​hukommelsen. 1585 01:18:57,790 --> 01:19:02,090 Så hvad vil du bemærke her er, at terning har sine egne parametre og dens 1586 01:19:02,090 --> 01:19:02,950 egne lokale. 1587 01:19:02,950 --> 01:19:06,720 Så når du rent faktisk passerer noget til en funktion af de parametre, som den 1588 01:19:06,720 --> 01:19:09,910 får er kopier af, hvad der var gået fra main. 1589 01:19:09,910 --> 01:19:14,140 >> Og for at slags forklare dette, lad os gå gennem et program. 1590 01:19:14,140 --> 01:19:16,960 Så vi har stakken, og dette er bare stakken del. 1591 01:19:16,960 --> 01:19:21,240 Og hvad vi gør, er vi først initialisere x og y til et og to. 1592 01:19:21,240 --> 01:19:22,400 Så vi har disse små bokse. 1593 01:19:22,400 --> 01:19:25,310 De sidder i hoved stak ramme på stakken. 1594 01:19:25,310 --> 01:19:26,580 De indeholder et og to. 1595 01:19:26,580 --> 01:19:28,820 >> Nu kalder vi swap. 1596 01:19:28,820 --> 01:19:33,940 Hvad der sker, er vi passerer x og y i swap og swap skaber sine egne kopier 1597 01:19:33,940 --> 01:19:36,520 af disse variabler til brug inde dens stakramme. 1598 01:19:36,520 --> 01:19:39,920 Så nu derovre, har vi en, der indeholder den værdi, x havde, og b, 1599 01:19:39,920 --> 01:19:41,620 der indeholder den værdi, y havde. 1600 01:19:41,620 --> 01:19:42,670 Så en, to. 1601 01:19:42,670 --> 01:19:47,130 >> Og du vil opdage, at dette er adskilt fra x og y inde i main. 1602 01:19:47,130 --> 01:19:51,390 Så vi nu oprette en midlertidig variabel til at indeholde en. 1603 01:19:51,390 --> 01:19:56,100 Vi sætter en lige til B, så det ændringer fra et til to. 1604 01:19:56,100 --> 01:19:59,340 Og så satte vi b lige temp, som er én. 1605 01:19:59,340 --> 01:20:01,640 >> Og så nu vi afslutte ud af denne funktion. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Når du afslutter ud af funktion, stakrammen bliver poppet fra stakken. 1608 01:20:07,410 --> 01:20:08,270 Vi kalder det skubbe. 1609 01:20:08,270 --> 01:20:12,750 Du skubber en stak ramme på stakken og du pop, hvis off stakken. 1610 01:20:12,750 --> 01:20:16,080 Og så hvad der sker, er alt det, var i den stakramme slags bare 1611 01:20:16,080 --> 01:20:17,280 går op i flammer. 1612 01:20:17,280 --> 01:20:19,180 Og så der ikke længere eksisterer. 1613 01:20:19,180 --> 01:20:20,470 >> Men hvad gør vi mærke? 1614 01:20:20,470 --> 01:20:23,690 Vi har faktisk aldrig ændret værdier af x og y, right? 1615 01:20:23,690 --> 01:20:26,530 Så dem forblev lokal til hoved. 1616 01:20:26,530 --> 01:20:29,900 Og ved at sende ting i swap, vi faktisk aldrig ændret disse værdier. 1617 01:20:29,900 --> 01:20:31,260 Og hvad kalder vi det her? 1618 01:20:31,260 --> 01:20:33,040 Vi kalder denne forbifarten af ​​værdi. 1619 01:20:33,040 --> 01:20:36,860 >> Så i C, når du passerer ting ind funktioner, den passerer dem værdi og 1620 01:20:36,860 --> 01:20:40,160 gør en kopi af dem på funktionen at bruge. 1621 01:20:40,160 --> 01:20:43,980 Og vi vil lære om noget, der hedder passerer ved henvisning senere, men det er 1622 01:20:43,980 --> 01:20:45,390 en måde, du kan løse dette problem. 1623 01:20:45,390 --> 01:20:47,080 Men vi vil ikke bekymre dig om at indtil senere. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: Og faktisk dette begreb, passerer ved henvisning, er så C ikke engang 1625 01:20:52,200 --> 01:20:54,270 passerer ved henvisninger. 1626 01:20:54,270 --> 01:20:56,760 C har udelukkende forbi værdi. 1627 01:20:56,760 --> 01:20:59,630 Ligegyldigt hvad du gør, er du altid passerer en kopi af noget. 1628 01:20:59,630 --> 01:21:03,395 Det er bare det, som jeg slags nævnt at før med pointere 1629 01:21:03,395 --> 01:21:07,690 og at en streng er egentlig bare fire bytes peger på et sted i hukommelsen. 1630 01:21:07,690 --> 01:21:11,890 >> Tja, hvis jeg har denne streng, og det er fortæller mig, at er, hvor strengen - 1631 01:21:11,890 --> 01:21:15,470 Tja, hvis jeg har denne pegepind til denne placere i hukommelsen, så kan jeg passere en 1632 01:21:15,470 --> 01:21:19,160 kopi af denne pointer til en funktion, og denne funktion ved stadig hvor i 1633 01:21:19,160 --> 01:21:19,780 hukommelse det er. 1634 01:21:19,780 --> 01:21:22,950 Så begge disse pejlemærker peger til det samme sted i hukommelsen, og 1635 01:21:22,950 --> 01:21:26,460 det er, hvordan vi kommer til at være i stand til at ændre ting ud over 1636 01:21:26,460 --> 01:21:29,852 nuværende stakramme. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Har du lyst til at gøre kompilere? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Nej, det er 05:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Det er 05:30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Så vi vil dække kompilere Jeg gætter på næste afsnit, eller din afdeling 1643 01:21:39,280 --> 01:21:42,795 leder vil på dette punkt. 1644 01:21:42,795 --> 01:21:43,272 Og - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Eventuelle spørgsmål? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Eventuelle spørgsmål? 1647 01:21:46,760 --> 01:21:47,150 Ja? 1648 01:21:47,150 --> 01:21:52,469 >> SPEAKER 5: Brug strenge fra CS50, enhver funktioner, som vi vil bruge til 1649 01:21:52,469 --> 01:21:53,880 dem, der vil være ligesom C-funktioner. 1650 01:21:53,880 --> 01:21:59,050 CS50 er ikke gået ind og gjort nogen ekstra. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Korrekt. 1652 01:22:01,850 --> 01:22:08,155 Enhver af C ligesom [uhørligt], kan du ville bruge dem på vores strenge. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: Og en sidste ting, jeg ønsker at nævne, er, at vi har en styleguide 1654 01:22:12,400 --> 01:22:13,130 for denne klasse. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Åh, ja. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Så hvis du er kommet fra en programmering baggrunden, før du 1657 01:22:15,270 --> 01:22:17,750 kan have visse konventioner, når du skriver kode som at sætte 1658 01:22:17,750 --> 01:22:20,950 seler på samme linje eller særlige måder at indrykke 1659 01:22:20,950 --> 01:22:22,240 eller navngive dine variabler. 1660 01:22:22,240 --> 01:22:26,870 I denne klasse, vi ønsker at følge en bestemt stil guide, bare fordi, 1661 01:22:26,870 --> 01:22:31,100 godt, hvis du går ud og arbejde i industrien, er du nødt til at blive forventes 1662 01:22:31,100 --> 01:22:34,780 at følge den stil vejledning af selskab, hvor du gå til. 1663 01:22:34,780 --> 01:22:38,040 >> Ligesom for eksempel, Facebook tror jeg har en særlig form for navngivning 1664 01:22:38,040 --> 01:22:38,760 konvention. 1665 01:22:38,760 --> 01:22:42,570 Og der er forskelle mellem kamel husets variabler og ligesom 1666 01:22:42,570 --> 01:22:44,610 adskille dem med understregninger. 1667 01:22:44,610 --> 01:22:52,170 Og også, jeg tror, ​​de fleste vigtigere, ligesom for eksempel indrykning, right? 1668 01:22:52,170 --> 01:22:56,440 >> Vi krøllede parenteser starter hvor tilstanden er, og de 1669 01:22:56,440 --> 01:22:57,730 er på næste linje. 1670 01:22:57,730 --> 01:23:01,230 Og vi også sætte krøllede parenteser i selvom det er kun én linje. 1671 01:23:01,230 --> 01:23:06,100 Og en masse gange, er der måder at gøre den, hvor du kan efterlade disse seler 1672 01:23:06,100 --> 01:23:08,380 fra, hvis det er kun én linje under Hvis erklæring. 1673 01:23:08,380 --> 01:23:12,070 Men i denne klasse, vi ønsker at følge en bestemt stil guide bare så du får 1674 01:23:12,070 --> 01:23:13,550 bruges til den slags ting. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Ja, og Style 50 kommer til at håndhæve denne stil guide, og vi er 1676 01:23:16,410 --> 01:23:18,080 kommer til at bruge Style 50 til lønklasse din kode. 1677 01:23:18,080 --> 01:23:25,150 Så det gør tingene lettere for os og forhåbentlig bør ikke gøre ting, 1678 01:23:25,150 --> 01:23:30,120 meget værre for dig givet standardiseret stil bør ikke være, at 1679 01:23:30,120 --> 01:23:31,460 urealistisk. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: Og endelig, for at finde den stil , skal du gå til manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 Og ja. 1682 01:23:37,725 --> 01:23:40,575 >> SPEAKER 4: Vil du gennemtvinge eventuelle tegn per linje? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Ja. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Undskyld, drenge. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Det er ligesom en af ​​de eneste. 1686 01:23:47,680 --> 01:23:50,420 På dette punkt er jeg OK med 120. 1687 01:23:50,420 --> 01:23:52,460 Jeg er OK med at sige 120 tegn per linje. 1688 01:23:52,460 --> 01:23:53,830 Jeg forstår at der er en vis grænse. 1689 01:23:53,830 --> 01:23:57,130 Jeg tror 80 er så lille, men vi håndhæve det. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Personligt synes jeg, med C, 80 tegn er mere OK. 1691 01:24:00,260 --> 01:24:04,160 Når du begynder at komme til andre sprog som JavaScript og PHP, ikke 1692 01:24:04,160 --> 01:24:08,860 så rimeligt at blot begrænse det til 80 tegn. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Nå, det var super sektion. 1695 01:24:12,780 --> 01:24:14,750 Er der nogen der vil have slik? 1696 01:24:14,750 --> 01:24:16,000 >> SPEAKER 4: Ja. 1697 01:24:16,000 --> 01:24:18,667