1 00:00:00,000 --> 00:00:11,050 2 00:00:11,050 --> 00:00:13,351 >> ROB BOWDEN: Detta är den mer bekväm sektion, 3 00:00:13,351 --> 00:00:16,309 men det betyder inte att om du känns som du inte är bekvämare 4 00:00:16,309 --> 00:00:18,420 Du kommer inte att lära sig saker här. 5 00:00:18,420 --> 00:00:20,600 Så låt oss komma igång. 6 00:00:20,600 --> 00:00:22,819 Har du diabilder kommer rätt in i saker. 7 00:00:22,819 --> 00:00:24,360 Är jag på väg att bara ta det just nu? 8 00:00:24,360 --> 00:00:25,680 9 00:00:25,680 --> 00:00:26,450 Byta bärbara datorer. 10 00:00:26,450 --> 00:00:30,470 11 00:00:30,470 --> 00:00:32,950 >> ALLISON: Du vill inte presentera dig, Rob? 12 00:00:32,950 --> 00:00:34,090 >> ROB BOWDEN: Åh, jag är Rob. 13 00:00:34,090 --> 00:00:35,182 14 00:00:35,182 --> 00:00:37,470 Detta är min femte året TF-ing CS50. 15 00:00:37,470 --> 00:00:38,760 16 00:00:38,760 --> 00:00:39,650 >> GABRIEL: Jag är Gabriel. 17 00:00:39,650 --> 00:00:41,610 Jag är chef TF i CS50. 18 00:00:41,610 --> 00:00:44,009 Jag var TF förra året och i år. 19 00:00:44,009 --> 00:00:46,675 ALLISON: Och jag är Alison, och detta är mitt andra år TF-ing CS50. 20 00:00:46,675 --> 00:00:48,510 21 00:00:48,510 --> 00:00:50,825 >> ROB BOWDEN: Okej, så denna sak till vänster, 22 00:00:50,825 --> 00:00:52,250 förhoppningsvis du har sett det förut. 23 00:00:52,250 --> 00:00:54,112 Om inte för att du hämta det själv, 24 00:00:54,112 --> 00:00:55,570 du borde ha sett det i föreläsning. 25 00:00:55,570 --> 00:00:56,590 26 00:00:56,590 --> 00:01:01,320 Så detta är CS50 apparaten, och han gjorde en något av en beskrivning av den 27 00:01:01,320 --> 00:01:01,880 i föreläsning. 28 00:01:01,880 --> 00:01:06,890 Men i grunden är det bara du kör ett operativsystem 29 00:01:06,890 --> 00:01:10,550 systemet inom ditt operativsystem system så att vi kan ge dig 30 00:01:10,550 --> 00:01:12,540 program utan att behöva att oroa sig, oh är detta 31 00:01:12,540 --> 00:01:15,989 kommer att arbeta med både Windows och Mac, eller om någon av er 32 00:01:15,989 --> 00:01:17,280 redan använder Linux, Linux. 33 00:01:17,280 --> 00:01:18,532 34 00:01:18,532 --> 00:01:20,240 Det är bara tänkt att vara en vanlig spel 35 00:01:20,240 --> 00:01:23,010 fältet så alla har exakt samma miljö. 36 00:01:23,010 --> 00:01:25,344 >> Så om du har inte ner detta redan, 37 00:01:25,344 --> 00:01:28,510 du ska ladda ner det, eftersom du är kommer att behöva det för problemet set. 38 00:01:28,510 --> 00:01:32,335 Och det är en två gigabyte ladda ner, så det kan ta ett tag. 39 00:01:32,335 --> 00:01:33,780 På Harvard det ska gå fort. 40 00:01:33,780 --> 00:01:35,870 41 00:01:35,870 --> 00:01:37,440 Så CS50 apparaten. 42 00:01:37,440 --> 00:01:41,980 >> Nu i början kommer vi att tala om bara en massa kommandorad 43 00:01:41,980 --> 00:01:46,880 grejer, och så med det, menar jag att arbeta i denna lilla miljö här. 44 00:01:46,880 --> 00:01:53,230 Och märker alla saker Jag säger just här just nu 45 00:01:53,230 --> 00:01:56,900 kommer att fungera om du är inne i en terminal apparatens insida, 46 00:01:56,900 --> 00:02:00,790 eller om du är inne i gedit terminalfönster 47 00:02:00,790 --> 00:02:02,090 apparatens insida. 48 00:02:02,090 --> 00:02:03,770 Så de miljöerna är identiska. 49 00:02:03,770 --> 00:02:04,940 50 00:02:04,940 --> 00:02:07,270 >> Men jag ska gå en tredje väg. 51 00:02:07,270 --> 00:02:12,200 Och märker här nere här liten IP-adress här. 52 00:02:12,200 --> 00:02:15,940 Så du behöver inte göra detta, men det här IP 53 00:02:15,940 --> 00:02:19,700 address-- nu om Jag-- utom det blockeras av det här. 54 00:02:19,700 --> 00:02:22,790 55 00:02:22,790 --> 00:02:27,000 OK, så att IP-adressen över i en terminal 56 00:02:27,000 --> 00:02:31,090 här-- så denna terminal över här är en terminal i min Mac. 57 00:02:31,090 --> 00:02:34,540 Så det här är inte på något sätt för tillfället förknippas med den apparat alls. 58 00:02:34,540 --> 00:02:39,360 Och om du är på Windows, då är du kommer att behöva ladda ner något 59 00:02:39,360 --> 00:02:44,430 speciellt för denna, särskilt människor tenderar att använda Putty, P-U-T-T-Y. 60 00:02:44,430 --> 00:02:50,700 >> Så vad jag ska göra är att skriva SSH och sedan den IP-adressen. 61 00:02:50,700 --> 00:02:54,030 Tja, jharvard på den IP-adressen. 62 00:02:54,030 --> 00:03:00,150 Så 192.168.24.220. 63 00:03:00,150 --> 00:03:02,127 Denna skrämmande budskap, ignorera det. 64 00:03:02,127 --> 00:03:02,710 Skriv bara ja. 65 00:03:02,710 --> 00:03:04,550 66 00:03:04,550 --> 00:03:06,030 Detta är CS50 i en låda. 67 00:03:06,030 --> 00:03:07,460 Den frågar efter ditt lösenord. 68 00:03:07,460 --> 00:03:11,910 >> Och så i en hel del av dessa sammanhang där den frågar efter lösenordet [OHÖRBAR]. 69 00:03:11,910 --> 00:03:15,670 Vi har fått många frågor där det säger att det är faktiskt inte skriva. 70 00:03:15,670 --> 00:03:20,011 Den visar inte du karaktärerna i lösenordet som du skriver, om något, 71 00:03:20,011 --> 00:03:23,010 för en säkerhetsfunktion, för om någon tittar över axeln 72 00:03:23,010 --> 00:03:25,870 och de ser star star star star, då de 73 00:03:25,870 --> 00:03:28,640 vet att ditt lösenord är fyra tecken. 74 00:03:28,640 --> 00:03:32,660 Så tanken är att det kommer att fråga dig om ditt lösenord, typ. 75 00:03:32,660 --> 00:03:34,490 Det kommer inte att visa du tecknen, 76 00:03:34,490 --> 00:03:36,090 men det är faktiskt acceptera dem. 77 00:03:36,090 --> 00:03:39,210 I det här fallet, när du någonsin se en lösenordsruta 78 00:03:39,210 --> 00:03:42,280 hantera apparaten, den lösenord kommer att vara crimson. 79 00:03:42,280 --> 00:03:43,270 Så crimson. 80 00:03:43,270 --> 00:03:44,730 81 00:03:44,730 --> 00:03:50,550 >> Och nu här inne i detta fönster som är i min Mac, 82 00:03:50,550 --> 00:03:54,120 Jag är i grund och botten har exakt samma uppfattning 83 00:03:54,120 --> 00:03:57,040 såsom insidan av en terminal i apparaten. 84 00:03:57,040 --> 00:03:58,470 Så du behöver inte göra det här. 85 00:03:58,470 --> 00:04:01,300 Du kan göra allt du vill apparatens insida. 86 00:04:01,300 --> 00:04:05,140 Jag nästan aldrig faktiskt göra något i apparaten. 87 00:04:05,140 --> 00:04:09,440 Jag nästan alltid minimera det och nu Jag jobbar SSH i apparaten. 88 00:04:09,440 --> 00:04:11,480 89 00:04:11,480 --> 00:04:14,180 >> Om något, om du ha en långsammare dator, 90 00:04:14,180 --> 00:04:15,820 Du kan märka en skillnad. 91 00:04:15,820 --> 00:04:18,839 Jag gör det därför att jag föredrar denna terminalfönster. 92 00:04:18,839 --> 00:04:20,881 Den har några funktioner som Jag kan dela fönstret, 93 00:04:20,881 --> 00:04:22,672 och nu kan jag SSH in genom apparaten. 94 00:04:22,672 --> 00:04:24,105 Jag fick två SSH händer på en gång. 95 00:04:24,105 --> 00:04:28,030 96 00:04:28,030 --> 00:04:32,250 Om din dator är särskilt långsam och du arbetar i apparaten, 97 00:04:32,250 --> 00:04:35,200 och du inser att detta är verkligen laggar, oavsett. 98 00:04:35,200 --> 00:04:38,220 Tenderar att vara mycket snabbare om du är SSH-ed in. 99 00:04:38,220 --> 00:04:40,960 Men annars kan du arbeta åt båda hållen. 100 00:04:40,960 --> 00:04:42,388 >> PUBLIK: Vad innebär SSH detta? 101 00:04:42,388 --> 00:04:43,820 102 00:04:43,820 --> 00:04:47,479 >> ROB BOWDEN: Secure skal, något sådant? 103 00:04:47,479 --> 00:04:48,270 Vad innebär SSH detta? 104 00:04:48,270 --> 00:04:54,214 105 00:04:54,214 --> 00:04:55,130 GABRIEL: Secure shell. 106 00:04:55,130 --> 00:04:56,463 ALLISON: Det är bara säkert skal. 107 00:04:56,463 --> 00:04:57,720 ROB BOWDEN: Secure shell. 108 00:04:57,720 --> 00:05:03,700 Det är ett protokoll som dig-- det ett säkert protokoll, så krypteras. 109 00:05:03,700 --> 00:05:06,850 Människor kan inte snoka nätverket och se vad du säger till någonting 110 00:05:06,850 --> 00:05:08,120 du är SSH-ed till. 111 00:05:08,120 --> 00:05:12,900 Och faktiskt, i olden dagar av CS50, så år 2009 112 00:05:12,900 --> 00:05:19,300 när jag var en nybörjare, det sätt som du arbetat med CS50 problemsamlingar, 113 00:05:19,300 --> 00:05:22,490 var du SSH-ed till viss server att vi gav dig tillgång till, 114 00:05:22,490 --> 00:05:23,497 och du arbetat med det. 115 00:05:23,497 --> 00:05:25,330 Så du hade inte det här grafisk apparaten. 116 00:05:25,330 --> 00:05:26,160 Ni hade inte gedit. 117 00:05:26,160 --> 00:05:28,930 Ni hade inte alla dessa saker som du kan visuellt peka och klicka. 118 00:05:28,930 --> 00:05:30,346 Du var tvungen att jobba i detta gränssnitt. 119 00:05:30,346 --> 00:05:31,580 120 00:05:31,580 --> 00:05:33,716 Jag föredrar att arbeta i detta gränssnitt. 121 00:05:33,716 --> 00:05:36,090 Så en del av vad vi ska att gå till över just nu 122 00:05:36,090 --> 00:05:39,560 är ett gäng av kommandon som du bör 123 00:05:39,560 --> 00:05:42,095 börjar bli bekant med som du går med i kursen. 124 00:05:42,095 --> 00:05:43,190 125 00:05:43,190 --> 00:05:45,790 Och ärligt talat, när du vänja sig vid dem, det 126 00:05:45,790 --> 00:05:48,220 är så mycket snabbare att fungera i denna miljö 127 00:05:48,220 --> 00:05:53,690 än det är att arbeta med finder, dra och klicka på saker. 128 00:05:53,690 --> 00:05:55,340 129 00:05:55,340 --> 00:05:57,210 >> Så här är vi. 130 00:05:57,210 --> 00:06:01,779 Nu har jag bara SSH-ed in, och så standard location-- du 131 00:06:01,779 --> 00:06:04,820 såg några av dessa kommandon i klassen, men vi ska gå igenom dem alla igen. 132 00:06:04,820 --> 00:06:08,060 Standardplatsen är vi i är hemkatalogen. 133 00:06:08,060 --> 00:06:11,520 Och katalog, bara ett annat ord för mapp. 134 00:06:11,520 --> 00:06:13,310 Så vi är i hemkatalogen. 135 00:06:13,310 --> 00:06:15,889 Skriv ls, lista filerna i den här katalogen. 136 00:06:15,889 --> 00:06:17,430 Uppenbar jag skapade en blah.c tidigare. 137 00:06:17,430 --> 00:06:19,120 138 00:06:19,120 --> 00:06:20,472 Så vi har en skrivbordskatalogen. 139 00:06:20,472 --> 00:06:21,930 Du märker det syntaxmarkering? 140 00:06:21,930 --> 00:06:27,400 141 00:06:27,400 --> 00:06:32,900 Den ljusblå markering indikerar en katalog och den raka vita 142 00:06:32,900 --> 00:06:34,380 visar bara en vanlig fil. 143 00:06:34,380 --> 00:06:35,410 144 00:06:35,410 --> 00:06:37,690 Så det kommer att bli några andra färger som du ser. 145 00:06:37,690 --> 00:06:41,240 En körbar fil är förmodligen kommer att vara grön eller nåt sånt. 146 00:06:41,240 --> 00:06:44,820 OK, så vi är i hemkatalogen. 147 00:06:44,820 --> 00:06:48,970 >> Nu om jag vill gå in i en annan katalog, cd kommandot jag vill. 148 00:06:48,970 --> 00:06:52,720 Så byta katalog, och sedan passera namnet på katalogen 149 00:06:52,720 --> 00:06:54,020 att du vill gå in. 150 00:06:54,020 --> 00:06:55,780 Så här har vi fyra alternativ. 151 00:06:55,780 --> 00:07:03,397 Jag kan gå in i nedladdningar, och nu ser vi Här har man uppdaterat denna parentes 152 00:07:03,397 --> 00:07:04,480 att säga att jag är i ~ / downloads. 153 00:07:04,480 --> 00:07:05,620 154 00:07:05,620 --> 00:07:06,800 >> Så vad är tilde? 155 00:07:06,800 --> 00:07:10,640 Det är en förkortning för din hemkatalog. 156 00:07:10,640 --> 00:07:15,260 Så nästan allt du gör kommer att vara till din hemkatalog, 157 00:07:15,260 --> 00:07:20,620 och pwd är bara ett kommando Jag använder en gång under ett år som 158 00:07:20,620 --> 00:07:22,420 bara skriver ut den aktuella katalogen. 159 00:07:22,420 --> 00:07:25,730 Och så du ser här att ~ / Nedladdningar verkligen löser 160 00:07:25,730 --> 00:07:26,896 till / home / jharvard / downloads. 161 00:07:26,896 --> 00:07:29,320 162 00:07:29,320 --> 00:07:32,230 Så / home / jharvard är min hemkatalog. 163 00:07:32,230 --> 00:07:33,700 164 00:07:33,700 --> 00:07:39,400 >> Så vi kan cd dot dot. 165 00:07:39,400 --> 00:07:47,800 Nu dot dot är en speciell katalog som alltid hänvisar till en katalog upp. 166 00:07:47,800 --> 00:07:51,730 Så om jag är i ~ / downloads, sedan cd dot dot kommer att föra mig till Tilde. 167 00:07:51,730 --> 00:07:52,950 168 00:07:52,950 --> 00:07:55,490 Vad tror vi cd dot dot kommer att föra mig till nu? 169 00:07:55,490 --> 00:07:58,740 170 00:07:58,740 --> 00:08:00,570 Det kommer att föra mig till / home. 171 00:08:00,570 --> 00:08:04,450 Så tilde av utskriftsarbetskatalogen, Jag är i nu / home / jharvard. 172 00:08:04,450 --> 00:08:06,060 173 00:08:06,060 --> 00:08:08,820 en katalog upp från det, Nu står det här / home. 174 00:08:08,820 --> 00:08:12,330 175 00:08:12,330 --> 00:08:17,180 >> Nu cd dot dot. 176 00:08:17,180 --> 00:08:20,910 Nu är jag i rotkatalogen, och du kan inte göra det igen. 177 00:08:20,910 --> 00:08:23,340 Du ska bara stanna i rotkatalogen för evigt. 178 00:08:23,340 --> 00:08:26,700 I rotkatalogen har en hel massa saker som, om man vill titta på, 179 00:08:26,700 --> 00:08:27,410 du kan. 180 00:08:27,410 --> 00:08:29,700 Till exempel, om jag går till bin, innehåller det 181 00:08:29,700 --> 00:08:35,789 alla dessa binärer, såsom LS, och cd, och alla dessa saker. 182 00:08:35,789 --> 00:08:38,630 Så dessa kommandon behöver existerar någonstans i systemet, 183 00:08:38,630 --> 00:08:40,820 och det är i / bin. 184 00:08:40,820 --> 00:08:44,530 Men nästan allt du gör är kommer att vara från din hemkatalog. 185 00:08:44,530 --> 00:08:49,490 Och cd utan några argument som helst, du kunde säga cd ~, behöver inte. 186 00:08:49,490 --> 00:08:51,810 cd kommer att ge dig tillbaka till din hemkatalog. 187 00:08:51,810 --> 00:08:53,170 188 00:08:53,170 --> 00:08:54,230 >> En sista. 189 00:08:54,230 --> 00:09:00,200 cd - kommer att ta dig tillbaka till den senaste katalogen som du var i. 190 00:09:00,200 --> 00:09:04,080 Så jag bara cd'd två gånger i rad, så min förra katalogen var hemkatalogen. 191 00:09:04,080 --> 00:09:11,520 Om jag går till snedstreck bin, och nu låt oss gå upp och in användaren. 192 00:09:11,520 --> 00:09:12,550 193 00:09:12,550 --> 00:09:13,280 Användare aktie. 194 00:09:13,280 --> 00:09:14,840 195 00:09:14,840 --> 00:09:15,940 Låt oss gå till användar aktie. 196 00:09:15,940 --> 00:09:17,140 Nu är jag nu i användar aktie. 197 00:09:17,140 --> 00:09:19,320 cd - tillbaka i bin. 198 00:09:19,320 --> 00:09:22,980 Så detta blir särskilt användbar när du have-- och det kommer att växla. 199 00:09:22,980 --> 00:09:25,660 Så användarandel, back bin, aktiekorgen. 200 00:09:25,660 --> 00:09:27,250 >> Så det här blir användbart. 201 00:09:27,250 --> 00:09:33,150 Du kan hitta dig själv att ha många, många, många kapslade kataloger. 202 00:09:33,150 --> 00:09:37,370 Och du vill göra något riktigt snabbt i en övre katalog. 203 00:09:37,370 --> 00:09:40,330 Du går till den katalogen, gör förändringar och sånt, 204 00:09:40,330 --> 00:09:42,400 och nu vill du åka tillbaka till där du var. 205 00:09:42,400 --> 00:09:43,660 cd -. 206 00:09:43,660 --> 00:09:47,320 Jag är alltid frustrerad när jag råkar gå 207 00:09:47,320 --> 00:09:49,630 till den katalogen jag ville göra jobbet i. 208 00:09:49,630 --> 00:09:52,670 Jag får alltid frustrerad när jag gjorde det i två steg istället för ett steg, 209 00:09:52,670 --> 00:09:55,715 eftersom det innebär att cd - går att sätta i den mellanliggande läge 210 00:09:55,715 --> 00:09:57,010 istället för där jag vill gå. 211 00:09:57,010 --> 00:09:59,350 212 00:09:59,350 --> 00:10:01,450 >> Så vi ser alla listfiler. 213 00:10:01,450 --> 00:10:03,300 Vi vet hur att ta sig runt så här långt. 214 00:10:03,300 --> 00:10:09,900 Så nu ska vi prata om att redigera filer. 215 00:10:09,900 --> 00:10:18,790 Så i denna kurs, du är nästan alltid förväntas använda gedit. 216 00:10:18,790 --> 00:10:24,410 Om du vill kan du ta nästa steg och börja lära en kommandorad text 217 00:10:24,410 --> 00:10:25,240 redaktör. 218 00:10:25,240 --> 00:10:27,560 Så olika alternativ finns. 219 00:10:27,560 --> 00:10:31,760 >> Och de som är nog kommer att vara relevant för dig, 220 00:10:31,760 --> 00:10:35,340 Vi har Nano, Vim och Emacs. 221 00:10:35,340 --> 00:10:40,196 Så Nano är nybörjare kommandorad textredigerare. 222 00:10:40,196 --> 00:10:42,985 Så Nano låt oss gå på blah.c jag skapade tidigare. 223 00:10:42,985 --> 00:10:44,030 224 00:10:44,030 --> 00:10:46,480 Det är bara denna standard C-fil. 225 00:10:46,480 --> 00:10:51,540 Och du ser en massa grejer pågår på den nedre delen av skärmen, 226 00:10:51,540 --> 00:10:54,100 och uppenbarligen blah.c innehåller denna C-kod. 227 00:10:54,100 --> 00:10:55,420 228 00:10:55,420 --> 00:11:00,330 >> Så i detta särskilda redaktör, vad det säger på bottom-- 229 00:11:00,330 --> 00:11:06,290 nu detta cirkumflex symbol, Vi ser detta ^ G, ^ X, ^ O. 230 00:11:06,290 --> 00:11:10,310 Så att i nästan alla sammanhang som du ser, 231 00:11:10,310 --> 00:11:13,530 du kanske se att cirkumflex symbol i andra platser på nätet, på Stack Overflow, 232 00:11:13,530 --> 00:11:14,450 något liknande. 233 00:11:14,450 --> 00:11:16,970 Den hänvisar nästan alltid att styra. 234 00:11:16,970 --> 00:11:21,590 Så för att avsluta jag vill göra Kontroll X. Kontroll X, lämnar. 235 00:11:21,590 --> 00:11:22,750 236 00:11:22,750 --> 00:11:26,855 Och jag kan använda min pil för att flytta runt. 237 00:11:26,855 --> 00:11:28,010 238 00:11:28,010 --> 00:11:31,015 Märker jag inte kan peka och klicka lätthet. 239 00:11:31,015 --> 00:11:33,000 240 00:11:33,000 --> 00:11:35,010 Du måste använda din pil för att flytta runt. 241 00:11:35,010 --> 00:11:36,950 Det kan finnas en inställning att peka och klicka. 242 00:11:36,950 --> 00:11:40,000 >> Men låt oss göra några ändringar. 243 00:11:40,000 --> 00:11:42,100 Nu Kontroll X att gå exit. 244 00:11:42,100 --> 00:11:44,120 Det kommer att säga spara modifierad buffert. 245 00:11:44,120 --> 00:11:47,900 Nu prompten, y för ja, n utan. 246 00:11:47,900 --> 00:11:49,900 Kontroll C för att avbryta. 247 00:11:49,900 --> 00:11:50,780 Jag ska bara säga ja. 248 00:11:50,780 --> 00:11:51,709 Filnamn att skriva. 249 00:11:51,709 --> 00:11:53,500 Standard är filen att det redan är. 250 00:11:53,500 --> 00:11:54,230 Hit Enter. 251 00:11:54,230 --> 00:11:54,740 OK. 252 00:11:54,740 --> 00:11:58,580 Nu har jag just redigerat den filen, sparade den, och det ändras. 253 00:11:58,580 --> 00:11:59,770 254 00:11:59,770 --> 00:12:03,000 >> Så Nano är det enklaste textredigerare vänja sig. 255 00:12:03,000 --> 00:12:05,520 Alternativen är Vim och Emacs. 256 00:12:05,520 --> 00:12:11,250 De är högre nivå textredigerare som har en mycket brant inlärningskurva. 257 00:12:11,250 --> 00:12:13,740 Så min personliga preferenser är Vim. 258 00:12:13,740 --> 00:12:17,175 Och det har en mängd olika alternativ. 259 00:12:17,175 --> 00:12:18,210 260 00:12:18,210 --> 00:12:24,070 Och när du vänjer till det kommer du aldrig 261 00:12:24,070 --> 00:12:26,900 vill gå till någon annan textredigerare för att du bara 262 00:12:26,900 --> 00:12:29,590 har så många saker tillgängliga för dig i dessa, 263 00:12:29,590 --> 00:12:31,690 men det tar en riktigt lång tid att lära sig. 264 00:12:31,690 --> 00:12:36,000 Så kanske du bara vill tvinga själv just nu för att vänja sig vid det, 265 00:12:36,000 --> 00:12:38,130 men jag skulle säga att det är värt det. 266 00:12:38,130 --> 00:12:39,660 Men det är svårt. 267 00:12:39,660 --> 00:12:41,220 >> Och sedan Emacs. 268 00:12:41,220 --> 00:12:44,940 Jag kämpar alltid i Emacs eftersom Jag vet hur man gör absolut ingenting. 269 00:12:44,940 --> 00:12:47,755 Tydligen Emacs inte som standard installeras på apparaten. 270 00:12:47,755 --> 00:12:49,210 271 00:12:49,210 --> 00:12:51,720 Vi kommer förmodligen att tillägga att som en standardinstallationer. 272 00:12:51,720 --> 00:12:59,620 273 00:12:59,620 --> 00:13:02,390 När du lär dig en av Vim eller Emacs, det finns 274 00:13:02,390 --> 00:13:04,810 inga övertygande skäl att någonsin lära den andra, 275 00:13:04,810 --> 00:13:07,570 men det är en helt annan stil. 276 00:13:07,570 --> 00:13:10,460 OK så det är att redigera textfiler. 277 00:13:10,460 --> 00:13:13,374 >> PUBLIK: Om du har fastnat i Vim just nu, hur gör we-- 278 00:13:13,374 --> 00:13:18,840 279 00:13:18,840 --> 00:13:20,800 >> ROB BOWDEN: Det finns flera lägen i Vim, 280 00:13:20,800 --> 00:13:23,770 och det finns hela tutorials på att lära Vim. 281 00:13:23,770 --> 00:13:27,390 Så om du råkar vara i infoga läget för 282 00:13:27,390 --> 00:13:29,930 du skriver in text som du kan anger som på olika sätt, 283 00:13:29,930 --> 00:13:31,610 men jag är hur man får in infogningsläge. 284 00:13:31,610 --> 00:13:34,780 I eller få ut av någon särskild läge som du är i, bara fly. 285 00:13:34,780 --> 00:13:37,640 Och du bara bash Escape för att få av alla kapslade lägen din i. 286 00:13:37,640 --> 00:13:40,360 Bara OK, nu är jag tillbaka i normalläge. 287 00:13:40,360 --> 00:13:43,790 >> Och så i normalläge, ett kolon. 288 00:13:43,790 --> 00:13:45,160 Du ser det längst ner. 289 00:13:45,160 --> 00:13:46,240 Och sedan q. 290 00:13:46,240 --> 00:13:52,600 Så q kommer att sluta om du har gjort ändringar, som I-- har jag gjort ändringar? 291 00:13:52,600 --> 00:13:54,180 Jag har gjort ändringar tydligen. 292 00:13:54,180 --> 00:13:57,264 Så om du har gjort ändringar, ska det säger att du kan sätta ett utropstecken. 293 00:13:57,264 --> 00:13:58,430 Jag kommer att kalla det en smäll. 294 00:13:58,430 --> 00:14:02,040 Så du kan sätta ett förbud att bara sluta utan att göra något, 295 00:14:02,040 --> 00:14:04,520 eller kolon wq kommer att spara och avsluta. 296 00:14:04,520 --> 00:14:06,580 Så w i allmänhet skriva. 297 00:14:06,580 --> 00:14:08,300 Så skriver filen. 298 00:14:08,300 --> 00:14:09,810 Jag kan skriva och sluta. 299 00:14:09,810 --> 00:14:13,606 Eller du kan ha bara qx slam, q bang bara 300 00:14:13,606 --> 00:14:16,230 att få ut av det oberoende om eventuella ändringar som du har gjort. 301 00:14:16,230 --> 00:14:21,310 302 00:14:21,310 --> 00:14:28,940 >> Okej, så nu ska vi go-- vi kan skapa filer. 303 00:14:28,940 --> 00:14:30,890 Låt oss börja ta bort filer. 304 00:14:30,890 --> 00:14:35,450 Och jag ska bara kasta i en snabb nytt kommando, handlag. 305 00:14:35,450 --> 00:14:38,200 Så röra foo. 306 00:14:38,200 --> 00:14:39,340 Peka bar. 307 00:14:39,340 --> 00:14:40,220 Peka Baz. 308 00:14:40,220 --> 00:14:42,810 Om jag ls, nu ser vi att dessa filer finns. 309 00:14:42,810 --> 00:14:44,315 De är helt tom. 310 00:14:44,315 --> 00:14:47,178 Så touch är bara en enkel sätt av en, [OHÖRBAR]. 311 00:14:47,178 --> 00:14:50,850 312 00:14:50,850 --> 00:14:54,640 Två, tekniskt bara för att staten det, uppdaterar den tidsstämplarna. 313 00:14:54,640 --> 00:14:58,470 Så alla filer som du skapar har en tidsstämpel i samband med det. 314 00:14:58,470 --> 00:15:01,330 Så baz skapades den September 14 vid 16:21. 315 00:15:01,330 --> 00:15:02,570 316 00:15:02,570 --> 00:15:06,670 Det är nu 16:22, så om Jag rör baz igen, vi 317 00:15:06,670 --> 00:15:11,420 se att baz var mest nyligen ändrats vid 16:22. 318 00:15:11,420 --> 00:15:17,680 Men annars jag nästan aldrig titta på tidsstämplar på filer. 319 00:15:17,680 --> 00:15:20,490 Så beröring, här jag bara använder den för att skapa några snabba filer. 320 00:15:20,490 --> 00:15:21,620 321 00:15:21,620 --> 00:15:27,400 >> Okej, så nu rm är den kommando som vi bryr oss om här. 322 00:15:27,400 --> 00:15:28,665 Och vi kan rm bu. 323 00:15:28,665 --> 00:15:31,000 Säg bort regelbunden tom fil boo. 324 00:15:31,000 --> 00:15:34,070 Och vi kan skriva y, och nu är det avlägsnar. 325 00:15:34,070 --> 00:15:34,850 rm Baz. 326 00:15:34,850 --> 00:15:35,910 327 00:15:35,910 --> 00:15:38,620 Avlägsna vanlig tom fil baz och typ n utan. 328 00:15:38,620 --> 00:15:40,060 Nu är det inte har tagits bort. 329 00:15:40,060 --> 00:15:41,240 Så bar och baz fortfarande existerar. 330 00:15:41,240 --> 00:15:42,232 Foo är borta. 331 00:15:42,232 --> 00:15:43,148 GABRIEL: Fortsätt prata. 332 00:15:43,148 --> 00:15:43,970 333 00:15:43,970 --> 00:15:44,720 ROB BOWDEN: Great. 334 00:15:44,720 --> 00:15:45,800 335 00:15:45,800 --> 00:15:50,370 Så irriterande meddelande Här, ta bort regelbundna empty-- 336 00:15:50,370 --> 00:15:52,390 Vad gör du där nere? 337 00:15:52,390 --> 00:15:54,030 Ta regelbundna tom fil. 338 00:15:54,030 --> 00:15:58,840 339 00:15:58,840 --> 00:16:01,610 Så om vi inte vill vara besväras av det meddelandet, 340 00:16:01,610 --> 00:16:05,340 Vi kan slänga in här -f flagga, och så det är kraft. 341 00:16:05,340 --> 00:16:11,330 Och nu om jag rm -f, det kommer inte att säger vill du ta bort den här filen. 342 00:16:11,330 --> 00:16:12,040 Det kommer bara göra det. 343 00:16:12,040 --> 00:16:13,720 Och ls, jag ser inte bar där längre. 344 00:16:13,720 --> 00:16:14,810 345 00:16:14,810 --> 00:16:18,021 >> Nu är en potentiellt farligt kommando. 346 00:16:18,021 --> 00:16:19,020 Det tenderar att inte alltför illa. 347 00:16:19,020 --> 00:16:22,240 Vi kommer tillbaka i en andra hur Det kan bli riktigt farligt. 348 00:16:22,240 --> 00:16:28,740 Och låt oss skapa lite temp katalog. 349 00:16:28,740 --> 00:16:30,880 mkdir, ett annat kommando. 350 00:16:30,880 --> 00:16:34,880 Så mkdir är ett kommando som gör en katalog. 351 00:16:34,880 --> 00:16:40,650 Och nu med ls ser vi denna fina ljus blåmarkerade temp katalog. 352 00:16:40,650 --> 00:16:42,295 Jag kan cd i temp. 353 00:16:42,295 --> 00:16:44,590 Och jag kan mkdir foo. 354 00:16:44,590 --> 00:16:46,330 cd till foo. mkdir bar. 355 00:16:46,330 --> 00:16:46,860 cd i baren. 356 00:16:46,860 --> 00:16:49,400 357 00:16:49,400 --> 00:16:54,300 >> Så vi ser att vi kan lätt få i några ganska djupa häckning. 358 00:16:54,300 --> 00:16:56,385 Nu hur tar jag bort en katalog? 359 00:16:56,385 --> 00:16:57,020 360 00:16:57,020 --> 00:16:57,520 rmdir. 361 00:16:57,520 --> 00:16:59,030 362 00:16:59,030 --> 00:17:03,540 Så om jag bara rakt försöka rm, som vi gjorde med en vanlig fil, 363 00:17:03,540 --> 00:17:06,420 rm bar kommer att säger kan inte ta bort bar. 364 00:17:06,420 --> 00:17:07,569 Det är en katalog. 365 00:17:07,569 --> 00:17:10,619 Det finns ett speciellt kommando för ta bort kataloger, typ av. 366 00:17:10,619 --> 00:17:12,900 Så rmdir bar. 367 00:17:12,900 --> 00:17:13,710 Nu bar är borta. 368 00:17:13,710 --> 00:17:14,980 369 00:17:14,980 --> 00:17:22,680 >> OK, så rmdir jag använder ganska mycket aldrig. 370 00:17:22,680 --> 00:17:32,220 Anledningen being-- nu ska vi gör en vanlig fil bar här. 371 00:17:32,220 --> 00:17:34,780 Så rmdir boo. 372 00:17:34,780 --> 00:17:35,760 rmdir. 373 00:17:35,760 --> 00:17:36,900 Det gick inte att ta bort foo. 374 00:17:36,900 --> 00:17:38,420 Directory inte tom. 375 00:17:38,420 --> 00:17:43,420 Så du kan inte använda ta bort dir på en katalog som har saker i den. 376 00:17:43,420 --> 00:17:44,830 >> Så du har några alternativ. 377 00:17:44,830 --> 00:17:49,780 Du kan gå in i den katalogen, ta bort allt för hand, och sedan komma ut 378 00:17:49,780 --> 00:17:51,759 och rmdir katalogen. 379 00:17:51,759 --> 00:17:53,050 Det låter självklart irriterande. 380 00:17:53,050 --> 00:17:55,000 Tänk om det finns tusentals filer i det? 381 00:17:55,000 --> 00:17:58,119 Tja, kan du rm *. 382 00:17:58,119 --> 00:17:59,410 Vi pratar om * på en sekund. 383 00:17:59,410 --> 00:18:00,870 Det innebär i princip allt. 384 00:18:00,870 --> 00:18:02,030 385 00:18:02,030 --> 00:18:05,470 Men ännu bättre, så rm -r. 386 00:18:05,470 --> 00:18:10,220 Så rm -r-- i en hel del sammanhang, -r betyder rekursiv, 387 00:18:10,220 --> 00:18:13,810 som vi ska tala om vad rekursiva medel i flera veckor. 388 00:18:13,810 --> 00:18:18,630 Men det innebär i princip travers helheten av den här katalogen 389 00:18:18,630 --> 00:18:20,190 och ta bort allt. 390 00:18:20,190 --> 00:18:24,420 >> Så rm -r foo kommer att säga ner i katalogen foo? 391 00:18:24,420 --> 00:18:25,210 Ja. 392 00:18:25,210 --> 00:18:26,800 Ta regelbundna tom fil foo / bar? 393 00:18:26,800 --> 00:18:27,880 394 00:18:27,880 --> 00:18:28,540 Ja. 395 00:18:28,540 --> 00:18:29,760 Avlägsna katalogen foo? 396 00:18:29,760 --> 00:18:30,260 Ja. 397 00:18:30,260 --> 00:18:31,470 398 00:18:31,470 --> 00:18:35,020 Så nu foo och allt inom det har tagits bort. 399 00:18:35,020 --> 00:18:42,370 >> Nu kan få särskilt irriterande when-- låt oss röra 1, tryck 2, tryck 3. 400 00:18:42,370 --> 00:18:44,400 Kunde ha en hel massa filer. 401 00:18:44,400 --> 00:18:49,060 Om jag ville, jag skulle kunna skapa tusentals filer i här. 402 00:18:49,060 --> 00:18:53,340 Och rm -r foo går vara ganska irriterande. 403 00:18:53,340 --> 00:18:55,374 Ja, ja, ja, ja, ja, ja. 404 00:18:55,374 --> 00:18:57,540 Med många fler filer du snabbt se hur många gånger 405 00:18:57,540 --> 00:18:58,581 Jag skulle behöva skriva ja. 406 00:18:58,581 --> 00:19:02,265 Nåväl, vi såg precis innan hur vi kan bli av att behöva skriva ja, -f. 407 00:19:02,265 --> 00:19:03,330 408 00:19:03,330 --> 00:19:07,020 Så mkdir foo cd foo kontakt 1 2 3. 409 00:19:07,020 --> 00:19:08,380 410 00:19:08,380 --> 00:19:17,190 OK, så rm -rf foo kommer att blint bort foo helt. 411 00:19:17,190 --> 00:19:17,960 Ingen uppmaning. 412 00:19:17,960 --> 00:19:18,650 Ingen som helst. 413 00:19:18,650 --> 00:19:20,040 Foo är borta. 414 00:19:20,040 --> 00:19:23,830 >> Så jag brukar använda det här kommandot hela tiden. 415 00:19:23,830 --> 00:19:25,120 416 00:19:25,120 --> 00:19:27,830 Som sagt, det är en mycket farligt kommando, 417 00:19:27,830 --> 00:19:33,240 för om jag gör något liknande detta, kommer det inte att fråga dig. 418 00:19:33,240 --> 00:19:34,730 Det kommer att vara borta. 419 00:19:34,730 --> 00:19:40,140 Och det händer ganska ofta, och även i högre nivå CS kurser. 420 00:19:40,140 --> 00:19:42,070 Ibland får vi se något där någon 421 00:19:42,070 --> 00:19:48,360 säger jag av misstag vår rm rf-ed mitt hem katalog och alla mina P: n är borta. 422 00:19:48,360 --> 00:19:52,422 Och det är förödande, men det finns ingen papperskorg. 423 00:19:52,422 --> 00:19:54,380 Det finns ingen det finns inget för dig att hämta. 424 00:19:54,380 --> 00:19:55,330 Det är bara borta. 425 00:19:55,330 --> 00:19:56,529 426 00:19:56,529 --> 00:19:58,320 Ännu värre skulle vara något i stil med rm -rf /. 427 00:19:58,320 --> 00:19:59,432 428 00:19:59,432 --> 00:20:01,140 Så vi bara diskuterat att rotkatalogen. 429 00:20:01,140 --> 00:20:03,095 Den rymmer alla de filer på ditt system. 430 00:20:03,095 --> 00:20:04,120 431 00:20:04,120 --> 00:20:07,380 Saker tenderar att bli ganska rörigt När du tar bort saker som ls, 432 00:20:07,380 --> 00:20:10,280 och cd, och alla av dem. 433 00:20:10,280 --> 00:20:15,467 >> PUBLIK: Vad är skillnaden mellan RM, rf, och rm * 434 00:20:15,467 --> 00:20:16,300 ROB BOWDEN: Så rm * - 435 00:20:16,300 --> 00:20:17,700 436 00:20:17,700 --> 00:20:22,300 >> ALLISON: Fråga var vad är skillnaden mellan RM, rf, och rm *. 437 00:20:22,300 --> 00:20:23,750 438 00:20:23,750 --> 00:20:25,950 >> ROB BOWDEN: Så rm *. 439 00:20:25,950 --> 00:20:31,910 Star generellt sätt alla innehållet i den här katalogen. 440 00:20:31,910 --> 00:20:33,540 441 00:20:33,540 --> 00:20:35,540 Försöker tänka på annat sätt att visa stjärnan. 442 00:20:35,540 --> 00:20:38,280 443 00:20:38,280 --> 00:20:44,780 Tja, stjärna faktiskt generellt innebär matchar något mönster. 444 00:20:44,780 --> 00:20:54,930 Så om jag har en fil som heter dog1, Rör dog2 trycker cat1 trycker cat2. 445 00:20:54,930 --> 00:20:56,050 446 00:20:56,050 --> 00:21:02,110 Så ls * 1 kommer att skriva ut cat1 och dog1, eftersom den stjärnan kan fyllas 447 00:21:02,110 --> 00:21:06,270 i with-- att man måste vara där, men stjärnan kan vara antingen katt eller hund. 448 00:21:06,270 --> 00:21:07,247 Det är ett wild card. 449 00:21:07,247 --> 00:21:08,580 Det är ordet jag letar efter. 450 00:21:08,580 --> 00:21:09,120 Wild card. 451 00:21:09,120 --> 00:21:10,180 452 00:21:10,180 --> 00:21:13,960 Eller jag kunde ls hund *, och Jag fick se dog1, dog2. 453 00:21:13,960 --> 00:21:16,870 Så de listar filerna att matcha det speciella mönster. 454 00:21:16,870 --> 00:21:18,150 Du kan använda ls på detta sätt. 455 00:21:18,150 --> 00:21:19,350 456 00:21:19,350 --> 00:21:22,020 >> Ls * stjärniga matchar något. 457 00:21:22,020 --> 00:21:25,710 Så det kommer att skriva ut alla innehållet i den här katalogen 458 00:21:25,710 --> 00:21:27,290 eftersom alla av dem matchar. 459 00:21:27,290 --> 00:21:30,130 Det kommer inte att skriva ut något i övre nivå kataloger. 460 00:21:30,130 --> 00:21:38,680 Om jag har en underkatalog, foo, och Rör 1 2 3-- så nu om rm * stjärna, 461 00:21:38,680 --> 00:21:41,450 avlägsna cat1, CAT2, dog1, dog2. 462 00:21:41,450 --> 00:21:42,340 Det går inte att ta bort foo. 463 00:21:42,340 --> 00:21:43,090 Det är en katalog. 464 00:21:43,090 --> 00:21:43,920 465 00:21:43,920 --> 00:21:50,340 >> Så stjärnan expanderar till alla filer i katalogen. 466 00:21:50,340 --> 00:21:55,210 Så tekniskt rm * är som att säga rm cat1, cat2, dog1, dog2, foo. 467 00:21:55,210 --> 00:22:03,630 Medan rm -rf, tekniskt stjärna skulle uppnå vad vi vill, men rm -rf-- 468 00:22:03,630 --> 00:22:06,090 om jag går ut ur detta katalog, rm -rf temp, 469 00:22:06,090 --> 00:22:08,890 som kommer att gå in i temp och rekursivt ta bort allting. 470 00:22:08,890 --> 00:22:11,260 471 00:22:11,260 --> 00:22:21,060 >> Så stjärna är separat i det som förstås by-- så här saken 472 00:22:21,060 --> 00:22:25,090 att jag kör in, denna sak som att fråga mig för kommandon 473 00:22:25,090 --> 00:22:28,770 och därefter genomföra och göra dem, jag kallar det mitt skal. 474 00:22:28,770 --> 00:22:31,930 Och så detta skal är själv ett program. 475 00:22:31,930 --> 00:22:35,010 Och om jag ville, jag kunde köra in / bin / bash. 476 00:22:35,010 --> 00:22:36,930 Skalet kallas bash. 477 00:22:36,930 --> 00:22:39,340 Och nu märker vi något har något förändrats, 478 00:22:39,340 --> 00:22:42,200 och det beror på mina inställningar för skalet är något annorlunda. 479 00:22:42,200 --> 00:22:45,415 >> Men nu är jag tekniskt sett kör ett skal i min ursprungliga skal, 480 00:22:45,415 --> 00:22:49,570 och jag kan avsluta det skal, och nu Jag är tillbaka till min toppnivå skal. 481 00:22:49,570 --> 00:22:55,240 Syftet med att säga som är-- stjärnan. 482 00:22:55,240 --> 00:22:59,020 Så stjärnan är något förstås av bash. 483 00:22:59,020 --> 00:23:04,260 Så rm -rf är -rf flagga förstås av bara rm. 484 00:23:04,260 --> 00:23:06,380 Den vet att när du passera en -rf att du 485 00:23:06,380 --> 00:23:09,520 vill att det ska rekursivt ta bort alla filer utan att fråga. 486 00:23:09,520 --> 00:23:13,960 Stjärnan är något som förstås genom bash att när du säger rm *, 487 00:23:13,960 --> 00:23:16,890 bash kommer inte att säga hey rm *, ta bort stjärnan. 488 00:23:16,890 --> 00:23:21,010 Bash kommer att säga rm * avlägsna cat1, CAT2, dog1, dog2. 489 00:23:21,010 --> 00:23:24,305 Det automatiskt kommer att expandera alla filer i katalogen. 490 00:23:24,305 --> 00:23:29,100 491 00:23:29,100 --> 00:23:33,140 >> Och på liknande sätt tilde är en annan symbol som bash förstår. 492 00:23:33,140 --> 00:23:37,130 När du säger cd ~ expanderar bash det till din hemkatalog. 493 00:23:37,130 --> 00:23:38,910 494 00:23:38,910 --> 00:23:40,210 Andra frågor hittills? 495 00:23:40,210 --> 00:23:42,760 496 00:23:42,760 --> 00:23:46,060 OK så vi ska börja gå snabbt. 497 00:23:46,060 --> 00:23:47,700 498 00:23:47,700 --> 00:23:48,545 >> Tab avslutad. 499 00:23:48,545 --> 00:23:49,670 Bara att kasta det där ute. 500 00:23:49,670 --> 00:23:51,530 Många människor gör inte inser detta existerar. 501 00:23:51,530 --> 00:23:55,060 Så om jag skriver cd dow, jag vill gå in hämtningar. 502 00:23:55,060 --> 00:23:56,700 Jag behöver inte skriva nloads. 503 00:23:56,700 --> 00:23:57,960 504 00:23:57,960 --> 00:24:00,770 Jag kan bara trycka Tab. 505 00:24:00,770 --> 00:24:03,794 Så det erkänner att dow är ett prefix som 506 00:24:03,794 --> 00:24:05,710 matchar inte något annat i denna katalog, 507 00:24:05,710 --> 00:24:07,520 så det kommer att slutföra det åt dig. 508 00:24:07,520 --> 00:24:08,610 Nu kan jag gå in. 509 00:24:08,610 --> 00:24:10,110 >> Jag gör också att rekursivt. 510 00:24:10,110 --> 00:24:11,205 Så mkdir foo. 511 00:24:11,205 --> 00:24:12,480 512 00:24:12,480 --> 00:24:13,300 Låt oss gå in i foo. 513 00:24:13,300 --> 00:24:14,830 mkdir bar. 514 00:24:14,830 --> 00:24:17,345 Så gå tillbaka till mitt hem katalog, kan jag se nedladdningar. 515 00:24:17,345 --> 00:24:19,040 516 00:24:19,040 --> 00:24:21,860 Nu slår fliken igen, automatiskt kommer att fylla i foo. 517 00:24:21,860 --> 00:24:22,880 Det är den enda katalog. 518 00:24:22,880 --> 00:24:25,340 Utslagning fliken igen, automatiskt kommer att fylla i bar. 519 00:24:25,340 --> 00:24:26,798 Så nu är jag i (~ Nedladdningar / foo / bar). 520 00:24:26,798 --> 00:24:27,310 521 00:24:27,310 --> 00:24:31,692 >> Så här fliken färdigställande, när jag kom till kontorstid, 522 00:24:31,692 --> 00:24:33,400 och jag står över någons axel, 523 00:24:33,400 --> 00:24:40,470 och de kommer rm D-O-W-N-L-O-A-D-S, jag dör. 524 00:24:40,470 --> 00:24:41,990 Bara flik, flik, flik, flik. 525 00:24:41,990 --> 00:24:44,550 526 00:24:44,550 --> 00:24:45,630 Så definitivt använt flik. 527 00:24:45,630 --> 00:24:47,890 528 00:24:47,890 --> 00:24:49,840 Och på samma sätt upp och ner, många människor 529 00:24:49,840 --> 00:24:51,930 just det hände aldrig hit upp och ner. 530 00:24:51,930 --> 00:24:54,870 Det kommer att gå igenom tidigare kommandon, så om du bara sprang något, 531 00:24:54,870 --> 00:24:58,300 och du vill köra den igen, bara hålla upp tills du kommer till den. 532 00:24:58,300 --> 00:24:59,870 533 00:24:59,870 --> 00:25:00,370 OK. 534 00:25:00,370 --> 00:25:01,460 535 00:25:01,460 --> 00:25:03,585 >> Så snabb, vissa andra saker. 536 00:25:03,585 --> 00:25:04,800 537 00:25:04,800 --> 00:25:05,930 Låt oss gå tillbaka till temp. 538 00:25:05,930 --> 00:25:06,976 539 00:25:06,976 --> 00:25:08,125 Låt oss skapa några filer. 540 00:25:08,125 --> 00:25:10,480 541 00:25:10,480 --> 00:25:15,215 Så här, jag är bara kommer att lista några ord. 542 00:25:15,215 --> 00:25:18,460 543 00:25:18,460 --> 00:25:21,035 hund, katt, jama. 544 00:25:21,035 --> 00:25:23,940 545 00:25:23,940 --> 00:25:26,040 Låt oss göra hund, fisk. 546 00:25:26,040 --> 00:25:27,500 547 00:25:27,500 --> 00:25:32,320 Så nu rep är en mycket användbara kommandon som du 548 00:25:32,320 --> 00:25:37,820 använder för att söka i hela filer för en viss text, 549 00:25:37,820 --> 00:25:40,910 och tekniskt kan man göra riktigt komplexa uttryck för att matcha. 550 00:25:40,910 --> 00:25:44,830 >> Så här, om jag grep, och vad vill jag söka efter? 551 00:25:44,830 --> 00:25:49,130 Låt oss säga att jag söker för katter, och Jag vill söka alla dessa filer. 552 00:25:49,130 --> 00:25:50,650 Så hur gör jag alla dessa filer? 553 00:25:50,650 --> 00:25:51,900 Star. 554 00:25:51,900 --> 00:25:54,939 Så i filen man, har jag katt. 555 00:25:54,939 --> 00:25:56,980 Jag kunde förmodligen ha kallade det något bättre, 556 00:25:56,980 --> 00:25:59,063 därför att det ser ut som linjenummer eller något. 557 00:25:59,063 --> 00:26:01,590 Men i filen jag har en linje med katt. 558 00:26:01,590 --> 00:26:04,160 I filen två Jag har en linje med katt. 559 00:26:04,160 --> 00:26:07,280 Så nu kan jag se in filen ett och se oh yeah, den filen hade katt. 560 00:26:07,280 --> 00:26:10,210 Kallelse filen tre inte motsvar eftersom katten inte är där. 561 00:26:10,210 --> 00:26:13,882 Jag kan grep för mjau. 562 00:26:13,882 --> 00:26:14,840 Endast fil två har mjau. 563 00:26:14,840 --> 00:26:16,120 564 00:26:16,120 --> 00:26:20,640 >> Så det här kan du kombinera, igen, med -r, som 565 00:26:20,640 --> 00:26:23,580 som jag sa tidigare ofta innebär rekursiv. 566 00:26:23,580 --> 00:26:29,800 Och så jag kan komma upp hit, grep -r för varje fall of-- låt oss redigera 567 00:26:29,800 --> 00:26:32,010 detta bara för att kasta en katt där. 568 00:26:32,010 --> 00:26:38,800 Så grep -r för någon instans av katt i hela den här katalogen. 569 00:26:38,800 --> 00:26:41,600 Och det kommer rekursivt söka på underkataloger. 570 00:26:41,600 --> 00:26:43,940 Så i baz, det finns katt. 571 00:26:43,940 --> 00:26:45,570 I temp / 2, det finns katt. 572 00:26:45,570 --> 00:26:47,960 Och i temp / 1 finns det katt. 573 00:26:47,960 --> 00:26:50,045 Så det är att söka i filer. 574 00:26:50,045 --> 00:26:51,250 575 00:26:51,250 --> 00:26:55,090 >> Nu kan du också använda ett fynd. 576 00:26:55,090 --> 00:26:59,640 Och så tycker är specifikt om söker filer med ett givet namn. 577 00:26:59,640 --> 00:27:02,490 Så låt oss göra lite mer. 578 00:27:02,490 --> 00:27:03,660 Låt oss gå in i nedladdningar. 579 00:27:03,660 --> 00:27:04,680 580 00:27:04,680 --> 00:27:05,380 Peka dog1. 581 00:27:05,380 --> 00:27:06,840 582 00:27:06,840 --> 00:27:07,770 Peka CAT2. 583 00:27:07,770 --> 00:27:09,290 584 00:27:09,290 --> 00:27:10,760 Peka cat_dog. 585 00:27:10,760 --> 00:27:14,550 586 00:27:14,550 --> 00:27:15,975 Peka Catcat. 587 00:27:15,975 --> 00:27:18,270 588 00:27:18,270 --> 00:27:23,810 >> Så jag vill hitta alla filer med hund i namnet. 589 00:27:23,810 --> 00:27:28,060 Så hitta, och för den längsta tid jag aldrig ihåg 590 00:27:28,060 --> 00:27:33,760 Hur hitta fungerat, tills jag slutligen läsa något som gjorde det så klart. 591 00:27:33,760 --> 00:27:35,784 Så hitta, automatiskt rekursiv. 592 00:27:35,784 --> 00:27:36,950 Du behöver inte passera en r. 593 00:27:36,950 --> 00:27:38,090 594 00:27:38,090 --> 00:27:39,110 Så hitta prick. 595 00:27:39,110 --> 00:27:40,750 Vi har inte pratat om prick än. 596 00:27:40,750 --> 00:27:44,800 Medan dot dot alltid innebär en katalog upp. 597 00:27:44,800 --> 00:27:46,960 Dot betyder alltid den aktuella katalogen. 598 00:27:46,960 --> 00:27:51,390 Så jag kunde rm -r prick i samma sätt som jag kan rm -rf *. 599 00:27:51,390 --> 00:27:53,140 I slutändan de åstadkomma samma sak. 600 00:27:53,140 --> 00:27:56,040 rm -rf prick kommer att ta bort hela den aktuella katalogen. 601 00:27:56,040 --> 00:27:57,440 602 00:27:57,440 --> 00:27:59,680 >> OK, som jag inte vill göra det. 603 00:27:59,680 --> 00:28:01,490 604 00:28:01,490 --> 00:28:04,320 Men hitta prick. 605 00:28:04,320 --> 00:28:07,920 Så rekursivt söka i den aktuella katalog, och nu är allt 606 00:28:07,920 --> 00:28:14,125 efter detta är ett gäng flaggor som du använder för att utesluta saker från returen. 607 00:28:14,125 --> 00:28:17,250 Så hitta prick returnerar allt som den kan hitta från den aktuella katalogen. 608 00:28:17,250 --> 00:28:19,700 De är alla filer rekursivt söka. 609 00:28:19,700 --> 00:28:21,250 Vi får se några av dem i en sekund. 610 00:28:21,250 --> 00:28:23,150 611 00:28:23,150 --> 00:28:27,140 >> Men om du undrar hur jag gör att, så Command K, åtminstone 612 00:28:27,140 --> 00:28:29,660 i min terminal i Mac rensar den. 613 00:28:29,660 --> 00:28:34,660 Kontroll L rensar allmänhet det för någon form av terminal. 614 00:28:34,660 --> 00:28:36,480 Du kan också skriva klart. 615 00:28:36,480 --> 00:28:38,410 Och om du någonsin får in i en konstig scenario-- 616 00:28:38,410 --> 00:28:42,790 Det har hänt mig ett par time-- där färgerna på dina prompter 617 00:28:42,790 --> 00:28:46,590 är alla trasslat till, eller om du kan inte se något 618 00:28:46,590 --> 00:28:51,232 som skrivs när du skriver, eftersom ibland som bakgrundsfärg är inställd 619 00:28:51,232 --> 00:28:53,940 samma som förgrundsfärg och nu kan du inte se teckensnitten. 620 00:28:53,940 --> 00:28:55,110 621 00:28:55,110 --> 00:28:59,830 Reset är något som bara återställer du till standard svart bakgrund, 622 00:28:59,830 --> 00:29:01,840 vit front, eller vad du ställa dem till. 623 00:29:01,840 --> 00:29:03,390 624 00:29:03,390 --> 00:29:04,790 >> Så var var vi? 625 00:29:04,790 --> 00:29:05,930 Hitta prick. 626 00:29:05,930 --> 00:29:09,360 Så nu är allt förbi detta punkt begränsar resultaten 627 00:29:09,360 --> 00:29:11,450 till något som matchar det givna mönstret. 628 00:29:11,450 --> 00:29:16,110 Så här vill jag söka allt med namnet katten. 629 00:29:16,110 --> 00:29:17,300 Jag fick ingenting. 630 00:29:17,300 --> 00:29:18,390 Varför är det så? 631 00:29:18,390 --> 00:29:21,230 Tja, jag bara söker något med just namnet katten. 632 00:29:21,230 --> 00:29:25,150 Om jag vill söka något som har vissa mönster och cat-- 633 00:29:25,150 --> 00:29:28,890 citat är tekniskt nödvändigt, men jag kastar dem där. 634 00:29:28,890 --> 00:29:32,720 Så nu den hittar Catcat eftersom det är det enda som 635 00:29:32,720 --> 00:29:36,040 har någon godtycklig mönster följt av katten. 636 00:29:36,040 --> 00:29:41,950 Jag kan sätta katten *, och nu hitta Catcat, cat_dog, CAT2, 637 00:29:41,950 --> 00:29:45,245 eftersom de är allt med katt i början följt av någonting. 638 00:29:45,245 --> 00:29:46,120 Du kan kombinera detta. 639 00:29:46,120 --> 00:29:50,480 Om du vill söka efter alla C-filer som du har, kan du göra * .c. 640 00:29:50,480 --> 00:29:51,960 Vi har blah.c här. 641 00:29:51,960 --> 00:29:53,000 642 00:29:53,000 --> 00:29:55,020 Så det är en find fungerar. 643 00:29:55,020 --> 00:29:55,770 Du kan söka. 644 00:29:55,770 --> 00:29:58,270 Den har en massa flaggor för ytterligare begränsningar. 645 00:29:58,270 --> 00:30:00,960 Och en av dem, låt oss säga -d. 646 00:30:00,960 --> 00:30:02,110 647 00:30:02,110 --> 00:30:04,435 Så föråldrat. 648 00:30:04,435 --> 00:30:05,425 649 00:30:05,425 --> 00:30:06,550 Åh, det är inte vad jag vill. 650 00:30:06,550 --> 00:30:07,730 Inte -d. 651 00:30:07,730 --> 00:30:08,860 Typ d. 652 00:30:08,860 --> 00:30:13,820 Så hitta dot - typ d. 653 00:30:13,820 --> 00:30:17,760 Så vad som just gjorde är jag söker för alla filer i den aktuella katalogen 654 00:30:17,760 --> 00:30:21,680 med en-- d står för directory-- katalog typ. 655 00:30:21,680 --> 00:30:24,430 Detta återställer alla kataloger i den aktuella katalogen. 656 00:30:24,430 --> 00:30:27,670 Och typ F är alla regelbundna filer, alla icke kataloger. 657 00:30:27,670 --> 00:30:29,809 Så det är bara en exempel på andra sätt som du 658 00:30:29,809 --> 00:30:32,350 kan begränsa den andra sökningen än bara namnet på filen. 659 00:30:32,350 --> 00:30:34,126 660 00:30:34,126 --> 00:30:35,570 >> Det har varit 30 minuter. 661 00:30:35,570 --> 00:30:36,848 Still going. 662 00:30:36,848 --> 00:30:38,132 >> ALLISON: Jag ska knäppa genom. 663 00:30:38,132 --> 00:30:39,670 Det ska vara bra. 664 00:30:39,670 --> 00:30:41,460 >> ROB BOWDEN: Så en del andra saker. 665 00:30:41,460 --> 00:30:45,700 Nu bang, utropstecken. 666 00:30:45,700 --> 00:30:50,530 Så att i allmänhet means-- ja, låt oss se ett exempel. 667 00:30:50,530 --> 00:30:52,230 Så! F, vad att göra? 668 00:30:52,230 --> 00:30:53,520 669 00:30:53,520 --> 00:30:57,810 Väl det verkar ha upprepad find dot -typ f. 670 00:30:57,810 --> 00:30:59,240 Hur är det? G? 671 00:30:59,240 --> 00:31:00,760 Som bara grep -r katt *. 672 00:31:00,760 --> 00:31:02,010 673 00:31:02,010 --> 00:31:05,720 Så bang du kan använda för att upprepa en nyligen gjort kommando. 674 00:31:05,720 --> 00:31:13,280 Så om jag skriver gre, det kommer att åter run! de kommandon som började med gre mest 675 00:31:13,280 --> 00:31:14,060 nyligen. 676 00:31:14,060 --> 00:31:17,090 >> Och du kan se alla dessa kommandon med historia. 677 00:31:17,090 --> 00:31:17,880 Så historien. 678 00:31:17,880 --> 00:31:19,630 Dessa är alla kommandon Jag har rymt idag. 679 00:31:19,630 --> 00:31:21,089 680 00:31:21,089 --> 00:31:23,130 Och ja, det är inte bokstav begränsad till idag, 681 00:31:23,130 --> 00:31:25,180 men jag har bara använt detta apparat i dag. 682 00:31:25,180 --> 00:31:28,730 Det är din helheten av historia av din bash shell, 683 00:31:28,730 --> 00:31:30,433 förutom att det skär av någon gång. 684 00:31:30,433 --> 00:31:33,474 PUBLIK: Vad händer om du gör historia [OHÖRBAR] kommandot och ett fel 685 00:31:33,474 --> 00:31:35,430 i resultatet kommer fortfarande skriva ut the-- 686 00:31:35,430 --> 00:31:44,110 >> ROB BOWDEN: Ja, om det finns en fel i ett av dessa commands-- 687 00:31:44,110 --> 00:31:48,090 så låt oss säga, är att en error kommandot hittades inte. 688 00:31:48,090 --> 00:31:49,312 689 00:31:49,312 --> 00:31:50,520 Fortfarande förekommer i historien. 690 00:31:50,520 --> 00:31:52,620 691 00:31:52,620 --> 00:31:53,170 Okej. 692 00:31:53,170 --> 00:31:54,750 693 00:31:54,750 --> 00:31:56,040 Övriga frågor om vad som helst? 694 00:31:56,040 --> 00:31:58,760 695 00:31:58,760 --> 00:32:00,300 Så det är smällen. 696 00:32:00,300 --> 00:32:04,230 >> Nu, verkligen användbart kommando, man. 697 00:32:04,230 --> 00:32:07,750 Så det ger dig handbok för ett givet kommando. 698 00:32:07,750 --> 00:32:11,640 Så låt oss säga man ls, så Detta visar mig ls. 699 00:32:11,640 --> 00:32:13,400 Den listar kataloginnehåll. 700 00:32:13,400 --> 00:32:17,150 Och det är här jag ser att det är dessa olika flaggor som finns. 701 00:32:17,150 --> 00:32:21,340 Så vi ser att ls -l finns om vi skulle läsa det. ls -l 702 00:32:21,340 --> 00:32:26,150 ger mig denna fullständig lista över de katalog med vem som äger filen, 703 00:32:26,150 --> 00:32:29,750 storleken av filen, den den modifierade tidsstämpel. 704 00:32:29,750 --> 00:32:31,130 705 00:32:31,130 --> 00:32:34,980 Så ls -a är en annan som du kanske faktiskt använder något ofta. 706 00:32:34,980 --> 00:32:38,130 -al är min vanligaste flagga denna senaste ls. 707 00:32:38,130 --> 00:32:42,520 >> Så -a, märker att det finns en hel del fler filer än bara ls. 708 00:32:42,520 --> 00:32:44,170 ls -a. 709 00:32:44,170 --> 00:32:46,170 Vad är gemensamt med alla dessa filer? 710 00:32:46,170 --> 00:32:47,790 De börjar med en punkt. 711 00:32:47,790 --> 00:32:54,710 Så detta är en konvention i Linux som filer som börjar med en punkt är dolda. 712 00:32:54,710 --> 00:32:58,330 Så det betyder bara att när vi bara raka ls, 713 00:32:58,330 --> 00:33:04,170 eller vi söker den här katalogen med hjälp av upphittaren motsvarande, eller Windows 714 00:33:04,170 --> 00:33:07,250 Explorer motsvarande, som vi vill inte se dessa punktfiler. 715 00:33:07,250 --> 00:33:09,680 De förorenar bara synen på saker. 716 00:33:09,680 --> 00:33:11,790 Så de är dolda om du inte uttryckligen 717 00:33:11,790 --> 00:33:14,250 be dem med något i stil med -a. 718 00:33:14,250 --> 00:33:18,920 Så jag kan cd i .local, och jag ser att det i sig är en katalog med 719 00:33:18,920 --> 00:33:22,220 en delad katalog, och program och bla bla bla. 720 00:33:22,220 --> 00:33:24,520 Så prick, filer de bara dolda. 721 00:33:24,520 --> 00:33:26,250 722 00:33:26,250 --> 00:33:29,355 >> OK, så andra viktiga sådana. 723 00:33:29,355 --> 00:33:30,490 724 00:33:30,490 --> 00:33:32,000 Jag har ett par som jag kan hoppa. 725 00:33:32,000 --> 00:33:38,160 Låt oss bara riktigt snabbt prata om de fil omdirigering saker. 726 00:33:38,160 --> 00:33:43,020 Så det finns en hel komplex serie av saker du kan göra med dessa, 727 00:33:43,020 --> 00:33:47,204 men bara för att se dem, låt oss säga, eko. 728 00:33:47,204 --> 00:33:47,870 Ett annat kommando. 729 00:33:47,870 --> 00:33:48,920 Riktigt dum kommando. 730 00:33:48,920 --> 00:33:50,710 Allt det gör är att skriva ut vad jag säger det till. 731 00:33:50,710 --> 00:33:52,070 Så echo hej. 732 00:33:52,070 --> 00:33:53,850 Det ekade bara hej till skärmen. 733 00:33:53,850 --> 00:33:55,170 734 00:33:55,170 --> 00:33:56,390 Hej världen. 735 00:33:56,390 --> 00:33:57,890 Echoes hallå världen. 736 00:33:57,890 --> 00:34:02,650 >> Så ett kommando eller en symbol som pucklar förstår 737 00:34:02,650 --> 00:34:07,620 är större än symbol, och som är utdata till en fil symbol. 738 00:34:07,620 --> 00:34:10,940 Så om jag utgång detta till foo, finns det nu en fil 739 00:34:10,940 --> 00:34:15,100 heter foo, inuti vilket är hallå världen. 740 00:34:15,100 --> 00:34:18,489 Så märker att när jag upprepar hallå världen röret i foo, 741 00:34:18,489 --> 00:34:19,980 det inte echo hej världen. 742 00:34:19,980 --> 00:34:22,630 Istället sattes i filen foo. 743 00:34:22,630 --> 00:34:25,340 Och ett annat kommando bara att kasta den på dig, katt. 744 00:34:25,340 --> 00:34:29,191 Det är ett enkelt sätt att bara helt visa innehållet i filen 745 00:34:29,191 --> 00:34:31,440 så att jag inte behöver öppna en textredigerare för att visa det. 746 00:34:31,440 --> 00:34:34,159 Så att innehållet i det foo fil är hallå världen. 747 00:34:34,159 --> 00:34:38,460 Och jag kunde katt blah.c, innehållet är det. 748 00:34:38,460 --> 00:34:42,123 >> Återigen, detta är kommandon som, inte gör det förväntar du har dem alla i minnet. 749 00:34:42,123 --> 00:34:43,860 Tanken är att du har sett dem. 750 00:34:43,860 --> 00:34:45,735 Kanske du arbetar med något, och du är 751 00:34:45,735 --> 00:34:47,230 som jag är trött på att öppna den här filen. 752 00:34:47,230 --> 00:34:50,120 Jag önskar jag kunde bara titta på innehållet riktigt snabbt. 753 00:34:50,120 --> 00:34:52,320 Du kan göra det, då se tillbaka och säga åh jag 754 00:34:52,320 --> 00:34:55,250 minns något liknande som finns, och det är katten. 755 00:34:55,250 --> 00:35:00,630 >> Så det går till en fil. 756 00:35:00,630 --> 00:35:06,639 Nu finns det inte riktigt något bra exempel på att läsa från en fil än. 757 00:35:06,639 --> 00:35:08,930 Vad är något som tar något från standard in? 758 00:35:08,930 --> 00:35:10,010 759 00:35:10,010 --> 00:35:11,544 Någon enkel linux kommando? 760 00:35:11,544 --> 00:35:13,480 761 00:35:13,480 --> 00:35:16,970 När vi kommer till det, i ett par veckor alla piece-- bra, 762 00:35:16,970 --> 00:35:20,470 denna vecka har du en bit där man börjar ta input från användaren. 763 00:35:20,470 --> 00:35:23,696 Och så brukar du skriver den ingången vid tangentbordet. 764 00:35:23,696 --> 00:35:25,570 Istället för att skriva att inmatning på tangentbordet, 765 00:35:25,570 --> 00:35:30,950 kan du i stället rör i från en fil så att när du gör Mario, ./mario, 766 00:35:30,950 --> 00:35:35,200 rör i från en viss fil, och det kommer att köra Mario programmet. 767 00:35:35,200 --> 00:35:37,300 Inte förväntar sig input på tangentbordet, det är istället 768 00:35:37,300 --> 00:35:39,650 bara att läsa linjer från foo fil. 769 00:35:39,650 --> 00:35:45,230 >> Så större än foo tar den i foo fil, och mindre än foo 770 00:35:45,230 --> 00:35:50,170 tar saker från foo filen och använder den som underlag till detta program. 771 00:35:50,170 --> 00:35:51,520 772 00:35:51,520 --> 00:36:00,630 Och bara för att se det, kan vi också upprepa foo bar baz, och sedan i stället för en 773 00:36:00,630 --> 00:36:03,850 större än, låt oss göra två till foo. 774 00:36:03,850 --> 00:36:05,610 Vad gör det? 775 00:36:05,610 --> 00:36:07,180 Det lägger bara till filen. 776 00:36:07,180 --> 00:36:15,360 Så istället märker om jag eko bla in foo och sedan katt foo, det är bara bla. 777 00:36:15,360 --> 00:36:18,285 Så när du utdata till en fil, det helt skriver över den filen. 778 00:36:18,285 --> 00:36:19,330 779 00:36:19,330 --> 00:36:22,740 Om du bara vill lägga till, dubbel [? väghyvlar. ?] 780 00:36:22,740 --> 00:36:24,080 >> Och sist är röret. 781 00:36:24,080 --> 00:36:29,590 Pipe blir mycket mer komplicerat, där det tar för utsignalen från ett kommando 782 00:36:29,590 --> 00:36:32,320 och matar in den i nästa kommando. 783 00:36:32,320 --> 00:36:36,140 Så lite gemensam sak, historia. 784 00:36:36,140 --> 00:36:37,920 Så, ugh, jag vill inte titta på detta. 785 00:36:37,920 --> 00:36:40,680 786 00:36:40,680 --> 00:36:44,485 Visa mig alla kommandon i min historia där jag grep-ed för något. 787 00:36:44,485 --> 00:36:45,360 Nej, det är förvirrande. 788 00:36:45,360 --> 00:36:50,360 Visa mig alla kommandon där jag hitta. 789 00:36:50,360 --> 00:36:52,360 Alla hitta kommandon jag någonsin sprang. 790 00:36:52,360 --> 00:36:55,050 >> Så historien. 791 00:36:55,050 --> 00:36:59,017 Nu historia utgångar till screena denna lista med kommandon 792 00:36:59,017 --> 00:37:00,850 men jag vill inte utsignal i skärmen. 793 00:37:00,850 --> 00:37:03,445 Istället ska jag röret det till grep. 794 00:37:03,445 --> 00:37:04,790 795 00:37:04,790 --> 00:37:07,830 Så låt oss grep efter alla förekomster av fyndet. 796 00:37:07,830 --> 00:37:09,550 797 00:37:09,550 --> 00:37:17,000 Så nu i stället för grep tagande ingången, istället of-- 798 00:37:17,000 --> 00:37:24,360 grep kan hantera så input-- vi är använder grep lite annorlunda här. 799 00:37:24,360 --> 00:37:29,550 Så istället för att skriva en lista över saker som vi ville söka 800 00:37:29,550 --> 00:37:31,070 och sade grep tar som indata. 801 00:37:31,070 --> 00:37:34,810 Så om jag bara grep hitta, det väntar på att jag ska skriva saker. 802 00:37:34,810 --> 00:37:37,661 Så katt hej hitta. 803 00:37:37,661 --> 00:37:38,160 Hej. 804 00:37:38,160 --> 00:37:40,430 805 00:37:40,430 --> 00:37:40,930 Hitta. 806 00:37:40,930 --> 00:37:43,670 Lägg märke till varje gång jag skriver hitta Det erkänner att jag skrivit Sök. 807 00:37:43,670 --> 00:37:44,880 808 00:37:44,880 --> 00:37:49,540 Så i stället för detta, kommer sök filer för fyndet. 809 00:37:49,540 --> 00:37:53,930 >> Så historien kommer nu att ut en lista på alla kommandon. 810 00:37:53,930 --> 00:37:55,200 811 00:37:55,200 --> 00:37:58,100 Vi lägger denna produktion, och vi leder in den i grep, 812 00:37:58,100 --> 00:38:00,180 och så den spottar ut alla instanser av fyndet. 813 00:38:00,180 --> 00:38:02,170 814 00:38:02,170 --> 00:38:05,570 Anledningen till att jag sa att det skulle vara förvirrande är om Jag-- det är fortfarande förvirrande. 815 00:38:05,570 --> 00:38:07,030 Om jag grep för grep. 816 00:38:07,030 --> 00:38:08,755 817 00:38:08,755 --> 00:38:11,130 Lägg märke till att det är ganska mycket alltid visar kommandot jag bara 818 00:38:11,130 --> 00:38:15,280 sprang eftersom det kommandot själv har grep inne i den. 819 00:38:15,280 --> 00:38:16,580 820 00:38:16,580 --> 00:38:20,674 >> OK, så alla frågor om vad som helst? 821 00:38:20,674 --> 00:38:22,340 Och jag ska föra den över på denna punkt. 822 00:38:22,340 --> 00:38:24,690 Förhoppningsvis är detta en trevlig översikt över alla kommandon 823 00:38:24,690 --> 00:38:30,100 att du inte behöver ha memorerade, men dessa utgör 824 00:38:30,100 --> 00:38:32,950 en fast 95% av vad jag göra på kommandoraden. 825 00:38:32,950 --> 00:38:34,310 826 00:38:34,310 --> 00:38:39,140 Tänk också på att kommandoraden själv, är pucklar ett programmeringsspråk, 827 00:38:39,140 --> 00:38:43,070 och så när du får till det, du kanske vill göra riktigt komplicerade saker. 828 00:38:43,070 --> 00:38:47,522 Och så har saker som loopar och ifs, och alla av dem 829 00:38:47,522 --> 00:38:50,230 att du kommer att vänja sig med dina programmeringsspråk. 830 00:38:50,230 --> 00:38:53,660 Men det är bortom tillämpningsområdet för detta avsnitt. 831 00:38:53,660 --> 00:38:55,520 832 00:38:55,520 --> 00:38:56,985 OK, så inga frågor? 833 00:38:56,985 --> 00:38:57,940 834 00:38:57,940 --> 00:38:58,523 ALLISON: Ingen? 835 00:38:58,523 --> 00:38:59,450 GABRIEL: Kommer ni att-- 836 00:38:59,450 --> 00:39:01,158 ALLISON: Jag kan göra det på min om du vill. 837 00:39:01,158 --> 00:39:02,626 Vi kan se vad som händer. 838 00:39:02,626 --> 00:39:03,750 ROB BOWDEN: Av till Allison. 839 00:39:03,750 --> 00:39:05,090 ALLISON: Woo. 840 00:39:05,090 --> 00:39:07,504 Du är en svårt att följa, Rob. 841 00:39:07,504 --> 00:39:08,920 Vill du att jag ska byta med dig? 842 00:39:08,920 --> 00:39:10,246 Eller du fick, OK. 843 00:39:10,246 --> 00:39:13,590 844 00:39:13,590 --> 00:39:16,990 Jag ska försöka att inte riktigt vara så långa där. 845 00:39:16,990 --> 00:39:20,619 846 00:39:20,619 --> 00:39:22,660 Låt oss se om detta kommer fungerar som jag vill. 847 00:39:22,660 --> 00:39:26,170 848 00:39:26,170 --> 00:39:26,670 Kanske? 849 00:39:26,670 --> 00:39:27,760 850 00:39:27,760 --> 00:39:28,296 Haha! 851 00:39:28,296 --> 00:39:28,796 Ja. 852 00:39:28,796 --> 00:39:30,460 853 00:39:30,460 --> 00:39:34,066 >> Så jag ska bara snabbt gå genom variabler, loopar, villkorssatser, 854 00:39:34,066 --> 00:39:35,440 och lite på kompilatorn. 855 00:39:35,440 --> 00:39:38,570 Om du har frågor på helst ska du stoppa mig. 856 00:39:38,570 --> 00:39:42,750 Killarna kommer att påminna mig att upprepa din fråga ifall jag glömmer, 857 00:39:42,750 --> 00:39:44,210 men bör inte vara så illa. 858 00:39:44,210 --> 00:39:45,850 >> Så variabler, ja. 859 00:39:45,850 --> 00:39:48,060 Vi har ingen av er Skrap bitar här. 860 00:39:48,060 --> 00:39:50,440 Jag är säker på att de flesta av er, om du hade någon form av spel 861 00:39:50,440 --> 00:39:53,810 som du har skapat med Scratch, du hade att hålla reda på något liknande poäng, 862 00:39:53,810 --> 00:39:55,870 eller tid, eller något liknande. 863 00:39:55,870 --> 00:39:58,080 Så de lysande orange bitar som vi ser det 864 00:39:58,080 --> 00:40:02,630 är bara Scratch form variabler, och du kommer definitivt att 865 00:40:02,630 --> 00:40:04,640 att med hjälp av variabler hela ditt program. 866 00:40:04,640 --> 00:40:07,350 Om du inte är, jag är inte riktigt säker på vad du gör. 867 00:40:07,350 --> 00:40:09,000 868 00:40:09,000 --> 00:40:12,215 >> Men hur som helst, stor sak, definiera variabler. 869 00:40:12,215 --> 00:40:13,630 870 00:40:13,630 --> 00:40:16,970 Med C varje variabel har att ha en typ deklareras, 871 00:40:16,970 --> 00:40:22,090 så jag gav dig en mycket allmänhet en på toppen. 872 00:40:22,090 --> 00:40:24,045 Så du har din typ och sedan vad 873 00:40:24,045 --> 00:40:25,420 du bestämmer dig för att ringa din variabel. 874 00:40:25,420 --> 00:40:27,500 875 00:40:27,500 --> 00:40:29,680 Så i detta fall, typ i variabellistan. 876 00:40:29,680 --> 00:40:31,400 >> Vi har tre exempel. 877 00:40:31,400 --> 00:40:34,439 Char av något klass, av ett A, vilket är vad 878 00:40:34,439 --> 00:40:36,230 Jag är säker på att ni alla vill ha att få i denna klass. 879 00:40:36,230 --> 00:40:37,380 880 00:40:37,380 --> 00:40:40,670 Du kan definiera flera variabler på en linje 881 00:40:40,670 --> 00:40:43,880 så länge de är alla av samma typ, vilket är vårt andra exempel där 882 00:40:43,880 --> 00:40:46,409 där du har tre variabler, x, y och z. 883 00:40:46,409 --> 00:40:47,200 De är alla flottar. 884 00:40:47,200 --> 00:40:49,160 885 00:40:49,160 --> 00:40:53,250 Och då kan du också, i denna sista exempel med int poäng och nummer 886 00:40:53,250 --> 00:40:56,510 lag, kan du initiera dem där. 887 00:40:56,510 --> 00:41:01,270 >> Så i mitten exempel där vi bara flyta på x, y och z, 888 00:41:01,270 --> 00:41:02,730 de är inte initierats ännu. 889 00:41:02,730 --> 00:41:04,140 De har inget värde. 890 00:41:04,140 --> 00:41:05,600 Eller de har sopor värden. 891 00:41:05,600 --> 00:41:07,370 892 00:41:07,370 --> 00:41:10,790 Och om du försöker och använda dem, kompilatorn kommer att skrika på dig. 893 00:41:10,790 --> 00:41:14,727 Du måste både deklarera och initiera variablerna. 894 00:41:14,727 --> 00:41:16,310 Så i detta sista, vi gör båda. 895 00:41:16,310 --> 00:41:19,320 Vi deklarerar variabler av poäng och antal lag, 896 00:41:19,320 --> 00:41:24,134 och vi initiering dem, vilket ger dem deras ursprungliga värden av 7 och 4 897 00:41:24,134 --> 00:41:24,675 respektive. 898 00:41:24,675 --> 00:41:26,310 899 00:41:26,310 --> 00:41:27,190 Cool. 900 00:41:27,190 --> 00:41:28,550 Alla bra? 901 00:41:28,550 --> 00:41:29,470 Grymt. 902 00:41:29,470 --> 00:41:31,690 >> OK, så vissa konventioner. 903 00:41:31,690 --> 00:41:35,965 Om ni har läst genom stil 50, dessa 904 00:41:35,965 --> 00:41:39,510 är bara saker som vi skulle vilja för dig att genomföra i din stil. 905 00:41:39,510 --> 00:41:41,230 Så meningsfulla namn. 906 00:41:41,230 --> 00:41:45,700 Om du börjar kalla saker bara x, y och z, särskilt 907 00:41:45,700 --> 00:41:47,902 när du kommer in längre program, du är 908 00:41:47,902 --> 00:41:49,610 förmodligen kommer att förvirra dig själv och vara 909 00:41:49,610 --> 00:41:52,930 som vad är denna variabel hänvisar till. 910 00:41:52,930 --> 00:41:55,880 Jag har ingen aning om vad detta innebär. 911 00:41:55,880 --> 00:41:59,280 >> Så om det är tänkt att hålla en poäng, kalla det poäng. 912 00:41:59,280 --> 00:42:05,720 Om det är tänkt att hålla några svar eller leda, ge den ett namn som detta. 913 00:42:05,720 --> 00:42:09,920 För slingor, som vi kommer att komma in i nästa bild, 914 00:42:09,920 --> 00:42:12,985 enstaka brev variabler är bra. 915 00:42:12,985 --> 00:42:16,033 916 00:42:16,033 --> 00:42:18,449 ROB BOWDEN: I, j och k är bara konventioner för loopar 917 00:42:18,449 --> 00:42:22,050 att alla förväntar sig att kallas i, j och k. 918 00:42:22,050 --> 00:42:26,890 Du kan ringa them-- jag ser raden kolumn eller rad samtal ibland 919 00:42:26,890 --> 00:42:29,450 två nästlade loopar och det är även typ av standard. 920 00:42:29,450 --> 00:42:31,450 Men i och j är fullständigt klarlagd. 921 00:42:31,450 --> 00:42:33,670 >> ALLISON: Ja, i och j du är helt bra. 922 00:42:33,670 --> 00:42:36,250 För tydlighetens skull som i vissa av era P-apparater, 923 00:42:36,250 --> 00:42:39,745 det kan vara meningsfullt att ha mer beskrivande saker där bara 924 00:42:39,745 --> 00:42:40,920 att hålla reda på det. 925 00:42:40,920 --> 00:42:45,100 Men jag tror i, j och k tror jag de allra flesta av oss all användning. 926 00:42:45,100 --> 00:42:46,890 927 00:42:46,890 --> 00:42:50,340 >> ROB BOWDEN: Med dessa konventioner, så stil är viktigt. 928 00:42:50,340 --> 00:42:53,520 Det är en av de fyra axlarna där du är klassificerade, 929 00:42:53,520 --> 00:42:58,110 och det är så lätt att bara gå över din P satt i slutet och se till att 930 00:42:58,110 --> 00:42:59,770 att det inte finns stilistiska misstag. 931 00:42:59,770 --> 00:43:01,742 Så se till att du tabba korrekt. 932 00:43:01,742 --> 00:43:03,200 Se till att dina variabler namnges. 933 00:43:03,200 --> 00:43:04,450 Lämna några kommentarer. 934 00:43:04,450 --> 00:43:06,677 Det är mycket lätt att få dessa punkter. 935 00:43:06,677 --> 00:43:09,510 Du behöver inte tänka på allt i syfte att få dessa punkter. 936 00:43:09,510 --> 00:43:11,093 Du behöver inte räkna ut något. 937 00:43:11,093 --> 00:43:12,640 Det är bara att göra det ser ganska. 938 00:43:12,640 --> 00:43:14,850 >> ALLISON: Faktum är att vi har stil 50, vilket 939 00:43:14,850 --> 00:43:17,920 kommer att tala om var du messing upp om du stöka på stil 940 00:43:17,920 --> 00:43:21,180 och kommer att berätta exakt vad du behöver rätta och hur du behöver för att fixa det. 941 00:43:21,180 --> 00:43:23,900 Det är också bara bra att nämna att det är kurspolitik 942 00:43:23,900 --> 00:43:27,200 att om du är på kontoret timmar och din kod är en enda röra, 943 00:43:27,200 --> 00:43:30,200 Vi kan vägra att hjälpa dig tills det ser trevligare. 944 00:43:30,200 --> 00:43:34,310 Så börjar rätt, hålla en konsekvent stil, 945 00:43:34,310 --> 00:43:37,100 du också bara kommer att göra era liv mycket enklare när 946 00:43:37,100 --> 00:43:38,730 du försöker gå igenom felsöka. 947 00:43:38,730 --> 00:43:41,510 Om du försöker lista ut där du saknar en klammerparentes 948 00:43:41,510 --> 00:43:44,890 och de är överallt, du är bara gör ditt eget liv svårare. 949 00:43:44,890 --> 00:43:47,217 Så stämma överens med stil. 950 00:43:47,217 --> 00:43:48,800 Jag lovar att det kommer att göra ditt liv enklare. 951 00:43:48,800 --> 00:43:50,330 Det kommer att göra våra liv enklare. 952 00:43:50,330 --> 00:43:51,869 Alla kommer att vara mycket lyckligare. 953 00:43:51,869 --> 00:43:52,910 Och det är vad du vill. 954 00:43:52,910 --> 00:43:54,192 955 00:43:54,192 --> 00:43:55,650 GABRIEL: Din klass kommer att vara högre. 956 00:43:55,650 --> 00:43:56,858 ALLISON: Ja, och din klass. 957 00:43:56,858 --> 00:43:58,410 958 00:43:58,410 --> 00:44:01,930 Om din TF är som du, tenderar att vara gynnsam. 959 00:44:01,930 --> 00:44:02,940 960 00:44:02,940 --> 00:44:05,010 Okej, och sedan bara den andra punkten här. 961 00:44:05,010 --> 00:44:06,300 Konsekvent initieringar. 962 00:44:06,300 --> 00:44:09,605 Så när vi såg, kan du deklarera och initiera saker. 963 00:44:09,605 --> 00:44:10,750 964 00:44:10,750 --> 00:44:13,180 Flera variabler på samma linje. 965 00:44:13,180 --> 00:44:17,930 En sak som vi vill att ni inte göra är att förklara vissa variabler 966 00:44:17,930 --> 00:44:21,360 och inte initiera dem på samma linje som du initierar andra. 967 00:44:21,360 --> 00:44:23,960 >> Så i fall som gjorde meningslöst, 968 00:44:23,960 --> 00:44:29,050 Vi har exemplet här där vi förklarar ints 969 00:44:29,050 --> 00:44:31,180 i variabler av fjärde Dimes och pennies, 970 00:44:31,180 --> 00:44:34,214 men kvartalen och pennies har ingen initialvärde. 971 00:44:34,214 --> 00:44:36,630 Vi har inte initierats dem, men rätt i mitten finns 972 00:44:36,630 --> 00:44:38,600 vi redan initierats Dimes till 0. 973 00:44:38,600 --> 00:44:41,650 Så antingen gör kvartal, Dimes, småpengar. 974 00:44:41,650 --> 00:44:43,170 Eller håll lika 0. 975 00:44:43,170 --> 00:44:43,930 Dimes motsvara 0. 976 00:44:43,930 --> 00:44:46,810 Pennies motsvara 0, eller vad dessa initialvärden är. 977 00:44:46,810 --> 00:44:49,800 >> Stor sak med stil, vara konsekvent. 978 00:44:49,800 --> 00:44:51,050 När du är osäker vara konsekvent. 979 00:44:51,050 --> 00:44:52,129 980 00:44:52,129 --> 00:44:53,420 Men följ för vår stilguide. 981 00:44:53,420 --> 00:44:54,710 982 00:44:54,710 --> 00:44:55,317 Cool. 983 00:44:55,317 --> 00:44:56,150 Alla bra där? 984 00:44:56,150 --> 00:44:57,566 >> PUBLIK: Var är stilguide? 985 00:44:57,566 --> 00:45:00,800 ALLISON: Stilen guide är on-- vad är hemsidan? 986 00:45:00,800 --> 00:45:03,950 >> GABRIEL: Jag tycker det är manual.cs50.net/-- 987 00:45:03,950 --> 00:45:04,575 ALLISON: Style? 988 00:45:04,575 --> 00:45:05,610 989 00:45:05,610 --> 00:45:06,390 >> GABRIEL: Style. 990 00:45:06,390 --> 00:45:06,920 Japp. 991 00:45:06,920 --> 00:45:07,520 >> ALLISON: Ja. 992 00:45:07,520 --> 00:45:10,150 Så frågan, var är stil 50. 993 00:45:10,150 --> 00:45:12,250 manual.cs50.net/style. 994 00:45:12,250 --> 00:45:13,639 Ja? 995 00:45:13,639 --> 00:45:16,880 >> PUBLIK: Om vi ​​definierar variabler, är det OK 996 00:45:16,880 --> 00:45:28,145 om vi sätter som [OHÖRBAR] som int poäng och sedan int mål. 997 00:45:28,145 --> 00:45:29,873 998 00:45:29,873 --> 00:45:35,100 Så skulle du säga att nu har vi fick definiera dem tillsammans? 999 00:45:35,100 --> 00:45:37,640 >> ALLISON: Så fråga bör du har redundant kod 1000 00:45:37,640 --> 00:45:40,940 När du definierar variabler som int poäng och 1001 00:45:40,940 --> 00:45:43,239 på nästa rad int spel? 1002 00:45:43,239 --> 00:45:46,030 ROB BOWDEN: Det finns definitivt fall där redundant kod är dåligt. 1003 00:45:46,030 --> 00:45:47,738 Jag skulle inte anser att redundant kod. 1004 00:45:47,738 --> 00:45:50,970 Jag nästan aldrig förklarar flera variabler på samma linje någonsin. 1005 00:45:50,970 --> 00:45:53,736 Och om något, är det för att brukar jag lämna någon form av kommentar 1006 00:45:53,736 --> 00:45:55,235 förklarar vad variabeln är till för. 1007 00:45:55,235 --> 00:45:57,582 Så jag ska säga int poäng snedstreck snedstreck. 1008 00:45:57,582 --> 00:45:59,350 Håller reda på vad som helst. 1009 00:45:59,350 --> 00:46:00,710 Totalt snedstreck snedstreck. 1010 00:46:00,710 --> 00:46:01,790 1011 00:46:01,790 --> 00:46:06,455 Så det är mycket grosser på det sättet att sätta dem alla på samma linje. 1012 00:46:06,455 --> 00:46:08,080 Jag bara aldrig sätta dem på samma rad. 1013 00:46:08,080 --> 00:46:10,580 >> ALLISON: Jag tycker det är personliga preferenser på denna punkt. 1014 00:46:10,580 --> 00:46:14,900 >> PUBLIK: Betyder det går för för slingor och sånt också? 1015 00:46:14,900 --> 00:46:15,900 ROB BOWDEN: Like inuti? 1016 00:46:15,900 --> 00:46:18,282 Liksom int i lika med 0 kommatecken Längden är lika med något? 1017 00:46:18,282 --> 00:46:19,490 Att du inte har ett val. 1018 00:46:19,490 --> 00:46:21,850 1019 00:46:21,850 --> 00:46:25,910 Med för slingor initieringen part-- så du kanske har bara sett 1020 00:46:25,910 --> 00:46:31,520 int i är lika med 0 semikolon i mindre än vad semikolon i plus plus. 1021 00:46:31,520 --> 00:46:33,820 Att int i lika med 0, tekniskt kan du också 1022 00:46:33,820 --> 00:46:35,770 göra vad vi såg tidigare med kommatecken syntax. 1023 00:46:35,770 --> 00:46:39,790 int i är lika med 0 kommatecken j är lika med 3 kommatecken k är lika med 5. 1024 00:46:39,790 --> 00:46:41,610 1025 00:46:41,610 --> 00:46:44,320 Du har inte ett val att dela upp att upp i flera rader, 1026 00:46:44,320 --> 00:46:46,530 och det är standard. 1027 00:46:46,530 --> 00:46:47,780 Att se det där är bra. 1028 00:46:47,780 --> 00:46:49,182 1029 00:46:49,182 --> 00:46:49,890 ALLISON: Awesome. 1030 00:46:49,890 --> 00:46:52,120 Tja, bekväm segue i slingor. 1031 00:46:52,120 --> 00:46:54,860 1032 00:46:54,860 --> 00:46:58,980 Så ja, här har vi några exempel av loopar som ni såg i Scratch. 1033 00:46:58,980 --> 00:47:01,550 Och naturligtvis alla dessa kan bara återskapas i C. 1034 00:47:01,550 --> 00:47:04,610 Och de i grund och botten gör att du att upprepa några avsnitt av kod 1035 00:47:04,610 --> 00:47:06,740 tills ett visst villkor är uppfyllt, som vi kommer att 1036 00:47:06,740 --> 00:47:09,198 komma in rätt efter att ha talat om loopar med villkorssatser. 1037 00:47:09,198 --> 00:47:11,150 1038 00:47:11,150 --> 00:47:12,570 >> Så vi har tre huvudtyper. 1039 00:47:12,570 --> 00:47:17,500 För samtidigt, och gör samtidigt, vilket vi alla går igenom just nu. 1040 00:47:17,500 --> 00:47:18,860 Så första är för slingor. 1041 00:47:18,860 --> 00:47:20,490 1042 00:47:20,490 --> 00:47:25,034 Så för vissa villkor, utföra detta kodblock. 1043 00:47:25,034 --> 00:47:27,200 Vi har denna coola lilla diagram här längst ned. 1044 00:47:27,200 --> 00:47:28,230 1045 00:47:28,230 --> 00:47:32,310 Men i grund och botten har du i er för att första raden, 1046 00:47:32,310 --> 00:47:34,240 du kommer att initiera variablerna. 1047 00:47:34,240 --> 00:47:38,260 >> Så som vi pratade om, är jag lika med 0 eller i är lika med 10. 1048 00:47:38,260 --> 00:47:40,010 Oavsett vad du behöver att variabel för att vara det 1049 00:47:40,010 --> 00:47:43,970 kommer att initieras där, deklareras och initieras till något värde. 1050 00:47:43,970 --> 00:47:46,760 Så då har vi några tillstånd som händer 1051 00:47:46,760 --> 00:47:48,900 att kontrollera våra variabel mot något. 1052 00:47:48,900 --> 00:47:55,220 Så i fallet det typiska fallet där kanske du vill ha den här delen av koden 1053 00:47:55,220 --> 00:47:56,620 att exekvera fem gånger. 1054 00:47:56,620 --> 00:48:02,380 Så skulle vi ha int jag är lika med 0, och vi vill att det ska vara när jag är mindre än 5. 1055 00:48:02,380 --> 00:48:04,940 Så att villkoret är bara kommer att kontrollera att varje gång. 1056 00:48:04,940 --> 00:48:07,120 Om detta villkor utvärderas till true, det är 1057 00:48:07,120 --> 00:48:11,162 kommer att köra koden, vilket är precis vad denna lilla diagrammet visar. 1058 00:48:11,162 --> 00:48:12,370 1059 00:48:12,370 --> 00:48:13,639 >> Och så utför det. 1060 00:48:13,639 --> 00:48:15,430 Den uppdaterar en variabel, vilket är vad vi ser 1061 00:48:15,430 --> 00:48:21,020 i den sista delen av vår för loop initiering där. 1062 00:48:21,020 --> 00:48:22,370 1063 00:48:22,370 --> 00:48:26,030 Så det ska bara fortsätta göra det här tills detta villkor inte är uppfyllt, 1064 00:48:26,030 --> 00:48:28,010 och då kommer det att gå ur slingan och fortsätta 1065 00:48:28,010 --> 00:48:29,960 går vidare med resten av ditt program. 1066 00:48:29,960 --> 00:48:31,320 1067 00:48:31,320 --> 00:48:33,620 Alla bra där? 1068 00:48:33,620 --> 00:48:34,440 Cool. 1069 00:48:34,440 --> 00:48:37,780 >> Så här är ett exempel, mycket liknande till något jag just pratade om. 1070 00:48:37,780 --> 00:48:42,030 Så vi vill bara skriva ut Detta är CS50 10 gånger. 1071 00:48:42,030 --> 00:48:44,540 Så ni ser här har vi vår för, och då är vi 1072 00:48:44,540 --> 00:48:47,450 initiera variabeln i för att vara lika med 0. 1073 00:48:47,450 --> 00:48:50,610 Vårt tillstånd kollar att det är mindre än 10. 1074 00:48:50,610 --> 00:48:55,210 Så utvärderas till sant när vi först start, och sedan uppdaterar vår variabel 1075 00:48:55,210 --> 00:48:58,985 varje gång att det faktiskt utför och skriver ut detta är CS50. 1076 00:48:58,985 --> 00:49:00,510 1077 00:49:00,510 --> 00:49:02,180 Och kommer att upphöra efter 10 gånger. 1078 00:49:02,180 --> 00:49:03,190 1079 00:49:03,190 --> 00:49:04,070 Cool. 1080 00:49:04,070 --> 00:49:07,130 >> Så medan slingorna är upp nästa. 1081 00:49:07,130 --> 00:49:12,400 Och som ni ser här, vi bara har vissa medan det Skick- fråga? 1082 00:49:12,400 --> 00:49:15,238 >> PUBLIK: Hur kan jag hoppa faktiskt bara inte ett nummer, 1083 00:49:15,238 --> 00:49:19,030 men två siffror [OHÖRBAR] Jag plus plus plus? 1084 00:49:19,030 --> 00:49:23,390 >> ALLISON: Så frågan var hur kan du uppdatera din variabel av mer än en 1085 00:49:23,390 --> 00:49:24,070 åt gången. 1086 00:49:24,070 --> 00:49:26,860 Så jag plus plus kommer uppdatering av en varje gång. 1087 00:49:26,860 --> 00:49:32,310 Om du vill uppdatera den genom två, kan du göra mig plus lika med 2. 1088 00:49:32,310 --> 00:49:34,526 >> ROB BOWDEN: Har du sett plus jämlikar i föreläsning än? 1089 00:49:34,526 --> 00:49:35,442 >> PUBLIK: [OHÖRBAR]. 1090 00:49:35,442 --> 00:49:37,440 1091 00:49:37,440 --> 00:49:42,110 >> ALLISON: Det är effektivt Samma sak som jag är lika i plus 2. 1092 00:49:42,110 --> 00:49:46,130 Så det kommer att ta den och uppdatera den med två varje gång. 1093 00:49:46,130 --> 00:49:49,432 Plus är lika är bara något Vi kallar syntaktisk socker. 1094 00:49:49,432 --> 00:49:52,390 ROB BOWDEN: Ja, de som finns för ganska mycket alla aritmetiska operatorer. 1095 00:49:52,390 --> 00:49:55,830 Så i gånger är lika med skulle fördubbla antalet. 1096 00:49:55,830 --> 00:50:02,590 j klyftan är lika med 3 är densamma som j lika j dividerat med 3. 1097 00:50:02,590 --> 00:50:07,399 >> ALLISON: Eller minus lika med 2 skulle eller sänkas i med två varje gång. 1098 00:50:07,399 --> 00:50:08,565 ROB BOWDEN: Även mod jämlikar. 1099 00:50:08,565 --> 00:50:09,690 1100 00:50:09,690 --> 00:50:13,270 Du har inte sett bitvisa operatörer, men cirkumflex lika och et-tecken är lika, 1101 00:50:13,270 --> 00:50:14,560 alla dessa existerar. 1102 00:50:14,560 --> 00:50:19,480 >> ALLISON: Så många gånger, framför allt med din första par P-apparater, 1103 00:50:19,480 --> 00:50:22,527 du kommer att förmodligen uppstegning av en, så jag plus plus, j plus plus 1104 00:50:22,527 --> 00:50:24,610 är alla saker du kommer att typiskt använder. 1105 00:50:24,610 --> 00:50:28,240 Men att uppdateringsvillkor är helt inom din kontroll. 1106 00:50:28,240 --> 00:50:32,310 Du kan uppdatera den oavsett steg eller på det sätt du väljer att. 1107 00:50:32,310 --> 00:50:33,389 1108 00:50:33,389 --> 00:50:35,680 Kanske du även vill att det ska vara ett slumptal ibland. 1109 00:50:35,680 --> 00:50:37,180 1110 00:50:37,180 --> 00:50:39,580 Men ja, det finns massor av saker du kan göra med det. 1111 00:50:39,580 --> 00:50:41,280 Du är inte begränsad till i plus plus. 1112 00:50:41,280 --> 00:50:44,400 >> ROB BOWDEN: Bara så ni vet att det finns, det också 1113 00:50:44,400 --> 00:50:46,960 finns i annan form, plus plus i. 1114 00:50:46,960 --> 00:50:51,410 Så om du någonsin söka på nätet och råkar se plus plus i, 1115 00:50:51,410 --> 00:50:52,870 ganska mycket betyder samma sak. 1116 00:50:52,870 --> 00:50:54,377 1117 00:50:54,377 --> 00:50:54,960 ALLISON: Cool. 1118 00:50:54,960 --> 00:50:56,070 1119 00:50:56,070 --> 00:50:56,740 Bra? 1120 00:50:56,740 --> 00:50:57,240 Grymt. 1121 00:50:57,240 --> 00:50:59,190 1122 00:50:59,190 --> 00:50:59,990 Så medan slingor. 1123 00:50:59,990 --> 00:51:01,160 1124 00:51:01,160 --> 00:51:02,570 Mycket lik. 1125 00:51:02,570 --> 00:51:03,737 Du har något villkor. 1126 00:51:03,737 --> 00:51:05,820 Det viktigaste att lägga märke till här är istället för att ha 1127 00:51:05,820 --> 00:51:08,540 tre olika delar att ställa upp, har vi en. 1128 00:51:08,540 --> 00:51:11,090 Vi har bara några villkor som är som kontrolleras. 1129 00:51:11,090 --> 00:51:14,920 Och på samma sätt, så länge att villkoret utvärderas till true, 1130 00:51:14,920 --> 00:51:16,840 din kod kommer att köras. 1131 00:51:16,840 --> 00:51:18,870 Och om det är falskt, det kommer att avsluta, flytta 1132 00:51:18,870 --> 00:51:21,930 till nästa del av ditt program. 1133 00:51:21,930 --> 00:51:25,780 Så detta är typ av like-- vad ett bra exempel på sökning 1134 00:51:25,780 --> 00:51:27,215 för vissa normala tillstånd? 1135 00:51:27,215 --> 00:51:29,402 1136 00:51:29,402 --> 00:51:30,235 GABRIEL: Även sant. 1137 00:51:30,235 --> 00:51:32,110 ALLISON: Du kan göra medan sant. 1138 00:51:32,110 --> 00:51:33,510 Jo, 1 är lika med 1. 1139 00:51:33,510 --> 00:51:34,970 1140 00:51:34,970 --> 00:51:37,642 >> ROB BOWDEN: Du kan göra while-- bara istället för att använda en for-loop, 1141 00:51:37,642 --> 00:51:39,600 Du kan alltid koda en for-loop i en while-slinga, 1142 00:51:39,600 --> 00:51:42,600 så jag är större än 0 eller medan jag är mindre än 10. 1143 00:51:42,600 --> 00:51:45,200 1144 00:51:45,200 --> 00:51:46,010 >> ALLISON: Awesome. 1145 00:51:46,010 --> 00:51:50,640 Och sedan har vi göra medan slingor, som är bra för validering användaren, där 1146 00:51:50,640 --> 00:51:55,370 du vill få något från ditt användarnamn, se om det är giltigt, 1147 00:51:55,370 --> 00:51:57,060 och fortsätter sedan därifrån. 1148 00:51:57,060 --> 00:52:04,000 Så en av de saker att veta är med en göra medan är att det kommer att köra, 1149 00:52:04,000 --> 00:52:08,000 och så kommer det att åter köra om detta villkor är uppfyllt. 1150 00:52:08,000 --> 00:52:11,240 >> Så förmodligen det bästa sättet att göra detta är bara för att se ett exempel här. 1151 00:52:11,240 --> 00:52:14,620 Så som jag nyss nämnde, användar validering är verkligen useful-- 1152 00:52:14,620 --> 00:52:17,520 eller gör whiles är verkligen användbart med validering användaren. 1153 00:52:17,520 --> 00:52:19,730 Så det här är bara att gå att åter uppmana vissa användar 1154 00:52:19,730 --> 00:52:23,640 tills de kommer in ett positivt tal, som kan vara till nytta för din P set 1155 00:52:23,640 --> 00:52:24,190 den här veckan. 1156 00:52:24,190 --> 00:52:25,850 1157 00:52:25,850 --> 00:52:29,480 Och så i detta fall, när vi initialt köra programmet, 1158 00:52:29,480 --> 00:52:32,260 det kommer att skrivas ut ange ett positivt tal. 1159 00:52:32,260 --> 00:52:34,810 Det kommer att få några inmatning från användaren, 1160 00:52:34,810 --> 00:52:38,320 och sedan det kommer att kontrollera den ingången mot villkoret 1161 00:52:38,320 --> 00:52:39,500 att du har angett för det. 1162 00:52:39,500 --> 00:52:41,030 >> Så i detta fall det kommer att kontrollera. 1163 00:52:41,030 --> 00:52:44,190 Det kommer att säga, OK, är vår ingång negativt, 1164 00:52:44,190 --> 00:52:47,175 eller är det 0 eller negativt, vilket skulle vara ogiltigt. 1165 00:52:47,175 --> 00:52:48,300 Så då skulle det åter prompt. 1166 00:52:48,300 --> 00:52:50,280 1167 00:52:50,280 --> 00:52:50,780 Fråga? 1168 00:52:50,780 --> 00:52:54,720 >> PUBLIK: Är det samma då som en while-slinga om du bara kopierade den koden 1169 00:52:54,720 --> 00:52:56,680 och satte den [OHÖRBAR] while-slinga? 1170 00:52:56,680 --> 00:52:59,620 1171 00:52:59,620 --> 00:53:05,160 >> ALLISON: Så fråga skulle denna vara samma som bara en stund 1172 00:53:05,160 --> 00:53:08,570 loop om vi skulle bara kopiera while-loopen ovan. 1173 00:53:08,570 --> 00:53:12,440 Så i detta fall, är din while-slinga kommer att kontrollera tillståndet först. 1174 00:53:12,440 --> 00:53:15,300 Så i detta fall, om vi försökte att skriva som bara en while-slinga, 1175 00:53:15,300 --> 00:53:18,010 Det skulle säga när ingång är mindre än ett. 1176 00:53:18,010 --> 00:53:20,801 Men vi har inte en ingång för den. 1177 00:53:20,801 --> 00:53:24,238 >> PUBLIK: Om du [OHÖRBAR] while-slinga inklusive denna kod, 1178 00:53:24,238 --> 00:53:28,166 men då du klarat koden ovanför while-loopen också. 1179 00:53:28,166 --> 00:53:31,052 Du hade bara denna kod [OHÖRBAR] while-slinga. 1180 00:53:31,052 --> 00:53:32,760 ALLISON: Det skulle vara samma sak, ja. 1181 00:53:32,760 --> 00:53:37,110 Så du kan bara write-- istället för att ha en do-- ja. 1182 00:53:37,110 --> 00:53:37,976 1183 00:53:37,976 --> 00:53:39,350 GABRIEL: Men det är mer elegant. 1184 00:53:39,350 --> 00:53:41,020 ALLISON: Ja, det är mer elegant. 1185 00:53:41,020 --> 00:53:44,560 Du kan komma in i design och vad inte, men ja, du kan helt göra det. 1186 00:53:44,560 --> 00:53:45,850 1187 00:53:45,850 --> 00:53:47,072 Fler frågor? 1188 00:53:47,072 --> 00:53:49,240 1189 00:53:49,240 --> 00:53:50,250 OK, cool. 1190 00:53:50,250 --> 00:53:55,540 >> Så vi har pratat mycket om villkor med alla dessa slingor som vi har, 1191 00:53:55,540 --> 00:53:58,615 så vi faktiskt komma in förhållandena i booleska uttryck. 1192 00:53:58,615 --> 00:53:59,990 1193 00:53:59,990 --> 00:54:03,440 Återigen, du använder dessa i C, så bara typ av övergång 1194 00:54:03,440 --> 00:54:06,050 från mer grafiskt gränssnitt att faktiskt kodning. 1195 00:54:06,050 --> 00:54:07,480 1196 00:54:07,480 --> 00:54:09,100 >> Cool, så stor en, om. 1197 00:54:09,100 --> 00:54:11,130 1198 00:54:11,130 --> 00:54:17,070 I grund och botten bara tillåter oss att införa viss logik i vårt program och kontroll 1199 00:54:17,070 --> 00:54:17,790 sys villkor. 1200 00:54:17,790 --> 00:54:22,150 Så i detta fall, OK, är n större än 0? 1201 00:54:22,150 --> 00:54:24,070 Ja det är, så att du kan utföra detta. 1202 00:54:24,070 --> 00:54:28,060 Det är bara att kolla lite förutsatt att du har 1203 00:54:28,060 --> 00:54:33,565 in, vilket jag tror att vi alla är bekväm med att kontrollera villkoren. 1204 00:54:33,565 --> 00:54:35,975 1205 00:54:35,975 --> 00:54:36,475 Cool. 1206 00:54:36,475 --> 00:54:38,760 1207 00:54:38,760 --> 00:54:44,530 Så om annat är din andra, du kan säga OK, om detta är sant, 1208 00:54:44,530 --> 00:54:46,150 göra det första. 1209 00:54:46,150 --> 00:54:48,720 Annars vill jag att du standard och göra något annat. 1210 00:54:48,720 --> 00:54:51,977 1211 00:54:51,977 --> 00:54:55,060 Som i det här fallet, du antingen välja en positivt tal eller ett negativt tal. 1212 00:54:55,060 --> 00:54:56,500 Du har bara två alternativ. 1213 00:54:56,500 --> 00:54:59,550 Du behöver den för att utföra oberoende vad dina användaringångar. 1214 00:54:59,550 --> 00:55:02,920 Så du kan säga ja, är det som är större än 0? 1215 00:55:02,920 --> 00:55:03,480 Cool. 1216 00:55:03,480 --> 00:55:04,480 Skriv ett positivt tal. 1217 00:55:04,480 --> 00:55:06,153 Om det inte är, skriva ut en negativ. 1218 00:55:06,153 --> 00:55:06,960 Alla bra? 1219 00:55:06,960 --> 00:55:14,920 >> Och så en sak att förstå är att, om den, om villkoret är uppfyllt, 1220 00:55:14,920 --> 00:55:16,650 else kommer aldrig också genomföra. 1221 00:55:16,650 --> 00:55:19,210 Endast en av dessa kommer att exekvera i taget. 1222 00:55:19,210 --> 00:55:20,410 Så det är en avvägning. 1223 00:55:20,410 --> 00:55:21,720 Du får inte ha båda. 1224 00:55:21,720 --> 00:55:23,566 Du har antingen det första villkoret. 1225 00:55:23,566 --> 00:55:25,440 Du har antingen om eller annat, inte båda. 1226 00:55:25,440 --> 00:55:26,849 1227 00:55:26,849 --> 00:55:28,890 Som sedan kan göra saker ännu mer komplicerat, 1228 00:55:28,890 --> 00:55:31,060 eftersom du kan göra om, annars är det, och sedan annanstans. 1229 00:55:31,060 --> 00:55:32,810 Så i detta fall, vi har tre villkor. 1230 00:55:32,810 --> 00:55:34,830 1231 00:55:34,830 --> 00:55:38,370 Och återigen, är endast en av dessa kommer att hamna avrättas. 1232 00:55:38,370 --> 00:55:41,030 Så du kanske undrar ja, vad händer om du 1233 00:55:41,030 --> 00:55:45,510 har något som kan möta två av dessa. 1234 00:55:45,510 --> 00:55:49,520 Kanske vad du än matar in uppfyller både villkoret 1235 00:55:49,520 --> 00:55:51,811 ty om och else if. 1236 00:55:51,811 --> 00:55:53,060 Endast sak som kommer att köra 1237 00:55:53,060 --> 00:55:56,240 >> ALLISON: Så fort den hittar något att den uppfyller de villkor för att 1238 00:55:56,240 --> 00:55:59,790 utvärderas till true, är vad som det kommer att springa och inget annat. 1239 00:55:59,790 --> 00:56:04,440 Så om du hade det här numret mellan 0 och 5 för din första, 1240 00:56:04,440 --> 00:56:10,530 eller är detta nummer mellan 3 och 5 för annat om en del, 1241 00:56:10,530 --> 00:56:15,550 och du anger number-- Jag sa 0 och 5 och-- 4. 1242 00:56:15,550 --> 00:56:18,110 Det kommer att drabba den första. 1243 00:56:18,110 --> 00:56:20,960 Det kommer att säga OK, detta nummer är mellan 0 och 5. 1244 00:56:20,960 --> 00:56:22,480 Kör och lämna. 1245 00:56:22,480 --> 00:56:25,340 Det kommer aldrig att träffa den andra alternativet. 1246 00:56:25,340 --> 00:56:26,394 Cool? 1247 00:56:26,394 --> 00:56:27,250 Grymt. 1248 00:56:27,250 --> 00:56:31,300 >> OK vi också switch-satser om du vill få ännu more-- eller ledsen, 1249 00:56:31,300 --> 00:56:31,965 omkopplaren är nästa. 1250 00:56:31,965 --> 00:56:33,540 1251 00:56:33,540 --> 00:56:34,990 Jag får framför mig här. 1252 00:56:34,990 --> 00:56:36,370 1253 00:56:36,370 --> 00:56:39,210 Återigen, multipel om block där som jag just sa 1254 00:56:39,210 --> 00:56:45,600 är så fort du hittar ett villkor som är uppfyllda och en if else if annat, 1255 00:56:45,600 --> 00:56:46,630 det lämnar. 1256 00:56:46,630 --> 00:56:49,560 Om du behöver kontrollera flera saker, du är 1257 00:56:49,560 --> 00:56:53,000 kommer att vilja använda detta eftersom Det kommer att kontrollera varje gång här. 1258 00:56:53,000 --> 00:56:58,060 Så det här kommer att gå genom, och om det är större än eller lika med 90, 1259 00:56:58,060 --> 00:56:59,160 det kommer att skriva ut det. 1260 00:56:59,160 --> 00:57:00,530 1261 00:57:00,530 --> 00:57:03,600 Och det kommer att gå igenom och kontrollera varenda en av dem. 1262 00:57:03,600 --> 00:57:06,444 >> PUBLIK: Så detta skulle vara mer buggig än [OHÖRBAR]. 1263 00:57:06,444 --> 00:57:07,735 Skulle det vara som [OHÖRBAR]? 1264 00:57:07,735 --> 00:57:10,990 1265 00:57:10,990 --> 00:57:15,740 >> ALLISON: Frågan är skulle detta vara buggy eller gör detta göra vad du vill. 1266 00:57:15,740 --> 00:57:19,830 Det beror egentligen på vad du vill från ditt program. 1267 00:57:19,830 --> 00:57:22,291 >> PUBLIK: Jag menar som om du sätter 90 i. 1268 00:57:22,291 --> 00:57:23,290 ALLISON: Om du sätter 90-- 1269 00:57:23,290 --> 00:57:24,206 PUBLIK: [OHÖRBAR]. 1270 00:57:24,206 --> 00:57:25,584 1271 00:57:25,584 --> 00:57:27,250 GABRIEL: Du kommer att få två saker. 1272 00:57:27,250 --> 00:57:28,916 ALLISON: Du kommer att få två saker. 1273 00:57:28,916 --> 00:57:29,420 Ja, två. 1274 00:57:29,420 --> 00:57:32,420 1275 00:57:32,420 --> 00:57:33,920 >> ROB BOWDEN: Two? 1276 00:57:33,920 --> 00:57:34,580 >> ALLISON: Nej. 1277 00:57:34,580 --> 00:57:35,288 >> ROB BOWDEN: Fyra. 1278 00:57:35,288 --> 00:57:37,070 1279 00:57:37,070 --> 00:57:40,070 Om du sätter 90, det kommer att säga att du fick ett A, du fick ett B, du fick ett C, 1280 00:57:40,070 --> 00:57:40,545 du fick en D. 1281 00:57:40,545 --> 00:57:41,461 >> PUBLIK: [OHÖRBAR]. 1282 00:57:41,461 --> 00:57:42,196 1283 00:57:42,196 --> 00:57:42,820 ALLISON: Höger. 1284 00:57:42,820 --> 00:57:44,778 Så jag beror på vad du vill ha från dig program. 1285 00:57:44,778 --> 00:57:47,050 Ibland behöver du kontrollera flera saker. 1286 00:57:47,050 --> 00:57:49,970 1287 00:57:49,970 --> 00:57:55,270 Du får mycket djupare in i vad god design är som du går framåt. 1288 00:57:55,270 --> 00:57:57,090 Det viktiga att inser är att detta 1289 00:57:57,090 --> 00:58:01,090 kommer att kontrollera alla fyra villkoren här. 1290 00:58:01,090 --> 00:58:05,860 Medan om det var en om annars om annat om annars skulle det drabba det första fallet, 1291 00:58:05,860 --> 00:58:07,950 Det skulle skriva ut att du fick ett A och göras. 1292 00:58:07,950 --> 00:58:10,250 >> ROB BOWDEN: Även om vi beslutat att ändra det till om 1293 00:58:10,250 --> 00:58:13,880 och större än eller lika med 90, om och större än eller lika med 80, 1294 00:58:13,880 --> 00:58:19,710 och mindre än eller lika med 89, om n är större än eller lika med 70, 1295 00:58:19,710 --> 00:58:23,830 och n är mindre än eller lika med 79, så det kommer att vara korrekt. 1296 00:58:23,830 --> 00:58:27,190 Det kommer att göra vad vi vill, men det fortfarande kontrollerar varenda det. 1297 00:58:27,190 --> 00:58:34,050 >> Så medan man i det första scenariot, om vi ange 90 med bara om annars om annars om, 1298 00:58:34,050 --> 00:58:37,300 och vi går in i 90, sedan det kommer att rätta till. 1299 00:58:37,300 --> 00:58:39,615 Det kommer att kontrollera den första en, skriv ut du fick ett A, 1300 00:58:39,615 --> 00:58:42,590 hoppa allt, eftersom det redan hittat en som fungerar. 1301 00:58:42,590 --> 00:58:46,360 Samtliga fall är ömsesidigt uteslutande baserat på om else if else if. 1302 00:58:46,360 --> 00:58:48,630 Så det kommer att utföra först om, då är det gjort. 1303 00:58:48,630 --> 00:58:49,790 Det kommer att gå till slutet. 1304 00:58:49,790 --> 00:58:52,400 >> Medan om vi ändrar detta är vad jag var 1305 00:58:52,400 --> 00:58:54,204 säga med mindre än eller lika med 89. 1306 00:58:54,204 --> 00:58:55,620 Det kommer att kontrollera den första. 1307 00:58:55,620 --> 00:58:56,560 Det kommer att skrivas ut. 1308 00:58:56,560 --> 00:58:58,010 Det kommer att kontrollera den andra. 1309 00:58:58,010 --> 00:58:59,010 Det kommer inte att skriva ut. 1310 00:58:59,010 --> 00:58:59,910 Kontrollera den tredje. 1311 00:58:59,910 --> 00:59:00,620 Kommer inte att skriva ut. 1312 00:59:00,620 --> 00:59:01,495 Kontrollera fjärde. 1313 00:59:01,495 --> 00:59:02,420 Nu tryckningen. 1314 00:59:02,420 --> 00:59:05,380 Så i det fallet, det annars om version, eftersom dessa fall 1315 00:59:05,380 --> 00:59:09,120 utesluter varandra, det är bättre användning om annars om annars om, 1316 00:59:09,120 --> 00:59:12,970 eftersom det kommer att ha färre kontroller av villkoren 1317 00:59:12,970 --> 00:59:14,750 än denna version. 1318 00:59:14,750 --> 00:59:17,692 1319 00:59:17,692 --> 00:59:18,400 ALLISON: Awesome. 1320 00:59:18,400 --> 00:59:20,580 Så en annan sak som vi kan gör är switch uttalanden. 1321 00:59:20,580 --> 00:59:23,104 1322 00:59:23,104 --> 00:59:25,270 I grund och botten en switch uttalande tar i någon variabel, 1323 00:59:25,270 --> 00:59:28,780 i detta fall det är n, och avgör vilket fall att utföra. 1324 00:59:28,780 --> 00:59:33,106 Så det här är också en där dina ärenden bör vara typ av ömsesidigt uteslutande. 1325 00:59:33,106 --> 00:59:35,210 1326 00:59:35,210 --> 00:59:37,940 Så i detta fall, om vi att vi får en etta, det är 1327 00:59:37,940 --> 00:59:42,270 kommer att matcha vad det variable-- oavsett värdet på n 1328 00:59:42,270 --> 00:59:48,700 är att ett av dessa fall, så 1, 2, eller 3, och skriva ut motsvarande rad. 1329 00:59:48,700 --> 00:59:51,870 >> Och sedan om du märker här, Vi har också en standard, 1330 00:59:51,870 --> 00:59:54,670 som du kan för att tänka på som din andra. 1331 00:59:54,670 --> 00:59:58,510 Så om du väljer ett annat nummer förutom 1, 2, och 3 i det här fallet 1332 00:59:58,510 --> 00:59:59,885 det är bara att skriva ut ogiltig. 1333 00:59:59,885 --> 01:00:03,690 1334 01:00:03,690 --> 01:00:08,390 Avgöra när man ska använda IFS kontra om annans kontra omkopplarna går 1335 01:00:08,390 --> 01:00:12,590 vara något som ni kommer att se utforma klok som du börjar skriva 1336 01:00:12,590 --> 01:00:15,270 mer komplicerade program, och det finns inga fasta regler 1337 01:00:15,270 --> 01:00:16,330 om när du ska använda dem. 1338 01:00:16,330 --> 01:00:17,890 Det beror egentligen på din sammanhang. 1339 01:00:17,890 --> 01:00:18,590 >> ROB BOWDEN: Och bara att kasta ut den där 1340 01:00:18,590 --> 01:00:20,131 eftersom den är mer bekväm sektion. 1341 01:00:20,131 --> 01:00:20,920 1342 01:00:20,920 --> 01:00:25,053 Switchar, tenderar de att be-- så du är begränsad 1343 01:00:25,053 --> 01:00:27,430 i antalet sätt du kan använda dem, eftersom ifs, 1344 01:00:27,430 --> 01:00:30,100 tillståndet kan vara ganska mycket vad du vill. 1345 01:00:30,100 --> 01:00:33,410 Med omkopplare fallen måste vara siffror, 1346 01:00:33,410 --> 01:00:37,770 eller tekniskt de kan vara tecken, men tecken, som vi får se, är bara siffror. 1347 01:00:37,770 --> 01:00:44,250 Så de måste vara siffror, men växlar är verkligen mer effektiva än om 1348 01:00:44,250 --> 01:00:50,060 annars om annars om, eftersom även tar exemplet before-- bra, 1349 01:00:50,060 --> 01:00:51,486 betyget exemplet verkar bra. 1350 01:00:51,486 --> 01:00:52,550 1351 01:00:52,550 --> 01:00:57,080 >> Bra låt oss säga här, vi i stället göra detta som en if else if else if scenario. 1352 01:00:57,080 --> 01:01:00,930 Så om n är lika är lika med 1, skriva ut du plockat en låg siffra. 1353 01:01:00,930 --> 01:01:04,490 Om annars om n är lika med är lika med 2, du plockat ett medium nummer. 1354 01:01:04,490 --> 01:01:06,550 Annars om jämlikar lika 3, hög. 1355 01:01:06,550 --> 01:01:08,060 Else ogiltig. 1356 01:01:08,060 --> 01:01:09,820 >> Så låt oss säga att det var vårt scenario. 1357 01:01:09,820 --> 01:01:14,060 Så låt oss säga att vi anger 4, så vi förväntar oss ogiltig. 1358 01:01:14,060 --> 01:01:17,410 Det sätt som om det annars om annat om tillvägagångssätt kommer att fungera är 1359 01:01:17,410 --> 01:01:18,740 kontrollerar det första villkoret. 1360 01:01:18,740 --> 01:01:19,776 Det är inte nöjd. 1361 01:01:19,776 --> 01:01:21,150 Så kontrollerar vi det andra villkoret. 1362 01:01:21,150 --> 01:01:21,940 Det är inte nöjd. 1363 01:01:21,940 --> 01:01:23,023 Kontrollera det tredje villkoret. 1364 01:01:23,023 --> 01:01:23,640 Inte nöjd. 1365 01:01:23,640 --> 01:01:26,650 Så vi går till annat och skriva ut ogiltig. 1366 01:01:26,650 --> 01:01:30,169 >> Det sätt switchen fungerar är det samman ner 1367 01:01:30,169 --> 01:01:31,960 i vad vi ska att ringa ett hopp tabell. 1368 01:01:31,960 --> 01:01:33,180 1369 01:01:33,180 --> 01:01:37,120 Huvudtanken varelse att när du anger 4, 1370 01:01:37,120 --> 01:01:39,090 Det kan omedelbart gå till standard. 1371 01:01:39,090 --> 01:01:41,460 Det behöver inte kontrollera am I fall 1? 1372 01:01:41,460 --> 01:01:42,350 Nej det är inte det. 1373 01:01:42,350 --> 01:01:42,850 Fall 2? 1374 01:01:42,850 --> 01:01:43,240 Nope. 1375 01:01:43,240 --> 01:01:43,770 Fall 3? 1376 01:01:43,770 --> 01:01:44,270 Nope. 1377 01:01:44,270 --> 01:01:45,090 Default. 1378 01:01:45,090 --> 01:01:47,610 OK, måste detta vara där jag vill, och sedan köra det. 1379 01:01:47,610 --> 01:01:49,590 Nej, omedelbart hoppar den till standard. 1380 01:01:49,590 --> 01:01:51,900 Eller det jag skriver 2, det omedelbart kommer att gå till 2 1381 01:01:51,900 --> 01:01:54,060 utan att behöva gå igenom fallet 1. 1382 01:01:54,060 --> 01:01:57,820 >> Så på det sättet, realistiskt nuförtiden som är 1383 01:01:57,820 --> 01:02:00,250 inte så mycket av en effektivitetsvinst. 1384 01:02:00,250 --> 01:02:02,880 Vanligtvis datorer är ganska snabbt, och det är inte så bra. 1385 01:02:02,880 --> 01:02:07,270 Men det är så att switchar är snabbare. 1386 01:02:07,270 --> 01:02:10,380 Om du verkligen försöker att optimera, använd en switch. 1387 01:02:10,380 --> 01:02:11,980 1388 01:02:11,980 --> 01:02:12,710 >> ALLISON: Cool. 1389 01:02:12,710 --> 01:02:15,270 Och då har vi ternära operatör. 1390 01:02:15,270 --> 01:02:19,470 Så jag vet att jag nämnde tidigare ordet syntaktiska socker. 1391 01:02:19,470 --> 01:02:24,160 Så det är bara saker som gör din kod mycket mer koncis. 1392 01:02:24,160 --> 01:02:25,590 Så det här är ett av dessa fall. 1393 01:02:25,590 --> 01:02:31,430 >> Så ternära operatör är frågetecken kolon som vi ser i linje string 1394 01:02:31,430 --> 01:02:35,810 s är lika med n större än 100 frågetecken hög kolon låg. 1395 01:02:35,810 --> 01:02:41,800 Så i princip hur detta fungerar är det n är större än 100 är ett tillstånd. 1396 01:02:41,800 --> 01:02:43,674 Så jag tror att det kan vara meningsfullt. 1397 01:02:43,674 --> 01:02:44,840 Det är som att ställa en fråga. 1398 01:02:44,840 --> 01:02:47,320 Det säger oh, är n större än 100. 1399 01:02:47,320 --> 01:02:48,340 Vem vet? 1400 01:02:48,340 --> 01:02:50,750 Och om det beräknas till sant, det kommer att ge dig 1401 01:02:50,750 --> 01:02:54,270 det första som är upptagna där, vilket är högt. 1402 01:02:54,270 --> 01:02:55,840 Annars det kommer att ge dig låg. 1403 01:02:55,840 --> 01:03:01,210 Så det här är bara en riktigt enkel och effektivt sätt att göra som en om annat. 1404 01:03:01,210 --> 01:03:02,780 Det är allt det är. 1405 01:03:02,780 --> 01:03:07,450 >> Och om vi skulle skriva detta som om annat villkorat, 1406 01:03:07,450 --> 01:03:12,480 det skulle vara om n är större än 100, returnera hög. 1407 01:03:12,480 --> 01:03:14,220 Else, retur låg. 1408 01:03:14,220 --> 01:03:17,570 Detta är bara ett mycket mer koncist sätt att skriva det. 1409 01:03:17,570 --> 01:03:27,090 >> ROB BOWDEN: Så det här exemplet är när du gör något 1410 01:03:27,090 --> 01:03:30,190 så här, är detta mönstret där jag använder ternära väldigt ofta. 1411 01:03:30,190 --> 01:03:31,540 1412 01:03:31,540 --> 01:03:35,460 Så vi har inte talat om omfattningen ännu, men jag hatar att se sträng s semikolon. 1413 01:03:35,460 --> 01:03:39,150 Om n är större än 100, är ​​lika med s höga. 1414 01:03:39,150 --> 01:03:40,660 Else, lika s låga. 1415 01:03:40,660 --> 01:03:45,070 Så detta mönster, dessa fem rader av kod bokstavligen 100% av tiden 1416 01:03:45,070 --> 01:03:49,800 kan överföras till vad var uppe med en ternär. 1417 01:03:49,800 --> 01:03:52,340 Så ternära, en rad kod. 1418 01:03:52,340 --> 01:03:54,640 Den om annat, fem. 1419 01:03:54,640 --> 01:03:56,910 Det är ett exempel som jag pekar ut varenda gång. 1420 01:03:56,910 --> 01:03:59,250 Detta skulle bra ställe för ett ternärt operatör. 1421 01:03:59,250 --> 01:04:00,647 Det är så ren. 1422 01:04:00,647 --> 01:04:01,980 Men människor tenderar att aldrig använda den. 1423 01:04:01,980 --> 01:04:06,140 1424 01:04:06,140 --> 01:04:08,030 >> ALLISON: Ta bort Gabe. 1425 01:04:08,030 --> 01:04:11,110 >> GABRIEL: Så nu ni alla lärt sig i föreläsning den här veckan 1426 01:04:11,110 --> 01:04:13,420 att allt i ett Datorn är binärt, eller hur? 1427 01:04:13,420 --> 01:04:14,570 Precis som lamporna här. 1428 01:04:14,570 --> 01:04:16,492 Du kan antingen slås på och av. 1429 01:04:16,492 --> 01:04:18,450 Och efter allt, jag menar bokstavligen allt. 1430 01:04:18,450 --> 01:04:24,272 Vissa siffror och tecken och strängar, och till och med den kod som du skriver när 1431 01:04:24,272 --> 01:04:26,480 det blir kompileras till maskinkod kod och sånt, 1432 01:04:26,480 --> 01:04:29,230 så det hela handlar om att 0: s och 1 ". 1433 01:04:29,230 --> 01:04:34,540 >> Och så när vi har att göra med heltal, vilket 1434 01:04:34,540 --> 01:04:38,000 är något som är tekniskt mycket enkelt, borde vi kunna göra saker 1435 01:04:38,000 --> 01:04:40,630 som att lägga dem, vilket är förmodligen en av de enklaste saker 1436 01:04:40,630 --> 01:04:42,300 du kan göra för två heltal, eller hur? 1437 01:04:42,300 --> 01:04:47,410 Så addition och subtraktion fungerar precis som det fungerar i decimalform, 1438 01:04:47,410 --> 01:04:50,780 utom här är det binärt, eller hur? 1439 01:04:50,780 --> 01:04:52,090 Så det är i basen två. 1440 01:04:52,090 --> 01:04:54,070 Så tillsätt 1 plus 1. 1441 01:04:54,070 --> 01:04:57,020 Det ger 0 och 1 bär över. 1442 01:04:57,020 --> 01:05:01,335 Och bara fortsätta att göra det, så nu desto mer intressant fråga. 1443 01:05:01,335 --> 01:05:03,730 1444 01:05:03,730 --> 01:05:07,710 >> Vi vet hur man representera alla positiva heltal i datorn, 1445 01:05:07,710 --> 01:05:09,870 men låt oss göra detta till en övning. 1446 01:05:09,870 --> 01:05:15,240 Låtsas att ni är alla 1960 eller något som försöker skapa en dator, 1447 01:05:15,240 --> 01:05:19,950 och du har att komma med ett sätt att lagra minus 1, 1448 01:05:19,950 --> 01:05:22,554 till exempel, eller minus någon heltal för den delen. 1449 01:05:22,554 --> 01:05:23,470 Hur skulle du göra det? 1450 01:05:23,470 --> 01:05:27,820 1451 01:05:27,820 --> 01:05:29,220 Några idéer? 1452 01:05:29,220 --> 01:05:31,302 Bara kasta något på mig. 1453 01:05:31,302 --> 01:05:32,264 Ja? 1454 01:05:32,264 --> 01:05:39,480 >> PUBLIK: [OHÖRBAR] utse ett särskilt om din [OHÖRBAR]. 1455 01:05:39,480 --> 01:05:42,590 >> GABRIEL: Du kan ange en särskild bit, som kommer att vara 0 eller 1. 1456 01:05:42,590 --> 01:05:45,590 Låt oss säga att en om det är positivt och 0 om det är negativt. 1457 01:05:45,590 --> 01:05:48,171 Och sedan resten av bit bara för att lagra numret. 1458 01:05:48,171 --> 01:05:48,670 Cool. 1459 01:05:48,670 --> 01:05:49,990 Så det är en mycket bra idé. 1460 01:05:49,990 --> 01:05:51,550 Vi har, jag vet inte, 200. 1461 01:05:51,550 --> 01:05:54,720 Och om den första biten är påslagen, då är det plus 200. 1462 01:05:54,720 --> 01:05:57,270 Om den är avstängd, är det minus 200. 1463 01:05:57,270 --> 01:05:58,380 Cool. 1464 01:05:58,380 --> 01:06:01,350 >> Det finns bara en liten Problemet med detta, 1465 01:06:01,350 --> 01:06:05,370 vilket är om vi försöker sammanfatta saker. 1466 01:06:05,370 --> 01:06:18,910 Så tänk att vi har 11111 här, och vi summera detta med 00100 vad som helst. 1467 01:06:18,910 --> 01:06:21,630 Om dessa två är positivt, det är bra. 1468 01:06:21,630 --> 01:06:24,470 Men om någon av dem är negativ, precis som 1469 01:06:24,470 --> 01:06:27,410 låt oss säga att denna bit här är den som är ansvarig 1470 01:06:27,410 --> 01:06:31,390 for-- Jag ska göra en separate-- så detta innebär att antalet här 1471 01:06:31,390 --> 01:06:31,970 är positivt. 1472 01:06:31,970 --> 01:06:34,450 Detta innebär att denna nummer här är negativt, eller hur? 1473 01:06:34,450 --> 01:06:37,010 >> Men sen när du är kommer att sammanfatta dem, du 1474 01:06:37,010 --> 01:06:40,180 behöver en if-sats säger oh om detta är 0, 1475 01:06:40,180 --> 01:06:43,479 då min summa blir något annorlunda, eller hur? 1476 01:06:43,479 --> 01:06:45,270 Så det finns en något smartare sätt att göra 1477 01:06:45,270 --> 01:06:48,520 att, som kallas två-komplement. 1478 01:06:48,520 --> 01:06:52,350 Så i princip vad vi göra är att vi definierar minus 1 1479 01:06:52,350 --> 01:06:57,250 att vara det som om Vi lägger upp till 1 ger oss 0. 1480 01:06:57,250 --> 01:06:59,470 1481 01:06:59,470 --> 01:07:00,860 Låt mig upprepa det. 1482 01:07:00,860 --> 01:07:03,280 Så låt oss säga att det här är 1. 1483 01:07:03,280 --> 01:07:08,110 1484 01:07:08,110 --> 01:07:13,570 Vad är det som naturligt i positiva heltal 1485 01:07:13,570 --> 01:07:15,570 läggs till som ger oss 0? 1486 01:07:15,570 --> 01:07:19,150 1487 01:07:19,150 --> 01:07:21,030 Vad händer om vi försöker lägga till det här numret? 1488 01:07:21,030 --> 01:07:22,830 1489 01:07:22,830 --> 01:07:28,032 Vi kommer att have-- OK, så låt oss lägga till. 1490 01:07:28,032 --> 01:07:32,820 1491 01:07:32,820 --> 01:07:38,065 Vi kommer att ha 1 plus 1 är 0, och sedan bär över. 1492 01:07:38,065 --> 01:07:40,160 1493 01:07:40,160 --> 01:07:45,490 Och sedan ska vi få 0 igen. 1494 01:07:45,490 --> 01:07:47,730 1495 01:07:47,730 --> 01:07:48,820 Jag börjar bli förvirrad. 1496 01:07:48,820 --> 01:07:51,670 Och du kommer att få 0 och 0 och 0 och 0 och 0 och 0. 1497 01:07:51,670 --> 01:07:52,450 Massor av 0-talet. 1498 01:07:52,450 --> 01:07:56,240 >> Vid den allra sista, vi är inte kommer att kunna bära den över, 1499 01:07:56,240 --> 01:07:59,614 eftersom låt oss säga att vi bara handlar med en byte, så endast 8 bitar. 1500 01:07:59,614 --> 01:08:02,780 Så vad datorn gör som standard är bara glömmer att [OHÖRBAR] 1501 01:08:02,780 --> 01:08:03,279 OK? 1502 01:08:03,279 --> 01:08:04,530 1503 01:08:04,530 --> 01:08:06,880 Så detta är vad som kallas tvåkomplementet. 1504 01:08:06,880 --> 01:08:15,180 Vi definierar bara minus 1 för att vara sak här att om du lägger det till 1 1505 01:08:15,180 --> 01:08:15,995 skulle ge dig 0. 1506 01:08:15,995 --> 01:08:17,609 1507 01:08:17,609 --> 01:08:20,180 Och det är ganska coolt eftersom vi inte riktigt 1508 01:08:20,180 --> 01:08:24,090 behöver sent för att genomföra en annan typ av summan 1509 01:08:24,090 --> 01:08:26,590 beroende på om det är en negativt eller ett positivt tal. 1510 01:08:26,590 --> 01:08:27,465 Är det vettigt? 1511 01:08:27,465 --> 01:08:28,740 1512 01:08:28,740 --> 01:08:32,370 >> Så en sak som vi gör här för att omvandla 1513 01:08:32,370 --> 01:08:38,550 mellan en positiv och en negativ heltal sedan vända vi allt, 1514 01:08:38,550 --> 01:08:40,930 och då kan vi lägga till 1 till det numret. 1515 01:08:40,930 --> 01:08:43,140 Om du försöker göra det själv på en bit papper, 1516 01:08:43,140 --> 01:08:44,681 du kommer att se att är vettigt. 1517 01:08:44,681 --> 01:08:51,000 Men om jag tar detta nummer Här är det fem. 1518 01:08:51,000 --> 01:08:54,859 Så om jag vänder allt här, så 1, 1, 1, 1, 1. 1519 01:08:54,859 --> 01:08:55,880 1520 01:08:55,880 --> 01:08:57,830 Flip, flip, flip. 1521 01:08:57,830 --> 01:09:00,130 Och då jag till 1 till det. 1522 01:09:00,130 --> 01:09:02,750 Jag kommer att ha exakt minus 5. 1523 01:09:02,750 --> 01:09:03,250 OK? 1524 01:09:03,250 --> 01:09:06,220 >> Detta gör slags känsla för om du försöker att sammanfatta detta med att antalet 1525 01:09:06,220 --> 01:09:10,229 att vi hade tidigare, vilket was-- låt oss vända detta igen. 1526 01:09:10,229 --> 01:09:12,999 Det var 101 och massor av 0-talet. 1527 01:09:12,999 --> 01:09:13,795 1528 01:09:13,795 --> 01:09:15,670 Om du försöker lägga till dessa två nummer tillsammans, 1529 01:09:15,670 --> 01:09:16,961 du kommer att få exakt 0. 1530 01:09:16,961 --> 01:09:18,920 1531 01:09:18,920 --> 01:09:19,460 OK. 1532 01:09:19,460 --> 01:09:19,884 Några frågor? 1533 01:09:19,884 --> 01:09:20,759 >> PUBLIK: [OHÖRBAR] 1534 01:09:20,759 --> 01:09:25,790 1535 01:09:25,790 --> 01:09:27,280 >> GABRIEL: Vad menar du? 1536 01:09:27,280 --> 01:09:29,240 >> PUBLIK: Negativ till positiv [OHÖRBAR]. 1537 01:09:29,240 --> 01:09:33,215 >> GABRIEL: Nej, du vänder och du lägger 1 alltid. 1538 01:09:33,215 --> 01:09:34,081 1539 01:09:34,081 --> 01:09:34,580 Yeah. 1540 01:09:34,580 --> 01:09:36,910 1541 01:09:36,910 --> 01:09:39,680 OK, så tecken kodas också binärer. 1542 01:09:39,680 --> 01:09:42,649 Vi har ASCII tabell, som ni också såg i föreläsning, eller hur? 1543 01:09:42,649 --> 01:09:45,040 Så det är i grunden en kartläggning av saker. 1544 01:09:45,040 --> 01:09:50,960 Och här kan jag inte nog betona att för en dator, en och 65 1545 01:09:50,960 --> 01:09:52,770 är bokstavligen samma sak. 1546 01:09:52,770 --> 01:10:03,430 Så om jag skriver något i stil med char c är lika med ett, jag kunde samtidigt 1547 01:10:03,430 --> 01:10:06,890 bara skriva 65 här, och det skulle vara exakt samma, OK? 1548 01:10:06,890 --> 01:10:08,470 Det finns ingen skillnad alls. 1549 01:10:08,470 --> 01:10:12,420 >> Vi tenderar oftast att sätta tecken i variabler av typen. 1550 01:10:12,420 --> 01:10:16,770 Char, inte för att de är i stort sett gjord för det, men eftersom 1551 01:10:16,770 --> 01:10:18,050 av humant konvention. 1552 01:10:18,050 --> 01:10:22,410 Men du kan bara ta itu med heltal istället för variabler av typen char, 1553 01:10:22,410 --> 01:10:23,490 och du ska vara bra. 1554 01:10:23,490 --> 01:10:28,410 Den enda egentliga skillnaden mellan en char c och en int i 1555 01:10:28,410 --> 01:10:31,960 är att en int har fyra byte i de flesta system, medan en röding har en byte. 1556 01:10:31,960 --> 01:10:33,070 1557 01:10:33,070 --> 01:10:35,460 De är i huvudsak Samma sak när det gäller data. 1558 01:10:35,460 --> 01:10:36,990 1559 01:10:36,990 --> 01:10:37,990 Så vad kommer att skriva här? 1560 01:10:37,990 --> 01:10:43,780 Här vi skriver ut en siffra med hjälp av printf med ett plus 1, och precis som heltal, 1561 01:10:43,780 --> 01:10:46,240 tecken kan summeras, så tecken kan också summeras. 1562 01:10:46,240 --> 01:10:47,890 Så det här är exakt 65. 1563 01:10:47,890 --> 01:10:49,950 Så det kommer att bli 66, och här har vi 1564 01:10:49,950 --> 01:10:56,860 65 plus lite minus stor A, som kommer att vara, vet jag inte riktigt vet. 1565 01:10:56,860 --> 01:11:00,900 Men det kommer att vara precis gapet mellan versaler 1566 01:11:00,900 --> 01:11:07,800 och och mindre bokstäver, så Vi kommer att få liten, eller hur? 1567 01:11:07,800 --> 01:11:08,300 Yeah. 1568 01:11:08,300 --> 01:11:11,740 Så detta kommer att skriva ut en karaktär vilket är exakt det här. 1569 01:11:11,740 --> 01:11:12,260 Bra? 1570 01:11:12,260 --> 01:11:12,860 Några frågor? 1571 01:11:12,860 --> 01:11:16,320 1572 01:11:16,320 --> 01:11:19,430 >> Här har vi ett gäng olika typer för numeriska variabler. 1573 01:11:19,430 --> 01:11:20,620 Vi pratar redan om int. 1574 01:11:20,620 --> 01:11:21,740 1575 01:11:21,740 --> 01:11:27,760 Float är bara ett sätt att-- detta verkligen roligt, för när jag först lärde mig 1576 01:11:27,760 --> 01:11:32,320 att programmera tillbaka i dag med Python, det första program jag någonsin 1577 01:11:32,320 --> 01:11:37,480 försökt skriva, jag såg att det fanns en typ som kallas in och en typ som kallas float. 1578 01:11:37,480 --> 01:11:39,800 Och flottören var för alla reella tal. 1579 01:11:39,800 --> 01:11:43,290 Så då frågade jag varför ska Jag någonsin använda en int då? 1580 01:11:43,290 --> 01:11:45,590 För om jag kan använda alla reella tal med en flottör, 1581 01:11:45,590 --> 01:11:47,120 Jag skulle bara sluta använda ints, eller hur? 1582 01:11:47,120 --> 01:11:49,550 Eftersom reella tal är ungefär som mer generiska. 1583 01:11:49,550 --> 01:11:51,820 1584 01:11:51,820 --> 01:11:54,060 >> Det visar sig att detta är inte fallet i datorer 1585 01:11:54,060 --> 01:11:58,480 eftersom de är i huvudsak olika saker. 1586 01:11:58,480 --> 01:12:01,470 Så heltal och flyter, den verksamhet som du gör med dem 1587 01:12:01,470 --> 01:12:04,739 är väsentligt annorlunda, eftersom av det sätt som de lagras, OK? 1588 01:12:04,739 --> 01:12:07,280 Vi ska prata lite lite mer om det i en sekund. 1589 01:12:07,280 --> 01:12:09,110 >> Så dubbel är bara en större flyta. 1590 01:12:09,110 --> 01:12:12,830 Vanligtvis i de flesta system, en flottör är fyra byte, precis som en int. 1591 01:12:12,830 --> 01:12:15,440 Och en dubbel är åtta byte. 1592 01:12:15,440 --> 01:12:21,450 En lång lång är egentligen bara en symbol att du lägger till en typ som int. 1593 01:12:21,450 --> 01:12:24,040 Du säger lång lång int så här. 1594 01:12:24,040 --> 01:12:28,550 Lång lång int x för att göra det längre. 1595 01:12:28,550 --> 01:12:32,310 Så i de flesta system kommer att ge åtta byte i stället för de vanliga fyra. 1596 01:12:32,310 --> 01:12:35,620 Och du kan faktiskt släppa in, så det kan bara säga lång lång, 1597 01:12:35,620 --> 01:12:37,240 och det fungerar också, OK? 1598 01:12:37,240 --> 01:12:42,850 Du kan också göra andra saker som unsigned int, eller igen bara osignerade 1599 01:12:42,850 --> 01:12:43,680 skulle också fungera. 1600 01:12:43,680 --> 01:12:49,370 Och det skulle göra x vara en variabel som allt är positivt, 1601 01:12:49,370 --> 01:12:53,231 så du kan inte riktigt få negativa siffror på det sätt som vi såg här uppe. 1602 01:12:53,231 --> 01:12:56,484 1603 01:12:56,484 --> 01:12:58,650 Så efter underbart flyttal och precision. 1604 01:12:58,650 --> 01:13:01,890 Det är en av anledningarna till att du vill använda ints istället för flottar, 1605 01:13:01,890 --> 01:13:04,370 eftersom ints är 100% exakt, eller hur? 1606 01:13:04,370 --> 01:13:06,170 Det är precis det numret. 1607 01:13:06,170 --> 01:13:11,910 För flytande punkter, om du säga svaret är lika med ett över 10-- 1608 01:13:11,910 --> 01:13:14,690 Jag råkar ha denna specifika program här, float.c. 1609 01:13:14,690 --> 01:13:16,390 1610 01:13:16,390 --> 01:13:19,420 Som skriver ut till 20 decimaler. 1611 01:13:19,420 --> 01:13:23,270 1 dividerat med 10, och att vanligtvis är 0,1, eller hur? 1612 01:13:23,270 --> 01:13:27,910 Men här om vi gör flyta och då vi kör det, 1613 01:13:27,910 --> 01:13:30,320 Vi ser att det inte är exakt 0,1. 1614 01:13:30,320 --> 01:13:33,570 Det är 0,149 någonting. 1615 01:13:33,570 --> 01:13:35,570 >> Och varför är det? 1616 01:13:35,570 --> 01:13:40,390 Eftersom du inte riktigt kan representera alla enda möjliga reella tal i minnet 1617 01:13:40,390 --> 01:13:42,730 eftersom det finns uncountably många av dem. 1618 01:13:42,730 --> 01:13:48,360 Så vi är tekniskt bara kan representera en ändlig mängd av dem 1619 01:13:48,360 --> 01:13:50,470 med en begränsad mängd data. 1620 01:13:50,470 --> 01:13:52,050 Men det är riktigt intressant. 1621 01:13:52,050 --> 01:13:54,920 Nu tigger frågan om hur man skulle 1622 01:13:54,920 --> 01:13:59,299 gå representera detta med bitar, eller hur? 1623 01:13:59,299 --> 01:14:00,340 Så hur är flöten lagras? 1624 01:14:00,340 --> 01:14:01,970 1625 01:14:01,970 --> 01:14:03,730 Med heltal var det lätt. 1626 01:14:03,730 --> 01:14:06,690 Men med flöten som du vill att maximera utbudet, 1627 01:14:06,690 --> 01:14:10,530 och du vill kunna representera stora mängder och mycket små siffror som 1628 01:14:10,530 --> 01:14:14,210 0.000001 samtidigt. 1629 01:14:14,210 --> 01:14:15,180 Så återigen, samma spel. 1630 01:14:15,180 --> 01:14:20,470 Har någon någon aning om hur vi skulle kunna gå representera flyta i minnet? 1631 01:14:20,470 --> 01:14:26,820 1632 01:14:26,820 --> 01:14:27,970 Bara kasta något. 1633 01:14:27,970 --> 01:14:29,930 1634 01:14:29,930 --> 01:14:30,856 Ja, tack. 1635 01:14:30,856 --> 01:14:33,552 >> PUBLIK: [OHÖRBAR] som om det var två ints och en 1636 01:14:33,552 --> 01:14:36,890 är den [OHÖRBAR] och en varelse allt efter decimalkommat. 1637 01:14:36,890 --> 01:14:37,640 GABRIEL: OK, cool. 1638 01:14:37,640 --> 01:14:40,300 Så två olika heltal. 1639 01:14:40,300 --> 01:14:45,260 Du kan ha 12.45, så det är 12 och 45. 1640 01:14:45,260 --> 01:14:45,890 Nice. 1641 01:14:45,890 --> 01:14:46,973 Vad ere du ska säga? 1642 01:14:46,973 --> 01:14:48,420 1643 01:14:48,420 --> 01:14:49,430 Samma sak? 1644 01:14:49,430 --> 01:14:49,930 Yeah? 1645 01:14:49,930 --> 01:14:55,630 >> PUBLIK: [OHÖRBAR] notation där du separera basen. 1646 01:14:55,630 --> 01:14:58,910 >> GABRIEL: Vetenskaplig notation, ja det är oftast vad som händer. 1647 01:14:58,910 --> 01:15:01,350 Så detta är vad som kallas mantissan. 1648 01:15:01,350 --> 01:15:06,490 Det är vad är egentligen det nummer, och sedan exponenten 1649 01:15:06,490 --> 01:15:08,780 är precis där kommatecknet är, eller hur? 1650 01:15:08,780 --> 01:15:13,720 Så detta kommer att bli något av formen 1, 2, 3, 4, 5 gånger 10 1651 01:15:13,720 --> 01:15:15,000 till minus 4. 1652 01:15:15,000 --> 01:15:17,800 Jag insåg that-- ja, exakt. 1653 01:15:17,800 --> 01:15:23,372 Och då detta 10 till minus 4 är kommer att definiera var kommatecknet är, OK? 1654 01:15:23,372 --> 01:15:24,330 I Brasilien använder vi kommatecken. 1655 01:15:24,330 --> 01:15:26,795 Här ni använda en prick. 1656 01:15:26,795 --> 01:15:27,640 Så en prick. 1657 01:15:27,640 --> 01:15:28,860 1658 01:15:28,860 --> 01:15:34,840 >> Och det här är coolt, för då kan du fokusera massor av dina bitar på den här killen 1659 01:15:34,840 --> 01:15:40,863 Här, på mantissan och då är kommer att vara din faktiska precision. 1660 01:15:40,863 --> 01:15:41,920 1661 01:15:41,920 --> 01:15:47,175 Och du kan göra detta antingen i decimal eller i det binära baserade systemet. 1662 01:15:47,175 --> 01:15:49,781 Det finns olika sätt att genomföra detta. 1663 01:15:49,781 --> 01:15:50,280 Frågor? 1664 01:15:50,280 --> 01:15:55,918 1665 01:15:55,918 --> 01:15:56,418 Ja? 1666 01:15:56,418 --> 01:15:57,508 1667 01:15:57,508 --> 01:15:59,841 PUBLIK: Hur många platser efter decimal [OHÖRBAR]? 1668 01:15:59,841 --> 01:16:05,240 1669 01:16:05,240 --> 01:16:12,610 >> GABRIEL: Det är en komplicerad fråga, eftersom det är aldrig riktigt 100% exakt, 1670 01:16:12,610 --> 01:16:15,680 för som ni ser här, för några siffror är det 100% exakt. 1671 01:16:15,680 --> 01:16:20,350 Jag tror att om vi sätter 0.5 här, det kommer att bli 100% exakt. 1672 01:16:20,350 --> 01:16:22,220 Det kommer att bli 0,500000. 1673 01:16:22,220 --> 01:16:24,170 Så i det fallet, det är perfekt. 1674 01:16:24,170 --> 01:16:27,330 Men i andra fall, det är mycket mindre perfekt. 1675 01:16:27,330 --> 01:16:35,010 Enligt min erfarenhet, som upp till fyra, fem decimaler är ganska exakt. 1676 01:16:35,010 --> 01:16:38,300 Om du använder en dubbel, det kommer att vara mycket mer exakt än så, okej? 1677 01:16:38,300 --> 01:16:42,750 >> ROB BOWDEN: Så bara för att kasta lite mer sammanhang på flottar, 1678 01:16:42,750 --> 01:16:46,320 Jag minns aldrig 100% hur spec av flottar faktiskt fungerar, 1679 01:16:46,320 --> 01:16:52,660 men jag tror du alltid att minnas att flottörerna börjar få rörigt. 1680 01:16:52,660 --> 01:16:55,460 1681 01:16:55,460 --> 01:17:00,930 Så tanken är att när du blir riktigt, riktigt stora siffror eller riktigt, riktigt 1682 01:17:00,930 --> 01:17:03,470 litet antal, vi börjar blir värre och värre 1683 01:17:03,470 --> 01:17:05,860 till att differentiera mellan två nära flyter. 1684 01:17:05,860 --> 01:17:09,180 >> Så hur jag gillar att tänka på är med flyttal vaghet, 1685 01:17:09,180 --> 01:17:11,890 det finns två flottörer som om jag försöker ange dem 1686 01:17:11,890 --> 01:17:15,150 i C, trots det faktum att de är olika nummer, 1687 01:17:15,150 --> 01:17:17,340 de kommer att bli tolkas som samma nummer, 1688 01:17:17,340 --> 01:17:19,006 eftersom vi inte kan lagra dem på olika sätt. 1689 01:17:19,006 --> 01:17:20,540 Vi måste använda samma bitar. 1690 01:17:20,540 --> 01:17:23,220 Och så när vi kommer till riktigt, riktigt stort antal, 1691 01:17:23,220 --> 01:17:28,460 pratar som 10 till 300 eller någonting, det är på den punkten 1692 01:17:28,460 --> 01:17:33,240 att 10 till 300 eller 5 gånger 10 till 300 1693 01:17:33,240 --> 01:17:37,020 kan inte särskiljas från 7 gånger 10 till 300. 1694 01:17:37,020 --> 01:17:39,660 Så det är en ganska stor skillnad mellan de två numren. 1695 01:17:39,660 --> 01:17:43,830 >> Men sen när man kommer ner till det normala intervallet saker, 1696 01:17:43,830 --> 01:17:45,770 du tenderar att vara ganska bra på att differentiera. 1697 01:17:45,770 --> 01:17:49,020 Och sedan när du kommer ner riktigt små, du också få ganska dåligt igen. 1698 01:17:49,020 --> 01:17:52,529 Så som ett helt gäng 0.0000, blir det ganska dåligt. 1699 01:17:52,529 --> 01:17:53,820 GABRIEL: Ja, så en snabb anteckning. 1700 01:17:53,820 --> 01:17:54,670 Aldrig göra detta. 1701 01:17:54,670 --> 01:17:57,590 Försök aldrig att jämföra flyter använder jämlikar är lika, 1702 01:17:57,590 --> 01:18:02,800 eftersom även om de är nästan samma, nästan samma är inte detsamma. 1703 01:18:02,800 --> 01:18:06,360 Så vad du brukar göra är du subtraherar dem, ta det absoluta värdet av det, 1704 01:18:06,360 --> 01:18:12,380 och se om det är mindre än 0,0001 eller något liknande, OK? 1705 01:18:12,380 --> 01:18:12,880 Och cool. 1706 01:18:12,880 --> 01:18:16,630 Jag vet att många människor har någon bakgrund i Java, 1707 01:18:16,630 --> 01:18:19,700 särskilt de som gjorde AP datavetenskap, eller hur? 1708 01:18:19,700 --> 01:18:23,630 Och Java är ett språk som till största delen bygger på C, 1709 01:18:23,630 --> 01:18:26,570 den har ett par mycket stora skillnader. 1710 01:18:26,570 --> 01:18:31,430 Men för loopar och ifs, och sånt att de är alla samma syntax. 1711 01:18:31,430 --> 01:18:35,240 Jag har några program för att visa detta. 1712 01:18:35,240 --> 01:18:37,050 >> Så till exempel, ett enkelt hello world. 1713 01:18:37,050 --> 01:18:43,140 1714 01:18:43,140 --> 01:18:46,600 Detta är hallå världen i C, som du killar är definitivt bekant med, 1715 01:18:46,600 --> 01:18:49,100 och detta och detta är i Java. 1716 01:18:49,100 --> 01:18:53,100 Så i Java har vi här public class, hallå världen, 1717 01:18:53,100 --> 01:18:57,050 och public static void viktigaste, och stråk args. 1718 01:18:57,050 --> 01:18:59,665 De sträng args går att visas i C inom kort. 1719 01:18:59,665 --> 01:19:00,740 1720 01:19:00,740 --> 01:19:01,990 Men låt oss inte gå dit än. 1721 01:19:01,990 --> 01:19:06,060 Just nu har vi tomrum här, vilket innebär det viktigaste är inte att ta några argument. 1722 01:19:06,060 --> 01:19:09,220 Och så har vi System.out.println, är det, och att 1723 01:19:09,220 --> 01:19:11,140 typ av motsvarande för printf. 1724 01:19:11,140 --> 01:19:17,150 Här har vi inte verkligen behöver det omvända snedstrecket n eftersom utskrifts ln gör det åt dig. 1725 01:19:17,150 --> 01:19:19,680 Det lägger till bakstreck n vid slutet av linjen. 1726 01:19:19,680 --> 01:19:22,540 1727 01:19:22,540 --> 01:19:30,415 >> Men om du går in i något som en för, dig 1728 01:19:30,415 --> 01:19:32,590 kan se att de är ungefär samma sak. 1729 01:19:32,590 --> 01:19:37,390 Så initiering, och skick, och uppdatering 1730 01:19:37,390 --> 01:19:42,050 är-- Jag missade en plats här-- de är ungefär samma sak, utom Java 1731 01:19:42,050 --> 01:19:44,430 har som några fler hög nivå grejer. 1732 01:19:44,430 --> 01:19:46,010 1733 01:19:46,010 --> 01:19:49,610 Här kan vi göra plus att jag och Java automatiskt 1734 01:19:49,610 --> 01:19:52,730 gör det jag här, vilket är ett heltal, till en sträng, 1735 01:19:52,730 --> 01:19:55,200 och sedan lägga den två strängar tillsammans. 1736 01:19:55,200 --> 01:19:57,570 Här i C behöver vi göra &% d. 1737 01:19:57,570 --> 01:20:15,310 1738 01:20:15,310 --> 01:20:18,170 Linjen här, det för ser exakt likadan ut. 1739 01:20:18,170 --> 01:20:37,760 >> Och om vi tittar på om de ifs även ser exakt likadan ut, eller hur? 1740 01:20:37,760 --> 01:20:39,290 1741 01:20:39,290 --> 01:20:44,650 Så de verkliga stora skillnaderna är i de saker som du ser här. 1742 01:20:44,650 --> 01:20:47,530 Public static, tomrum, och då offentliga klass om. 1743 01:20:47,530 --> 01:20:48,990 1744 01:20:48,990 --> 01:20:52,360 Så Java har vad är kallas en virtuell maskin. 1745 01:20:52,360 --> 01:20:53,560 1746 01:20:53,560 --> 01:21:00,150 Och det är väldigt mycket baserat på vad kallas objektorienterad programmering, 1747 01:21:00,150 --> 01:21:04,120 vilket är en mycket, mycket vanligt paradigm för programmering nuförtiden. 1748 01:21:04,120 --> 01:21:10,870 Och denna klass sak är vad du ser, något från objektorientering, 1749 01:21:10,870 --> 01:21:14,214 är du skapa en klass och sedan kan härleda föremål från den klassen. 1750 01:21:14,214 --> 01:21:16,380 Vi ska inte prata för mycket om det i CS50, 1751 01:21:16,380 --> 01:21:18,213 men det är definitivt något riktigt coolt, 1752 01:21:18,213 --> 01:21:21,440 speciellt om du vill gå in mer sofistikerade webbutveckling 1753 01:21:21,440 --> 01:21:24,050 vid slutet av banan, som skickar din slutgiltiga projektet 1754 01:21:24,050 --> 01:21:26,430 och några trevliga ramar och grejer. 1755 01:21:26,430 --> 01:21:31,250 >> Så i princip tanken är att du vill inte att åter genomföra någonting, 1756 01:21:31,250 --> 01:21:36,330 så du skapar något som är mycket generiska, liksom formen, 1757 01:21:36,330 --> 01:21:38,310 och sedan skapa former från det, 1758 01:21:38,310 --> 01:21:40,240 och sedan från var och en av dessa former, skapar du 1759 01:21:40,240 --> 01:21:45,110 några mer specifika former i tre dimensioner eller nåt sånt. 1760 01:21:45,110 --> 01:21:48,799 Och de har denna hierarki som de ärva från de andra, så 1761 01:21:48,799 --> 01:21:51,840 alla funktioner och alla variabler som den stora formen här har, alla dessa 1762 01:21:51,840 --> 01:21:54,110 kommer att få, och alla dessa är kommer att ha, och så vidare och så vidare. 1763 01:21:54,110 --> 01:21:55,640 Så det är den grundläggande idén. 1764 01:21:55,640 --> 01:21:59,170 >> C har inte det, men C ++ har den typen av inslag. 1765 01:21:59,170 --> 01:22:02,710 Och Java är starkt påverkad av objektorientering, 1766 01:22:02,710 --> 01:22:05,310 så det är därför du ser klass här hela tiden. 1767 01:22:05,310 --> 01:22:10,790 Och den andra är Detta Java Virtual Machine. 1768 01:22:10,790 --> 01:22:13,790 Så det här, tror jag, är en mycket smart idé. 1769 01:22:13,790 --> 01:22:17,020 Så vad folk som uppfann java gjorde är 1770 01:22:17,020 --> 01:22:19,630 De ville inte kompilera sin kod två gånger 1771 01:22:19,630 --> 01:22:23,990 om de var tvungna att köra den i en Windows, eller en Mac eller Linux, så vad de gör 1772 01:22:23,990 --> 01:22:26,740 är de bokstavligen kör något liknande apparaten, 1773 01:22:26,740 --> 01:22:29,630 men du egentligen inte se det hända. 1774 01:22:29,630 --> 01:22:32,430 Så de kör en virtuell maskin i datorn, vilket 1775 01:22:32,430 --> 01:22:34,940 är i princip som en mini operativsystem. 1776 01:22:34,940 --> 01:22:37,920 Och att rörelse systemets syfte i livet 1777 01:22:37,920 --> 01:22:41,430 är bara att köra vad som kallas bytekod. 1778 01:22:41,430 --> 01:22:47,411 >> Så i stället för i C, hur vi skulle sammanställa denna är att göra om, och sedan köra 1779 01:22:47,411 --> 01:22:47,910 ./if. 1780 01:22:47,910 --> 01:22:53,510 1781 01:22:53,510 --> 01:22:55,290 Jag glömde det omvända snedstrecket i. 1782 01:22:55,290 --> 01:23:00,240 I Java, skulle du göra först Java C för att kompilera den, if.c. 1783 01:23:00,240 --> 01:23:06,440 1784 01:23:06,440 --> 01:23:08,252 Det är inte C. Det är dot java. 1785 01:23:08,252 --> 01:23:09,460 1786 01:23:09,460 --> 01:23:12,140 Och då måste man köra inte ./. 1787 01:23:12,140 --> 01:23:15,440 Du får den nya filen if.class, men du kan inte riktigt 1788 01:23:15,440 --> 01:23:17,980 körda if.class nu bara som vi gjorde förr. 1789 01:23:17,980 --> 01:23:19,440 Det här är inte en körbar. 1790 01:23:19,440 --> 01:23:20,630 Du måste köra. 1791 01:23:20,630 --> 01:23:23,410 Du måste mata in det i ett program som heter Java, 1792 01:23:23,410 --> 01:23:28,260 och att programmet är den virtuella maskinen, och sedan gör du if.class, eller om. 1793 01:23:28,260 --> 01:23:28,760 Ja. 1794 01:23:28,760 --> 01:23:30,890 Och så det fungerar. 1795 01:23:30,890 --> 01:23:33,740 OK så detta är typ av virtuell maskin som händer. 1796 01:23:33,740 --> 01:23:37,700 C inte har det, så om jag skulle sätta detta program i en Windows-maskin, 1797 01:23:37,700 --> 01:23:40,516 det skulle inte fungera i C. I Java den gör. 1798 01:23:40,516 --> 01:23:41,015 Frågor? 1799 01:23:41,015 --> 01:23:43,430 1800 01:23:43,430 --> 01:23:44,030 Cool. 1801 01:23:44,030 --> 01:23:47,160 Det är om du av super avsnitt för idag. 1802 01:23:47,160 --> 01:23:49,462