1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Molt bé. 3 00:00:13,870 --> 00:00:16,770 Benvinguts a la primera secció. 4 00:00:16,770 --> 00:00:17,480 Sóc Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSÉ: Sóc Josep. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Llavors anem a bussejar a la dreta dins 7 00:00:21,540 --> 00:00:23,420 A primera hora de parlar de és l'aparell. 8 00:00:23,420 --> 00:00:27,150 Així que espero que la majoria de vostès tenen descarregat ja. 9 00:00:27,150 --> 00:00:37,180 Però pots veure les instruccions en cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh déu, ara sóc conscient de si mateix. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Encara sento. 13 00:00:45,430 --> 00:00:47,232 >> JOSÉ: Wow, sona com és desorientat. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Així que algunes persones han estat tenint problemes amb ell, així que no espereu fins que 15 00:00:52,460 --> 00:00:54,940 l'últim minut del problema s'estableix en tractar de resoldre el Appliance i 16 00:00:54,940 --> 00:00:56,320 descobrir que no està funcionant. 17 00:00:56,320 --> 00:00:59,010 >> JOSÉ: I si alguna cosa no està funcionant i vostè necessita ajuda, vostè pot anar a 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion on tenir un fòrum en el qual 19 00:01:03,390 --> 00:01:04,110 pot enviar les seves preguntes. 20 00:01:04,110 --> 00:01:06,655 I anem a arribar a ells amb el temps. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Molt bé. 22 00:01:07,490 --> 00:01:12,180 Així que això és el que l'aparell s'assembla. 23 00:01:12,180 --> 00:01:15,480 Un cop més, és només una forma completament separada sistema operatiu que s'executa dins de 24 00:01:15,480 --> 00:01:19,440 qualsevol sistema operatiu que s'estan executant a l'ordinador portàtil. 25 00:01:19,440 --> 00:01:24,450 I les coses principals que vostè ho va a fer estar usant són gedit. 26 00:01:24,450 --> 00:01:28,050 Així que espero que això ja té convertit en un lloc familiar. 27 00:01:28,050 --> 00:01:29,470 El terminal. 28 00:01:29,470 --> 00:01:31,890 >> I també pot executar Chrome dins de l'aparell. 29 00:01:31,890 --> 00:01:33,860 Hi ha hagut un parell de persones que han informat d'Internet 30 00:01:33,860 --> 00:01:35,390 No treballar en l'aparell. 31 00:01:35,390 --> 00:01:38,090 I alguns d'ells només han assumit que no se suposa que és 32 00:01:38,090 --> 00:01:39,190 Internet al Appliance. 33 00:01:39,190 --> 00:01:40,750 Però això sí, se suposa ser Internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Vaig a dir ara mateix, però no és així realment significa res. 36 00:01:46,410 --> 00:01:50,680 Si l'internet no funciona, això és el que tendeixen a necessitar 37 00:01:50,680 --> 00:01:52,180 córrer a arreglar-ho. 38 00:01:52,180 --> 00:01:55,602 Si vostè està tenint problemes d'Internet, no recordar-ho, només publicar-lo a 39 00:01:55,602 --> 00:01:57,560 Discutim, i ho direm, executeu això. 40 00:01:57,560 --> 00:02:00,420 Però Internet hauria d'estar treballant. 41 00:02:00,420 --> 00:02:06,650 >> Així que l'única altra cosa - si, res la resta és realment rellevant. 42 00:02:06,650 --> 00:02:08,979 Però jo només volia assenyalar que - 43 00:02:08,979 --> 00:02:13,290 veure en aquesta cantonada inferior dreta. 44 00:02:13,290 --> 00:02:16,530 Així que cadascun dels seus aparells han tenir una adreça IP. 45 00:02:16,530 --> 00:02:22,350 I més tard en el semestre, aquesta IP direcció serà més rellevant quan 46 00:02:22,350 --> 00:02:27,230 que està treballant en la web p-set, perquè vostè serà capaç d'accedir a la 47 00:02:27,230 --> 00:02:32,310 lloc web que està treballant des de Chrome local utilitzant aquesta adreça IP. 48 00:02:32,310 --> 00:02:35,400 >> Però el que m'agrada utilitzar l'adreça IP - I vostè no ha de fer això, 49 00:02:35,400 --> 00:02:37,460 només vull assenyalar - 50 00:02:37,460 --> 00:02:39,540 és aquí. 51 00:02:39,540 --> 00:02:42,910 Així que aquesta és una finestra de terminal a el meu Mac, això no és en el 52 00:02:42,910 --> 00:02:44,580 Appliance en absolut. 53 00:02:44,580 --> 00:02:47,190 I vostè pot buscar el que aquesta comanda fa. 54 00:02:47,190 --> 00:02:51,855 Però vaig directament a SSH al meu Appliance. 55 00:02:51,855 --> 00:02:53,410 No sé el que la IP és. 56 00:02:53,410 --> 00:02:54,300 >> JOSÉ: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Així que una vegada que he acabat amb això, ingressi 59 00:02:59,950 --> 00:03:05,450 Ara, bàsicament, això és idèntic a un finestra de terminal dins del meu Appliance. 60 00:03:05,450 --> 00:03:10,280 Així que gairebé mai va funcionar realment des de dins del propi aparell. 61 00:03:10,280 --> 00:03:12,550 Acabo sempre he funcionant en el fons minimitzat 62 00:03:12,550 --> 00:03:15,890 i SSHed-hi. 63 00:03:15,890 --> 00:03:24,270 >> El problema amb això és que no es va per ser capaç d'utilitzar fàcilment gedit 64 00:03:24,270 --> 00:03:25,600 directament des d'aquesta. 65 00:03:25,600 --> 00:03:31,500 Però si vols ser un veritable fresc hacker, llavors vostè ha d'acostumar a una 66 00:03:31,500 --> 00:03:34,220 comandament de la línia d'edició de text de totes maneres. 67 00:03:34,220 --> 00:03:39,620 Així Vim i Emacs i Nano, tots aquests diferents alternatives. 68 00:03:39,620 --> 00:03:41,560 Nano tendeix a ser el més fàcil. 69 00:03:41,560 --> 00:03:45,006 I crec que no té ressaltat de sintaxi. 70 00:03:45,006 --> 00:03:47,620 Oh, no, és totalment fa. 71 00:03:47,620 --> 00:03:49,870 Així que vostè pot utilitzar Nano, perquè que un és bastant fàcil. 72 00:03:49,870 --> 00:03:52,000 >> Veus tots aquests ordres a la part inferior. 73 00:03:52,000 --> 00:03:54,750 Aquest petit símbol pastanaga. 74 00:03:54,750 --> 00:03:57,620 Si vostè no ha vist abans, se li Probablement veure molt ara. 75 00:03:57,620 --> 00:04:02,350 En general, significa la pastanaga control, com la part inferior esquerra del teu teclat 76 00:04:02,350 --> 00:04:04,130 caràcter de control. 77 00:04:04,130 --> 00:04:07,260 Així que aquí em diu aquí - 78 00:04:07,260 --> 00:04:08,710 oh, no està tallat si fer més gran 79 00:04:08,710 --> 00:04:11,040 Així de control, X és com Vaig a sortir. 80 00:04:11,040 --> 00:04:14,710 I diu que pot colpejar I per Sí, per a l'estalvi, N per No 81 00:04:14,710 --> 00:04:17,190 Així que això és Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim i Emacs tendeixen a ser lleugerament més complicat i aclaparador. 83 00:04:22,860 --> 00:04:28,840 Però vostè pot acostumar-se a ell, i després et va encantar. 84 00:04:28,840 --> 00:04:30,590 Així que això és tot. 85 00:04:30,590 --> 00:04:31,720 >> JOSÉ: No hi ha necessitat de fer això. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Si. 87 00:04:31,840 --> 00:04:37,510 Vostè és lliure d'utilitzar gedit per a la resta del semestre. 88 00:04:37,510 --> 00:04:40,630 Així que qualsevol pregunta relacionada a aparells domèstics? 89 00:04:40,630 --> 00:04:42,820 O vostè té alguna idea sobre què més necessita ser parlat sobre 90 00:04:42,820 --> 00:04:43,610 l'aparell? 91 00:04:43,610 --> 00:04:43,996 Sí 92 00:04:43,996 --> 00:04:47,720 >> ALTAVEU 1: Quan SSHed en el seu cosa, va ser el carmesí contrasenya? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Si. 94 00:04:48,390 --> 00:04:50,170 La contrasenya per a gairebé tot en l'aparell que està passant 95 00:04:50,170 --> 00:04:52,473 ser carmesí. 96 00:04:52,473 --> 00:04:56,517 >> ALTAVEU 2: Instal · lar com un veritable IDE en l'aparell, funcionarà? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: M'imagino Eclipse té un Versió de Fedora, en aquest cas, sí, 99 00:05:07,290 --> 00:05:08,420 vostè pot fer això. 100 00:05:08,420 --> 00:05:10,875 Probablement no és realment val la pena. 101 00:05:10,875 --> 00:05:11,742 >> ALTAVEU 2: OK. 102 00:05:11,742 --> 00:05:15,924 Així que és probablement més fàcil si volia utilitzar Eclipse, només ha d'utilitzar el natiu i 103 00:05:15,924 --> 00:05:17,646 a continuació, pujar a - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, això també és probablement més fàcil. 105 00:05:21,090 --> 00:05:24,046 Però vostè pot aconseguir que funcioni dins de l'aparell. 106 00:05:24,046 --> 00:05:27,740 >> JOSÉ: I per a la càmera, la pregunta era, pot instal · lar un altre 107 00:05:27,740 --> 00:05:29,490 IDE a l'interior de l'aparell? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipsi ser un exemple d'una IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Alguna altra pregunta Appliance? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Està bé. 113 00:05:38,680 --> 00:05:44,920 >> Així que ara anem a passar a la línia d'ordres coses relacionades amb la interfície, de manera CLI. 114 00:05:44,920 --> 00:05:47,990 I de nou, jo només vaig a treballar en aquí, perquè aquest és idèntica a 115 00:05:47,990 --> 00:05:52,780 treballant dins d'una finestra de terminal dins de l'aparell. 116 00:05:52,780 --> 00:05:54,160 Com està buscant aquesta font? 117 00:05:54,160 --> 00:05:55,970 Això és prou gran? 118 00:05:55,970 --> 00:05:57,000 Està bé. 119 00:05:57,000 --> 00:06:02,480 >> Així que hi ha una gran quantitat de comandes que vostè ha d'aconseguir bastant utilitzat per 120 00:06:02,480 --> 00:06:04,490 al llarg del semestre. 121 00:06:04,490 --> 00:06:09,480 Els dos grans per navegar són ls, llista els arxius d'aquest directori, i 122 00:06:09,480 --> 00:06:11,380 cd, per canviar de directori. 123 00:06:11,380 --> 00:06:18,390 Així que puc canviar d'escriptori i després un patró molt comú és cd a un 124 00:06:18,390 --> 00:06:22,550 directori i immediatament ls el que està en el directori. 125 00:06:22,550 --> 00:06:25,540 >> La gent també de vegades no s'adonen que la finalització Tab és una cosa. 126 00:06:25,540 --> 00:06:28,370 Cd Així com, vh, i després em va colpejar Tab. 127 00:06:28,370 --> 00:06:30,790 Gairebé mai escric a terme tota la cosa. 128 00:06:30,790 --> 00:06:32,920 I després si segueixo colpejant Tab de nou, que va automàticament 129 00:06:32,920 --> 00:06:33,670 Inici Llistat per mi. 130 00:06:33,670 --> 00:06:37,000 Així que puc cd vhosts, host local. 131 00:06:37,000 --> 00:06:39,880 I això és només anar a - 132 00:06:39,880 --> 00:06:43,380 en cas que vostè no ha sentit parlar del terme abans, el directori és només una altra paraula 133 00:06:43,380 --> 00:06:45,170 per a la carpeta. 134 00:06:45,170 --> 00:06:49,930 Així que ara si que es veu - 135 00:06:49,930 --> 00:06:51,810 anem a portar això a la part superior. 136 00:06:51,810 --> 00:06:55,380 >> Així que ara si veus entre parèntesis, que veure l'accent poc, slash, vhost, 137 00:06:55,380 --> 00:06:56,810 retallar, host local. 138 00:06:56,810 --> 00:07:00,040 Així que la titlla, que es refereix al meu directori personal. 139 00:07:00,040 --> 00:07:03,090 És un directori que està en tant SSH polz 140 00:07:03,090 --> 00:07:05,660 És el directori que està en tant vostè obre un terminal. 141 00:07:05,660 --> 00:07:08,650 És el lloc on començar. 142 00:07:08,650 --> 00:07:13,110 I així estic dins del meu directori home, i jo estic dins del host virtual 143 00:07:13,110 --> 00:07:14,475 directori dins del meu directori home. 144 00:07:14,475 --> 00:07:19,670 I llavors jo estic dins del local seu de directori a d'això. 145 00:07:19,670 --> 00:07:23,740 >> Pel que algunes altres coses útils amb cd - 146 00:07:23,740 --> 00:07:29,220 o bé, en general, de manera que sempre dot correspon al directori actual. 147 00:07:29,220 --> 00:07:31,130 Cd, de punt és una ordre bastant inútil. 148 00:07:31,130 --> 00:07:35,150 Però això està canviant a la directori actual. 149 00:07:35,150 --> 00:07:38,230 Una més útil en termes de cd és punt, punt, que és 150 00:07:38,230 --> 00:07:40,220 només ha d'anar d'un sol directori. 151 00:07:40,220 --> 00:07:43,360 >> I tingui en compte que aquests - 152 00:07:43,360 --> 00:07:48,610 Vull dir àlies, però aquests símbols, punt i punt, punt, els treballs 153 00:07:48,610 --> 00:07:51,740 per a gairebé qualsevol ordre que ets estarà pensant en córrer. 154 00:07:51,740 --> 00:07:55,370 Així com el cd és probablement on podràs l'ús de la majoria, però aquests no són 155 00:07:55,370 --> 00:07:56,780 coses que simplement cd entén. 156 00:07:56,780 --> 00:07:59,980 És més o menys alguna cosa que la seva totalitat línia d'ordres entén. 157 00:07:59,980 --> 00:08:01,932 Una gran quantitat de programes de comprendre punt i punt, punt. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Així que els altres els estris - cd, Dash. 160 00:08:09,090 --> 00:08:13,460 Així que això em portarà a la últim directori que jo era polz 161 00:08:13,460 --> 00:08:15,980 Així que de vegades vaig a fer una cosa així, oh, estic treballant aquí. 162 00:08:15,980 --> 00:08:21,110 I veig un error amb alguna cosa, i Aniré a investigar anant a 163 00:08:21,110 --> 00:08:24,020 algun directori aleatòria en algun lloc. 164 00:08:24,020 --> 00:08:25,260 I jo no sé si va a m'ho dius a mi entrar allà. 165 00:08:25,260 --> 00:08:25,720 Ho farà. 166 00:08:25,720 --> 00:08:27,615 Així que faig el que vull en aquest directori. 167 00:08:27,615 --> 00:08:28,950 Bla, bla, bla, bla, bla. 168 00:08:28,950 --> 00:08:31,770 I jo estava com, sí, vull per tornar a on era. 169 00:08:31,770 --> 00:08:34,490 cd, guions i em porta de tornada. 170 00:08:34,490 --> 00:08:39,970 >> Així que em vaig a tirar un munt d'aquests en el dia d'avui. 171 00:08:39,970 --> 00:08:43,730 No espero memoritzar tots ells. 172 00:08:43,730 --> 00:08:46,170 És una espècie de només sé que hi ha. 173 00:08:46,170 --> 00:08:48,690 I després, més endavant, quan vostè és com, hmm, vull tornar a la 174 00:08:48,690 --> 00:08:51,870 directori que estava just a, oh, espera, existeix alguna cosa així. 175 00:08:51,870 --> 00:08:53,980 No ha de simplement introduïu a tot el directori de nou. 176 00:08:53,980 --> 00:08:56,090 >> JOSÉ: I el temps s'acaba utilitzar una i altra vegada, i 177 00:08:56,090 --> 00:08:57,830 es convertirà en la memòria muscular. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Si. 179 00:09:00,090 --> 00:09:02,930 Llavors, com he dit abans, que titlla és el seu directori personal. 180 00:09:02,930 --> 00:09:04,820 Així que puc cd, accent. 181 00:09:04,820 --> 00:09:07,280 Però jo ni tan sols he de això si només - 182 00:09:07,280 --> 00:09:09,760 Vaig a tornar al directori de manera que no és un exemple de sentit. 183 00:09:09,760 --> 00:09:14,560 Però si acabo de fer cd, això és també la mateix que, aneu a la meva directori home. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Faig Comando, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSÉ: També podeu escriure clara, la paraula, i s'ha de desactivar-la. 187 00:09:24,015 --> 00:09:28,650 >> ROB: I crec que també de control, L també ho fa. 188 00:09:28,650 --> 00:09:29,690 Així que un munt de diferents maneres. 189 00:09:29,690 --> 00:09:34,070 Crec que hi ha algunes diferències en el clara i Control, L s'acaba 190 00:09:34,070 --> 00:09:37,280 realment empènyer a la part superior i Encara puc retrocedir. 191 00:09:37,280 --> 00:09:40,580 Comando, K destrueix literalment tot, i tu 192 00:09:40,580 --> 00:09:42,960 no es pot moure cap amunt. 193 00:09:42,960 --> 00:09:45,530 Si més no, això és com funciona en iTerm2. 194 00:09:45,530 --> 00:09:48,690 No sé com altres coses - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Amb sshing, així que si estàs en Windows, hauràs de descarregar PuTTY 197 00:09:55,450 --> 00:10:02,360 per tal de SSH, ja que Windows no ho fa tenir com una eina integrada SSH. 198 00:10:02,360 --> 00:10:06,150 De Macs, pots simplement SSH directament des d'una finestra de terminal. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 D'acord. 201 00:10:09,690 --> 00:10:11,840 Preguntes? 202 00:10:11,840 --> 00:10:19,260 >> Amb ls, així que alguna cosa s'acostumi a amb la majoria d'aquests ordres és - 203 00:10:19,260 --> 00:10:20,060 bé, només faré un. 204 00:10:20,060 --> 00:10:21,310 Ls, tauler, l. 205 00:10:21,310 --> 00:10:26,330 Així tauler, l és el que anem per trucar a una bandera per ls. 206 00:10:26,330 --> 00:10:30,770 I molts d'aquests comandaments tenen banderes que es pot passar a ells. 207 00:10:30,770 --> 00:10:35,020 Així que en aquest cas, guió, l és una bandera que diu que em donarà una completa 208 00:10:35,020 --> 00:10:37,850 llista de tota la informació d'aquests arxius. 209 00:10:37,850 --> 00:10:44,790 >> Així que veiem aquí que l'escriptori era modificada el 30 de juliol a les 12:54. 210 00:10:44,790 --> 00:10:47,160 Descàrregues es va modificar al 6 de setembre. 211 00:10:47,160 --> 00:10:52,350 Aquests són la mida actual i bytes d'aquests directoris. 212 00:10:52,350 --> 00:10:54,412 No ha d'entendre tot això. 213 00:10:54,412 --> 00:11:00,380 >> Aquesta cosa de l'esquerra, aquests de drwx, que es convertirà en molt més rellevant 214 00:11:00,380 --> 00:11:02,290 més tard, quan vostè ha de fer front - 215 00:11:02,290 --> 00:11:05,900 que té a veure amb qui tens autorització a veure aquests arxius. 216 00:11:05,900 --> 00:11:09,880 I pel que si vostè no era l'únic usuari en aquest equip, vostè seria capaç de 217 00:11:09,880 --> 00:11:13,345 per exemple, OK, jo hauria de ser l'únic permetre mirar aquest arxiu o estic 218 00:11:13,345 --> 00:11:14,870 permetrà a tots mirar aquesta imatge. 219 00:11:14,870 --> 00:11:17,710 Així que una altra persona en el meu equip pot llegir aquest fitxer. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Jo ni tan sols sé el que això - Què fa això? 222 00:11:25,600 --> 00:11:26,840 >> JOSÉ: No estic molt segur, en realitat. 223 00:11:26,840 --> 00:11:27,705 >> ROB: No tinc idea. 224 00:11:27,705 --> 00:11:30,530 >> JOSÉ: Però si vostè no sap, no hi ha una ordre útil que pot utilitzar 225 00:11:30,530 --> 00:11:31,680 per dir-li el que significa que la sortida. 226 00:11:31,680 --> 00:11:33,780 I si escriu en l'home abans de l'ordre - 227 00:11:33,780 --> 00:11:35,000 per la qual cosa M-A-N. ROB: Home. 228 00:11:35,000 --> 00:11:37,690 Així que l'home és un altre això és molt útil. 229 00:11:37,690 --> 00:11:39,540 I l'home, ls. 230 00:11:39,540 --> 00:11:47,320 Així que les pàgines de manual, que tenen tant comandes que es va a utilitzar 231 00:11:47,320 --> 00:11:50,330 en la línia d'ordres, i també tenen funcions que seran rellevants 232 00:11:50,330 --> 00:11:52,530 amb C. Així que vostè pot l'home - 233 00:11:52,530 --> 00:11:53,720 i no vaig fer cas 3. 234 00:11:53,720 --> 00:11:57,410 Però man 3 printf portarà fins a la versió C de printf. 235 00:11:57,410 --> 00:12:01,030 Però si acabo de fer l'home printf, això és anar perquè aparegui la comanda printf 236 00:12:01,030 --> 00:12:03,540 això passa en la línia d'ordres. 237 00:12:03,540 --> 00:12:05,730 >> Així que l'home, ls. 238 00:12:05,730 --> 00:12:09,030 Les pàgines del manual poden ser bastant aclaparadora. 239 00:12:09,030 --> 00:12:12,770 Aquí, però, veurà aquest llistat de totes aquestes banderes que LS 240 00:12:12,770 --> 00:12:14,300 entén. 241 00:12:14,300 --> 00:12:17,876 Així que si anem a llançar-se, l, i - 242 00:12:17,876 --> 00:12:19,300 Jo només vaig a tirar això a vostè. 243 00:12:19,300 --> 00:12:23,050 Però amb la finalitat de buscar, vostè vol per colpejar primer la qüestió 244 00:12:23,050 --> 00:12:24,780 marca o botó de barra. 245 00:12:24,780 --> 00:12:26,040 Així que retallar. 246 00:12:26,040 --> 00:12:29,000 >> I llavors puc buscar per al que vulgui. 247 00:12:29,000 --> 00:12:33,780 Així que vaig a retallar per al tauler, l. 248 00:12:33,780 --> 00:12:35,110 I allí estava. 249 00:12:35,110 --> 00:12:37,450 Així que utilitzi un format de llistat llarg. 250 00:12:37,450 --> 00:12:40,060 Això no ajuda a esbrinar què aquesta columna particular, volia dir, però em 251 00:12:40,060 --> 00:12:44,480 assumir en algun lloc d'aquí això explicaria això. 252 00:12:44,480 --> 00:12:48,740 Així que utilitzi les pàgines del manual de qualsevol ordre que no entén immediatament. 253 00:12:48,740 --> 00:12:51,080 >> Estic bastant segur que vostè pot fins i tot home, home. 254 00:12:51,080 --> 00:12:53,070 Una interfície per a la línia manuals de referència. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Ah, una última que és potser una mica és LS pertinents, tauler, a. 257 00:13:03,570 --> 00:13:08,490 Així compte si acabo de fer ls, Aconsegueixo aquests cinc arxius. 258 00:13:08,490 --> 00:13:11,480 Si faig ls, guió, a, I aconseguir molts més arxius. 259 00:13:11,480 --> 00:13:15,350 Així que la cosa en comú entre tots aquests nous arxius és el punt per endavant. 260 00:13:15,350 --> 00:13:21,220 >> Així que la convenció és que un arxiu que comença amb un punt amagat. 261 00:13:21,220 --> 00:13:25,300 Així que no vols veure aquest arxiu, no vull haver de ficar-se amb 262 00:13:25,300 --> 00:13:26,750 la llista de directoris. 263 00:13:26,750 --> 00:13:30,020 És només quan es demana de manera explícita, bé, ls, guió, una, mostrar. 264 00:13:30,020 --> 00:13:32,830 Una és sinònim de tots els arxius, incloent les ocultes. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Pel que alguns altres comandaments. 267 00:13:39,270 --> 00:13:41,323 Oh, les preguntes en aquest moment? 268 00:13:41,323 --> 00:13:41,746 Sí 269 00:13:41,746 --> 00:13:45,914 >> ALTAVEU 3: Quan vostè fa un ls, a, quin és el punt, punt? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Així que això és el que jo estava parlant. 272 00:13:48,780 --> 00:13:50,890 És el mateix quan Puc agradaria cd, punt, punt. 273 00:13:50,890 --> 00:13:56,790 Així que, tècnicament, punt i punt, punt són arxius que hi ha en cada un 274 00:13:56,790 --> 00:14:03,620 guia on l'arxiu de punt es refereix en el directori actual. 275 00:14:03,620 --> 00:14:06,930 Així que si jo cd, punt, jo només vaig romandre en el directori. 276 00:14:06,930 --> 00:14:10,870 I punt, punt sempre es refereix a la anterior directori d'un a nivell. 277 00:14:10,870 --> 00:14:18,200 Així que si entro en troncs i ls, guió, al, Veuré punt, punt. cd a punt, punt 278 00:14:18,200 --> 00:14:20,390 em porta al directori anterior. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Sí 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 D'acord. 283 00:14:28,110 --> 00:14:33,070 >> Així que una altra molt important comanda és rm. 284 00:14:33,070 --> 00:14:35,650 Així que això és el que anem a utilitzar per eliminar. 285 00:14:35,650 --> 00:14:38,100 I m'ho dius a mi en realitat faig una altra comandament primer. 286 00:14:38,100 --> 00:14:39,610 Així mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir és com es pot crear directoris. 288 00:14:42,770 --> 00:14:47,530 I vaig a crear un directori temporal i entrar en aquest directori temporal. 289 00:14:47,530 --> 00:14:49,590 I com era d'esperar, està buit. 290 00:14:49,590 --> 00:14:53,680 Però si ls I, guió, una, encara tenen punts i punt, punt, perquè es refereix a punt 291 00:14:53,680 --> 00:14:54,480 el directori actual. 292 00:14:54,480 --> 00:14:56,170 I punt, punt es refereix a la directori anterior. 293 00:14:56,170 --> 00:14:58,700 I els sempre existirà sense importar el directori que es in 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> I aquest és un completament innecessari comandament, però el tacte. 296 00:15:09,010 --> 00:15:11,880 Jo només el faig servir, perquè és una manera fàcil de crear arxius. 297 00:15:11,880 --> 00:15:16,180 Així que toqui una, toc b, toc c és només crearà tres fitxers cridats a, 298 00:15:16,180 --> 00:15:17,845 b i c que són completament buida. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Així que el punt de crear-me els de la primer lloc és només perquè rm és 301 00:15:24,980 --> 00:15:26,250 com podem eliminar-los. 302 00:15:26,250 --> 00:15:27,850 Així rm, a. 303 00:15:27,850 --> 00:15:30,960 Es va a preguntar-me, retiri fitxer regular un buit? 304 00:15:30,960 --> 00:15:33,170 I després vaig a dir que si. 305 00:15:33,170 --> 00:15:39,090 >> Pel que si estic segur que vull esborrar aquest arxiu sense haver d'estar 306 00:15:39,090 --> 00:15:44,500 sol · liciti, retiri arxiu buit regular?, a continuació, rm, guió, f serà el 307 00:15:44,500 --> 00:15:48,230 bandera que diu, forçar la treu sense fins i tot em va portar, oh, estàs 308 00:15:48,230 --> 00:15:49,710 Segur que vol eliminar l'arxiu? 309 00:15:49,710 --> 00:15:50,810 Sí, estic segur. 310 00:15:50,810 --> 00:15:56,050 Així rm, guió, fb s'acaba fer-ho sense fer soroll. 311 00:15:56,050 --> 00:15:57,950 >> Així que anem a fer algunes més directoris. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, tocar un toc b. 313 00:16:03,670 --> 00:16:04,300 D'acord. 314 00:16:04,300 --> 00:16:08,180 Així que ara em vull treure tmp2 com un directori. 315 00:16:08,180 --> 00:16:10,316 Tmp2 Així rm. 316 00:16:10,316 --> 00:16:12,920 No es pot treure tmp2, és un directori. 317 00:16:12,920 --> 00:16:21,370 Així que la qüestió aquí és que no rm treballar immediatament en els directoris. 318 00:16:21,370 --> 00:16:26,530 Només ha significat per a arxius com arxius que no són directoris. 319 00:16:26,530 --> 00:16:30,800 >> I així, el que podem fer aquí és rm, guió, r. 320 00:16:30,800 --> 00:16:35,160 Això significa de forma recursiva, el que podria no significa res per a tu encara. 321 00:16:35,160 --> 00:16:38,280 Però quan s'arriba a la recursivitat, que dirà més. 322 00:16:38,280 --> 00:16:43,540 Així rm, guió, r, tmp2 va a recursivament entrar en aquest directori. 323 00:16:43,540 --> 00:16:45,540 Així baixarà al directori tmp2? 324 00:16:45,540 --> 00:16:47,330 Sí, entrarem en això. 325 00:16:47,330 --> 00:16:49,360 Volem eliminar tmp2 / a? 326 00:16:49,360 --> 00:16:49,745 Sí 327 00:16:49,745 --> 00:16:51,830 Volem eliminar tmp2 / b? 328 00:16:51,830 --> 00:16:52,840 Sí 329 00:16:52,840 --> 00:16:55,170 Ara volem eliminar la tmp2 directori? 330 00:16:55,170 --> 00:16:56,040 Sí 331 00:16:56,040 --> 00:16:58,410 I pel que ara directori i tot dins 332 00:16:58,410 --> 00:16:59,660 que s'ha eliminat. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> No és tècnicament una ordre rmdir que es pot utilitzar per eliminar 335 00:17:07,250 --> 00:17:11,670 directoris, però només funciona en els directoris buits de totes maneres. 336 00:17:11,670 --> 00:17:14,109 I en veure que, anem a fer mkdir, tmp2 nou. 337 00:17:14,109 --> 00:17:15,940 Tmp2, toqui a. 338 00:17:15,940 --> 00:17:16,800 D'acord. 339 00:17:16,800 --> 00:17:22,770 Així que si intento treure dirtmp2, que va a dir, un directori no buit. 340 00:17:22,770 --> 00:17:29,540 Així que gairebé mai faig servir el remove comandament dir de tota manera, perquè rm, guió, 341 00:17:29,540 --> 00:17:35,140 r funciona en els directoris buits i els directoris no buits. 342 00:17:35,140 --> 00:17:37,760 >> I també, si jo no vull haver de passar per tot aquest procés de 343 00:17:37,760 --> 00:17:40,720 baixar al directori i extreure cada arxiu individual, rm, 344 00:17:40,720 --> 00:17:44,190 tauler, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 I ara s'ha anat. 346 00:17:45,670 --> 00:17:51,220 >> Una cosa anar amb compte aproximadament és rm, guió, rf. 347 00:17:51,220 --> 00:17:53,660 I fins i tot em fa por que escriure-la, perquè si accidentalment 348 00:17:53,660 --> 00:17:55,090 premeu Enter o alguna cosa així. 349 00:17:55,090 --> 00:18:02,735 Així rm, guió, rf, titlla faria, sense em va portar, el f no sol · licita 350 00:18:02,735 --> 00:18:05,670 em, eliminarà automàticament el meu directori sencer i 351 00:18:05,670 --> 00:18:06,780 tot en ell. 352 00:18:06,780 --> 00:18:11,460 Així que vostè pot pensar que és una estupidesa. 353 00:18:11,460 --> 00:18:12,830 I bé, ho és. 354 00:18:12,830 --> 00:18:18,600 >> Però pot succeir molt fàcilment per accident si, per exemple, volia eliminar 355 00:18:18,600 --> 00:18:21,640 la meva barra, directori vhost. 356 00:18:21,640 --> 00:18:26,610 I just a la tipificació ràpida, Accidentalment fer això. 357 00:18:26,610 --> 00:18:31,880 Això eliminarà de forma recursiva tant el meu directori principal i el directori vhost 358 00:18:31,880 --> 00:18:35,450 en aquest directori particular que només passa a no existir en aquests moments. 359 00:18:35,450 --> 00:18:39,520 Però això encara eliminar el meu directori sencer. 360 00:18:39,520 --> 00:18:43,090 Almenys en no tenir un f, em incitaria a primera. 361 00:18:43,090 --> 00:18:45,670 I m'agradaria ser com, oh, no, no vull fer això. 362 00:18:45,670 --> 00:18:50,570 Però la gent, slash, incloent m'inclino a entrar al 363 00:18:50,570 --> 00:18:53,090 hàbit de sempre-ing rf. 364 00:18:53,090 --> 00:18:58,713 Fins i tot els arxius regulars que només pot i rm, c, tendeixo a només rm, guió, rf, c. 365 00:18:58,713 --> 00:19:01,330 Només vés amb compte quan estiguis-ing rf. 366 00:19:01,330 --> 00:19:03,160 >> ALTAVEU 4: Què fer C? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C és que estic parlant d'aquest arxiu C En aquest directori, que rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSÉ: I que és més perillós, si utilitza una estrella, es refereix a tot en 369 00:19:15,730 --> 00:19:16,450 directori. 370 00:19:16,450 --> 00:19:20,040 Així que el que comunament tendeixen a fer és que ho faré Entro en un directori i vull 371 00:19:20,040 --> 00:19:21,510 eliminar tots els arxius allà. 372 00:19:21,510 --> 00:19:23,640 Així rm, guió, rf, estel. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Si. 374 00:19:25,700 --> 00:19:26,780 Rm, guió, rf, estel. 375 00:19:26,780 --> 00:19:29,530 >> JOSÉ: I si vostè no té cura el que està en el directori - 376 00:19:29,530 --> 00:19:33,340 Jo no era a la temperatura, però jo estava accidentalment en el meu directori home, 377 00:19:33,340 --> 00:19:35,450 llavors vaig a treure tot en el meu directori home. 378 00:19:35,450 --> 00:19:39,095 I realment he fet això abans, i Crec que vostè ha fet això abans o 379 00:19:39,095 --> 00:19:40,640 Jay ha fet això abans. 380 00:19:40,640 --> 00:19:42,480 >> ROB: He eliminat accidentalment - 381 00:19:42,480 --> 00:19:44,480 així que ignori aquest comando per una mica. 382 00:19:44,480 --> 00:19:45,800 >> JOSÉ: No és divertit. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Així que en el directori bin slash és un munt d'arxius binaris, on hi haurà 384 00:19:52,650 --> 00:19:54,840 ser els familiars com so metàl · lic. 385 00:19:54,840 --> 00:20:00,740 Bé, Clang i, bàsicament, tots ells coses que estic corrent en la comanda 386 00:20:00,740 --> 00:20:02,060 línia estan en aquest directori bin slash. 387 00:20:02,060 --> 00:20:03,090 >> JOSÉ: Igual que ls és aquí. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Així punt, ratlla vertical, ls es llistar aquest directori. 389 00:20:06,285 --> 00:20:08,120 >> JOSÉ: Rm és també en aquest directori. 390 00:20:08,120 --> 00:20:12,770 >> ROB: He rm accidentalment, bin rf-ed, que va eliminar qualsevol ordre que vaig poder 391 00:20:12,770 --> 00:20:14,380 possiblement desitjar. 392 00:20:14,380 --> 00:20:18,085 Que després em reinstal · lació d'un nou Appliance en aquest punt. 393 00:20:18,085 --> 00:20:20,170 >> JOSÉ: Així que tenir molta cura en utilitza aquesta comanda. 394 00:20:20,170 --> 00:20:21,120 >> AUDIÈNCIA: [inaudible]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Si. 396 00:20:22,640 --> 00:20:24,135 Això també és un mal hàbit per entrar. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Si et fixes, ara sóc - 399 00:20:30,170 --> 00:20:33,580 així, no es pot notar, però el meu zoom-in potser pugui. 400 00:20:33,580 --> 00:20:35,360 Així que ara sóc root @ electrodomèstic. 401 00:20:35,360 --> 00:20:39,790 Així jharvard és l'usuari que volem vostè sempre estigui utilitzant. 402 00:20:39,790 --> 00:20:43,820 Root és l'usuari que té permís per no fer absolutament res. 403 00:20:43,820 --> 00:20:50,260 >> Així notar quan estic jharvard, si tracte de cd - 404 00:20:50,260 --> 00:20:52,461 el que és un directori que? 405 00:20:52,461 --> 00:20:53,980 Oh, l'arrel és un bon exemple. 406 00:20:53,980 --> 00:20:54,950 Així cd, arrel. 407 00:20:54,950 --> 00:20:56,030 Permís denegat. 408 00:20:56,030 --> 00:21:00,060 Perquè si ens fixem en aquest llistat - 409 00:21:00,060 --> 00:21:02,410 i una altra, vostè no ha de totalment d'entendre això. 410 00:21:02,410 --> 00:21:09,210 No obstant això, aquests tres guions que opinen que no deixis que cap altre 411 00:21:09,210 --> 00:21:11,120 usuari en aquest directori. 412 00:21:11,120 --> 00:21:14,540 I el directori passa a ser propietat de l'usuari root. 413 00:21:14,540 --> 00:21:20,310 >> Així que el fet que sóc jharvard i no un que no és root és permès en 414 00:21:20,310 --> 00:21:23,490 aquest directori, això significa que sóc vas a obtenir permís denegat quan 415 00:21:23,490 --> 00:21:25,160 tractar de cd a ell. 416 00:21:25,160 --> 00:21:31,370 Així que quan estic arrel, tinc permís per fer absolutament qualsevol cosa, incloent 417 00:21:31,370 --> 00:21:34,660 esborrar arxius essencials per a l'aparell i 418 00:21:34,660 --> 00:21:36,640 destruir la cosa sencera. 419 00:21:36,640 --> 00:21:41,240 >> Així que és un mal hàbit per entrar simplement passejar pel seu 420 00:21:41,240 --> 00:21:43,650 sistema operatiu com a root. 421 00:21:43,650 --> 00:21:46,520 Jo ho faig de totes maneres. 422 00:21:46,520 --> 00:21:48,710 Preguntes? 423 00:21:48,710 --> 00:21:52,230 I em surto de l'arrel, quedo com jharvard. 424 00:21:52,230 --> 00:21:54,510 D'acord. 425 00:21:54,510 --> 00:21:55,820 >> Comandes més rellevants. 426 00:21:55,820 --> 00:22:03,975 Així que tornant a la nostra temperatura, la ordre mv és sinònim de moviment. 427 00:22:03,975 --> 00:22:05,450 Vostè pot moure un arxiu. 428 00:22:05,450 --> 00:22:07,610 Ara volem dir-b, de manera que ara es diu b. 429 00:22:07,610 --> 00:22:10,650 O potser volem avançar b d'un sol directori. 430 00:22:10,650 --> 00:22:12,730 Així que ara buits d'aquest directori. 431 00:22:12,730 --> 00:22:15,410 Vaig a tornar al meu directori personal, i veiem que b és aquí, perquè el 432 00:22:15,410 --> 00:22:19,230 directori personal era un directori des el directori que b havia estat dins 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> També hi ha cp. 435 00:22:26,580 --> 00:22:33,210 Així cp és copiar súper secció, punt, el text. 436 00:22:33,210 --> 00:22:35,750 Puc dir-s, punt, text. 437 00:22:35,750 --> 00:22:39,780 Ara tenim dos súper secció, punt, text, i s, punt, text. 438 00:22:39,780 --> 00:22:41,340 Això també funciona en els directoris. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Em RF-ed un sol arxiu. 441 00:22:46,560 --> 00:22:48,200 Així CP - 442 00:22:48,200 --> 00:22:51,710 Bé, primer anem a tractar de cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 Així ometent directori tmp. 444 00:22:53,220 --> 00:22:57,440 Així similars RM, el comportament per defecte és que no funciona en els directoris. 445 00:22:57,440 --> 00:23:01,570 >> I de nou, similar a RM, el valor per defecte comportament - així, aconseguir que funcioni 446 00:23:01,570 --> 00:23:04,230 amb els directoris és un guió-r de distància. 447 00:23:04,230 --> 00:23:09,240 Així que copiar de forma recursiva la temperatura directori en tmp2. 448 00:23:09,240 --> 00:23:13,700 I el que ara tenim tant tmp i tmp2, i que no és útil ja que tmp 449 00:23:13,700 --> 00:23:16,814 estava buida en el primer lloc. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Ara anem a copiar tmp en tmp2. 452 00:23:22,680 --> 00:23:27,900 I veiem que tmp2 també té l'arxiu una, perquè el directori i 453 00:23:27,900 --> 00:23:32,220 tot dins d'aquest directori va ser copiat. 454 00:23:32,220 --> 00:23:36,000 I això pot ser una mica útil si, diguem que vostè està treballant 455 00:23:36,000 --> 00:23:38,860 el problema d'establir un - 456 00:23:38,860 --> 00:23:41,320 o en realitat, els butlletins de problemes posteriors són encara més important, ja que 457 00:23:41,320 --> 00:23:43,660 serà un manat sencer d'arxius i les coses. 458 00:23:43,660 --> 00:23:47,010 >> Però el que desitja, per una fracció de en segon lloc, vostè és com, bé, estic 459 00:23:47,010 --> 00:23:50,210 va intentar alguna cosa diferent. 460 00:23:50,210 --> 00:23:57,860 Permetin-me copio tota la meva pset1 directori en la còpia de seguretat de manera que si pset1 461 00:23:57,860 --> 00:24:01,490 M'acaben arruïnar les coses, no puc tornar al meu directori de còpia de seguretat. 462 00:24:01,490 --> 00:24:07,340 Hi ha formes més apropiades d' versions de còpia de seguretat del seu codi, però 463 00:24:07,340 --> 00:24:10,610 això sempre és una forma ràpida de fer només Assegureu-vos de tenir una còpia d'alguna cosa 464 00:24:10,610 --> 00:24:11,860 que està a punt de modificar. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Així que trobo és també una ordre d'un sol cop que tipus de sillily s'acaba d'imprimir a la 467 00:24:27,090 --> 00:24:31,540 línia d'ordres exactament el que volia fer ressò. 468 00:24:31,540 --> 00:24:32,680 Així que trobo hola. 469 00:24:32,680 --> 00:24:35,420 Només anem a imprimir hi. 470 00:24:35,420 --> 00:24:38,030 Echo hello world. 471 00:24:38,030 --> 00:24:39,800 Publicarem hello world. 472 00:24:39,800 --> 00:24:44,350 Aquí entra en ús quan iniciar la combinació de les ordres. 473 00:24:44,350 --> 00:24:48,300 >> I de nou, no esperis que en la seva totalitat entendre això encara, però és 474 00:24:48,300 --> 00:24:49,910 alguna cosa a veure. 475 00:24:49,910 --> 00:24:52,470 I llavors, si vostè està buscant a Google per veure exemples o t'adones que vols fer 476 00:24:52,470 --> 00:24:55,030 alguna cosa, pot ser útil. 477 00:24:55,030 --> 00:24:59,020 Així que anem, com un exemple, així que ls, tauler, l. 478 00:24:59,020 --> 00:25:01,160 Així que aquí veig la sortida de ls, guió, l. 479 00:25:01,160 --> 00:25:06,560 I jo dic, OK, vull emmagatzemar en un arxiu que. 480 00:25:06,560 --> 00:25:11,620 Tota aquesta producció aquí, vull posar en un arxiu separat. 481 00:25:11,620 --> 00:25:16,080 >> Així que aquest petit símbol major que és el que anomenarem. 482 00:25:16,080 --> 00:25:18,570 Estem reorientant la de sortida en un arxiu. 483 00:25:18,570 --> 00:25:21,680 Anem a trucar a la bla arxiu, perquè això és el que jo sòl dir sempre ell. 484 00:25:21,680 --> 00:25:26,430 Així que ara veiem que tenim un presentar bla aquí. 485 00:25:26,430 --> 00:25:30,270 I si ho obro, m'encarregaré que és exactament de la sortida de l'ordre 486 00:25:30,270 --> 00:25:31,990 que m'acabo de trobar. 487 00:25:31,990 --> 00:25:36,020 I de la mateixa manera, es pot - 488 00:25:36,020 --> 00:25:41,260 si es tractava de la sortida a un fitxer, aquest és prendre l'entrada d'un arxiu. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Què és una ordre que jo - 491 00:25:47,050 --> 00:25:49,620 >> JOSÉ: Crec que es pot utilitzar menys o més, probablement. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Però què tal una mica menys bla? 493 00:25:53,031 --> 00:25:53,930 No. 494 00:25:53,930 --> 00:25:57,870 Si vostè entra en aquest escenari, igual que hi ha conjunts de processadors que és útil per. 495 00:25:57,870 --> 00:25:59,950 >> JOSÉ: Es pot canalitzar en eco. 496 00:25:59,950 --> 00:26:02,920 Pipe l'arxiu en eco per veure-ho. 497 00:26:02,920 --> 00:26:04,060 >> ROB: És la canonada. 498 00:26:04,060 --> 00:26:04,860 >> JOSÉ: Ho sento. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Molt bé. 500 00:26:06,190 --> 00:26:12,720 Així que aquesta és la sortida a un fitxer. 501 00:26:12,720 --> 00:26:18,700 Es tracta d'obtenir el text del fitxer i es el lliurament al programa. 502 00:26:18,700 --> 00:26:20,560 I també es veurà aquest tipus. 503 00:26:20,560 --> 00:26:24,410 Així que això és una mena de fer ambdues coses alhora. 504 00:26:24,410 --> 00:26:28,310 I, de fet, vaig a introduir dos nous comandaments només per fer ús d'ella. 505 00:26:28,310 --> 00:26:33,060 >> La història és una ordre molt útil que és només voleu imprimir una llista de 506 00:26:33,060 --> 00:26:34,940 res mai m'he trobat una línia d'ordres. 507 00:26:34,940 --> 00:26:38,290 Així que aquí veiem tot el que tinc estat funcionant tot aquest temps. 508 00:26:38,290 --> 00:26:39,540 Molta de ls. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> I un altre ordre útil és grep que el seu propòsit és buscar a través de 511 00:26:48,470 --> 00:26:52,060 text a la recerca de patrons, així, a la recerca de qualsevol cosa que 512 00:26:52,060 --> 00:26:53,310 vull buscar. 513 00:26:53,310 --> 00:26:59,770 I així un ús útil aquí és, diguem volem aprofitar la història. 514 00:26:59,770 --> 00:27:03,860 I vull que buscar els comandaments on I - Què és un 515 00:27:03,860 --> 00:27:05,000 una utilitat per cercar? 516 00:27:05,000 --> 00:27:06,898 >> JOSÉ: [inaudible]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: O anem a veure per a tots toca, per qualsevol raó. 518 00:27:09,710 --> 00:27:13,850 Així que això és el que es veurà així. 519 00:27:13,850 --> 00:27:15,560 I vostè no ha de completament entendre això. 520 00:27:15,560 --> 00:27:20,570 Però la idea és que aquí, la història està donant la mateixa sortida que va fer aquí 521 00:27:20,570 --> 00:27:25,030 on s'imprimeixi la totalitat història de tot el que sempre he corregut. 522 00:27:25,030 --> 00:27:27,030 Llavors estem passant això - 523 00:27:27,030 --> 00:27:30,230 així que en lloc d'imprimir a la pantalla, volem transmetre que a la 524 00:27:30,230 --> 00:27:34,640 grep comandament que està buscant totes les instàncies de la paraula toc. 525 00:27:34,640 --> 00:27:40,280 >> I així, l'ús d'aquesta combinació de la eines de la història i grep, puc veure, OK, 526 00:27:40,280 --> 00:27:44,820 he aquí tots els comandaments que he córrer, i aquí està una mica comú. 527 00:27:44,820 --> 00:27:45,510 Som a la part inferior. 528 00:27:45,510 --> 00:27:47,930 I també m'ha de donar l'ordre Acabo de funcionar que tenia el 529 00:27:47,930 --> 00:27:51,240 paraula toc-hi. 530 00:27:51,240 --> 00:27:58,500 No obstant això, la canonada és una cosa molt útil per combinar múltiples programes. 531 00:27:58,500 --> 00:28:04,670 I, de fet, és un accés directe per a lloguer me la història sortida de presentar bla, i 532 00:28:04,670 --> 00:28:10,190 m'ho dius a mi grep usant el bla arxiu com el que vull per mirar per sobre. 533 00:28:10,190 --> 00:28:13,460 Així que la canonada és només una drecera per aquests dos ordres. 534 00:28:13,460 --> 00:28:13,950 Sí 535 00:28:13,950 --> 00:28:15,306 >> ALTAVEU 4: [inaudible]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Si. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Què és - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Anem a provar. 541 00:28:24,820 --> 00:28:29,170 Així gat, gos, peix. 542 00:28:29,170 --> 00:28:33,770 Així que vull a grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, de nou, serà recursiva, per la qual cosa vull baixar 544 00:28:37,680 --> 00:28:38,870 tots els directoris. 545 00:28:38,870 --> 00:28:43,210 Vull grep recursivament per a tots - i veurem si temporalment 546 00:28:43,210 --> 00:28:44,460 aquesta fora del camí. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Em faci cas. 549 00:28:50,740 --> 00:28:51,360 D'acord. 550 00:28:51,360 --> 00:28:56,740 >> Així que vull a grep temporalment per totes les instàncies de la paraula peix. 551 00:28:56,740 --> 00:29:00,510 Així que aquí el que estic fent és grepping recursiva per la paraula peix. 552 00:29:00,510 --> 00:29:05,410 I l'estrella significa sobretot això arxius d'aquest directori. 553 00:29:05,410 --> 00:29:08,930 I pel que em va donar un permís denegat, perquè no se li permet llegir que 554 00:29:08,930 --> 00:29:10,060 fitxer. 555 00:29:10,060 --> 00:29:14,040 Però van trobar peixos a l'arxiu, de prova. 556 00:29:14,040 --> 00:29:18,450 >> Jo també podria dir que, en concret, només que desitgi veure en el bla arxiu, en 557 00:29:18,450 --> 00:29:19,580 aquest cas no trobarà res. 558 00:29:19,580 --> 00:29:20,990 Jo només vull mirar l'arxiu, de prova. 559 00:29:20,990 --> 00:29:22,240 Trobareu els peixos. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 És una ordre molt útil a saber en general. 562 00:29:29,260 --> 00:29:31,640 Hi ha algunes alternatives a grep que se suposa que són més 563 00:29:31,640 --> 00:29:36,780 Programador amable, però tendeixo encara recórrer a grep. 564 00:29:36,780 --> 00:29:38,030 Preguntes? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 D'acord. 567 00:29:40,919 --> 00:29:42,520 >> Hi ha altres ordres? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Només una sola vegada una que sempre em trobar a ser divertit és CAL. 570 00:29:48,370 --> 00:29:55,610 Així notar quan estic en aquesta bella mode de pantalla completa, no tinc ni superior com 571 00:29:55,610 --> 00:29:56,720 barra d'eines o qualsevol cosa. 572 00:29:56,720 --> 00:29:59,530 Així calç encara no he un petit calendari que sigui adequat 573 00:29:59,530 --> 00:30:02,380 ara tallada, suposo. 574 00:30:02,380 --> 00:30:04,770 Però poc agradable d'ordres. 575 00:30:04,770 --> 00:30:06,540 >> JOSÉ: És [inaudible]. 576 00:30:06,540 --> 00:30:09,170 Altres ordres que pugui tenir vist inclouen so metàl · lic i crea. 577 00:30:09,170 --> 00:30:11,180 Anem a anar sobre ells en més detall més endavant. 578 00:30:11,180 --> 00:30:13,400 Però si vostè ha estat treballant en la PSET, vostè ha de ser 579 00:30:13,400 --> 00:30:15,160 familiaritzats amb els. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Molt bé. 581 00:30:16,640 --> 00:30:18,520 Preguntes sobre la línia d'ordres coses? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Està bé. 584 00:30:23,260 --> 00:30:27,416 Així que anem a passar a alguns Coses relacionades-C. 585 00:30:27,416 --> 00:30:28,666 Variables matemàtiques. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 D'acord. 588 00:30:40,060 --> 00:30:45,230 Així que igual que vam tenir matemàtiques en Scratch, també pot utilitzar les matemàtiques en C. 589 00:30:45,230 --> 00:30:49,270 >> Abans d'arribar a això per complet, pel variables. 590 00:30:49,270 --> 00:30:53,920 Recordeu que cada vegada que es declara una variable, com int o float i x, que 591 00:30:53,920 --> 00:30:56,710 cal donar-li el tipus abans el nom de la variable. 592 00:30:56,710 --> 00:31:03,020 Així que els tipus que hem vist fins ara són int, float, double, molt, molt, que em 593 00:31:03,020 --> 00:31:06,150 en realitat no sabem si hem vist que fins ara. 594 00:31:06,150 --> 00:31:07,700 >> Hi ha alguns altres. 595 00:31:07,700 --> 00:31:09,990 Hem veiem caràcters. 596 00:31:09,990 --> 00:31:13,920 Hi ha poques paraules, que és com si fos el oposat de llarg a llarg on està 597 00:31:13,920 --> 00:31:16,650 més petit que un nombre sencer. 598 00:31:16,650 --> 00:31:18,580 També hem vist cadena. 599 00:31:18,580 --> 00:31:23,070 Llavors, què hi ha d'especial en la cadena? 600 00:31:23,070 --> 00:31:25,350 Per què anava jo a dir que és no és com int? 601 00:31:25,350 --> 00:31:27,030 >> ALTAVEU 4: En realitat, no existeix. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Si. 603 00:31:27,990 --> 00:31:31,820 Així que l'única raó per la qual tenim cadena és perquè quan ho fas 604 00:31:31,820 --> 00:31:33,215 hash, incloure cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 I anem a veure exemples d'això més tard - oh, que no maneja tan bé - 607 00:31:42,670 --> 00:31:46,160 on cs50.h està fent alguna cosa al llarg de les línies de text 608 00:31:46,160 --> 00:31:49,230 def, estel char, string. 609 00:31:49,230 --> 00:31:53,280 >> Així que això és dir que ni tan sols sap el que és una estrella de carbó encara. 610 00:31:53,280 --> 00:31:56,770 Però això està dient que volem cadena. 611 00:31:56,770 --> 00:32:00,250 Qualsevol lloc que ha estat amb cadena, podria haver estat utilitzant estrella char, 612 00:32:00,250 --> 00:32:04,670 que en realitat és un tipus que existeix en el llenguatge C. 613 00:32:04,670 --> 00:32:06,680 Però ja arribarem a això. 614 00:32:06,680 --> 00:32:07,860 Ah, i que va a la dreta de nou. 615 00:32:07,860 --> 00:32:10,170 Neat. 616 00:32:10,170 --> 00:32:15,370 >> Així mateix amb bool on la veritable i la falsa. 617 00:32:15,370 --> 00:32:22,510 Això no és realment un tipus incorporat en C. En el seu lloc, és sol, té això a 618 00:32:22,510 --> 00:32:23,740 el valor zero? 619 00:32:23,740 --> 00:32:26,200 Després només haurem de considerar que és falsa. 620 00:32:26,200 --> 00:32:27,350 Això té el valor - 621 00:32:27,350 --> 00:32:30,530 així, té això que qualsevol valor que no és zero? 622 00:32:30,530 --> 00:32:32,200 A continuació considerarem que és veritat. 623 00:32:32,200 --> 00:32:35,940 Així que una és vertadera, dues és vertadera, res diferent de zero és veritable. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Així que aquests són els que. 626 00:32:42,790 --> 00:32:47,624 Les preguntes sobre la declaració de variables i tipus de variables i tot això? 627 00:32:47,624 --> 00:32:48,100 Sí 628 00:32:48,100 --> 00:32:52,384 >> ALTAVEU 4: Per molt de temps, en el llibre, que va dir que no tenia per què ser llarg long int. 629 00:32:52,384 --> 00:32:54,288 Però funcionarà igual de llarg temps? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Així que aquests modificadors de tipus. 632 00:33:01,470 --> 00:33:04,170 Així int x. 633 00:33:04,170 --> 00:33:07,710 Així també podem dir unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Podem dir short int x. 635 00:33:09,640 --> 00:33:12,570 Podem dir long long int x. 636 00:33:12,570 --> 00:33:17,250 Però gairebé cap d'aquestes coses que em acaba de dir, unsigned int, short int, 637 00:33:17,250 --> 00:33:21,480 int llarg termini, vostè pot desfer-se de el int i que només assumirà 638 00:33:21,480 --> 00:33:22,510 que et referies a int. 639 00:33:22,510 --> 00:33:26,045 X tant sense signar, que només significa - 640 00:33:26,045 --> 00:33:29,400 vostè sap com normalment amb un int, es pot dir x és igual a 3 negatiu? 641 00:33:29,400 --> 00:33:31,636 Amb un int sense signar, no es pot. 642 00:33:31,636 --> 00:33:34,480 >> JOSÉ: I de nou, per a la càmera, el pregunta era, quina és la diferència 643 00:33:34,480 --> 00:33:37,796 entre long long int i només el temps llarg? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Si. 645 00:33:38,410 --> 00:33:42,850 Així ho faré gairebé mai escriure long long int. 646 00:33:42,850 --> 00:33:44,100 Vaig a escriure molt, molt. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSÉ: Alguna pregunta? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Petit recordatori Que ximple que és com declarem una variable i inicialitzem 652 00:34:02,390 --> 00:34:04,450 la variable i declarar un altre variables i inicialitzar 653 00:34:04,450 --> 00:34:05,870 tot en un sol pas. 654 00:34:05,870 --> 00:34:09,370 Així que la declaració de la variable i la variable d'inicialització no tenen 655 00:34:09,370 --> 00:34:11,120 a, però pot ser en la mateixa línia. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Així que tenim els operadors matemàtics estàndard que vostè està acostumat a - 658 00:34:20,060 --> 00:34:22,199 més, menys, dividir el temps. 659 00:34:22,199 --> 00:34:24,389 També hi ha un mòdul, que ja veurem. 660 00:34:24,389 --> 00:34:29,060 No hi ha, si més no en C, un poder incorporat 661 00:34:29,060 --> 00:34:31,765 operador de exponenciació caret. 662 00:34:31,765 --> 00:34:33,770 Bé, hi ha un operador d'intercalació, però no és el poder. 663 00:34:33,770 --> 00:34:34,239 >> JOSÉ: Però no és l'exponenciació, Sí 664 00:34:34,239 --> 00:34:36,210 >> ROB: No utilitzeu el símbol d'intercalació assumir que això significa 665 00:34:36,210 --> 00:34:39,980 com quadrat o el que sigui. 666 00:34:39,980 --> 00:34:42,289 Així que algunes coses a tenir en ment sobre la divisió. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Vaig a estar. 669 00:34:48,880 --> 00:34:51,315 Així declarar resposta initialize. 670 00:34:51,315 --> 00:34:54,670 Així que estem dient resposta flotador és igual a 1 dividit per 10. 671 00:34:54,670 --> 00:34:57,500 Imprimir resposta a dos decimals. 672 00:34:57,500 --> 00:35:02,180 >> I aquest és el tipus de coses que jo seria l'home printf per adonar-se que 673 00:35:02,180 --> 00:35:05,110 Què diables vol dir%, punt, 2f vol dir? 674 00:35:05,110 --> 00:35:07,930 I això només significa que, bé, ignorant el 0,2. 675 00:35:07,930 --> 00:35:10,420 I%, f és el que fem servir per imprimir a surar. 676 00:35:10,420 --> 00:35:15,370 El 0.2 està dient, d'impressió que surar amb dos decimals. 677 00:35:15,370 --> 00:35:19,600 Així que aquest programa té un error, i és possible que han vist això abans en alguna 678 00:35:19,600 --> 00:35:20,870 Per descomptat CS prèvia. 679 00:35:20,870 --> 00:35:22,170 Però, què és aquesta bestiola? 680 00:35:22,170 --> 00:35:23,050 >> ALTAVEU 5: Zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Si. 682 00:35:24,130 --> 00:35:29,630 Així que quan diem, la resposta és igual 1 dividit per 10, volem que el 683 00:35:29,630 --> 00:35:31,610 respondre que és 0,1. 684 00:35:31,610 --> 00:35:37,450 Però 1 dividit per 10, 1 és un nombre enter, 10 és un nombre enter. 685 00:35:37,450 --> 00:35:41,060 I així, quan fem un sencer dividit per un enter, que anem a tornar 686 00:35:41,060 --> 00:35:42,190 un nombre sencer. 687 00:35:42,190 --> 00:35:43,660 Així que 1 dividit per 10 és 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Ja que ha de donar-nos un nombre enter, que només va a llençar que 689 00:35:46,760 --> 00:35:49,410 decimal i dir que la resposta és 0. 690 00:35:49,410 --> 00:35:55,314 I així, quan imprimim contestar aquí, que voleu imprimir 0.00. 691 00:35:55,314 --> 00:35:58,430 >> JOSÉ: I així com una nota, que en realitat llença a les escombraries el que hi ha després de la 692 00:35:58,430 --> 00:35:59,390 punt decimal. 693 00:35:59,390 --> 00:36:03,180 Així que si en comptes tenies 6 dividit per 10, es podria pensar que li donaria 694 00:36:03,180 --> 00:36:05,200 0.6 i després li arrodonir a 1. 695 00:36:05,200 --> 00:36:10,520 Però en realitat, el que passa quan s'escrigui tasques és que cau pel que és 696 00:36:10,520 --> 00:36:11,470 després del punt decimal. 697 00:36:11,470 --> 00:36:13,020 Així que 0.6 es converteix en 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Si. 699 00:36:13,370 --> 00:36:15,160 I direm truncat per això. 700 00:36:15,160 --> 00:36:21,760 Així que cada vegada que juguis a un int, el decimal es trunca. 701 00:36:21,760 --> 00:36:23,980 Així que la solució perquè - no hi ha en realitat dues. 702 00:36:23,980 --> 00:36:27,890 I jo faré aquest segon, perquè aquesta és una solució molt més fàcil. 703 00:36:27,890 --> 00:36:32,670 >> Així que una solució és utilitzar flotadors en la divisió. 704 00:36:32,670 --> 00:36:34,720 I realment, n'hi ha prou amb fer que un d'ells un flotador. 705 00:36:34,720 --> 00:36:37,400 Però és una cosa més clara just per fer els dos flotadors. 706 00:36:37,400 --> 00:36:41,170 Així 1,0 dividit per 10.0 és dividint dos flotadors. 707 00:36:41,170 --> 00:36:43,970 Així que la resposta va a acabar sent un flotador, i pel que es 708 00:36:43,970 --> 00:36:48,050 correctament imprimir 0.10 aquí. 709 00:36:48,050 --> 00:36:52,220 >> Una cosa que no funciona tan bé aproximadament, és a dir, bé, clar, era fàcil 710 00:36:52,220 --> 00:36:56,240 suficient per convertir un 1 surar pel que és 1,0. 711 00:36:56,240 --> 00:37:02,180 Però i si en lloc d'això tenia dos enters com int x és igual a 1 i la int i 712 00:37:02,180 --> 00:37:05,660 és igual a 10, i després volíem fer X dividit per I? 713 00:37:05,660 --> 00:37:10,420 Així que no és fàcil simplement fer X.0 o alguna cosa així. 714 00:37:10,420 --> 00:37:12,790 >> Així que la solució a la qual està projectant. 715 00:37:12,790 --> 00:37:19,780 Així que la fosa és una forma en C per convertir d'un tipus variable a una altra. 716 00:37:19,780 --> 00:37:22,320 Així que aquí, 1 és un nombre enter. 717 00:37:22,320 --> 00:37:27,050 I en posar aquest flotador davant ella, estem llançant 1 a un flotador. 718 00:37:27,050 --> 00:37:30,350 I pel que aquest es convertirà la 1 a un 1,0. 719 00:37:30,350 --> 00:37:33,380 I això convertirà el 10 a un 10,0. 720 00:37:33,380 --> 00:37:36,790 >> I després les coses es comporten de manera semblant a la versió anterior només hem vist 721 00:37:36,790 --> 00:37:42,190 on, com era d'esperar, s'obté 0,10 i que voleu imprimir això. 722 00:37:42,190 --> 00:37:44,120 I podem fer-ho amb variables, també. 723 00:37:44,120 --> 00:37:47,376 Així que podem dir, float x dividit per flotador i. 724 00:37:47,376 --> 00:37:48,626 >> JOSÉ: Alguna pregunta? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Així com en matemàtiques regular, tenim prioritat dels operadors. 727 00:38:00,090 --> 00:38:06,960 Així que a la classe de matemàtiques, és més probable cridar ordre de les operacions. 728 00:38:06,960 --> 00:38:09,890 Aquí, el terme oficial és prioritat dels operadors. 729 00:38:09,890 --> 00:38:15,230 Però la prioritat dels operadors, o la majoria operadors, és com es pot esperar. 730 00:38:15,230 --> 00:38:22,660 >> Així que igual que en matemàtiques, 2 vegades 10 és serà agrupats més de prop que 731 00:38:22,660 --> 00:38:25,410 aquest 10 dividit per 2 i després 2. 732 00:38:25,410 --> 00:38:29,745 L'ordre de les operacions, que va a fer 2 temps de 10, 10 dividit per 2, i després 733 00:38:29,745 --> 00:38:32,720 que farà 20 més 5 més 2. 734 00:38:32,720 --> 00:38:37,020 Així que és com s'esperava, i es pot utilitzar parèntesi per agrupar expressions. 735 00:38:37,020 --> 00:38:41,063 No es pot utilitzar claudàtors per agrupar expressions. 736 00:38:41,063 --> 00:38:41,544 Sí? 737 00:38:41,544 --> 00:38:43,468 >> ALTAVEU 5: Podria realment simplement retrocedir un segon? 738 00:38:43,468 --> 00:38:47,316 Pots fer una int a una cadena? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Així que en C, pot convertir qualsevol cosa vol el que vulguis. 740 00:38:53,330 --> 00:38:55,600 Això no vol dir que sigui una bona cosa a fer. 741 00:38:55,600 --> 00:38:59,760 Així que quan llances 01:00 int a una cadena, que significa - 742 00:38:59,760 --> 00:39:03,240 i entrarem en aquest molt més a fons - 743 00:39:03,240 --> 00:39:03,720 >> JOSÉ: Molt més tard. 744 00:39:03,720 --> 00:39:06,840 >> ROB: jo no volia dir molt més tard, així que vaig tractar de canviar la meva sentència. 745 00:39:06,840 --> 00:39:13,370 Anem a entrar en molt més a fons més tard quan realment quan es té un 746 00:39:13,370 --> 00:39:14,810 variable de cadena - 747 00:39:14,810 --> 00:39:17,160 de manera que una cadena pot ser arbitràriament molt, oi? 748 00:39:17,160 --> 00:39:21,850 I hem estat dient que és un int 04:00 bytes i de llarg temps és de vuit 749 00:39:21,850 --> 00:39:23,620 bytes i un flotador és de quatre bytes. 750 00:39:23,620 --> 00:39:29,520 Així que una cadena, com un int, només té ha un cert nombre de bytes a la mateixa. 751 00:39:29,520 --> 00:39:31,800 I això serà de quatre bytes. 752 00:39:31,800 --> 00:39:34,750 >> Però una cadena pot ser bastant arbitràriament llarga, no? 753 00:39:34,750 --> 00:39:40,190 Així que hola món ja, si això és 10 personatges o el que sigui, això és ja 754 00:39:40,190 --> 00:39:42,670 serà durant els 4 bytes Puc cabre en una cadena. 755 00:39:42,670 --> 00:39:51,140 I llavors, ¿com funcionen realment les cordes és que que són lloc de la memòria aquesta cadena 756 00:39:51,140 --> 00:39:52,380 està sent cuidada. 757 00:39:52,380 --> 00:39:57,290 >> I així per aquí, quan dic cadena x iguals hola món, a l'interior de x és 758 00:39:57,290 --> 00:40:01,840 Només dic, oh, hola món s'emmagatzema en aquest lloc especial en la memòria. 759 00:40:01,840 --> 00:40:07,060 Així que si tractem de fer una sencer en un cadena, llavors estem tractant d'interpretar 760 00:40:07,060 --> 00:40:10,500 una part aleatòria de la memòria com una cadena. 761 00:40:10,500 --> 00:40:14,465 I que gairebé sempre trenca coses. 762 00:40:14,465 --> 00:40:17,040 >> JOSÉ: Però si això confon vostè, estarem cobrint el 763 00:40:17,040 --> 00:40:17,550 més en profunditat més endavant. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Si. 765 00:40:17,850 --> 00:40:20,540 Aquí és on vostè va per entrar en punters. 766 00:40:20,540 --> 00:40:25,485 I això és una part significativa dues setmanes d'aquest curs. 767 00:40:25,485 --> 00:40:28,275 >> ALTAVEU 6: Funciona igual que els objectes en altres idiomes o no realment? 768 00:40:28,275 --> 00:40:34,050 >> ROB: En altres llengües, objectes es representaria l'ús de punters. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 No és el mateix, però. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Alguna idea? 773 00:40:42,910 --> 00:40:43,760 >> JOSÉ: No 774 00:40:43,760 --> 00:40:44,185 No hi ha pensaments. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSÉ: Següent. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Només has d'anar amb això. 778 00:40:48,255 --> 00:40:48,670 Està bé. 779 00:40:48,670 --> 00:40:51,120 Així mòdul. 780 00:40:51,120 --> 00:40:53,900 Igual que tenim més, menys, dividir i multiplicar. 781 00:40:53,900 --> 00:40:56,720 Així mòdul és un que vostè pot no han vist abans. 782 00:40:56,720 --> 00:40:59,540 I simplement diu, donen em la resta. 783 00:40:59,540 --> 00:41:02,850 Així 55% 10. 784 00:41:02,850 --> 00:41:06,840 La resta de fer 55 dividit per 10 seria 5. 785 00:41:06,840 --> 00:41:09,630 Així el 55% 10 és 5. 786 00:41:09,630 --> 00:41:12,260 I 3% 5 seria 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 serà 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 serà 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSÉ: Una cosa a destacar amb això, també, és que potser no funcioni com s'esperava 790 00:41:20,670 --> 00:41:22,700 si s'utilitza un nombre negatiu. 791 00:41:22,700 --> 00:41:26,215 Així negatiu 5% 4, algunes persones Podríem pensar que és - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 ¿Què li sembla negatiu 5% 4 seria? 794 00:41:33,808 --> 00:41:34,792 >> ALTAVEU 5: Primer. 795 00:41:34,792 --> 00:41:37,920 >> JOSÉ: Així que hi ha gent que diu un, algunes persones diuen que un negatiu. 796 00:41:37,920 --> 00:41:38,450 Però el que - 797 00:41:38,450 --> 00:41:40,820 >> ROB: jo ni tan sols tenen , Va dir un d'ells. 798 00:41:40,820 --> 00:41:42,370 >> JOSÉ: Dos, ho sento. 799 00:41:42,370 --> 00:41:43,240 Hi ha gent que diu - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Tres. 801 00:41:43,450 --> 00:41:43,800 >> JOSÉ: Tres? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negatiu - 803 00:41:44,890 --> 00:41:45,950 que va ser el - negatiu de cinc - 804 00:41:45,950 --> 00:41:47,100 >> JOSÉ: Tres, tres, tres. 805 00:41:47,100 --> 00:41:48,450 Ho sento. 806 00:41:48,450 --> 00:41:51,910 A causa mòdul, generalment, quan has vist en altres llocs, en general significa 807 00:41:51,910 --> 00:41:54,000 retornar un nombre positiu, no? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Així que quan diem en matemàtiques, del 10%, que tendeixen a voler donar-li - 809 00:42:01,160 --> 00:42:05,980 si mod 10, llavors esperem obtenir un nombre entre 0 i 9. 810 00:42:05,980 --> 00:42:09,860 Aquí, aquest no és el cas que obtindrà els nombres negatius es retornen. 811 00:42:09,860 --> 00:42:15,898 >> JOSÉ: Així negatiu 5% 4 seria negatiu gener. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Però és estrany que vostè és-ing mod els números negatius, per començar. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Ometeu aquest. 815 00:42:25,970 --> 00:42:27,314 >> JOSÉ: Sí 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 D'acord. 818 00:42:29,990 --> 00:42:36,400 Així que una última cosa a destacar sobre carrosses és que és un comportament perillós, 819 00:42:36,400 --> 00:42:39,850 però els flotadors no són una exacta representació. 820 00:42:39,850 --> 00:42:46,190 Així que tornant a bytes més, recordi que un int és sempre quatre bytes i un 821 00:42:46,190 --> 00:42:47,830 flotador és sempre quatre bytes. 822 00:42:47,830 --> 00:42:51,340 Així que l'exemple de Lluc és bastant bo. 823 00:42:51,340 --> 00:42:55,730 >> Així que pensa en 1 dividit per 3. 824 00:42:55,730 --> 00:42:57,800 Així 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Si només tinc 32 bits, com pot Emmagatzemo 0,33333 exactament? 826 00:43:03,540 --> 00:43:07,250 I potser, per alguna raó, vostè diu, bé, bé, direm 827 00:43:07,250 --> 00:43:13,210 que aquest particular 1011001, anem a Només cal dir que ha d'haver 0,333333. 828 00:43:13,210 --> 00:43:16,960 Bé, n'hi ha prou amb un nombre finit de aquests bits, pel que és impossible 829 00:43:16,960 --> 00:43:22,550 representar cada punt flotant valor donat només 32 bits. 830 00:43:22,550 --> 00:43:25,580 >> Bé, és impossible representar qualsevol valor de coma flotant dóna infinita - 831 00:43:25,580 --> 00:43:28,480 així, donat qualsevol nombre finit de bits. 832 00:43:28,480 --> 00:43:38,265 Així que la qüestió aquí és, bé, quan es va utilitzar per imprimir a dos decimals, 833 00:43:38,265 --> 00:43:42,000 ens van fer arribar la resposta correcta 0.10. 834 00:43:42,000 --> 00:43:47,510 Però sota de la caputxa, és realment sent emmagatzemat el més a prop possible a 835 00:43:47,510 --> 00:43:51,790 0.10 com aquests bits pot representar. 836 00:43:51,790 --> 00:43:53,200 És això en la següent diapositiva? 837 00:43:53,200 --> 00:43:53,830 O no és així? 838 00:43:53,830 --> 00:43:54,660 >> JOSÉ: Sí, és això. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSÉ: Sí, vostè pot tot just estirar les notes una mica. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Jo només vaig per ampliar en l'últim en això. 842 00:43:59,700 --> 00:44:00,950 Oh, Déu meu, això és [inaudible]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Així que aquest nombre. 845 00:44:08,300 --> 00:44:12,300 Això és el que es va a imprimir si ens trobem amb aquest programa. 846 00:44:12,300 --> 00:44:20,340 I observi que no és realment un gran problema si només estem cuidant sobre com 847 00:44:20,340 --> 00:44:21,920 02:58 decimals. 848 00:44:21,920 --> 00:44:26,700 Com només ens originalment imprimim 0.10, i és per això que vam veure res dolent. 849 00:44:26,700 --> 00:44:31,380 Però una vegada que vam començar a entrar al exacta, el nombre exacte que és 850 00:44:31,380 --> 00:44:35,660 que representa, veiem que no pot exactament representar 0.1. 851 00:44:35,660 --> 00:44:40,900 >> I part del problema aquí és com, bé, això està bé, però, bé, 852 00:44:40,900 --> 00:44:46,120 en primer lloc, què passa si tractem de fer, resposta igual a igual a 0,1? 853 00:44:46,120 --> 00:44:49,200 És que va a tornar vertader o fals? 854 00:44:49,200 --> 00:44:51,850 I el que és difícil de dir. 855 00:44:51,850 --> 00:44:53,330 Crec que en realitat podria tornar true. 856 00:44:53,330 --> 00:44:55,265 Ho farà primer - 857 00:44:55,265 --> 00:44:56,180 No. 858 00:44:56,180 --> 00:45:00,090 La resposta és un cop de començar a tractar amb valors de coma flotant, que pràcticament 859 00:45:00,090 --> 00:45:05,150 tant no haurien d'usar la igualtat a causa d'aquesta imprecisió. 860 00:45:05,150 --> 00:45:09,470 >> I per tot el que sap, és la centèsima decimal que el 861 00:45:09,470 --> 00:45:13,670 punt flotant no va poder per a manejar correctament. 862 00:45:13,670 --> 00:45:18,180 I així la igualtat s'acaba de fallar fins i tot encara que el nombre - si haguessis estat 863 00:45:18,180 --> 00:45:24,450 utilitzant nombres exactes, els números han han estat exactament el mateix. 864 00:45:24,450 --> 00:45:27,790 És en el transcurs de 50 com càlculs utilitzant aquests flotant 865 00:45:27,790 --> 00:45:30,270 valors de punt, l'error pot construir i més i més, i 866 00:45:30,270 --> 00:45:31,125 coses tot just aconsegueixen malament. 867 00:45:31,125 --> 00:45:33,870 >> JOSÉ: I ha estat realment famosos exemples de que això passi. 868 00:45:33,870 --> 00:45:37,190 Igual que els enginyers de la NASA han arribat a aquest equivocades, coets causen a explotar en 869 00:45:37,190 --> 00:45:38,665 l'aire després que han estat llançats. 870 00:45:38,665 --> 00:45:41,490 I un munt de temes per l'estil. 871 00:45:41,490 --> 00:45:41,956 Així que si. 872 00:45:41,956 --> 00:45:45,218 >> ALTAVEU 6: Quan vostè diu 0.3 f, Què es trunca la resta? 873 00:45:45,218 --> 00:45:46,468 O s'arrodoneix cap amunt o cap avall? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Serà printf voltant d'ella? 876 00:45:50,200 --> 00:45:52,180 >> JOSÉ: Crec que trunca printf. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Així que de manera similar podem anar en la direcció oposada direcció d'aquest, on, en aquest cas, 879 00:45:59,890 --> 00:46:03,320 el més a prop que podria representar 0.1 va ser amb aquest número. 880 00:46:03,320 --> 00:46:06,820 El més proper que podria ser capaç de representar 0.2 és en la direcció oposada 881 00:46:06,820 --> 00:46:11,420 direcció, ,199999996356 o alguna cosa així. 882 00:46:11,420 --> 00:46:17,480 Així que si ens vam anar en aquesta direcció d' coses, llavors printf 0.3 f tornarien 883 00:46:17,480 --> 00:46:20,866 1.99 en lloc de 2.00. 884 00:46:20,866 --> 00:46:22,960 >> JOSÉ: I no estic del tot segur d'això. 885 00:46:22,960 --> 00:46:25,430 És possible que vulgueu escriure un petit, petit programa per només comprovar això. 886 00:46:25,430 --> 00:46:29,370 >> ROB: No obstant això, el que sí estem segurs és que si es va tractar de tirar això a un 887 00:46:29,370 --> 00:46:33,660 int, i tirant a un int va a fer que es trunqui el decimal, si 888 00:46:33,660 --> 00:46:38,140 intenta convertir 1.9999999 a un int, obtindrà 1. 889 00:46:38,140 --> 00:46:41,440 I així, en general vostè ha d'utilitzar el funció ronda a la biblioteca de matemàtiques. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Preguntes? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 D'acord. 894 00:46:48,982 --> 00:46:54,000 >> JOSÉ: Passem ara a les condicions i les expressions booleanes. 895 00:46:54,000 --> 00:46:58,120 Pel que han vist aquests abans. 896 00:46:58,120 --> 00:47:07,420 I en realitat, deixa assegurar-me que la meva equip està en el format correcte aquí. 897 00:47:07,420 --> 00:47:08,670 Espai. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Ho sentim, però haurem de fer front a poc amb punt de tall en les vores. 900 00:47:13,870 --> 00:47:15,830 >> Però sí, vostès han vist això abans de Scratch. 901 00:47:15,830 --> 00:47:19,930 Així que això d'aquí és una expressió que s'utilitza en 902 00:47:19,930 --> 00:47:21,250 una sentència condicional. 903 00:47:21,250 --> 00:47:23,930 Així que la resposta més gran que zero voluntat dir veritable o fals. 904 00:47:23,930 --> 00:47:26,530 I aquests són molt importants, perquè que ens permeten introduir 905 00:47:26,530 --> 00:47:28,670 lògica en el nostre codi. 906 00:47:28,670 --> 00:47:32,820 >> Així, per exemple, aquest és un programa escrit en scratch que demana a l'usuari 907 00:47:32,820 --> 00:47:36,980 per a un sencer i els diu si el sencer que et donaven era un 908 00:47:36,980 --> 00:47:38,690 nombre positiu o negatiu. 909 00:47:38,690 --> 00:47:42,980 I la conversió per aquí a veure és imprimir en primer lloc la declaració, 910 00:47:42,980 --> 00:47:43,870 dóna'm un sencer. 911 00:47:43,870 --> 00:47:45,980 I després se'ls pregunta per un nombre enter. 912 00:47:45,980 --> 00:47:49,870 >> I a continuació, utilitza la lògica condicional sobre aquí per comprovar si aquest nombre 913 00:47:49,870 --> 00:47:52,030 era en realitat major que zero o no. 914 00:47:52,030 --> 00:47:58,960 Així que aquí tenim una expressió booleana dins d'un condicional If. 915 00:47:58,960 --> 00:48:00,660 Hi ha alguna pregunta? 916 00:48:00,660 --> 00:48:03,030 Hi ha alguna pregunta sobre això? 917 00:48:03,030 --> 00:48:03,950 D'acord. 918 00:48:03,950 --> 00:48:06,140 >> Així que hi ha alguna cosa més que més gran que, és clar. 919 00:48:06,140 --> 00:48:10,385 Pot construir expressions booleanes utilitzant la majoria dels tipus de coses que vostè 920 00:48:10,385 --> 00:48:11,150 pensaria en matemàtiques. 921 00:48:11,150 --> 00:48:12,370 Així més gran que. 922 00:48:12,370 --> 00:48:13,740 Això hauria de ser un menor que. 923 00:48:13,740 --> 00:48:14,990 Ho sento. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 I la separació. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Déu no ho vulgui vostè ho deixa. 927 00:48:22,971 --> 00:48:23,620 >> JOSÉ: Bé. 928 00:48:23,620 --> 00:48:25,950 Per tant gran que, menor que, major que, o igual a, menor 929 00:48:25,950 --> 00:48:27,070 que, o igual a. 930 00:48:27,070 --> 00:48:31,980 Utilitzem igual doble per comprovar si hi ha la igualtat, perquè només és igual a medis 931 00:48:31,980 --> 00:48:32,810 assignació, oi? 932 00:48:32,810 --> 00:48:33,140 Sí 933 00:48:33,140 --> 00:48:37,130 I llavors podem també no és igual per utilitzant el signe d'exclamació, és igual. 934 00:48:37,130 --> 00:48:41,530 >> I aquest símbol d'exclamació pot També s'ampliarà de manera que si vostè vol 935 00:48:41,530 --> 00:48:44,050 invertir qualsevol tipus de Boole expressió, es pot fer això. 936 00:48:44,050 --> 00:48:48,530 Així que això s'avaluarà com true Només si la resposta és menys 937 00:48:48,530 --> 00:48:51,240 que o igual a zero. 938 00:48:51,240 --> 00:48:53,950 Teniu alguna pregunta respecte això? 939 00:48:53,950 --> 00:48:55,180 D'acord. 940 00:48:55,180 --> 00:48:58,840 >> Així també pot combinar aquests expressions usant lògica I i 941 00:48:58,840 --> 00:48:59,790 lògic Or. 942 00:48:59,790 --> 00:49:03,530 Així que això és només el símbol d'I, que ha de ser Shift, 7. 943 00:49:03,530 --> 00:49:07,720 I aquest és el símbol de canalització, que és No és un cas menor L. És el que 944 00:49:07,720 --> 00:49:09,440 això és just a sobre de la tecla d'Intro. 945 00:49:09,440 --> 00:49:12,870 Així que utilitza dos d'aquests per simbolitzar lògica i la lògica Or. 946 00:49:12,870 --> 00:49:18,180 >> Així que això només retornarà true si la resposta és un, dos, tres, o quatre. 947 00:49:18,180 --> 00:49:23,030 I això només es retornarà true si la resposta està més enllà que a cada costat. 948 00:49:23,030 --> 00:49:26,190 Així que no és d'un, dos, tres, o quatre. 949 00:49:26,190 --> 00:49:28,385 I la forma en què utilitzaria que en una expressió - 950 00:49:28,385 --> 00:49:29,990 >> ROB: O un zero o un cinc. 951 00:49:29,990 --> 00:49:32,200 >> JOSÉ: Zero o un cinc. 952 00:49:32,200 --> 00:49:32,380 Ho sento. 953 00:49:32,380 --> 00:49:33,320 Sí, sí, sí. 954 00:49:33,320 --> 00:49:34,180 D'acord. 955 00:49:34,180 --> 00:49:38,980 I per aquí ara, de la mateixa manera que utilitzaria aquesta expressió, una més petita 956 00:49:38,980 --> 00:49:42,000 banda l'expressió d'un Si condicional declaració, també ho utilitzaria la 957 00:49:42,000 --> 00:49:47,800 mateixa manera, amb només col · locar a l'interior de els parèntesis de la instrucció If. 958 00:49:47,800 --> 00:49:54,020 Així que aquest printf només es dispararà si la resposta és un, dos, tres, o quatre. 959 00:49:54,020 --> 00:49:56,002 Teniu alguna pregunta respecte la combinació expressions? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Així que hi ha una altra condicional Construïm que anomenem un If / Else. 962 00:50:04,240 --> 00:50:08,120 Així que, bàsicament, això significa ara, OK, Si cosa que jo volia veure no era 963 00:50:08,120 --> 00:50:11,600 veritable, llavors veu el Else i realitzar aquesta altra acció. 964 00:50:11,600 --> 00:50:15,570 Així que en aquest cas particular, em vaig preguntar l'usuari d'un sencer. 965 00:50:15,570 --> 00:50:17,790 És el nombre enter més gran que zero? 966 00:50:17,790 --> 00:50:18,310 Sí? 967 00:50:18,310 --> 00:50:20,100 Bé, llavors escollir un nombre positiu. 968 00:50:20,100 --> 00:50:22,320 Si no, llavors ha de tenir estat negatiu o zero. 969 00:50:22,320 --> 00:50:27,530 Així que va triar un nombre negatiu o un zero en aquest cas. 970 00:50:27,530 --> 00:50:29,235 Sí 971 00:50:29,235 --> 00:50:30,485 O un zero. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> I després també tenim If / Else, Si i Else. 974 00:50:39,300 --> 00:50:45,640 Així que això ens permet executar una seqüència de coses només si els primers fallen. 975 00:50:45,640 --> 00:50:49,540 Així que en aquest cas, ara estem fent l'últim que vostè escull zero. 976 00:50:49,540 --> 00:50:53,080 Així que si ells no van escollir un positiu ni un nombre negatiu, llavors han 977 00:50:53,080 --> 00:50:53,640 han recollit zero. 978 00:50:53,640 --> 00:50:56,720 Pel que només es va pel cadena com aquesta. 979 00:50:56,720 --> 00:50:59,960 >> Així un exemple de com una Si és diferent de - 980 00:50:59,960 --> 00:51:02,590 un if / else és diferent de només una seqüència de IFS. 981 00:51:02,590 --> 00:51:07,680 I aquesta és una pregunta comuna que la gent es pregunta és, bé, si et poses així un 982 00:51:07,680 --> 00:51:11,265 95 en CS50, què serà aquest programa et va dir? 983 00:51:11,265 --> 00:51:12,600 >> ALTAVEU 5: Tens una A. 984 00:51:12,600 --> 00:51:13,490 >> JOSÉ: Sí 985 00:51:13,490 --> 00:51:14,960 Tens tots els un d'aquests dreta. 986 00:51:14,960 --> 00:51:17,130 Tens una A, que tens una B, tinc una C i una D, oi? 987 00:51:17,130 --> 00:51:19,770 Així que tots aquests es van avaluar en ordre. 988 00:51:19,770 --> 00:51:23,570 Així, mentre que un 95 és més gran que 90, és també és més gran que 80, és també 989 00:51:23,570 --> 00:51:25,790 superior a 70, i és també major que 60. 990 00:51:25,790 --> 00:51:27,620 Així que tens tots aquests graus. 991 00:51:27,620 --> 00:51:31,630 I suposo que ho faria només volen que l'A 992 00:51:31,630 --> 00:51:34,060 >> La manera d'arreglar això és reemplaçar aquells amb Else / Si 's. 993 00:51:34,060 --> 00:51:37,540 Així que en aquest escenari, es veu que 95 és més gran que 90, i després ho fa 994 00:51:37,540 --> 00:51:38,885 no avaluar la resta dels estats. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Una pregunta sobre això? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Així que hi ha una altra classe condicional de estructura que tenim aquí, que ens 999 00:51:52,470 --> 00:51:53,390 truqui a una sentència switch. 1000 00:51:53,390 --> 00:51:57,390 Així que això li permet comprovar bàsicament qual cosa el valor d'un nombre es posa 1001 00:51:57,390 --> 00:51:59,000 en la sentència switch és. 1002 00:51:59,000 --> 00:52:03,200 Així que en aquest escenari, estem canviant en n, i nosaltres estem dient, oh, si n és 1003 00:52:03,200 --> 00:52:04,710 un, a continuació, imprimir aquesta declaració. 1004 00:52:04,710 --> 00:52:07,910 I a continuació, trencar, el que significa que la sortida sortir de la sentència switch. 1005 00:52:07,910 --> 00:52:12,670 >> Si no era un, llavors, bé, finalment, comprovar tots els casos. 1006 00:52:12,670 --> 00:52:16,280 I així es comprova si és un o dos o 3, i s'imprimeix en conseqüència. 1007 00:52:16,280 --> 00:52:19,780 I el que aquí aquesta paraula clau per defecte mitjans és si ells no van entrar en cap 1008 00:52:19,780 --> 00:52:21,690 dels que, a continuació, dir no vàlid. 1009 00:52:21,690 --> 00:52:25,910 Així que diguem que demano ni l'usuari em fa 4. 1010 00:52:25,910 --> 00:52:29,470 Bé, no coincideix amb cap d'aquests casos, pel que s'imprimirà el que està en el 1011 00:52:29,470 --> 00:52:30,540 secció default. 1012 00:52:30,540 --> 00:52:31,180 Sí, la pregunta? 1013 00:52:31,180 --> 00:52:32,614 >> ALTAVEU 5: Es pot utilitzar Boolean expressions en lloc de 1014 00:52:32,614 --> 00:52:33,570 un, dos, o tres? 1015 00:52:33,570 --> 00:52:36,940 >> JOSÉ: Llavors la pregunta és Es pot utilitzar Expressions booleanes en lloc d'un, 1016 00:52:36,940 --> 00:52:37,940 02:03? 1017 00:52:37,940 --> 00:52:40,520 I en C, crec que No pot fer això. 1018 00:52:40,520 --> 00:52:44,320 Però en altres idiomes, cosa que li podria trobar-se al final de la 1019 00:52:44,320 --> 00:52:46,460 semestre com JavaScript, es pot. 1020 00:52:46,460 --> 00:52:50,050 Bé, vostè hauria de calcular primer aquest valor i, a continuació, utilitzeu en el 1021 00:52:50,050 --> 00:52:50,650 canviar comunicat. 1022 00:52:50,650 --> 00:52:50,930 Sí? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Així que part dels beneficis de l'interruptor declaracions es pensa de si ho va fer 1024 00:52:54,760 --> 00:52:58,680 com If / Else, així com si n és igual a és igual a un o el que sigui. 1025 00:52:58,680 --> 00:53:00,300 Else / Si n és igual a és igual a dos, el que sigui. 1026 00:53:00,300 --> 00:53:01,960 Else / Si n és igual a és igual a tres. 1027 00:53:01,960 --> 00:53:05,930 Així que la forma en què el programa s'executi és el seria seqüencialment baixar aquesta llista 1028 00:53:05,930 --> 00:53:07,500 i comprovar, és n un? 1029 00:53:07,500 --> 00:53:08,040 Nope. 1030 00:53:08,040 --> 00:53:09,070 És núm 2? 1031 00:53:09,070 --> 00:53:09,490 Nope. 1032 00:53:09,490 --> 00:53:10,940 És núm 3? 1033 00:53:10,940 --> 00:53:11,710 Sí 1034 00:53:11,710 --> 00:53:12,610 Feu això. 1035 00:53:12,610 --> 00:53:15,270 >> Mentre que amb sentències switch, és realment capaç de compilar que sigui 1036 00:53:15,270 --> 00:53:16,360 molt ràpid. 1037 00:53:16,360 --> 00:53:19,550 I tan aviat com ho diu interruptor, diu, està bé, n és 2, jo sóc 1038 00:53:19,550 --> 00:53:23,060 immediatament va a saltar a on Se suposa que he de començar a executar. 1039 00:53:23,060 --> 00:53:26,080 Jo no vaig a comprovar en primer lloc, es n un, és n 2? 1040 00:53:26,080 --> 00:53:28,860 Es pot començar immediatament fent el que se suposa que ha de fer. 1041 00:53:28,860 --> 00:53:33,830 >> I a causa d'això, no es pot tenir condicions booleanes. 1042 00:53:33,830 --> 00:53:36,480 O del que hauria de fer el seqüencial, com, bé, és n 1043 00:53:36,480 --> 00:53:37,820 més gran que zero? 1044 00:53:37,820 --> 00:53:41,140 Else és n major de 10 o el que sigui. 1045 00:53:41,140 --> 00:53:44,780 >> JOSÉ: En aquest cas, si s'ha utilitzat Si / Si no, Si és així, llavors l'interruptor faria 1046 00:53:44,780 --> 00:53:47,792 executar aproximadament tres vegades més ràpid que el If / Else If. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Podem organitzar l'interruptor de tal de manera que no trenquem 1049 00:53:56,040 --> 00:53:57,520 després de cada un dels casos. 1050 00:53:57,520 --> 00:54:00,960 Així que en aquest cas, estic dividir el nombres que triem en un i 1051 00:54:00,960 --> 00:54:04,250 2 no és un nombre elevat i 3 que són un nombre alt. 1052 00:54:04,250 --> 00:54:08,290 >> Així doncs, en aquest cas, si n és un o dos, arribarà el cas i després ho farà 1053 00:54:08,290 --> 00:54:10,640 cauen a través, perquè no hi ha descans. 1054 00:54:10,640 --> 00:54:11,610 I que va a acabar aquí. 1055 00:54:11,610 --> 00:54:15,360 Així que si vam triar una, que va a fer el printf i després trencar perquè cap 1056 00:54:15,360 --> 00:54:17,610 aquest s'executa. 1057 00:54:17,610 --> 00:54:21,870 I per descomptat, si entren en tres o alguna altra cosa, llavors es saltarà 1058 00:54:21,870 --> 00:54:25,320 aquestes i no anar-hi, i s'executarà en el seu lloc el 1059 00:54:25,320 --> 00:54:27,490 línia corresponent. 1060 00:54:27,490 --> 00:54:29,390 Hi ha alguna pregunta sobre això? 1061 00:54:29,390 --> 00:54:29,780 Sí? 1062 00:54:29,780 --> 00:54:32,642 >> ALTAVEU 4: Vols aconseguir un error si es tingut un descans després d'un cas, però 1063 00:54:32,642 --> 00:54:34,550 no tenir alguna cosa perquè ho faci? 1064 00:54:34,550 --> 00:54:37,820 >> JOSÉ: Llavors la pregunta és li aconsegueix un error si té un descans després de 1065 00:54:37,820 --> 00:54:39,730 cas que un, però no hi ha res a fer? 1066 00:54:39,730 --> 00:54:41,520 I la resposta és no. 1067 00:54:41,520 --> 00:54:43,172 No va a aconseguir realment un error. 1068 00:54:43,172 --> 00:54:44,590 Sí, mm hmm. 1069 00:54:44,590 --> 00:54:54,540 >> Així com una espècie d'un petit canvi aquí, Vaig a posar un printf aquí. 1070 00:54:54,540 --> 00:54:55,790 Vaja. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Així que el imprimiria això si Vaig posar un a com a entrada? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Sí 1075 00:55:07,770 --> 00:55:10,360 Es diria que no va passar un alt nombre dues vegades, no? 1076 00:55:10,360 --> 00:55:13,500 Perquè seria arribar a aquest primer cas, no es trencaria i cauria 1077 00:55:13,500 --> 00:55:15,730 fins al segon cas. 1078 00:55:15,730 --> 00:55:16,950 Una pregunta sobre això? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Alguna altra pregunta? 1080 00:55:18,280 --> 00:55:20,840 >> JOSÉ: OK, refredar. 1081 00:55:20,840 --> 00:55:22,400 Està bé. 1082 00:55:22,400 --> 00:55:25,780 Així que no és altra cosa que anomenem un operador ternari, que és bàsicament una 1083 00:55:25,780 --> 00:55:29,010 sintaxi alternativa per fer Si i després la resta. 1084 00:55:29,010 --> 00:55:30,470 I et permet fer-ho tot en una sola línia. 1085 00:55:30,470 --> 00:55:34,110 Així que en aquest programa en especial, Estic preguntant a l'usuari per n. 1086 00:55:34,110 --> 00:55:37,190 I si n és major de 100, li dic ells van escollir un nombre alt. 1087 00:55:37,190 --> 00:55:39,560 Else els dic que triat un nombre baix. 1088 00:55:39,560 --> 00:55:43,030 >> Així que podem usar aquesta sintaxi molt llarg, cadena, S, i després verifiqui si n és 1089 00:55:43,030 --> 00:55:45,260 superior a 100 i assignar en conseqüència. 1090 00:55:45,260 --> 00:55:49,450 Però podem fer això molt més concisa mitjançant l'ús d'aquesta sintaxi operador ternari 1091 00:55:49,450 --> 00:55:52,090 que consisteix en una pregunta marca i dos punts. 1092 00:55:52,090 --> 00:55:55,070 Així que la interrogant és essencialment fer una pregunta, no? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: zoom Potser en això. 1094 00:55:56,625 --> 00:55:57,372 >> JOSÉ: Sí 1095 00:55:57,372 --> 00:56:00,210 Bon punt. 1096 00:56:00,210 --> 00:56:02,550 Així que aquest és l'operador ternari. 1097 00:56:02,550 --> 00:56:06,100 La primera vegada que faig la pregunta, n és més gran que 100? 1098 00:56:06,100 --> 00:56:09,770 Si ho és, llavors executo el primer part abans dels dos punts. 1099 00:56:09,770 --> 00:56:13,360 Si no és així, llavors executar la segona part després dels dos punts. 1100 00:56:13,360 --> 00:56:16,640 Així que si n és més gran que 100, a continuació, es recull alta i posa 1101 00:56:16,640 --> 00:56:18,360 que en la cadena s. 1102 00:56:18,360 --> 00:56:22,170 Si n és menor que 100, que recull baixa i després posa això en la cadena s. 1103 00:56:22,170 --> 00:56:30,186 Així que es condensarà aquest tros gran cap avall en aquesta sola línia. 1104 00:56:30,186 --> 00:56:32,010 >> ALTAVEU 5: Això és popular? 1105 00:56:32,010 --> 00:56:36,070 >> JOSÉ: Sí, és molt popular per als coses en essència el que desitja 1106 00:56:36,070 --> 00:56:38,700 do una assignació basada en algun tipus de condició. 1107 00:56:38,700 --> 00:56:43,110 I en aquest cas, estàvem intentant per assignar un valor a la cadena s. 1108 00:56:43,110 --> 00:56:44,840 No és tan - 1109 00:56:44,840 --> 00:56:47,670 Suposo que en realitat no prefereixo en els altres casos. 1110 00:56:47,670 --> 00:56:49,390 Però és especialment útil per a aquesta tasca. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Això és un patró bastant comú on es té una variable que 1112 00:56:54,490 --> 00:56:58,200 que vas a dir, si alguna cosa, ajust aquesta variable a un valor, una altra, estableix 1113 00:56:58,200 --> 00:56:59,810 aquesta variable a un altre valor. 1114 00:56:59,810 --> 00:57:03,360 I aquest és l'escenari on utilitzar un ternari. 1115 00:57:03,360 --> 00:57:05,220 >> JOSÉ: I vostè està estalviant un munt de línies, no? 1116 00:57:05,220 --> 00:57:08,090 I només fa que el codi es podria dir que una mica més llegible. 1117 00:57:08,090 --> 00:57:08,635 Sí, la pregunta? 1118 00:57:08,635 --> 00:57:12,384 >> ALTAVEU 6: Per a un ternari, podries anar, string s iguals seg, signe d'interrogació? 1119 00:57:12,384 --> 00:57:15,280 I llavors vostè podria tenir, per exemple, cinc opcions diferents. 1120 00:57:15,280 --> 00:57:18,310 I depenent del que el nombre de n va ser, triaria un d'aquests? 1121 00:57:18,310 --> 00:57:22,210 >> JOSÉ: tant el dubte és, hi ha una espècie de sintaxi on es pot fer la cadena 1122 00:57:22,210 --> 00:57:25,910 s és igual a N, i després tenir més de dos opcions després que el signe d'interrogació? 1123 00:57:25,910 --> 00:57:29,740 I una resposta simple és no, no hi ha realment una bona manera de fer això llevat que 1124 00:57:29,740 --> 00:57:33,850 que desitgi niar ternària múltiple operadors dins de l'altra. 1125 00:57:33,850 --> 00:57:38,050 >> Vostè podria fer com n major que 100, signe d'interrogació, i després un altre 1126 00:57:38,050 --> 00:57:41,850 operador ternari, n major que 50, signe d'interrogació, i el niu d'aquesta manera. 1127 00:57:41,850 --> 00:57:45,240 Però en aquest escenari, el codi és fent una mica il · legible i desordenat, 1128 00:57:45,240 --> 00:57:47,920 i potser seria millor anar només a una instrucció If / Else en aquest punt. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: I també, com a nota al marge, PHP implementa incorrectament el ternari 1130 00:57:54,530 --> 00:57:58,053 operador de manera que ternaris niats fins i tot no treballen com haurien. 1131 00:57:58,053 --> 00:57:58,840 >> JOSÉ: Sí 1132 00:57:58,840 --> 00:58:01,170 Així es posa una mica confús, especialment quan vas 1133 00:58:01,170 --> 00:58:02,145 a diferents idiomes. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Està bastant confús que llengües estan equivocats sobre això. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSÉ: Així que en realitat, només per aclarir, ¿Tothom sap el que 1137 00:58:11,510 --> 00:58:13,900 % S fa per aquí? 1138 00:58:13,900 --> 00:58:15,650 Una pregunta sobre això? 1139 00:58:15,650 --> 00:58:19,760 Suposo que només per la càmera, el% s bàsicament ens permet posar un marcador de posició 1140 00:58:19,760 --> 00:58:20,790 per a una cadena. 1141 00:58:20,790 --> 00:58:23,920 I després, al final, s'especifica que el la variable que volem posar en aquesta 1142 00:58:23,920 --> 00:58:25,500 marcador de posició és s. 1143 00:58:25,500 --> 00:58:27,730 Així que, bàsicament, té s i es posa aquí. 1144 00:58:27,730 --> 00:58:32,130 I després s'imprimirà, que va triar un alt o recollit un nombre baix. 1145 00:58:32,130 --> 00:58:33,770 D'acord. 1146 00:58:33,770 --> 00:58:36,970 >> Així bucles li permeten realitzar coses amb moviments circulars, oi? 1147 00:58:36,970 --> 00:58:40,300 És possible que hagi trobat amb això en Esgarrapades en forma de bucles per sempre 1148 00:58:40,300 --> 00:58:45,650 o Repetir Fins o Repetir una determinada nombre de vegades. 1149 00:58:45,650 --> 00:58:47,540 Per què és tan bo per a nosaltres? 1150 00:58:47,540 --> 00:58:51,500 Doncs bé, en C, diguem que tenim aquest cançó implementat en scratch que 1151 00:58:51,500 --> 00:58:53,450 canta, aquesta és la cançó que mai acaba. 1152 00:58:53,450 --> 00:58:55,710 Simplement segueix i segueix i per sempre i per sempre. 1153 00:58:55,710 --> 00:58:59,395 Bé, realment no es pot fer un programa que té un nombre infinit de printf 1154 00:58:59,395 --> 00:59:00,850 declaracions en ella, no? 1155 00:59:00,850 --> 00:59:04,900 >> Així que en aquest escenari en particular, d'una manera que vostè podria fer aquesta feina i 1156 00:59:04,900 --> 00:59:09,330 per fer que imprimeixi sempre és en lloc d'utilitzar un bucle While. 1157 00:59:09,330 --> 00:59:13,640 Així que un bucle while s'executarà el que hi ha en el cos dels dos suports que 1158 00:59:13,640 --> 00:59:17,250 pertany a la mateixa sobre la base del que és la condició. 1159 00:59:17,250 --> 00:59:21,170 Així, en aquest exemple particular abans, si volem imprimir això per sempre, el que 1160 00:59:21,170 --> 00:59:23,590 Què podem fer? 1161 00:59:23,590 --> 00:59:25,190 Bé, és clar, no? 1162 00:59:25,190 --> 00:59:32,290 >> Així que aquest tipus de combina la idea d'alguna expressió booleana 1163 00:59:32,290 --> 00:59:33,610 juntament amb un bucle. 1164 00:59:33,610 --> 00:59:35,780 I ens assabentem de Boole expressions anteriors. 1165 00:59:35,780 --> 00:59:39,650 Així que cada vegada que la condició interior de Mentre que segueix sent cert, aquest bucle 1166 00:59:39,650 --> 00:59:41,480 executarà i segueix i segueix. 1167 00:59:41,480 --> 00:59:44,640 I en aquest cas, si només subministrem amb dades veritables, això provoca un infinit 1168 00:59:44,640 --> 00:59:49,310 bucle que imprimeix la cançó una i altra vegada i en el que desitjàvem abans sense 1169 00:59:49,310 --> 00:59:52,410 tenir un programa que té una infinita nombre d'instruccions printf, que és 1170 00:59:52,410 --> 00:59:55,220 no és possible. 1171 00:59:55,220 --> 00:59:57,810 >> Així que més convincent, però, vostè pot utilitzar això amb un 1172 00:59:57,810 --> 00:59:59,710 variable i una condició. 1173 00:59:59,710 --> 01:00:04,420 Així que diguem que volem repetir l' frase, totalment desgavellat, 10 vegades. 1174 01:00:04,420 --> 01:00:08,380 Llavors, què es pot fer amb un bucle While és primer pot inicialitzar un comptador 1175 01:00:08,380 --> 01:00:10,860 fora variable de la Mentre bucle a 10. 1176 01:00:10,860 --> 01:00:14,360 I llavors, bàsicament, cada vegada que es vagi a través del bucle While, imprimiu 1177 01:00:14,360 --> 01:00:19,090 la declaració i després disminueix el variable comptador fins que al final, 1178 01:00:19,090 --> 01:00:23,020 en algun moment, un cop es resta prou vegades, 1 de I bastants vegades - 1179 01:00:23,020 --> 01:00:27,290 i només per aclarir, menys que menys vol dir que és igual a mínim 1. 1180 01:00:27,290 --> 01:00:31,280 >> Això bàsicament em porten a la punt en el qual una vegada vaig arribar a zero, 1181 01:00:31,280 --> 01:00:35,260 condició ja no és veritable i pel que surt fora del bucle. 1182 01:00:35,260 --> 01:00:37,045 Així que totalment desgavellat només imprimeix 10 vegades. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Una pregunta sobre un bucle While? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 D'acord. 1187 01:00:46,790 --> 01:00:50,550 >> Així que hi ha una manera de fer el que acabem de va fer d'una manera més concisa amb 1188 01:00:50,550 --> 01:00:51,715 el que anomenem un bucle. 1189 01:00:51,715 --> 01:00:55,750 Per tant un bucle Per consisteix en un inicialització, una condició, i un 1190 01:00:55,750 --> 01:00:58,950 actualització, igual que teníem abans en aquest bucle While. 1191 01:00:58,950 --> 01:00:59,890 Així que anem a fer una ullada. 1192 01:00:59,890 --> 01:01:02,900 En aquest cicle While, vam tenir una inicialització, llavors tenia un 1193 01:01:02,900 --> 01:01:04,260 condició que ens registrem. 1194 01:01:04,260 --> 01:01:06,450 I després vam tenir una actualització pas a la part superior. 1195 01:01:06,450 --> 01:01:10,060 >> Amb un bucle For, això bàsicament pren aquestes tres coses i el condensa 1196 01:01:10,060 --> 01:01:11,370 cap avall en una línia. 1197 01:01:11,370 --> 01:01:15,130 Així que el primer que es fa en el Per bucle és la inicialització. 1198 01:01:15,130 --> 01:01:19,090 I llavors vostè fa un punt i coma, i després ho fa l'estat, que és el 1199 01:01:19,090 --> 01:01:22,200 més gran que zero va per allà, i després la fase d'actualització. 1200 01:01:22,200 --> 01:01:26,470 Així que això es porta a terme en el final del cos del bucle. 1201 01:01:26,470 --> 01:01:28,790 Així que aquests dos programes són essencialment equivalent. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Alguna pregunta? 1204 01:01:33,870 --> 01:01:37,000 Llavors, què és una diferència entre aquests dos? 1205 01:01:37,000 --> 01:01:38,000 Algú pot assenyalar? 1206 01:01:38,000 --> 01:01:40,480 Podria ser una mica més subtil. 1207 01:01:40,480 --> 01:01:41,930 És només una diferència molt petita. 1208 01:01:41,930 --> 01:01:42,330 Sí? 1209 01:01:42,330 --> 01:01:49,008 >> ALTAVEU 5: No podria fer servir la variable i fora del bucle Per 1210 01:01:49,008 --> 01:01:49,962 [Inaudible]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSÉ: Exactament. 1212 01:01:50,900 --> 01:01:53,550 Així que això és una cosa que anem a arribar a més tard anomenat abast variable. 1213 01:01:53,550 --> 01:01:56,610 Però, en essència, aquest int vides I fora d'aquest bucle While. 1214 01:01:56,610 --> 01:01:59,800 Així que un cop aquest bucle Mentre es fa execució, seré capaç d'utilitzar el més tard 1215 01:01:59,800 --> 01:02:00,880 en en el programa. 1216 01:02:00,880 --> 01:02:05,430 >> Mentre que amb aquest bucle, aquesta int I està en l'àmbit interior d'aquest bucle. 1217 01:02:05,430 --> 01:02:10,240 I pel fet que és a l'interior d'aquesta porció del bucle Per, que comença 1218 01:02:10,240 --> 01:02:13,200 en els parèntesis, i acaba amb la clau d'allí. 1219 01:02:13,200 --> 01:02:16,120 Qualsevol cosa que es declara dins d' aquí no es pot utilitzar a l'aire lliure. 1220 01:02:16,120 --> 01:02:20,420 Així que si tracte d'usar que fos, que va a digues-me, símbol declarat. 1221 01:02:20,420 --> 01:02:22,420 I, essencialment, no ho faria ser capaç d'utilitzar. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: I així, fa 10 anys, en literalment tots els casos, les claus són 1223 01:02:28,460 --> 01:02:31,140 el que s'utilitza per a determinar l'abast d'una variable. 1224 01:02:31,140 --> 01:02:37,240 Així que aquí, int I és igual a 10 està declarada dins d'aquest 1225 01:02:37,240 --> 01:02:38,520 joc de claus. 1226 01:02:38,520 --> 01:02:42,530 I així, sempre que s'intenta utilitzar I abans que aquesta clau de tancament, està bé. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 És possible que aparegui en escriure fer, vostè veure guió, guió, std, iguals, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Així que és una versió posterior de C que GCC ha implementat, que també dóna 1230 01:02:57,100 --> 01:02:58,740 aquest accés directe. 1231 01:02:58,740 --> 01:03:03,505 Així que aquest utilitza per no ser permès en C. es pot veure per què, ja que aquest int 1232 01:03:03,505 --> 01:03:07,600 I és fora d'aquest claudàtor però encara està considerat com al 1233 01:03:07,600 --> 01:03:09,750 abast d'aquestes claus. 1234 01:03:09,750 --> 01:03:14,120 Però això és una cosa molt convenient, i el que és una bona extensió. 1235 01:03:14,120 --> 01:03:15,370 >> JOSÉ: Alguna pregunta? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 D'acord. 1238 01:03:19,260 --> 01:03:22,820 Llavors, què és més útil és que de vegades vostè vol una espècie de dinamisme en 1239 01:03:22,820 --> 01:03:23,410 seu bucle, oi? 1240 01:03:23,410 --> 01:03:26,350 No vol imprimir només necessàriament totalment desgavellat tot el temps, que 1241 01:03:26,350 --> 01:03:28,650 desitgi comptar de 10 o alguna cosa així. 1242 01:03:28,650 --> 01:03:32,010 I el que pot utilitzar la variable de comptador dins d'aquest bucle també. 1243 01:03:32,010 --> 01:03:35,530 I en aquest cas, aquest programa només un compte enrere de 10 tot el camí cap avall. 1244 01:03:35,530 --> 01:03:39,260 I què s'imprimeix? 1245 01:03:39,260 --> 01:03:42,790 No imprimir zero, bé, perquè quan - 1246 01:03:42,790 --> 01:03:45,460 Sí, també no s'imprimeix 11. 1247 01:03:45,460 --> 01:03:49,200 >> Per tant, no s'imprimeix zero, perquè quan I és zero, record, avalua 1248 01:03:49,200 --> 01:03:52,170 la condició abans que entri en per executar el cos del bucle. 1249 01:03:52,170 --> 01:03:56,820 I quan I és zero, això és fals, per la qual cosa no imprimir el compte enrere 1250 01:03:56,820 --> 01:04:00,200 zero, només s'imprimeix el recompte baix 10 fins al fons a 1. 1251 01:04:00,200 --> 01:04:03,420 Si realment volem que s'imprimeixi a zero, llavors podríem posar un signe igual 1252 01:04:03,420 --> 01:04:04,750 després d'aquest signe més gran que. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 D'acord. 1255 01:04:10,130 --> 01:04:16,410 >> Així que una manera de fer la validació d'entrada, que és quan vostè li demana a l'usuari de fer 1256 01:04:16,410 --> 01:04:18,620 alguna cosa, vostè vol assegurar-se que seguir les seves instruccions, és utilitzar 1257 01:04:18,620 --> 01:04:19,400 el bucle While, oi? 1258 01:04:19,400 --> 01:04:22,990 Així que en aquest cas particular, estic demanant per a un nombre positiu i llavors estic 1259 01:04:22,990 --> 01:04:23,810 l'espera per a l'entrada. 1260 01:04:23,810 --> 01:04:28,210 >> I després he comprovat Encara que l'entrada és menor que zero, segueixi preguntant. 1261 01:04:28,210 --> 01:04:32,100 Així que, mentre em donen un nombre això no és positiu, segueix preguntant, 1262 01:04:32,100 --> 01:04:33,600 seguir demanant, seguir preguntant. 1263 01:04:33,600 --> 01:04:35,860 Però el que és una espècie d'estrany en això? 1264 01:04:35,860 --> 01:04:38,570 O el que no sembla òptima sobre aquesta estructura aquí? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Algú? 1267 01:04:44,758 --> 01:04:45,234 Sí? 1268 01:04:45,234 --> 01:04:47,614 >> ALTAVEU 6: T'estàs repetint la instrucció dues vegades. 1269 01:04:47,614 --> 01:04:48,100 >> JOSÉ: així. 1270 01:04:48,100 --> 01:04:50,090 Així que tenim dues instruccions printf aquí, oi? 1271 01:04:50,090 --> 01:04:53,440 Així que hi ha una manera que poguéssim aconseguir això només a un que faria la nostra 1272 01:04:53,440 --> 01:04:57,170 codi més fàcil de llegir i un poc més net. 1273 01:04:57,170 --> 01:05:00,180 I llavors no hauríem de han Entra al doble de bé. 1274 01:05:00,180 --> 01:05:03,740 I una manera que vostè pot fer això és mitjançant l'ús d'un bucle Do-While. 1275 01:05:03,740 --> 01:05:07,670 >> I un bucle do-while és bàsicament un diferent forma d'un bucle While, on 1276 01:05:07,670 --> 01:05:11,460 el que està dins de les claus serà executat almenys una vegada. 1277 01:05:11,460 --> 01:05:14,840 Així que aquí, declaro, int d'entrada, fora primer. 1278 01:05:14,840 --> 01:05:18,100 I llavors m'acaba de dir, fer això mentre que l'entrada d'instruccions 1279 01:05:18,100 --> 01:05:19,140 és menor que zero. 1280 01:05:19,140 --> 01:05:20,530 Així que colpeja el Do primer. 1281 01:05:20,530 --> 01:05:24,190 Sempre va a executar aquest almenys una vegada, de manera que sempre li demanarà a l'usuari 1282 01:05:24,190 --> 01:05:25,960 per a l'entrada d'almenys una vegada. 1283 01:05:25,960 --> 01:05:29,390 I a continuació, s'avalua que l'entrada, i continua en un cercle. 1284 01:05:29,390 --> 01:05:30,135 Sí, la pregunta? 1285 01:05:30,135 --> 01:05:32,602 >> ALTAVEU 6: Hi ha una manera de fer-ho [Inaudible] tipus, igual que si vostè diu, 1286 01:05:32,602 --> 01:05:34,268 GetString i algú [inaudible] 1287 01:05:34,268 --> 01:05:35,220 Hi ha alguna manera de [inaudible] 1288 01:05:35,220 --> 01:05:40,060 >> JOSÉ: tant el dubte és, hi ha una manera de fer la validació d'entrada si l'usuari 1289 01:05:40,060 --> 01:05:41,850 no posa en el dret tipus de variable? 1290 01:05:41,850 --> 01:05:44,460 Així que si demanem un int i donar-nos una cadena en lloc. 1291 01:05:44,460 --> 01:05:49,110 I en les funcions que implementem per a vostè, GetInt, GetString en totes 1292 01:05:49,110 --> 01:05:52,680 aquestes funcions, que en realitat ja fer aquest tipus d'entrada de tipus bàsic 1293 01:05:52,680 --> 01:05:54,120 validació sota el capó. 1294 01:05:54,120 --> 01:05:57,390 Així que si vostè està utilitzant les funcions que et va donar, que en realitat no ha de fer. 1295 01:05:57,390 --> 01:06:01,380 >> Però si vostè vol mirar més en com en realitat es pot fer això, vostè pot mirar 1296 01:06:01,380 --> 01:06:03,360 sota el capó a l'arxiu I/O-- 1297 01:06:03,360 --> 01:06:07,990 No present, les funcions d'E / S estàndard com una lectura de l'entrada estàndard i 1298 01:06:07,990 --> 01:06:08,580 sortida estàndard. 1299 01:06:08,580 --> 01:06:10,630 I vostè pot tenir una millor idea de com pot fer això. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Un problema, però, és específicament amb l'exemple que 1301 01:06:13,670 --> 01:06:17,070 va dir que espera una cadena i entro en un int. 1302 01:06:17,070 --> 01:06:20,110 Com saber la diferència entre voler intencionalment la 1303 01:06:20,110 --> 01:06:23,130 cadena 123 davant voler el int 123? 1304 01:06:23,130 --> 01:06:29,230 Així cadena, és gairebé no hi ha validació, és només el que 1305 01:06:29,230 --> 01:06:31,600 introduït vostè interpretar com una cadena. 1306 01:06:31,600 --> 01:06:35,790 >> Int és més fàcil, perquè no importa l' d'entrada es pren per part de l'usuari, que són 1307 01:06:35,790 --> 01:06:37,470 tenint sempre una cadena. 1308 01:06:37,470 --> 01:06:40,650 I perquè la cadena es pot llavors comprovar, són tots ells 1309 01:06:40,650 --> 01:06:44,218 els dígits numèrics en realitat? 1310 01:06:44,218 --> 01:06:45,170 >> JOSÉ: OK. 1311 01:06:45,170 --> 01:06:46,420 Una pregunta sobre un bucle Do-While? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, i això és també - 1313 01:06:49,170 --> 01:06:55,130 que es remunta al seu abast, alguna cosa comú error està tractant d'utilitzar alguns locals 1314 01:06:55,130 --> 01:06:59,540 variable a partir de dins d'aquest do-while bucle dins d'aquesta condició. 1315 01:06:59,540 --> 01:07:02,850 I en realitat, si ens lliurem de això i va dir, equival int entrada 1316 01:07:02,850 --> 01:07:06,990 GetInt, el compilador va a cridar nosaltres, perquè d'entrada no existeix 1317 01:07:06,990 --> 01:07:08,900 fora de l'àmbit d'aplicació de aquestes claus. 1318 01:07:08,900 --> 01:07:10,792 >> JOSÉ: I és per això que Necessitareu aquesta línia aquí. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 D'acord. 1321 01:07:14,630 --> 01:07:17,530 Així també es pot sortir d'un llaç anticipadament si vostè vol. 1322 01:07:17,530 --> 01:07:21,240 Així que aquesta és una forma diferent de la implementació del que acabem de implementem. 1323 01:07:21,240 --> 01:07:24,340 I en lloc d'utilitzar la condició dins dels parèntesis, estem usant una 1324 01:07:24,340 --> 01:07:26,920 Si la declaració a l'interior del cos del bucle Do-While. 1325 01:07:26,920 --> 01:07:30,000 >> I en el fons, quan l'entrada és finalment més gran que zero, ho farem 1326 01:07:30,000 --> 01:07:31,000 trencar el bucle. 1327 01:07:31,000 --> 01:07:33,420 I així anirem a per totes el camí fins aquí. 1328 01:07:33,420 --> 01:07:37,920 I es pot veure que això faria probablement serà preferit en aquest 1329 01:07:37,920 --> 01:07:39,870 escenari, perquè és una mica poc més net i una mica 1330 01:07:39,870 --> 01:07:41,380 mica més fàcil de llegir. 1331 01:07:41,380 --> 01:07:45,210 Atès que la present, quin tipus de tenir línies addicionals en el mateix. 1332 01:07:45,210 --> 01:07:47,890 És només una mica més lleig, Suposo que, en cert sentit. 1333 01:07:47,890 --> 01:07:48,530 Sí, la pregunta? 1334 01:07:48,530 --> 01:07:52,178 >> ALTAVEU 4: Trencarà només rep a sortir d'un joc de claus? 1335 01:07:52,178 --> 01:07:53,080 >> JOSÉ: així. 1336 01:07:53,080 --> 01:07:58,100 Per tant el dubte es trencarà només a sortir d'un bucle? 1337 01:07:58,100 --> 01:07:59,280 I la resposta és sí. 1338 01:07:59,280 --> 01:08:04,290 Així que si vostè ha niat bucles For, per exemple, si tinc Per int i és igual a 0 1339 01:08:04,290 --> 01:08:09,040 fins a 10 i després per int J és igual a 0 fins a 10, si trenco l'interior 1340 01:08:09,040 --> 01:08:12,310 llaç, jo encara anar per al bucle extern. 1341 01:08:12,310 --> 01:08:15,760 Així que mantindrà la realització de la operacions a l'exterior. 1342 01:08:15,760 --> 01:08:17,640 Una pregunta sobre això? 1343 01:08:17,640 --> 01:08:18,000 Sí? 1344 01:08:18,000 --> 01:08:21,760 >> ALTAVEU 5: Però trencar úniques funcions per claus, no per a una altra 1345 01:08:21,760 --> 01:08:22,230 declaracions? 1346 01:08:22,230 --> 01:08:22,700 [Inaudible] 1347 01:08:22,700 --> 01:08:27,620 >> JOSÉ: tant el dubte és es trencarà única funció dels bucles en contraposició a 1348 01:08:27,620 --> 01:08:29,014 altres declaracions com si? 1349 01:08:29,014 --> 01:08:32,950 I sí, aquest és el cas, perquè que està trencant cap a fora d'un bucle, a la dreta, 1350 01:08:32,950 --> 01:08:33,630 en un sentit. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: En la gran majoria dels casos, és aquest és el tipus de Si alguna cosa, 1352 01:08:37,215 --> 01:08:37,660 a continuació, trencar. 1353 01:08:37,660 --> 01:08:41,580 Així que vostè no ha de trencar per aplicar a Si el que està embolicant al seu voltant. 1354 01:08:41,580 --> 01:08:45,250 I també, això no és molt d'un bucle, però recordeu que els interruptors són també 1355 01:08:45,250 --> 01:08:46,340 escapat de per descansos. 1356 01:08:46,340 --> 01:08:48,390 Vam veure les pauses s'utilitzen amb interruptors abans. 1357 01:08:48,390 --> 01:08:52,189 >> JOSÉ: I vostè també pot usar- en els bucles while i for bucles. 1358 01:08:52,189 --> 01:08:54,560 Alguna pregunta? 1359 01:08:54,560 --> 01:08:55,830 D'acord. 1360 01:08:55,830 --> 01:08:57,779 Així que la propera és fins funcions. 1361 01:08:57,779 --> 01:09:01,500 Així que es podria haver fet servir un d'aquests BIOB blocs en el seu projecte de Scratch. 1362 01:09:01,500 --> 01:09:04,569 I això permet, bàsicament, definir un conjunt de 1363 01:09:04,569 --> 01:09:05,680 instruccions que s'han de seguir. 1364 01:09:05,680 --> 01:09:09,569 >> I el que vull dir amb això és que pensarem de tornada a les matemàtiques, a la dreta, l'àlgebra. 1365 01:09:09,569 --> 01:09:13,370 Vostè té el que s'anomena una funció de x, alguna variable, i diguem que aquesta 1366 01:09:13,370 --> 01:09:16,080 funció és f de x és igual a x més 5. 1367 01:09:16,080 --> 01:09:20,410 Així que vostè pot pensar en f de x com aquest negre caixa que porta en 15 i després 1368 01:09:20,410 --> 01:09:22,590 produeix 20. 1369 01:09:22,590 --> 01:09:26,630 >> Així de forma més general, una funció és cosa que pren alguns insums i 1370 01:09:26,630 --> 01:09:27,880 després produeix algunes sortides. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 I per què són bones funcions? 1373 01:09:32,960 --> 01:09:35,189 Són bons per a una sèrie de raons. 1374 01:09:35,189 --> 01:09:40,470 Així que, algú vol prendre una punyalada al que l'organització vol dir? 1375 01:09:40,470 --> 01:09:42,630 En termes de quines funcions són útils? 1376 01:09:42,630 --> 01:09:43,090 Sí? 1377 01:09:43,090 --> 01:09:44,735 >> ALTAVEU 4: Fa que el seu lectura del codi. 1378 01:09:44,735 --> 01:09:45,399 >> JOSÉ: així. 1379 01:09:45,399 --> 01:09:47,670 Així que una de les coses és que fa el codi sigui més fàcil de llegir, oi? 1380 01:09:47,670 --> 01:09:53,710 En lloc de tenir com int x és igual a x vegades x vegades x, puc tenir el cub de x, 1381 01:09:53,710 --> 01:09:57,190 que és més llegible i més comprensible per a un lector. 1382 01:09:57,190 --> 01:10:01,150 >> L'organització és també en termes de dividir el codi en manejable 1383 01:10:01,150 --> 01:10:05,610 porcions, de manera que en lloc d'intentar posar en pràctica tot això en una llarga secció 1384 01:10:05,610 --> 01:10:09,070 en principal, es pot ordenar de dividir- en com, OK, anem a escriure una funció 1385 01:10:09,070 --> 01:10:11,910 al cub alguna cosa, anem a escriure una funcionar per quadrar alguna cosa. 1386 01:10:11,910 --> 01:10:15,950 D'aquesta manera vostè pot dividir en minúscula, petites peces que es poden abordar 1387 01:10:15,950 --> 01:10:18,944 en lloc de tractar d'abordar un gran problema alhora. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: O fins i tot petites, petites peces que vostè i la seva parella pot fer front. 1389 01:10:21,806 --> 01:10:22,283 >> JOSÉ: Sí 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Així que en lloc de dos vostè tractant d'implantar un 1391 01:10:23,855 --> 01:10:27,170 funcionar al mateix temps. 1392 01:10:27,170 --> 01:10:28,800 >> JOSÉ: Simplificació. 1393 01:10:28,800 --> 01:10:30,050 Algú vol prendre una conjectura? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Sí? 1396 01:10:33,410 --> 01:10:34,675 >> ALTAVEU 5: Més repetició. 1397 01:10:34,675 --> 01:10:35,260 >> JOSÉ: així. 1398 01:10:35,260 --> 01:10:39,210 Així que una cosa que vostè pot fer amb simplificació és que és una espècie de sobre 1399 01:10:39,210 --> 01:10:42,520 la mateixa línia que la reutilització és que una vegada que escric una funció de cub, que pugui 1400 01:10:42,520 --> 01:10:45,410 només ha d'utilitzar una i altra vegada i una altra de nou en el meu programa en lloc d'escriure 1401 01:10:45,410 --> 01:10:49,610 x vegades x vegades x més i una i altra vegada. 1402 01:10:49,610 --> 01:10:52,980 I aquí també la simplificació només vol dir que farà que el seu codi de tipus de 1403 01:10:52,980 --> 01:10:55,900 més fàcil de depurar un cop es divideix això en funcions. 1404 01:10:55,900 --> 01:10:58,250 Perquè llavors vostè pot localitzar on seus problemes de tipus de són. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Alguna pregunta? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Així que una altra idea és la abstracció, oi? 1409 01:11:06,540 --> 01:11:07,390 Aquest quadre negre. 1410 01:11:07,390 --> 01:11:11,360 Com sap vostè el que fa GetInt per rebre l'entrada de l'usuari? 1411 01:11:11,360 --> 01:11:12,510 Realment no hem dit a vostè, oi? 1412 01:11:12,510 --> 01:11:15,670 Tot el que hem dit és GetInt fa exactament el que diu que fa. 1413 01:11:15,670 --> 01:11:18,440 Així que encara que no li diem com funciona, encara sap. 1414 01:11:18,440 --> 01:11:21,670 >> Així que en aquest cas particular, es tracta d' una funció quàdruple, que fa 1415 01:11:21,670 --> 01:11:24,520 diferents coses per a una entrada per produir una sortida. 1416 01:11:24,520 --> 01:11:28,050 I vostè pot quadruplicar el nombre multiplicant per quatre. 1417 01:11:28,050 --> 01:11:30,790 O potser anomenem poc canviar per dos. 1418 01:11:30,790 --> 01:11:32,960 I anem a cobrir aquest una mica més tard. 1419 01:11:32,960 --> 01:11:36,570 I no hi ha necessitat de saber com aquesta funció realment funciona, sempre que 1420 01:11:36,570 --> 01:11:37,640 funciona com s'indica. 1421 01:11:37,640 --> 01:11:40,740 >> Així que sota el capó, que podria ser com, torni els temps d'entrada 1422 01:11:40,740 --> 01:11:41,690 08:00 dividit per dos. 1423 01:11:41,690 --> 01:11:42,510 I no sabràs, oi? 1424 01:11:42,510 --> 01:11:44,970 Tot el que necessites saber és fa el que diu. 1425 01:11:44,970 --> 01:11:48,070 Així que això és el útil sobre l'abstracció. 1426 01:11:48,070 --> 01:11:52,910 >> I una altra cosa és una espècie d'aquesta idea de la localització del seu codi a 01:00 1427 01:11:52,910 --> 01:11:54,280 particular la secció. 1428 01:11:54,280 --> 01:11:57,450 Així que si vostè té un problema, no ho fa has d'anar per tot el codi que intenta 1429 01:11:57,450 --> 01:11:58,730 per fixar on era el problema. 1430 01:11:58,730 --> 01:12:00,990 Així que en aquest cas, he implementat cubicar malament. 1431 01:12:00,990 --> 01:12:02,820 Vaig pensar cub estava multiplicant per tres. 1432 01:12:02,820 --> 01:12:05,760 >> Així que en aquest cas, es tracta d'un programa que acaba de multiplicar per tres 1433 01:12:05,760 --> 01:12:06,750 a tot arreu. 1434 01:12:06,750 --> 01:12:10,910 I hi ha un altre programa que té cub factorizada fora en una funció. 1435 01:12:10,910 --> 01:12:14,040 I ara si vull arreglar el meu error aquí, he de arreglar cada línia 1436 01:12:14,040 --> 01:12:15,620 de codi d'aquest programa. 1437 01:12:15,620 --> 01:12:19,190 Mentre que, d'altra banda, si faig servir el funció, només ha de canviar 1438 01:12:19,190 --> 01:12:20,650 el que estava malament en un sol lloc. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Així, en ciències de la computació, que trucar a les entrades i sortides. 1441 01:12:28,730 --> 01:12:31,640 Les entrades es denominen paràmetres o arguments i sortides es diuen 1442 01:12:31,640 --> 01:12:32,950 tornar valors. 1443 01:12:32,950 --> 01:12:39,000 I veurem com això ens ajuda a classificar de definir una funció en un segon. 1444 01:12:39,000 --> 01:12:41,430 Així que aquesta és una definició de funció per a la cubicació. 1445 01:12:41,430 --> 01:12:45,110 Així que pren una entrada, i després torna aquest nombre multiplicat 1446 01:12:45,110 --> 01:12:47,020 si mateix tres vegades. 1447 01:12:47,020 --> 01:12:48,020 Així que anem a desglossar aquesta informació. 1448 01:12:48,020 --> 01:12:53,090 >> Així que tenim una capçalera de la funció, que consisteix bàsicament en tres coses. 1449 01:12:53,090 --> 01:12:56,050 Així que tenim els paràmetres, que són, com he dit abans, la 1450 01:12:56,050 --> 01:12:57,680 entrades per a aquesta funció. 1451 01:12:57,680 --> 01:12:59,300 I llavors li donem la funció d'un nom. 1452 01:12:59,300 --> 01:13:00,740 En aquest cas, es diu cub. 1453 01:13:00,740 --> 01:13:03,860 I a continuació, especifiquem el que el tipus de del valor de retorn és. 1454 01:13:03,860 --> 01:13:06,760 >> Així que en aquest cas, la meva funció cub pren en un sencer i també 1455 01:13:06,760 --> 01:13:07,890 retorna un enter. 1456 01:13:07,890 --> 01:13:11,510 Així que si pas en dos, dos és un nombre enter, torna vuit a mi, el que 1457 01:13:11,510 --> 01:13:13,250 és un nombre enter. 1458 01:13:13,250 --> 01:13:15,420 Així retornar paràmetres de nom de tipus. 1459 01:13:15,420 --> 01:13:16,670 Preguntes sobre això? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> I a continuació, el valor de retorn és en realitat especificat al final dient retorn 1462 01:13:24,230 --> 01:13:27,540 i després tornar el conté el valor retornat. 1463 01:13:27,540 --> 01:13:30,940 Així que en aquest cas, si ho posem tot en conjunt, una funció té en 1464 01:13:30,940 --> 01:13:35,100 paràmetres, es diu alguna cosa, i retorna una cosa que és el tipus 1465 01:13:35,100 --> 01:13:36,350 que diu que anava a ser. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Alguna pregunta? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Llavors, com s'utilitza una funció? 1470 01:13:45,080 --> 01:13:49,230 Bé, escrivim una funció i després el fem servir en el nostre programa, no? 1471 01:13:49,230 --> 01:13:51,565 Així que el vaig trucar cub, i llavors puc utilitzar cub. 1472 01:13:51,565 --> 01:13:54,200 >> Però el que és important tenir en compte és que l'ordre importa. 1473 01:13:54,200 --> 01:13:58,100 Si tinc cubell sota principal, és va a executar en el cub. 1474 01:13:58,100 --> 01:14:00,360 I en aquest punt, no hi ha res diu cub en el programa, i és 1475 01:14:00,360 --> 01:14:02,550 només serà així, no tinc ni idea del que és el cub. 1476 01:14:02,550 --> 01:14:05,060 >> Per tant, li dirà, implícitament declaració de la funció. 1477 01:14:05,060 --> 01:14:06,690 Aquest és l'error que apareix. 1478 01:14:06,690 --> 01:14:10,230 I així, en aquest cas, el cub està per sota principal, de manera que no va 1479 01:14:10,230 --> 01:14:12,006 a saber d'ell. 1480 01:14:12,006 --> 01:14:14,724 >> ALTAVEU 5: Així principal és en general defineix l'última funció? 1481 01:14:14,724 --> 01:14:17,290 >> JOSÉ: tant el dubte és, és el principal sol ser l'últim 1482 01:14:17,290 --> 01:14:18,170 El que a vostè el defineix? 1483 01:14:18,170 --> 01:14:19,730 I no. 1484 01:14:19,730 --> 01:14:22,280 És perquè normalment com a principal per estar al cim, oi? 1485 01:14:22,280 --> 01:14:24,640 Perquè això és el primer que vol obrir el programador de la 1486 01:14:24,640 --> 01:14:25,640 programa per veure. 1487 01:14:25,640 --> 01:14:29,950 I llavors, com podem resoldre aquest problema que vull principal per estar al cim, però el 1488 01:14:29,950 --> 01:14:33,750 funcions que volem, ens els volen a estar per sota principal però, ser capaç d'utilitzar 1489 01:14:33,750 --> 01:14:34,930 ells dins de la principal? 1490 01:14:34,930 --> 01:14:36,870 >> Bé, utilitzem el que anomenem un prototip de funció. 1491 01:14:36,870 --> 01:14:40,830 Així que el que és un prototip de la funció essencialment s'està en primer lloc el 1492 01:14:40,830 --> 01:14:45,060 la signatura o de la capçalera de la funció del que volem implementar baix 1493 01:14:45,060 --> 01:14:47,420 aquí, i ho posem en la part superior d'un programa. 1494 01:14:47,420 --> 01:14:51,400 >> Així que en aquest cas, es diu que, bé, més endavant en el nostre programa, anem 1495 01:14:51,400 --> 01:14:55,010 fer una promesa per implementar aquesta funció anomenada int cub, que pren 1496 01:14:55,010 --> 01:14:56,260 sencer d'entrada. 1497 01:14:56,260 --> 01:15:00,870 Així que ara, ja que està per sobre de principal, principal, que dirà, oh, bé, 1498 01:15:00,870 --> 01:15:03,910 més endavant en el programa, que serà allà, així que pot fer referència a ella, així que vaig a 1499 01:15:03,910 --> 01:15:05,230 només s'ha d'esperar que, per ara. 1500 01:15:05,230 --> 01:15:07,660 >> I a continuació, a la part inferior, implementem cub. 1501 01:15:07,660 --> 01:15:11,180 I llavors principal s'acaba de dir, així, s'ordenarà d'enllaç 1502 01:15:11,180 --> 01:15:12,250 aquests dos símbols junts. 1503 01:15:12,250 --> 01:15:14,320 I anem a cobrir el que significa més tard. 1504 01:15:14,320 --> 01:15:17,090 I així sabrà que aquest és el funció de cub que s'ha d'utilitzar. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: El [inaudible] de voler principal a la part inferior o 1507 01:15:23,383 --> 01:15:24,880 superior, he vist tant. 1508 01:15:24,880 --> 01:15:28,630 Hi ha coses que simplement els agrada posar principal a la part inferior. 1509 01:15:28,630 --> 01:15:32,520 Però una vegada que un projecte es posa particularment gran, en general principal es troba en una 1510 01:15:32,520 --> 01:15:34,290 presentar tots els seus. 1511 01:15:34,290 --> 01:15:38,170 I en aquest punt, igual que el line cub int faria - 1512 01:15:38,170 --> 01:15:42,460 dins stdio.h són un grup de línies igual que int 1513 01:15:42,460 --> 01:15:44,010 línia d'entrada de cub int. 1514 01:15:44,010 --> 01:15:50,170 >> I així els prototips són coses que tendeixen a posar en els arxius de capçalera, a l' 1515 01:15:50,170 --> 01:15:52,140 aquest moment, no importa. 1516 01:15:52,140 --> 01:15:54,700 Bé, no importa. 1517 01:15:54,700 --> 01:15:56,070 Aquells sempre van en la part superior. 1518 01:15:56,070 --> 01:15:59,490 I si principal no és un de propi, vostè no ha de preocupar de posar 1519 01:15:59,490 --> 01:16:02,360 prototips de funcions individuals a l'arxiu. 1520 01:16:02,360 --> 01:16:05,370 >> JOSÉ: I anem a arribar a això una mica poc més tard, quan Rob comença a parlar 1521 01:16:05,370 --> 01:16:06,380 sobre la compilació. 1522 01:16:06,380 --> 01:16:09,480 I per això també hi ha una diferència entre paràmetre i argument. 1523 01:16:09,480 --> 01:16:12,500 I paràmetre és just el anomenem a aquestes entrades quan 1524 01:16:12,500 --> 01:16:13,820 definim la funció. 1525 01:16:13,820 --> 01:16:16,950 I en diem un argument quan realment passar-lo a la funció. 1526 01:16:16,950 --> 01:16:19,600 >> Així doncs, en aquest cas, aquest és un paràmetre, com hem dit abans. 1527 01:16:19,600 --> 01:16:24,130 I quan realment el fem servir per allà, cúbica de x, llavors x sí que és 1528 01:16:24,130 --> 01:16:25,910 el que anomenem un argument al cub funció. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Llavors els arguments dels paràmetres són - 1530 01:16:28,150 --> 01:16:33,270 hi ha aquesta distinció, molt confós indistintament. 1531 01:16:33,270 --> 01:16:37,090 En aquest punt, per a mi, és com una de aquestes paraules que quan ho vegi en 1532 01:16:37,090 --> 01:16:41,190 la naturalesa, no pot deixar de forma immediata qüestió de si el fan servir a 1533 01:16:41,190 --> 01:16:44,120 el context correcte, perquè el diferència és prou subtil que només 1534 01:16:44,120 --> 01:16:45,500 tothom tendeix - 1535 01:16:45,500 --> 01:16:48,530 Jo gairebé sempre dic argument independentment del que vull dir. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> JOSEPH: funcions i també són útils per al que anomenem efectes secundaris. 1538 01:16:54,630 --> 01:16:59,230 Així que una funció pot rebre cap input, i també pot produir cap sortida. 1539 01:16:59,230 --> 01:17:03,280 Així que en aquest cas particular, estic la definició d'una subrutina que no té 1540 01:17:03,280 --> 01:17:03,970 valor de retorn. 1541 01:17:03,970 --> 01:17:07,730 I per tal d'especificar que, utilitzem el que anomenem un buit aquí. 1542 01:17:07,730 --> 01:17:10,890 I pel que l'efecte secundari d'aquesta funció és que només imprimeix coses 1543 01:17:10,890 --> 01:17:11,920 a la pàgina. 1544 01:17:11,920 --> 01:17:13,840 En realitat, no pren cap entrades, i no ho fa 1545 01:17:13,840 --> 01:17:15,360 en realitat produir qualsevol sortida. 1546 01:17:15,360 --> 01:17:18,230 >> Però això podria ser útil en el sentit si vostè vol, per exemple, depuració 1547 01:17:18,230 --> 01:17:21,530 alguna cosa en el seu programa, si desitja escriure una petita subrutina que 1548 01:17:21,530 --> 01:17:25,160 imprimeix, diguem, el contingut de memòria o alguna cosa així. 1549 01:17:25,160 --> 01:17:29,800 I així, aquests efectes secundaris són de vegades útil fora del context 1550 01:17:29,800 --> 01:17:33,010 de la mateixa manera que les entrades i sortides. 1551 01:17:33,010 --> 01:17:34,260 Alguna pregunta? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> I per finalitzar aquest segment en particular, Què fa aquest programa? 1554 01:17:44,240 --> 01:17:47,420 Et vaig a donar un parell de nois segons per llegir a través d'ell. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 En un nivell molt bàsic, el que volem dir és que intercanvia x i y, no? 1557 01:17:56,880 --> 01:18:00,090 >> Llavors, quants de vostès pensen en realitat això canviarà xiy? 1558 01:18:00,090 --> 01:18:02,160 Aixequin la mà. 1559 01:18:02,160 --> 01:18:02,760 Ningú. 1560 01:18:02,760 --> 01:18:03,070 D'acord. 1561 01:18:03,070 --> 01:18:06,720 Qui creu que ho farà No intercanviar xiy? 1562 01:18:06,720 --> 01:18:09,120 I la suma que era No tota l'habitació. 1563 01:18:09,120 --> 01:18:10,440 Així que algunes persones no estan segurs. 1564 01:18:10,440 --> 01:18:10,920 D'acord. 1565 01:18:10,920 --> 01:18:11,630 Això és raonable. 1566 01:18:11,630 --> 01:18:16,450 >> Així que anirem a través del que succeeix quan en realitat es diu a les funcions per primera vegada en 1567 01:18:16,450 --> 01:18:18,320 Per respondre a aquesta pregunta. 1568 01:18:18,320 --> 01:18:21,430 Així que això és el que la memòria Classe de semblar. 1569 01:18:21,430 --> 01:18:23,860 Això és una cosa així com un model simplificat del que la memòria es veu com quan 1570 01:18:23,860 --> 01:18:24,800 executa un programa. 1571 01:18:24,800 --> 01:18:27,270 Així que hi ha alguna cosa que es diu la pila fins aquí i 1572 01:18:27,270 --> 01:18:28,330 cosa que es diu el munt. 1573 01:18:28,330 --> 01:18:30,950 I aquestes creixen cap el mitjà de memòria. 1574 01:18:30,950 --> 01:18:33,860 >> Així que en aquest cas particular, quan es crida a una funció, 1575 01:18:33,860 --> 01:18:35,680 aconsegueix posar a la pila. 1576 01:18:35,680 --> 01:18:38,900 I llavors tot el que està contingut en aquest la funció es queda en el que anomenem 1577 01:18:38,900 --> 01:18:40,550 marc de pila de la funció. 1578 01:18:40,550 --> 01:18:44,500 I així, per aconseguir una bona visualització de això, let 's - per exemple, vam tenir l' 1579 01:18:44,500 --> 01:18:45,960 principal del programa anterior. 1580 01:18:45,960 --> 01:18:47,820 I a l'interior de la principal, que es diu cub. 1581 01:18:47,820 --> 01:18:50,650 Així principal seria primer van a la pila emmarcar, perquè és la primera funció 1582 01:18:50,650 --> 01:18:51,640 això es diu. 1583 01:18:51,640 --> 01:18:55,740 >> I després, quan el cub es diu dins principal, que es va posar a la part superior de la principal 1584 01:18:55,740 --> 01:18:57,790 dins de la memòria. 1585 01:18:57,790 --> 01:19:02,090 Així que el que vostè notarà és que el cub té els seus propis paràmetres i la seva 1586 01:19:02,090 --> 01:19:02,950 propis vilatans. 1587 01:19:02,950 --> 01:19:06,720 Així que quan realment passa alguna cosa una funció, els paràmetres que 1588 01:19:06,720 --> 01:19:09,910 aconsegueix són còpies del que va ser passat des principal. 1589 01:19:09,910 --> 01:19:14,140 >> I per explicar espècie d'això, anem a caminar a través d'un programa. 1590 01:19:14,140 --> 01:19:16,960 Així que tenim la pila, el que és només la part de la pila. 1591 01:19:16,960 --> 01:19:21,240 I el que fem és el primer que inicialitzem x i i a un i dos. 1592 01:19:21,240 --> 01:19:22,400 Així que tenim aquestes petites caixes. 1593 01:19:22,400 --> 01:19:25,310 Estan asseguts a la pila del principal emmarcar a la pila. 1594 01:19:25,310 --> 01:19:26,580 Contenen un i dos. 1595 01:19:26,580 --> 01:19:28,820 >> Ara que anomenem intercanvi. 1596 01:19:28,820 --> 01:19:33,940 El que passa és que vam passar x i y en canvi i canvi, crea les seves pròpies còpies 1597 01:19:33,940 --> 01:19:36,520 d'aquestes variables a utilitzar en l'interior del seu marc de pila. 1598 01:19:36,520 --> 01:19:39,920 Així que ara per allà, tenim una, que conté el valor que tenia x, ib, 1599 01:19:39,920 --> 01:19:41,620 que conté el valor que i tenien. 1600 01:19:41,620 --> 01:19:42,670 Així que un, dos. 1601 01:19:42,670 --> 01:19:47,130 >> I t'adonaràs que això és independent de x i i a l'interior de la principal. 1602 01:19:47,130 --> 01:19:51,390 Així que ara creem un temporal variable per contenir un. 1603 01:19:51,390 --> 01:19:56,100 Hem establert una igual a b, de manera que canvis d'un a dos. 1604 01:19:56,100 --> 01:19:59,340 I llavors ens vam posar b igual a la temperatura, que és un. 1605 01:19:59,340 --> 01:20:01,640 >> I llavors ara sortim fora d'aquesta funció. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 En sortir de la funció, el marc de pila es va fer esclatar de la pila. 1608 01:20:07,410 --> 01:20:08,270 L'anomenem empenta. 1609 01:20:08,270 --> 01:20:12,750 Vostè prem un marc de pila a la pila i si vostè fa esclatar de la pila. 1610 01:20:12,750 --> 01:20:16,080 I així, el que passa és tot el que havia en aquesta pila marc espècie de just 1611 01:20:16,080 --> 01:20:17,280 puja en flames. 1612 01:20:17,280 --> 01:20:19,180 I perquè ja no existeix. 1613 01:20:19,180 --> 01:20:20,470 >> Però, què ens adonem? 1614 01:20:20,470 --> 01:20:23,690 Mai hem canviat realment el els valors de x i y, no? 1615 01:20:23,690 --> 01:20:26,530 Així que aquells es van quedar local principal. 1616 01:20:26,530 --> 01:20:29,900 I passant coses en swap, que en realitat mai ha canviat els valors. 1617 01:20:29,900 --> 01:20:31,260 I com diem a això? 1618 01:20:31,260 --> 01:20:33,040 Nosaltres cridem a això passa per valor. 1619 01:20:33,040 --> 01:20:36,860 >> Així que en C, quan es passa les coses en funcions, se les passa pel seu valor i 1620 01:20:36,860 --> 01:20:40,160 fa una còpia d'ells per la funció d'utilitzar. 1621 01:20:40,160 --> 01:20:43,980 I anem a aprendre sobre alguna cosa que es diu passant per la seva posterior consulta, però això és 1622 01:20:43,980 --> 01:20:45,390 una forma que pot resoldre aquest problema. 1623 01:20:45,390 --> 01:20:47,080 Però no et preocupis per que fins més tard. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: I en realitat, aquest terme, que passa per referència, pel que C no té ni tan sols 1625 01:20:52,200 --> 01:20:54,270 passant per referència. 1626 01:20:54,270 --> 01:20:56,760 C exclusivament ha de passar per valor. 1627 01:20:56,760 --> 01:20:59,630 No importa el que facis, sempre estàs passant una còpia d'alguna cosa. 1628 01:20:59,630 --> 01:21:03,395 És només que, igual que en certa manera em vaig esmentar que abans amb punters 1629 01:21:03,395 --> 01:21:07,690 i que una cadena és realment només quatre bytes que apunta a algun lloc de la memòria. 1630 01:21:07,690 --> 01:21:11,890 >> Bé, si tinc aquesta cadena i és em diu que és on la cadena - 1631 01:21:11,890 --> 01:21:15,470 bé, si tinc aquest punter a aquesta col · locar en la memòria, llavors puc passar un 1632 01:21:15,470 --> 01:21:19,160 còpia d'aquest punter a una funció, i aquesta funció encara sap on en 1633 01:21:19,160 --> 01:21:19,780 memòria que és. 1634 01:21:19,780 --> 01:21:22,950 Així que aquests dos indicadors estan assenyalant al mateix lloc en la memòria, i 1635 01:21:22,950 --> 01:21:26,460 això és el que serem capaços de per modificar les coses més enllà de la 1636 01:21:26,460 --> 01:21:29,852 marc de pila actual. 1637 01:21:29,852 --> 01:21:31,040 >> JOSÉ: Vols fer la compilació? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: No, són les 5:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSÉ: OK. 1640 01:21:32,910 --> 01:21:35,040 És 05:30. 1641 01:21:35,040 --> 01:21:35,360 D'acord. 1642 01:21:35,360 --> 01:21:39,280 Així que anem a cobrir la compilació Suposo que en la propera secció, o la secció de 1643 01:21:39,280 --> 01:21:42,795 LEADER en aquest punt. 1644 01:21:42,795 --> 01:21:43,272 I - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Alguna pregunta? 1646 01:21:44,630 --> 01:21:46,760 >> JOSÉ: Alguna pregunta? 1647 01:21:46,760 --> 01:21:47,150 Sí? 1648 01:21:47,150 --> 01:21:52,469 >> ALTAVEU 5: Ús de cadenes de CS50, qualsevol funcions que volem utilitzar per 1649 01:21:52,469 --> 01:21:53,880 aquells, que serà com a funcions C. 1650 01:21:53,880 --> 01:21:59,050 CS50 no ha entrat i fet cap addicional. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Correcte. 1652 01:22:01,850 --> 01:22:08,155 Qualsevol dels de C com [inaudible], que utilitzaria els de les nostres cadenes. 1653 01:22:08,155 --> 01:22:12,400 >> JOSÉ: I una última cosa que vull menció és que tenim una guia d'estil 1654 01:22:12,400 --> 01:22:13,130 per a aquesta classe. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, si. 1656 01:22:13,360 --> 01:22:15,270 >> JOSÉ: Així que si vens d'un programació de fons abans, 1657 01:22:15,270 --> 01:22:17,750 podria tenir certes convencions quan estàs escrivint codi com posar 1658 01:22:17,750 --> 01:22:20,950 claus en la mateixa línia o particulars formes de sangria 1659 01:22:20,950 --> 01:22:22,240 o anomenar les variables. 1660 01:22:22,240 --> 01:22:26,870 En aquesta classe, volem seguir un guia d'estil específica només perquè, 1661 01:22:26,870 --> 01:22:31,100 així, si vostè surt i treballa a la indústria, que va a esperar 1662 01:22:31,100 --> 01:22:34,780 seguir la guia d'estil de la empresa a la qual vas a. 1663 01:22:34,780 --> 01:22:38,040 >> Com per exemple, Facebook crec té un tipus particular de nomenar 1664 01:22:38,040 --> 01:22:38,760 convenció. 1665 01:22:38,760 --> 01:22:42,570 I hi ha diferències entre el camell variables de la carcassa i igual que 1666 01:22:42,570 --> 01:22:44,610 separant-los amb guions baixos. 1667 01:22:44,610 --> 01:22:52,170 I també, crec que és més important, igual que per exemple, la sagnia, oi? 1668 01:22:52,170 --> 01:22:56,440 >> Nosaltres vam començar claus on la condició és, i 1669 01:22:56,440 --> 01:22:57,730 estan en la línia següent. 1670 01:22:57,730 --> 01:23:01,230 I també posem claus en fins i tot si és només una línia. 1671 01:23:01,230 --> 01:23:06,100 I moltes vegades, hi ha maneres de fer on vostè pot deixar aquests aparells 1672 01:23:06,100 --> 01:23:08,380 de si es tracta d'una sola línia sota la instrucció If. 1673 01:23:08,380 --> 01:23:12,070 Però en aquesta classe, volem seguir un guia d'estil específic perquè el rep 1674 01:23:12,070 --> 01:23:13,550 utilitzat per a aquest tipus de coses. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Sí, i Style 50 es va a fer complir aquesta guia d'estil, i estem 1676 01:23:16,410 --> 01:23:18,080 utilitzarà Style 50 al grau del seu codi. 1677 01:23:18,080 --> 01:23:25,150 Pel que fa les coses més fàcils per a nosaltres i esperem que no ha de fer coses que 1678 01:23:25,150 --> 01:23:30,120 molt pitjor per a vostè donat la estil estandarditzat no hauria de ser tan 1679 01:23:30,120 --> 01:23:31,460 poc realista. 1680 01:23:31,460 --> 01:23:36,000 >> JOSÉ: I finalment, per trobar l'estil Guia, aneu a manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 I sí. 1682 01:23:37,725 --> 01:23:40,575 >> ALTAVEU 4: Vas a fer complir caràcters per línia? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Si. 1684 01:23:42,480 --> 01:23:45,405 >> JOSÉ: Ho sento, nois. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Això és com un dels únics. 1686 01:23:47,680 --> 01:23:50,420 En aquest punt, estic bé amb 120. 1687 01:23:50,420 --> 01:23:52,460 Estic bé amb dir 120 caràcters per línia. 1688 01:23:52,460 --> 01:23:53,830 Entenc que hi hagi un límit. 1689 01:23:53,830 --> 01:23:57,130 Crec que 80 és tan petit, però estem aplicar-la. 1690 01:23:57,130 --> 01:24:00,260 >> JOSÉ: En el personal, crec que amb C, 80 caràcters és més bé. 1691 01:24:00,260 --> 01:24:04,160 Una vegada que comença a rebre a un altre llenguatges com Javascript i PHP, i no 1692 01:24:04,160 --> 01:24:08,860 tan raonable que simplement limitar a 80 caràcters. 1693 01:24:08,860 --> 01:24:09,260 D'acord. 1694 01:24:09,260 --> 01:24:12,780 Bé, això va ser la secció super. 1695 01:24:12,780 --> 01:24:14,750 Algú vol dolços? 1696 01:24:14,750 --> 01:24:16,000 >> ALTAVEU 4: Si. 1697 01:24:16,000 --> 01:24:18,667