1 00:00:00,000 --> 00:00:12,410 >> [Música tocando] 2 00:00:12,410 --> 00:00:12,830 >> DAVID Malan: Todo ben. 3 00:00:12,830 --> 00:00:13,370 Benvido de volta. 4 00:00:13,370 --> 00:00:16,510 É dicir CS50, e este é Unha semana, continuación. 5 00:00:16,510 --> 00:00:20,050 Entón, unha das razóns que estamos pasando arredor de tecnoloxías como 6 00:00:20,050 --> 00:00:24,120 Google Glass é que eles veñen con algo coñecido como unha API, un 7 00:00:24,120 --> 00:00:25,980 Interface de Programación de Aplicacións. 8 00:00:25,980 --> 00:00:28,830 E o que isto significa que, co arquivos correcto e co dereito 9 00:00:28,830 --> 00:00:32,850 documentación, pode realmente escribir software para dispositivos incluso como estes. 10 00:00:32,850 --> 00:00:36,200 >> E así, o que temos en mente para semestres final é, se un proxecto 11 00:00:36,200 --> 00:00:39,310 que inclúen, por exemplo, vidro Google pode recurso, imos ver o que podemos facer en 12 00:00:39,310 --> 00:00:42,220 termos de conectar-te con algúns prestado hardware, así como o 13 00:00:42,220 --> 00:00:46,500 API accesíbel para que poida realmente comezar a crear software 14 00:00:46,500 --> 00:00:48,630 que corre o mesmo cristal Google. 15 00:00:48,630 --> 00:00:51,710 >> Outro dispositivo que vimos xogar co de tarde que pensamos que podería ser 16 00:00:51,710 --> 00:00:53,910 diversión ao final do semestre é este peixe aquí. 17 00:00:53,910 --> 00:00:56,860 Chámase Leap Movemento, e que está a piques de ver é tecnicamente un 18 00:00:56,860 --> 00:01:00,280 publicidade ao teléfono, pero el fala o que neste particular 19 00:01:00,280 --> 00:01:01,240 dispositivo é capaz de facer. 20 00:01:01,240 --> 00:01:05,550 E, tamén, ven con unha API vía que pode escribir software para 21 00:01:05,550 --> 00:01:10,545 controlar o seu propio ordenador de forma me gusta moito desta película dun minuto aquí. 22 00:01:10,545 --> 00:01:12,070 >> [REPRODUCIÓN] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [FIN reprodución de vídeo] 25 00:02:08,590 --> 00:02:11,190 >> Entón, agora, o dispositivo pasa a ser aplicada como un pequeno USB 26 00:02:11,190 --> 00:02:14,290 conectores que se pode conectar o seu ordenador, pero eu non quedaría sorprendido 27 00:02:14,290 --> 00:02:17,930 se antes de tempo que ten este tipo de tecnoloxías no seguinte lote de PCs 28 00:02:17,930 --> 00:02:20,510 e Macs para que poida, de feito, interactuar con ela 29 00:02:20,510 --> 00:02:21,650 de forma semellante. 30 00:02:21,650 --> 00:02:24,250 En realidade, o que eu penso que eu ía facer, tamén, é Puxei unha pequena demostración 31 00:02:24,250 --> 00:02:25,860 programa que ven con este software. 32 00:02:25,860 --> 00:02:28,700 Entón eu coloque o pequeno sensor diante do meu portátil. 33 00:02:28,700 --> 00:02:32,420 >> E como se pode ver, el xa entende que a man está aí 34 00:02:32,420 --> 00:02:33,400 controlala. 35 00:02:33,400 --> 00:02:37,900 E toda esta aplicación fai é marabillas pequenas cousas como esta. 36 00:02:37,900 --> 00:02:41,080 Pero podes ver que, de feito, Teño cinco dedos alí. 37 00:02:41,080 --> 00:02:44,270 Se logramos que el faga as 10, podes imaxinar un piano limpo 38 00:02:44,270 --> 00:02:45,390 aplicación ou semellante. 39 00:02:45,390 --> 00:02:47,820 Entón, se quere chegar ata despois da aula hoxe e xogar con iso como 40 00:02:47,820 --> 00:02:49,720 así, vostede é benvido. 41 00:02:49,720 --> 00:02:52,930 Entón, máis sobre iso máis cara ao final do semestre. 42 00:02:52,930 --> 00:02:54,420 >> Así, un par de administrativa anuncios. 43 00:02:54,420 --> 00:02:58,690 Un deles, por formar parte deste venres ao mediodía cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Esta URL é o curso de páxina de inicio tamén. 45 00:03:01,260 --> 00:03:04,010 Nese medio tempo, con todo, supersections vai estrear este domingo. 46 00:03:04,010 --> 00:03:07,800 Supersections son unha cousa de unha soa vez, porque nos leva moito tempo para traballar 47 00:03:07,800 --> 00:03:09,470 quen está en que sección e onde. 48 00:03:09,470 --> 00:03:12,280 >> Polo tanto, este próximo domingo, haberá unha sección para aqueles menos cómodo, 49 00:03:12,280 --> 00:03:14,040 unha sección para os máis cómodo. 50 00:03:14,040 --> 00:03:16,110 E aqueles de vós nalgún lugar entre son benvidos para ir 51 00:03:16,110 --> 00:03:17,850 un ou ambos ou ningún. 52 00:03:17,850 --> 00:03:19,150 Ambos serán filmadas. 53 00:03:19,150 --> 00:03:22,740 Eles van estar nun auditorio maior que unha sección normalmente estaría dentro 54 00:03:22,740 --> 00:03:26,110 Pero o obxectivo aquí é equipa-lo con algún confort con un conxunto de problemas, 55 00:03:26,110 --> 00:03:29,910 con C, co aparello CS50, esta fin de semana, antes de descubrir a súa 56 00:03:29,910 --> 00:03:31,050 asignación formal de sección. 57 00:03:31,050 --> 00:03:34,700 Entón, vai coñecer o TF e súa menor grupo de sectionmates nuns 58 00:03:34,700 --> 00:03:36,350 tempo de unha semana. 59 00:03:36,350 --> 00:03:38,200 >> Horario de oficina, pola súa banda, foron pasando. 60 00:03:38,200 --> 00:03:41,020 Facer aproveitala las esta noite ou mañá á noite, se desexa. 61 00:03:41,020 --> 00:03:43,460 Problema set 0 débese o venres. 62 00:03:43,460 --> 00:03:46,680 Este é un día máis tarde do que o regular-programado xoves. 63 00:03:46,680 --> 00:03:50,410 Pero, con un conxunto de problemas, verás que inclúe algúns warm-up 64 00:03:50,410 --> 00:03:52,770 exercicios co que se Pode estender a súa 65 00:03:52,770 --> 00:03:54,660 Xoves prazo para o venres. 66 00:03:54,660 --> 00:03:58,410 Un conxunto de problemas, mentres, vai estrear na páxina web de suposto o próximo 67 00:03:58,410 --> 00:04:02,000 Venres, se quere se roscar con como eu fixen era xa tarde 68 00:04:02,000 --> 00:04:04,370 Venres á noite no seu cuarto. 69 00:04:04,370 --> 00:04:07,660 >> Entón cs50.net/appliance é onde pode obter o aparello CS50 70 00:04:07,660 --> 00:04:09,040 que comezamos a utilizar o luns. 71 00:04:09,040 --> 00:04:10,140 Imos usalo un pouco máis hoxe. 72 00:04:10,140 --> 00:04:14,040 Pero a seguridade de que o problema definido un especificación ha oriente-lo a través 73 00:04:14,040 --> 00:04:16,490 precisamente os pasos que cómpre para obter este instalado e funcionando. 74 00:04:16,490 --> 00:04:22,120 Entón non se preocupe en facer iso antes Pset 1, se non prefire. 75 00:04:22,120 --> 00:04:22,660 >> Todo ben. 76 00:04:22,660 --> 00:04:27,180 Entón, nós miramos o luns no código fonte, pero, no contexto dunha nova 77 00:04:27,180 --> 00:04:30,895 linguaxe de programación, é dicir, C. e C, ao contrario de risco, non é de vídeo. 78 00:04:30,895 --> 00:04:32,270 Non é Puzzles Pieces. 79 00:04:32,270 --> 00:04:34,450 É máis inglés-como sintaxe. 80 00:04:34,450 --> 00:04:37,140 E hai un par de pasos implicados realmente en escribir e executar un 81 00:04:37,140 --> 00:04:41,650 programa en C, xa que ademais de fonte código coma este, precisas algo 82 00:04:41,650 --> 00:04:42,890 chamado compilador. 83 00:04:42,890 --> 00:04:46,682 E, en termos leigos, o que non un compilador facer por nós? 84 00:04:46,682 --> 00:04:47,650 Si 85 00:04:47,650 --> 00:04:51,040 >> ALUMNO: El converte o código que escribe para 0s e 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID Malan: Xenial. 87 00:04:51,151 --> 00:04:53,580 Por iso, o código que converte Escribir para 0s e 1s. 88 00:04:53,580 --> 00:04:57,730 El converte o chamado código fonte para código obxecto, o último dos cales parece 89 00:04:57,730 --> 00:04:59,140 un pouco algo así. 90 00:04:59,140 --> 00:05:02,860 E é a súa CPU, os cerebros dentro o ordenador, que, por mor da 91 00:05:02,860 --> 00:05:06,280 persoas que crearon eses ordenadores, sabe o que estas secuencias 92 00:05:06,280 --> 00:05:07,460 media de 0s e 1s. 93 00:05:07,460 --> 00:05:08,640 >> Quizais só sexa impresión. 94 00:05:08,640 --> 00:05:10,265 Quizais só sexa iso. 95 00:05:10,265 --> 00:05:11,610 Quizais isto significa subtracción. 96 00:05:11,610 --> 00:05:13,350 Quizais só sexa amosar un gráfico. 97 00:05:13,350 --> 00:05:16,870 Existen patróns predeterminados de bits que o mundo decidiu dicir 98 00:05:16,870 --> 00:05:17,700 certas cousas. 99 00:05:17,700 --> 00:05:20,760 Pero para a maior parte deste curso, nós imos traballar nun nivel superior, e 100 00:05:20,760 --> 00:05:24,180 imos tomar como certo que hai cousas como compiladores que poden 101 00:05:24,180 --> 00:05:27,670 facer a nosa función de código fonte na forma na que pretendemos. 102 00:05:27,670 --> 00:05:31,660 >> Así, o programa que escribiu por primeira vez a semana pasada e logo, empezaron a porta, co fin de 103 00:05:31,660 --> 00:05:33,920 falar, C ese pasado Luns, foi iso. 104 00:05:33,920 --> 00:05:35,700 Cando a bandeira verde premendo, dicir Olá 105 00:05:35,700 --> 00:05:37,430 Este foi, por suposto, escrita en perigo. 106 00:05:37,430 --> 00:05:40,710 E afirmou que o equivalente programa en C parecía un pouco 107 00:05:40,710 --> 00:05:41,520 algo así. 108 00:05:41,520 --> 00:05:45,050 >> Entón o que eu penso que ía facer en primeiro lugar é, imos desmembrar o que parece, a primeira 109 00:05:45,050 --> 00:05:48,790 vista, en realidade, como moi misterioso sintaxe, pero vai comezar a notar 110 00:05:48,790 --> 00:05:50,160 patróns moi rapidamente. 111 00:05:50,160 --> 00:05:53,770 O que nós tamén imos facer hoxe é proporcionar lo con un modelo mental para algúns 112 00:05:53,770 --> 00:05:57,280 canónico, algunhas construcións estándar na programación. 113 00:05:57,280 --> 00:06:00,420 E entón nós imos realmente chegar nas nosas mans porco con algúns exemplos ben. 114 00:06:00,420 --> 00:06:04,140 >> Polo tanto, para aqueles de vostedes máis cómodo, entender que esta semana e logo, xunto 115 00:06:04,140 --> 00:06:05,940 semana pode moi ben ser un pouco de crítica. 116 00:06:05,940 --> 00:06:08,810 Pero, sobre todo cando a edición hackers dun problema conxunto sae no 117 00:06:08,810 --> 00:06:12,330 páxina web do curso o venres, eu creo que vai descubrir que, aínda que cubrir 118 00:06:12,330 --> 00:06:15,390 algunhas lagoas ao longo da próxima semana ou dúas, vai comezar a estar cada vez máis 119 00:06:15,390 --> 00:06:18,410 desafiado e atopar cousas novas e máis recentes. 120 00:06:18,410 --> 00:06:21,310 >> Entón, imos provocar este programa ademais algunhas liñas de cada vez. 121 00:06:21,310 --> 00:06:24,140 Na parte superior, temos o que hai de tecnicamente chamado 122 00:06:24,140 --> 00:06:25,950 directiva de pre-procesamento. 123 00:06:25,950 --> 00:06:30,510 Esta é só unha liña de código que se para incluír o contido dun ficheiro, 124 00:06:30,510 --> 00:06:35,080 chamado estándar I / R, entrada estándar - ou, desculpe, estándar I / O, patrón 125 00:06:35,080 --> 00:06:38,670 de entrada / saída. h, para dentro do meu propio programa. 126 00:06:38,670 --> 00:06:41,670 >> Polo tanto, noutras palabras, se escribín iso programa con un editor de texto simple como 127 00:06:41,670 --> 00:06:45,260 gedit, o equivalente a máis simple de algo así como o Microsoft Word, que 128 00:06:45,260 --> 00:06:50,970 instrución # include stdio.h, é só vai dicir ao compilador, cara o 129 00:06:50,970 --> 00:06:56,080 contido que outro arquivo, stdio.h, e cola-los aquí. 130 00:06:56,080 --> 00:06:57,090 >> Agora, por que eu me importa? 131 00:06:57,090 --> 00:07:01,850 O que nós reivindicamos é dentro deste ficheiro stdio.h chamada, que é almacenado 132 00:07:01,850 --> 00:07:05,490 en algún lugar no meu disco duro, ou neste caso, en algún lugar do aparello CS50? 133 00:07:05,490 --> 00:07:06,635 Alguén puxo aí para min. 134 00:07:06,635 --> 00:07:09,910 Pero o que está nel? 135 00:07:09,910 --> 00:07:13,020 >> Si, polo que é unha declaración de unha función chamada printf. 136 00:07:13,020 --> 00:07:17,400 Entón printf recorda a función que exhibe palabras e caracteres e 137 00:07:17,400 --> 00:07:20,160 números na pantalla do meu tiro. 138 00:07:20,160 --> 00:07:21,220 Pero eu non quería escribir. 139 00:07:21,220 --> 00:07:22,230 CS50 non escribilo. 140 00:07:22,230 --> 00:07:26,990 Anos alguén escribiu, e esencialmente nos deu a receita para iso 141 00:07:26,990 --> 00:07:29,110 nun arquivo chamado stdio.h. 142 00:07:29,110 --> 00:07:33,240 Así que a primeira liña só me dá acceso ás funcións que alguén 143 00:07:33,240 --> 00:07:36,500 escribiu anos, entre que son printf. 144 00:07:36,500 --> 00:07:39,450 >> Agora, a seguinte liña que vou acenar miña man en, polo menos ata a próxima semana. 145 00:07:39,450 --> 00:07:43,620 Pero, por agora, sabe que int main (void) é esencialmente o equivalente deste 146 00:07:43,620 --> 00:07:46,310 peza do puzzle amarela cando bandeira verde premendo. 147 00:07:46,310 --> 00:07:49,510 O mundo, desde hai anos, decidiu que, se está escribindo un programa no 148 00:07:49,510 --> 00:07:53,150 linguaxe chamada C, comeza o seu programa cunha liña 149 00:07:53,150 --> 00:07:54,410 que se parece con isto. 150 00:07:54,410 --> 00:07:57,650 En só preto de unha semana, que vai facer sentido que int é, o que é branco. 151 00:07:57,650 --> 00:08:00,840 Pero, polo de agora, só pense nisto como esta peza do puzzle amarelo. 152 00:08:00,840 --> 00:08:04,550 >> Agora seguinte, temos unha chaveta seguido doutra preto rizados cinta, 153 00:08:04,550 --> 00:08:05,240 por así dicir. 154 00:08:05,240 --> 00:08:07,430 E veremos ao longo destes programas en C, así como a 155 00:08:07,430 --> 00:08:08,930 JavaScript e PHP. 156 00:08:08,930 --> 00:08:11,345 E estes só encapsulado liñas afíns de código. 157 00:08:11,345 --> 00:08:14,600 O aberto chaveta esencialmente di, aí ven un código. 158 00:08:14,600 --> 00:08:17,590 E a chaveta pechada, o que é inclinado na dirección contraria, só 159 00:08:17,590 --> 00:08:19,920 significa, iso é todo para o código correspondente. 160 00:08:19,920 --> 00:08:22,970 >> Así, a liña suculento neste primeiro programa é a última, printf, 161 00:08:22,970 --> 00:08:25,080 entre comiñas, Ola mundo. 162 00:08:25,080 --> 00:08:30,670 E eu chamei a cousa entre citas que a última vez? 163 00:08:30,670 --> 00:08:31,285 Entón é unha cadea. 164 00:08:31,285 --> 00:08:35,309 E unha corda é só o tecnólogo prazo para unha secuencia de 165 00:08:35,309 --> 00:08:37,169 personaxes, unha palabra, unha frase. 166 00:08:37,169 --> 00:08:39,380 Mesmo unha única letra pode ser o dobre citado. 167 00:08:39,380 --> 00:08:41,840 Pero é unha secuencia de cero ou máis caracteres. 168 00:08:41,840 --> 00:08:43,650 >> Barra-n, con todo, parece un pouco raro. 169 00:08:43,650 --> 00:08:46,290 Pero simplemente dicir algo sinxelo para o ordenador. 170 00:08:46,290 --> 00:08:48,060 Que é barra-n? 171 00:08:48,060 --> 00:08:48,570 Nova liña. 172 00:08:48,570 --> 00:08:52,490 Entón, iso é só a secuencia especial de personaxes que o mundo decidiu 173 00:08:52,490 --> 00:08:56,880 significa poñer un salto de liña alí, xa que o compilador vai realmente comezar 174 00:08:56,880 --> 00:09:02,280 confusa, xeralmente, se, moi compreensivelmente, pero incorrectamente, só 175 00:09:02,280 --> 00:09:04,570 comezar a bater Intro para poñer novas liñas no seu código. 176 00:09:04,570 --> 00:09:07,150 Ten que ser un pouco máis explícita con barra-n. 177 00:09:07,150 --> 00:09:10,540 >> E nós imos ver que hai algúns outros, tales normas para caracteres especiais. 178 00:09:10,540 --> 00:09:14,340 Por exemplo, se quere deixar o seu mente vagar a un caso de canto, 179 00:09:14,340 --> 00:09:18,080 supoñer que eu quería imprimir unha comiñas na pantalla para 180 00:09:18,080 --> 00:09:21,840 calquera razón, parecería que ser un pouco problemático, non? 181 00:09:21,840 --> 00:09:24,990 Porque se eu poñer comiñas no medio do "Ola, mundo", para o que 182 00:09:24,990 --> 00:09:30,120 razón, por que é que isto parece potencialmente problemáticos? 183 00:09:30,120 --> 00:09:32,180 El rompe a cadea. 184 00:09:32,180 --> 00:09:34,700 >> O compilador é só un programa. 185 00:09:34,700 --> 00:09:37,210 Un programa como un compilador é só ir ler o top código para abaixo, 186 00:09:37,210 --> 00:09:37,990 esquerda a dereita. 187 00:09:37,990 --> 00:09:41,850 E se ve tres comiñas dobres no canto de dous fillos, non vai saber 188 00:09:41,850 --> 00:09:45,210 Se quere dicir que a cousa á esquerda debe ser a cadea, ou a cousa a 189 00:09:45,210 --> 00:09:46,570 á dereita, ou a cousa toda. 190 00:09:46,570 --> 00:09:50,560 É ambiguo, e así o que un típico compilador facer é brotes, 191 00:09:50,560 --> 00:09:53,710 e darlle algunha mensaxe de erro, e facer vostede xestionar o problema. 192 00:09:53,710 --> 00:09:58,120 >> Así, dado que a barra-n significa un novo liña, o que faría os seus instintos agora 193 00:09:58,120 --> 00:10:02,610 comezar a ser se quere incluír algo anômalo como un dobre 194 00:10:02,610 --> 00:10:06,210 citar dentro deste caso contrario citado corda? 195 00:10:06,210 --> 00:10:07,640 Cita barra-dobre. 196 00:10:07,640 --> 00:10:09,630 E entón imos ver iso tipo de patrón tamén. 197 00:10:09,630 --> 00:10:12,490 >> Se queres facer algo un pouco estraño, vai descubrir que o 198 00:10:12,490 --> 00:10:15,060 solucións moitas veces seguen un patrón, ea barra invertida 199 00:10:15,060 --> 00:10:17,150 denota unha secuencia de escape. 200 00:10:17,150 --> 00:10:20,320 E isto significa só algo especial que necesitamos para representar nunha 201 00:10:20,320 --> 00:10:21,060 xeito diferente. 202 00:10:21,060 --> 00:10:23,830 En canto á forma como representa unha barra invertida, así, imos 203 00:10:23,830 --> 00:10:24,550 volver a iso. 204 00:10:24,550 --> 00:10:26,930 Pero a resposta tamén é certo algo evidente. 205 00:10:26,930 --> 00:10:31,080 >> Entón, imos agora introducir algún outro construcións de programación 206 00:10:31,080 --> 00:10:31,915 que viu en perigo. 207 00:10:31,915 --> 00:10:34,790 Probablemente xa tida como certa xa se xa mergullou 208 00:10:34,790 --> 00:10:36,060 conxunto de problemas 0. 209 00:10:36,060 --> 00:10:40,950 Pero imos agora introducir a sintaxe en C para estes pola contra moi intuitiva 210 00:10:40,950 --> 00:10:42,300 ideas, polo menos algúns deles. 211 00:10:42,300 --> 00:10:45,570 >> Polo tanto, esta noción de unha condición ou unha rama, mentres que anteriormente nós 212 00:10:45,570 --> 00:10:49,330 representado con un código que mirou como esta á esquerda en Risco - 213 00:10:49,330 --> 00:10:52,200 Se x é menor que y, entón diga - 214 00:10:52,200 --> 00:10:56,760 no canto agora en C - déixeme mellorar en no caso máis simple - 215 00:10:56,760 --> 00:11:01,235 estamos indo simplemente para dicir que si, abra parénteses, algo é certo - un 216 00:11:01,235 --> 00:11:04,190 Expresión booleana está a ir onde eu dixen condición - 217 00:11:04,190 --> 00:11:08,170 Pechar parénteses, a continuación, facer o que é dentro desas chaves. 218 00:11:08,170 --> 00:11:11,020 >> Entón, aquí, tamén, as claves é tipo como de risco de 219 00:11:11,020 --> 00:11:12,460 Pezas de puzzle en forma de U. 220 00:11:12,460 --> 00:11:14,890 Faga o que ten dentro destas claves. 221 00:11:14,890 --> 00:11:16,790 Neste caso, slash slash. 222 00:11:16,790 --> 00:11:19,720 E entender que é un dianteiro slash, non unha barra invertida. 223 00:11:19,720 --> 00:11:21,440 Barra, barra, para os que xa programou 224 00:11:21,440 --> 00:11:23,370 antes, só significa - 225 00:11:23,370 --> 00:11:24,190 é só un comentario. 226 00:11:24,190 --> 00:11:26,630 Un comentario non é unha liña de código, de por si. 227 00:11:26,630 --> 00:11:30,200 É unha liña de inglés que, humano, escribir a si mesmo para 228 00:11:30,200 --> 00:11:33,540 quizais lembra-lo de facer algo, explicar a si mesmo, para explicar a 229 00:11:33,540 --> 00:11:35,260 outra persoa, o que o código está facendo. 230 00:11:35,260 --> 00:11:37,050 É só un comentario descritivo. 231 00:11:37,050 --> 00:11:40,880 >> Agora, por suposto, pode ter unha de dúas vías bifurcación na estrada, só por iso, un 232 00:11:40,880 --> 00:11:43,930 tres vías bifurcación na estrada, facendo iso, e se continúa esta 233 00:11:43,930 --> 00:11:47,570 estándar, pode ter de catro vías, cinco vías, seis vías garfos na estrada se 234 00:11:47,570 --> 00:11:50,150 ten que xestionar, de feito, que moitas condicións. 235 00:11:50,150 --> 00:11:52,010 E, a continuación, teña en conta o paralelismo aquí - 236 00:11:52,010 --> 00:11:55,070 if (condición), else if (condición), eo único que é un pouco 237 00:11:55,070 --> 00:11:58,010 estraño é o último, que É xusto que os outros. 238 00:11:58,010 --> 00:12:01,170 Pero, de novo, esta é idéntica, conceptualmente, para o que fixemos 239 00:12:01,170 --> 00:12:04,690 xa, aínda que a sintaxe vontade tomar algún tempo para se acostumar. 240 00:12:04,690 --> 00:12:07,730 >> Agora, no presente exemplo, existen outra sintaxe estraña. 241 00:12:07,730 --> 00:12:11,220 Vemos printf novo, paréntese aberta, e os parénteses. 242 00:12:11,220 --> 00:12:13,190 E alí dentro é unha cadea. 243 00:12:13,190 --> 00:12:17,060 As parénteses, no contexto de printf, vaia á esquerda 244 00:12:17,060 --> 00:12:18,160 e dereito de que? 245 00:12:18,160 --> 00:12:22,190 O que nós describimos que citada cadea como máis xeral? 246 00:12:22,190 --> 00:12:23,320 >> Entón é un argumento. 247 00:12:23,320 --> 00:12:26,620 Cada vez que ten unha función, como printf, e, a continuación, un paréntese aberta e un 248 00:12:26,620 --> 00:12:30,330 preto paréntese e algo dentro que, se é unha cadea, ou un 249 00:12:30,330 --> 00:12:34,420 enteiro, ou calquera outra cousa, a cousa en entre os parénteses chámase 250 00:12:34,420 --> 00:12:35,110 un argumento. 251 00:12:35,110 --> 00:12:37,910 >> E un argumento só inflúe comportamento da función. 252 00:12:37,910 --> 00:12:39,990 Neste caso, é moi claro como. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 E printf vai imprimir exactamente isto. 255 00:12:47,720 --> 00:12:51,590 Porque, por suposto, a persoa de anos que aplicou printf non tiña idea 256 00:12:51,590 --> 00:12:55,000 o que sucesores humanos foron vai utilizar printf para. 257 00:12:55,000 --> 00:12:58,610 É por iso que hai argumentos, a influír no comportamento tras unha función de 258 00:12:58,610 --> 00:12:59,450 foi escrito. 259 00:12:59,450 --> 00:13:00,780 >> Agora, a expresión booleana. 260 00:13:00,780 --> 00:13:02,470 Nós xa vimos isto antes en perigo. 261 00:13:02,470 --> 00:13:06,680 Acontece en C, tamén se pode "ou" xuntos, por así dicir. 262 00:13:06,680 --> 00:13:10,930 Dúas barras verticais significa que este bloque de código, este fas vai 263 00:13:10,930 --> 00:13:15,350 realizar, a primeira condición é verdadeira ou a segunda condición é certa. 264 00:13:15,350 --> 00:13:17,710 E aínda que non podería ter feito esta en perigo, podería de feito 265 00:13:17,710 --> 00:13:20,580 facelo en perigo, e tamén pode expresarse de forma diferente - 266 00:13:20,580 --> 00:13:25,300 O primeiro estado e a segunda condición é certa, entón o que é 267 00:13:25,300 --> 00:13:27,160 dentro das chaves. 268 00:13:27,160 --> 00:13:31,210 >> E así como un aparte, a razón é un dobre e comercial e un dobre 269 00:13:31,210 --> 00:13:34,610 barra vertical, imos ver, finalmente, que unha única barra vertical e unha 270 00:13:34,610 --> 00:13:38,710 único e comercial, en realidade, teñen distintas significado en C. Entón, por agora, 271 00:13:38,710 --> 00:13:41,840 que a duplicación de símbolos é intencional. 272 00:13:41,840 --> 00:13:45,070 >> Entón, imos presentar, brevemente, estoutro pouco de sintaxe. 273 00:13:45,070 --> 00:13:48,940 Iso non chega a transitar para Cero, pero eu afirmo que eu poida 274 00:13:48,940 --> 00:13:55,190 aplicar a noción dunha persoa, se entón, se máis, se else usando 275 00:13:55,190 --> 00:13:56,760 algo chamado unha instrución switch. 276 00:13:56,760 --> 00:14:00,820 E a única razón pola que isto realmente existe é só para dar a ti, programador, un 277 00:14:00,820 --> 00:14:05,470 xeito un pouco diferente de resolver algúns problema, aínda que loxicamente 278 00:14:05,470 --> 00:14:07,340 non lle dá calquera novas capacidades. 279 00:14:07,340 --> 00:14:08,530 >> Por iso quero dicir iso. 280 00:14:08,530 --> 00:14:13,330 Cando di chave, e, a continuación, un espazo, e logo, un par de parénteses, para dentro 281 00:14:13,330 --> 00:14:14,570 dos cales pasa unha expresión - 282 00:14:14,570 --> 00:14:18,010 e isto pode ser un pouco non obvio nun primeiro momento, pero iso non é un argumento, 283 00:14:18,010 --> 00:14:20,680 tecnicamente, porque chave non é unha función. 284 00:14:20,680 --> 00:14:24,230 Entón, por agora, só supoñer que estamos a usar parénteses en lugares diferentes 285 00:14:24,230 --> 00:14:25,250 por razóns diferentes. 286 00:14:25,250 --> 00:14:29,310 >> Entón chame expresión significa que podo poñer dunha variable dentro dos 287 00:14:29,310 --> 00:14:31,350 parénteses, onde se le a expresión. 288 00:14:31,350 --> 00:14:33,090 E entón, se esa variable - 289 00:14:33,090 --> 00:14:35,400 Supoño que se chama x, e é só un enteiro - 290 00:14:35,400 --> 00:14:38,900 Podo, entón, enumerar no meu slide aquí algo parecido con iso. 291 00:14:38,900 --> 00:14:41,690 Se x é a miña variable, e eu quere facer algo, se x 292 00:14:41,690 --> 00:14:43,480 é igual a 1, non podo facelo. 293 00:14:43,480 --> 00:14:46,660 >> Se eu queira, en vez de facer algo Se x é 2, podo facelo. 294 00:14:46,660 --> 00:14:50,390 Outra cousa, se eu queira facer outra cousa totalmente, podo ter un caso default en 295 00:14:50,390 --> 00:14:52,750 caso en que fago iso outra cousa. 296 00:14:52,750 --> 00:14:58,730 Entón, nese sentido, é equivalente a un Se x é igual a igual a 1, así que máis, 297 00:14:58,730 --> 00:15:01,150 pero eu falar iso agora só porque imos velo de novo. 298 00:15:01,150 --> 00:15:03,720 Pero, polo de agora, só sei que existe. 299 00:15:03,720 --> 00:15:04,220 >> Todo ben. 300 00:15:04,220 --> 00:15:07,660 Entón, estes dous últimos son algo máis complexo a primeira vista, pero eles 301 00:15:07,660 --> 00:15:09,385 algo moi sinxelo. 302 00:15:09,385 --> 00:15:14,410 Un lazo for en C é unha peza de código que só fai algo de novo e 303 00:15:14,410 --> 00:15:15,330 unha e outra vez. 304 00:15:15,330 --> 00:15:17,590 E o único irritante sobre el é iso é que é un pouco enigmático 305 00:15:17,590 --> 00:15:21,380 para expresarse neste cíclico por defecto, pero o mundo estándar en 306 00:15:21,380 --> 00:15:22,450 do seguinte xeito. 307 00:15:22,450 --> 00:15:25,760 >> Cando usa un loop for, ten un par de parénteses novo. 308 00:15:25,760 --> 00:15:27,570 E teña en conta as dúas comas alí dentro. 309 00:15:27,570 --> 00:15:34,380 Estes dous comas tres separados expresións distintas dentro do 310 00:15:34,380 --> 00:15:35,020 parénteses. 311 00:15:35,020 --> 00:15:37,170 Un deles é o chamado inicializações. 312 00:15:37,170 --> 00:15:38,830 Unha delas é a condición chamada. 313 00:15:38,830 --> 00:15:40,210 E é un dos chamados actualizacións. 314 00:15:40,210 --> 00:15:43,240 >> Mirou en abstracto, é dicir completamente non-obvio, entón imos ollar 315 00:15:43,240 --> 00:15:44,630 un exemplo concreto. 316 00:15:44,630 --> 00:15:46,720 En risco tivemos un bloque de repetición. 317 00:15:46,720 --> 00:15:50,670 E este bloque dixo Repita 10 veces, digamos "Ola, mundo". Déixeme reclamar para 318 00:15:50,670 --> 00:15:53,810 agora, e nós imos voltar a este, e iso, tamén, vai ser máis familiar para 319 00:15:53,810 --> 00:15:57,345 vostede en pouco tempo, o equivalente C código se pode dicir que este - 320 00:15:57,345 --> 00:16:02,320 unha instrución e un espazo, un par de parénteses, teña en conta as comas en 321 00:16:02,320 --> 00:16:05,730 alí, que separan tres distintas cousas, o arranque, o 322 00:16:05,730 --> 00:16:07,320 condición ea actualización. 323 00:16:07,320 --> 00:16:08,840 >> E dar un palpite que a primeira está facendo. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 En termos laicos duro, o que é que está a facer por nós, probablemente? 326 00:16:15,120 --> 00:16:15,590 Entón, si. 327 00:16:15,590 --> 00:16:19,630 Está declarando unha variable chamada i, e está dando o valor? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Por iso, está creando unha variable chamada i, almacenando o valor en que 0. 330 00:16:24,280 --> 00:16:26,420 É o chamado arranque. 331 00:16:26,420 --> 00:16:29,360 >> Todo ben, agora eu reivindiquei antes que a cousa medio, i 332 00:16:29,360 --> 00:16:31,760 <10, é a condición. 333 00:16:31,760 --> 00:16:32,730 Entón o que está facendo? 334 00:16:32,730 --> 00:16:36,560 Ben, o que o loop for fai cando un programa con un loop é executado, é 335 00:16:36,560 --> 00:16:41,050 cada vez que o ordenador é executado mediante este loop, de arriba a abaixo, de arriba 336 00:16:41,050 --> 00:16:43,740 inferior, así como vostedes fixeron cando contando-se e sentir-se, 337 00:16:43,740 --> 00:16:47,090 novo e de novo e de novo, o ordenador vai 338 00:16:47,090 --> 00:16:48,560 para comprobar esa condición. 339 00:16:48,560 --> 00:16:51,140 E se é inferior a 10, que vai facelo de novo. 340 00:16:51,140 --> 00:16:53,100 I é inferior a 10, que vai facelo de novo. 341 00:16:53,100 --> 00:16:55,030 I sexa inferior a dez, que vai facelo de novo. 342 00:16:55,030 --> 00:16:57,330 Así que parece suxerir que Espero está cambiando. 343 00:16:57,330 --> 00:16:59,010 En caso contrario, teriamos un loop infinito. 344 00:16:59,010 --> 00:17:02,590 E, de feito, eu está cambiando, porque a último tras o punto e coma non 345 00:17:02,590 --> 00:17:05,569 é a sintaxe un tanto enigmática de i + +. 346 00:17:05,569 --> 00:17:07,630 Pero aqueles de vostedes que xa o fixo antes, iso só significa 347 00:17:07,630 --> 00:17:08,609 simplemente o que? 348 00:17:08,609 --> 00:17:09,730 >> ESTUDANTES: [interpondo voces]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID Malan: Engadir 1 para i. 350 00:17:10,740 --> 00:17:11,819 Incrementar i. 351 00:17:11,819 --> 00:17:13,910 Entón vimos un quebra cero peza para que, en realidade. 352 00:17:13,910 --> 00:17:18,230 Non se parecía con i + +, pero iso só significa, moi simplemente, aumentar o 353 00:17:18,230 --> 00:17:24,040 Valorados i por 1 a cada vez que fai iso. 354 00:17:24,040 --> 00:17:26,910 Entón, literalmente, comeza i arrincar a 0. 355 00:17:26,910 --> 00:17:29,520 Vostede, entón, comprobar o seu estado. 356 00:17:29,520 --> 00:17:31,070 É 0 a menos de 10? 357 00:17:31,070 --> 00:17:31,730 Si 358 00:17:31,730 --> 00:17:32,910 Imos a través do loop. 359 00:17:32,910 --> 00:17:35,150 >> A seguinte cousa que eu afirmo que o equipo de vai facer é que vai 360 00:17:35,150 --> 00:17:35,910 incrementar i. 361 00:17:35,910 --> 00:17:37,080 Así que é agora 1. 362 00:17:37,080 --> 00:17:37,940 El verifica a condición. 363 00:17:37,940 --> 00:17:39,290 É un inferior a 10? 364 00:17:39,290 --> 00:17:39,930 Claro. 365 00:17:39,930 --> 00:17:41,030 Entón fai iso de novo. 366 00:17:41,030 --> 00:17:43,580 A continuación, el incrementa i + + para 2. 367 00:17:43,580 --> 00:17:44,610 2 é inferior a 10? 368 00:17:44,610 --> 00:17:45,230 Si 369 00:17:45,230 --> 00:17:46,670 E de novo e de novo e de novo. 370 00:17:46,670 --> 00:17:50,070 E, finalmente, en virtude da plus-plussing, debemos i é igual a 10. 371 00:17:50,070 --> 00:17:51,675 É 10 a menos que 10? 372 00:17:51,675 --> 00:17:52,990 Ben, obviamente que non. 373 00:17:52,990 --> 00:17:55,320 E ese é o momento en que o loop for simplemente para. 374 00:17:55,320 --> 00:17:58,320 E se ten máis de código no pantalla a continuación, o ordenador 375 00:17:58,320 --> 00:18:01,620 recursos para realizar este código en vez. 376 00:18:01,620 --> 00:18:05,380 >> Entón, de novo, aínda que iso vai ollar e sentir un pouco raro no 377 00:18:05,380 --> 00:18:07,830 en primeiro lugar, por suposto, para aqueles de vostedes que nunca programou antes, 378 00:18:07,830 --> 00:18:11,640 literalmente reduce conceptualmente o que é outra forma moi 379 00:18:11,640 --> 00:18:14,330 puzzle simple peza en perigo. 380 00:18:14,330 --> 00:18:19,130 >> Todo ben, eu prometín que non tiña ser outros análogos en perigo. 381 00:18:19,130 --> 00:18:20,060 Hai un presente tamén. 382 00:18:20,060 --> 00:18:21,700 E vimos iso brevemente última vez. 383 00:18:21,700 --> 00:18:23,530 Pero lembre sempre o bloquear en cero? 384 00:18:23,530 --> 00:18:25,490 El só fai algo para sempre? 385 00:18:25,490 --> 00:18:27,470 Eu afirmaba que podería aplicar isto deste xeito. 386 00:18:27,470 --> 00:18:29,740 E realmente pode aplicar esta nun grupo de diferentes xeitos. 387 00:18:29,740 --> 00:18:34,260 >> Pero o loop while é só unha diferente forma en C de expresarse. 388 00:18:34,260 --> 00:18:37,080 Ao final do día, non se pode facer calquera cousa con un loop while que 389 00:18:37,080 --> 00:18:38,360 non pode con un loop for. 390 00:18:38,360 --> 00:18:41,430 Entón, están ao final da funcionalmente o mesmo día. 391 00:18:41,430 --> 00:18:43,840 Pero permite que se exprese un pouco diferente en 392 00:18:43,840 --> 00:18:44,850 do seguinte xeito. 393 00:18:44,850 --> 00:18:49,720 >> Co loop while, é o que está en parénteses que está verificados de novo e 394 00:18:49,720 --> 00:18:51,050 unha e outra vez. 395 00:18:51,050 --> 00:18:55,100 E tan pronto que a expresión é falsa, logo interrompe o ciclo de execución, 396 00:18:55,100 --> 00:18:57,890 e o equipo prosegue realizar calquera outro código 397 00:18:57,890 --> 00:18:59,230 ten no seu arquivo. 398 00:18:59,230 --> 00:19:02,180 >> Pero o que é interesante aquí é que eu literalmente ingresaran verdade. 399 00:19:02,180 --> 00:19:06,680 Certo é un tipo de valor booleano, un valor verdadeiro ou falso. 400 00:19:06,680 --> 00:19:09,750 Así, podería facer realidade nunca false se eu teño literalmente 401 00:19:09,750 --> 00:19:11,970 codificado-lo no meu programa? 402 00:19:11,970 --> 00:19:12,470 Entón, non. 403 00:19:12,470 --> 00:19:13,730 É un pouco raro que eu fixen iso. 404 00:19:13,730 --> 00:19:15,190 Pero certo é verdade. 405 00:19:15,190 --> 00:19:16,320 Non hai máis-plussing. 406 00:19:16,320 --> 00:19:17,820 Non hai uso de variables aquí. 407 00:19:17,820 --> 00:19:22,740 Entón por que eu codificado mentres certo, este loop é sempre indo a avaliar 408 00:19:22,740 --> 00:19:24,090 novo e de novo e de novo. 409 00:19:24,090 --> 00:19:27,660 >> Entón, cantas veces é Ola mundo vai imprimir na pantalla? 410 00:19:27,660 --> 00:19:28,170 Forever. 411 00:19:28,170 --> 00:19:31,980 Un número infinito de veces, ata que o batería morre ou algún outro externas 412 00:19:31,980 --> 00:19:32,730 evento ocorre. 413 00:19:32,730 --> 00:19:35,880 Polo tanto, este non é probablemente o mellor programa para escribir, porque se o usuario 414 00:19:35,880 --> 00:19:38,660 non pode saír do seu programa, é probablemente non é o que pretende. 415 00:19:38,660 --> 00:19:41,070 >> Pero, ás veces, os programas deben ter un loop infinito. 416 00:19:41,070 --> 00:19:44,050 Por exemplo, se o seu ordenador ten un reloxo nel, el certamente sería 417 00:19:44,050 --> 00:19:48,130 bo se o seu reloxo el manter a actualización ti para sempre, aínda que unha vez por 418 00:19:48,130 --> 00:19:50,500 segundo ou unha vez por minuto ou algo parecido. 419 00:19:50,500 --> 00:19:53,690 Así, mesmo lazos infinitos teñen o seu lugar. 420 00:19:53,690 --> 00:19:54,360 >> Todo ben. 421 00:19:54,360 --> 00:19:55,190 Para rematar, un agasallo. 422 00:19:55,190 --> 00:19:57,770 E este é un pouco diferente funcionalmente, e nós imos voltar a 423 00:19:57,770 --> 00:19:59,460 iso probablemente en Pset 1. 424 00:19:59,460 --> 00:20:02,370 Pero hai outro tipo de loop chamado facer mentres loop. 425 00:20:02,370 --> 00:20:07,100 E a única diferenza aquí entre un facer loop while e, digamos, un loop while, 426 00:20:07,100 --> 00:20:11,120 é que a condición é revisada non antes de executar o código, pero logo 427 00:20:11,120 --> 00:20:12,080 executar o código. 428 00:20:12,080 --> 00:20:15,380 Así, na parte superior para o tempo loop, mentres facelo mentres 429 00:20:15,380 --> 00:20:16,560 comprobar-lo na parte inferior. 430 00:20:16,560 --> 00:20:21,370 >> E isto significa só que o loop while tipicamente executar máis veces 431 00:20:21,370 --> 00:20:24,630 ou menor número de veces que un loop while? 432 00:20:24,630 --> 00:20:30,810 Potencialmente máis veces, porque a facer while está dicindo claramente iso, 433 00:20:30,810 --> 00:20:34,600 só despois que punto verifique O estado no interior do 434 00:20:34,600 --> 00:20:35,980 parénteses é certo. 435 00:20:35,980 --> 00:20:37,940 >> Entón, imos ver iso de novo probablemente en Pset 1. 436 00:20:37,940 --> 00:20:41,150 Se queres facer algo en menos unha vez e logo, se cadra un pouco máis 437 00:20:41,150 --> 00:20:43,350 veces, este é un bo construír a empregar. 438 00:20:43,350 --> 00:20:46,970 Pero un loop while, pola contra, vai comprobar a súa condición de primeira. 439 00:20:46,970 --> 00:20:50,660 E iso é todo para loops en C, non mentres, ao mesmo tempo, e para loops. 440 00:20:50,660 --> 00:20:54,700 E, de novo, eles mapeiam moi ben de volta a cero, excepto este non 441 00:20:54,700 --> 00:20:57,350 pode ter o mesmo analóxico en perigo. 442 00:20:57,350 --> 00:20:58,880 >> Ben, que tal, agora, as variables? 443 00:20:58,880 --> 00:21:02,600 Entón é así que eu declarei unha variable sintaticamente o outro día. 444 00:21:02,600 --> 00:21:06,440 Tiven un int, que alegou é un número enteiro. 445 00:21:06,440 --> 00:21:09,690 Entón eu tiven unha variable chamada contador, e logo, un punto e coma. 446 00:21:09,690 --> 00:21:11,070 Entón o que é esta liña de código está facendo? 447 00:21:11,070 --> 00:21:14,540 Este é, simplemente, declarando unha variable - 448 00:21:14,540 --> 00:21:17,940 dicir, pedindo o ordenador, dáme un pouco de memoria, dáme uns bits - en 449 00:21:17,940 --> 00:21:19,450 que podo gardar o que? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 E o punto e coma significa só final da liña de código. 452 00:21:23,570 --> 00:21:25,500 >> Agora, a segunda liña é probablemente moi adiviñación. 453 00:21:25,500 --> 00:21:29,710 Que é contador = 0; facendo? 454 00:21:29,710 --> 00:21:31,690 É a asignación de 0 a combater. 455 00:21:31,690 --> 00:21:33,470 E por iso esta é a outra cousa iso é un pouco aburrido 456 00:21:33,470 --> 00:21:34,540 contra, digamos, álxebra. 457 00:21:34,540 --> 00:21:39,110 Considerando que, en álxebra, o signo igual significa iguais, aquí en C, a igual 458 00:21:39,110 --> 00:21:40,470 sinal significa asignación. 459 00:21:40,470 --> 00:21:45,380 Entón iso significa poñer o que está á dereita no que está na esquerda. 460 00:21:45,380 --> 00:21:49,030 E nós imos ver outro símbolo, é igual a iguais, cando queremos realmente probar 461 00:21:49,030 --> 00:21:50,570 de calidade, un pouco irritante. 462 00:21:50,570 --> 00:21:52,590 >> Pero iso é algo ineficiente. 463 00:21:52,590 --> 00:21:55,090 É o tipo de chat que eu teño para declarar unha variable e 464 00:21:55,090 --> 00:21:56,110 logo darlle un valor. 465 00:21:56,110 --> 00:21:59,380 Entón C realmente nos permite simplificar esta e só facelo dunha vez. 466 00:21:59,380 --> 00:22:01,330 Pode declarar a variable na parte esquerda. 467 00:22:01,330 --> 00:22:04,590 Tamén se pode facer a asignación a dereito, poñendo o sinal igual en 468 00:22:04,590 --> 00:22:05,030 medio. 469 00:22:05,030 --> 00:22:08,740 Así, ao final do día, estes son dous equivalente, pero este, a verdade, 470 00:22:08,740 --> 00:22:11,840 é probablemente o mellor costume de entrar só porque é un pouco menos 471 00:22:11,840 --> 00:22:15,040 código, que é un pouco máis fácil de ler, e el só aperta 472 00:22:15,040 --> 00:22:17,470 seu código, por así dicir. 473 00:22:17,470 --> 00:22:22,120 >> Calquera dúbida, ata agora, sobre os loops, sobre variables, en condicións de, en 474 00:22:22,120 --> 00:22:27,001 Booleanos, sexa técnicamente ou conceptual? 475 00:22:27,001 --> 00:22:28,010 Todo ben. 476 00:22:28,010 --> 00:22:30,690 Entón, agora o seguinte obtense unha pouco máis interesante. 477 00:22:30,690 --> 00:22:34,790 E este é o exemplo que eu poñer última xa que só mapea un exemplo do risco 478 00:22:34,790 --> 00:22:35,820 sobre a C. 479 00:22:35,820 --> 00:22:36,580 >> Así, unha función. 480 00:22:36,580 --> 00:22:38,110 En termos leigos, o que é unha función? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Ten que ser máis ousado coa súa resposta. 483 00:22:44,350 --> 00:22:45,020 ¿Que é unha función? 484 00:22:45,020 --> 00:22:46,320 >> ALUMNO: Será que algo. 485 00:22:46,320 --> 00:22:46,780 >> DAVID Malan: Que é iso? 486 00:22:46,780 --> 00:22:48,000 >> ALUMNO: Será que algo. 487 00:22:48,000 --> 00:22:48,710 >> DAVID Malan: Fai algo. 488 00:22:48,710 --> 00:22:49,000 Aceptar. 489 00:22:49,000 --> 00:22:49,590 Imos comezar por aí. 490 00:22:49,590 --> 00:22:51,270 Así, unha función fai algo. 491 00:22:51,270 --> 00:22:55,160 Polo tanto, é unha peza de código que se esencialmente aplicado en outro lugar que 492 00:22:55,160 --> 00:22:56,620 realmente fai algo. 493 00:22:56,620 --> 00:23:00,180 Agora, o que é interesante sobre a función é que pode recibir a entrada, 494 00:23:00,180 --> 00:23:02,710 e pode producir unha saída. 495 00:23:02,710 --> 00:23:05,090 E imos realmente tomar un ollo niso. 496 00:23:05,090 --> 00:23:09,030 >> Entón, o home detrás da cortina foi deliberado un momento atrás. 497 00:23:09,030 --> 00:23:10,320 Aquí temos unha táboa. 498 00:23:10,320 --> 00:23:13,010 Pero supoñamos que iso realmente representa unha gran caixa. 499 00:23:13,010 --> 00:23:14,940 Polo tanto, esta é unha chamada caixa negra. 500 00:23:14,940 --> 00:23:19,800 E, en xeral, no deseño, no ordenador ciencia, caixas negras só referirse a 501 00:23:19,800 --> 00:23:22,510 partes dunha función que alguén aplicou, e non 502 00:23:22,510 --> 00:23:26,140 necesariamente saber ou importarlle como é aplicado baixo o capó. 503 00:23:26,140 --> 00:23:28,960 Só lle importa que esta caixa negra, que agora vai comezar a chamar a 504 00:23:28,960 --> 00:23:30,730 función, fai algo. 505 00:23:30,730 --> 00:23:34,710 >> Así, por exemplo, se esta caixa negra o estadio aquí representa printf, unha 506 00:23:34,710 --> 00:23:38,040 función, sei que a partir de exemplos anteriores que leva unha ou máis printf 507 00:23:38,040 --> 00:23:40,910 argumentos, eo primeiro destes argumentos debe ser unha cadea, como 508 00:23:40,910 --> 00:23:44,780 "Ola, mundo". Ben, se eu son a persoa escribir o programa, e quero 509 00:23:44,780 --> 00:23:50,460 usar printf, eu, por exemplo, pode tome un anaco de papel en branco aquí e un 510 00:23:50,460 --> 00:23:55,060 marcador negro e escribir sobre ela - 511 00:23:55,060 --> 00:23:56,580 Eu grafada "mundo" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-S. 513 00:23:59,560 --> 00:24:04,220 >> Entón, eu vou levar o meu marcador negro e eu vou escribir, tan grande e lexible posible en 514 00:24:04,220 --> 00:24:07,260 este anaco de papel: "Ola, mundo", e agora eu reivindico que é o meu argumento. 515 00:24:07,260 --> 00:24:09,740 Isto é unha cadea representado con un anaco de papel branco. 516 00:24:09,740 --> 00:24:13,030 E agora a miña entrada para a función printf será iso. 517 00:24:13,030 --> 00:24:18,250 Entón, eu estou chamando printf, pasando ese argumento como entrada para el. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> E agora, eu non sei como a persoa que escribiu printf fixo anos, pero 520 00:24:26,740 --> 00:24:31,110 Sei da súa documentación o seu propósito na vida é para imprimir o que eu 521 00:24:31,110 --> 00:24:34,410 achegar a el como entrada. 522 00:24:34,410 --> 00:24:40,630 E así, aínda que esta aplicación é descoñecido para min 523 00:24:40,630 --> 00:24:44,170 debaixo do capó, agora Vexo, oh, está feito. 524 00:24:44,170 --> 00:24:45,740 Ten algo impreso na pantalla. 525 00:24:45,740 --> 00:24:49,070 E agora, o control do programa, se hai foron máis liñas de código, iría 526 00:24:49,070 --> 00:24:51,070 xa volveron para min. 527 00:24:51,070 --> 00:24:52,290 E así o feito de que Colton - 528 00:24:52,290 --> 00:24:55,370 bendiga seu corazón, está escondendo aquí en unha mesa diante de todos vós - 529 00:24:55,370 --> 00:24:59,530 é deliberada en que eu non sei e eu non me importa como printf é 530 00:24:59,530 --> 00:25:00,100 aplicadas. 531 00:25:00,100 --> 00:25:03,390 Eu só sei que, unha vez máis, desde a súa documentación, o que fai e como eu 532 00:25:03,390 --> 00:25:05,040 debo usalo. 533 00:25:05,040 --> 00:25:09,140 >> Agora, lembre que printf podería comezar algo máis sofisticadas. 534 00:25:09,140 --> 00:25:12,220 Unha vez máis, estamos só falando do equivalente do bloque Say de cero. 535 00:25:12,220 --> 00:25:14,230 Pero eu tamén fixen iso a última vez. 536 00:25:14,230 --> 00:25:17,270 Eu quería facer o meu programa Ola a pouco máis dinámica e non só difícil 537 00:25:17,270 --> 00:25:19,740 código algo así como "o mundo", e en definitiva non é algo ríxido código 538 00:25:19,740 --> 00:25:22,520 arbitraria como a D-A-V-I-D no programa. 539 00:25:22,520 --> 00:25:27,510 Quería pedir ao usuario para a súa nome, e, a continuación, facer algo con 540 00:25:27,510 --> 00:25:29,720 esta secuencia que fornecen. 541 00:25:29,720 --> 00:25:32,690 >> Polo tanto, hai algo un pouco diferente aquí. printf, hai pouco, 542 00:25:32,690 --> 00:25:35,860 se, de feito, facer algo, pero non devolveu nada para min. 543 00:25:35,860 --> 00:25:36,020 Non? 544 00:25:36,020 --> 00:25:38,910 Colton non me entregar nada atrás, ningún pedazo de papel. 545 00:25:38,910 --> 00:25:40,320 Había só un efecto colateral. 546 00:25:40,320 --> 00:25:44,510 O meu introducindo "Ola, mundo" como un argumento a Colton resultou na 547 00:25:44,510 --> 00:25:48,420 efectos secundarios dunha palabra, algunhas palabras, que aparece na pantalla. 548 00:25:48,420 --> 00:25:51,350 >> getstring, con todo, é un pouco diferente. getstring tamén un 549 00:25:51,350 --> 00:25:54,590 funciona, pero retorna un valor. 550 00:25:54,590 --> 00:25:56,370 El non ten só un efectos secundarios estética. 551 00:25:56,370 --> 00:26:00,230 En realidade, dáme, a persoa chamada ou utilizar a función, 552 00:26:00,230 --> 00:26:01,320 algo de volta. 553 00:26:01,320 --> 00:26:05,740 Polo tanto, neste caso, é getstring chamado con getstring aberto 554 00:26:05,740 --> 00:26:07,510 paréntese, preto paréntese. 555 00:26:07,510 --> 00:26:11,370 Será getstring, polo tanto, tomar calquera argumentos ou entrada? 556 00:26:11,370 --> 00:26:12,340 Non, non parece. 557 00:26:12,340 --> 00:26:14,460 O seu obxectivo na vida é só para ter unha cadea. 558 00:26:14,460 --> 00:26:16,910 Ela non precisa máis detalles do que iso. 559 00:26:16,910 --> 00:26:20,430 Entón deixe-me ir adiante e finxir que, de novo, desta caixa negra non é printf, 560 00:26:20,430 --> 00:26:25,160 pero getstring, e deixe-me, a persoa escribir este programa, chamar ou usar 561 00:26:25,160 --> 00:26:29,720 getString por só escribir G-E-T-S-T-R-I-N-G, aberto paréntese, preto 562 00:26:29,720 --> 00:26:32,170 paréntese, getstring. 563 00:26:32,170 --> 00:26:36,920 >> Agora, eu non teño ningunha idea de como o equipo CS50 aplicado getstring, pero eu sei que 564 00:26:36,920 --> 00:26:41,240 se eu esperar o tempo suficiente, que vai facer o seu cousa debaixo do capó, quizais usando 565 00:26:41,240 --> 00:26:44,940 algunhas variables, quizais usando algún condicións, é posible que o uso dalgúns loops, 566 00:26:44,940 --> 00:26:48,170 quizais usar algunhas funcións, quizais usar - 567 00:26:48,170 --> 00:26:52,290 só tentando tenda - quizais a usar algúns outros recursos de programación. 568 00:26:52,290 --> 00:26:55,350 Pero se eu esperar o tempo suficiente - en realidade, en que o ordenador, isto acontece 569 00:26:55,350 --> 00:26:56,270 super rápido - 570 00:26:56,270 --> 00:26:59,910 se eu esperar o tempo suficiente, esta función getstring recibirá unha cadea 571 00:26:59,910 --> 00:27:04,060 do usuario, que é presuntamente escribindo lo no seu teclado, e 572 00:27:04,060 --> 00:27:08,090 entón, se cando getstring faise os personaxes do usuario 573 00:27:08,090 --> 00:27:14,080 e almacena-los en unha cadea, que función, getstring, terá 574 00:27:14,080 --> 00:27:17,990 preparado para me algunha saída que eu son indo a recuperar por medio do 575 00:27:17,990 --> 00:27:19,470 operador de asignación. 576 00:27:19,470 --> 00:27:25,390 >> E se eu for, de feito, para a saída aquí, Obosi ten xenerosamente 577 00:27:25,390 --> 00:27:29,900 participaron, sen saber iso en avanzar, escribindo o seu nome a este 578 00:27:29,900 --> 00:27:33,100 variable, que está representando unha corda. 579 00:27:33,100 --> 00:27:35,640 Agora, o operador de asignación significa que, mesmo aínda que iso poida se sentir un pouco 580 00:27:35,640 --> 00:27:38,790 redundante, eu realmente teño para facer a miña propia copia deste. 581 00:27:38,790 --> 00:27:40,700 Porque na man esquerda lado - berros! - 582 00:27:40,700 --> 00:27:45,760 conta que esencialmente ten cadea nome no lado esquerdo. 583 00:27:45,760 --> 00:27:48,280 Entón, eu tamén vou facer miña propia copia deste. 584 00:27:48,280 --> 00:27:50,990 E iso é un pouco de unha mentira branca, porque imos ver nunha semana ou dúas de 585 00:27:50,990 --> 00:27:54,100 tempo que as cordas non son realmente o que parecen ser. 586 00:27:54,100 --> 00:27:56,700 >> Pero, por agora, aquí está o valor de retorno. 587 00:27:56,700 --> 00:28:00,160 Aquí é a miña propia copia do mesmo despois usar o operador de asignación. 588 00:28:00,160 --> 00:28:01,790 E agora, o que quero facer a continuación? 589 00:28:01,790 --> 00:28:04,080 Temos agora a segunda de dúas liñas de código. 590 00:28:04,080 --> 00:28:05,640 Entón, agora quero chamar printf. 591 00:28:05,640 --> 00:28:08,500 Imos finxir que agora que o negro caixa está de volta de novo a ser 592 00:28:08,500 --> 00:28:10,210 printf e non getstring. 593 00:28:10,210 --> 00:28:12,200 >> Printf este tempo vai tomar cantos argumentos? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Entón mire, é como dous. 596 00:28:16,770 --> 00:28:18,860 Hai dúas comas alí, pero unha desas comas, é 597 00:28:18,860 --> 00:28:20,220 dentro das comiñas. 598 00:28:20,220 --> 00:28:23,190 Así, o primeiro argumento é literalmente será isto. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-S, coma por cento s, barra-n. 600 00:28:31,850 --> 00:28:36,560 E agora eu estou ofrecendo non un argumento, pero dous argumentos para printf. 601 00:28:36,560 --> 00:28:39,530 >> E o que printf debe facer estas dúas entradas despois pasalas en 602 00:28:39,530 --> 00:28:42,050 como argumentos? 603 00:28:42,050 --> 00:28:45,360 É suposto tomar a segunda de eles, que eu chamei de nome, de xeito que o 604 00:28:45,360 --> 00:28:48,660 segundo anaco de papel que escribín un momento atrás chámase nome. 605 00:28:48,660 --> 00:28:53,550 Vai ficha do valor dentro desta variable no espazo reservado, 606 00:28:53,550 --> 00:28:58,310 % S, de xeito que, unha vez máis, en só un momento de tempo, veremos un efectos secundarios de 607 00:28:58,310 --> 00:29:04,180 chamar printf, polo cal agora temos non ven "Ola, mundo" pero "Ola, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Así, unha gran salva de palmas para os dous os nosos voluntarios, dos cales só un sabía 610 00:29:08,730 --> 00:29:12,010 diso estaría pasando. 611 00:29:12,010 --> 00:29:12,990 Todo ben. 612 00:29:12,990 --> 00:29:16,480 Entón, talvez, simple como iso era, Certamente, se xa está familiarizado 613 00:29:16,480 --> 00:29:20,190 con tal, espero que nunca vai esquecer que a vista particular de como 614 00:29:20,190 --> 00:29:21,220 funcións de traballo. 615 00:29:21,220 --> 00:29:23,000 >> Polo tanto, non hai máis que getstring. 616 00:29:23,000 --> 00:29:26,020 Dentro da biblioteca CS50, hai unha banda enteiro de funcións, as cales 617 00:29:26,020 --> 00:29:29,510 son capitalizar só para deixar claro que escribimos estas funcións. 618 00:29:29,510 --> 00:29:33,610 Tipicamente, en C, case todos os outros función que vai usar e minúsculas. 619 00:29:33,610 --> 00:29:36,190 Pero nós deliberadamente usar maiúsculas só para deixar claro que estes 620 00:29:36,190 --> 00:29:39,880 son Rodas pequenas de tipos que imos utilizar por só unhas semanas que 621 00:29:39,880 --> 00:29:42,890 simplificar o proceso de obtención de entrada do usuario. 622 00:29:42,890 --> 00:29:46,740 >> A biblioteca CS50 non fai nada que vós mesmos non podían facer por 623 00:29:46,740 --> 00:29:50,230 só usando o código C a partir dunha libro OldSchool. 624 00:29:50,230 --> 00:29:53,310 Pero, de novo, usalos como adestramento rodas de tipos para só un par de 625 00:29:53,310 --> 00:29:57,250 semanas para que poidamos librarse do complexidade que en breve vai entender 626 00:29:57,250 --> 00:30:00,460 -Se de facer algo como relativamente simple como a obtención de 627 00:30:00,460 --> 00:30:02,080 de entrada a partir dun usuario. 628 00:30:02,080 --> 00:30:05,540 >> Entón sabe que terá acceso a getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 dobrar. 630 00:30:06,050 --> 00:30:07,050 What 's - e logo GetFloat. 631 00:30:07,050 --> 00:30:07,600 ¿Que é un float? 632 00:30:07,600 --> 00:30:09,382 Imos comezar por aí. 633 00:30:09,382 --> 00:30:10,600 >> Estudante: [inaudível]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID Malan: Yeah. 635 00:30:10,790 --> 00:30:12,120 É un número con un punto decimal. 636 00:30:12,120 --> 00:30:15,930 Así, mentres un enteiro é un enteiro, o cal é só un número de 0 a 9, 637 00:30:15,930 --> 00:30:18,940 un certo número de repeticións da mesma, un flotador é algo 638 00:30:18,940 --> 00:30:20,100 cun punto decimal. 639 00:30:20,100 --> 00:30:26,090 E un dobre, pola súa banda, tamén é un número con un punto decimal, pero máis 640 00:30:26,090 --> 00:30:28,160 números despois do decimal punto, potencialmente. 641 00:30:28,160 --> 00:30:30,040 >> Entón, nós imos voltar a este antes de tempo. 642 00:30:30,040 --> 00:30:34,560 Porén, en xeral, cada un destes tipos de de datos, cada un destes tipos de variables 643 00:30:34,560 --> 00:30:39,380 que unha biblioteca como a nosa, pode volver ao ti, use números distintos de bits para 644 00:30:39,380 --> 00:30:40,290 gardar información. 645 00:30:40,290 --> 00:30:43,910 Normalmente, un Char, que significa só un personaxe, utiliza 8 bits. 646 00:30:43,910 --> 00:30:47,490 E iso é realmente consistente coa nosa byte de voluntarios a semana pasada que 647 00:30:47,490 --> 00:30:50,410 veu e representou un Caracteres ASCII de cada vez. 648 00:30:50,410 --> 00:30:51,850 Así, un Char é de 8 bits. 649 00:30:51,850 --> 00:30:54,430 >> Un flotador pasa a ser 32 bits, tipicamente. 650 00:30:54,430 --> 00:30:59,230 E un dobre, como pode imaxinar, é en realidade 64 bits, o que é máis, 651 00:30:59,230 --> 00:31:01,360 o que significa que pode ter maior números ou máis precisión. 652 00:31:01,360 --> 00:31:03,000 Pero, de novo, máis sobre iso outra hora. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, con todo, aínda que estupidamente nome, é realmente só unha 654 00:31:06,550 --> 00:31:10,770 enteiro que é dúas veces máis grande, o dobre tempo, potencialmente, como unha forma regular 655 00:31:10,770 --> 00:31:12,940 número enteiro, 64 bits en lugar de 32. 656 00:31:12,940 --> 00:31:14,560 E GetString estamos a usar. 657 00:31:14,560 --> 00:31:18,870 >> Pero resulta que, na biblioteca CS50, que é aplicado, como veremos, en 658 00:31:18,870 --> 00:31:23,560 baixo a forma dos dous ficheiros, un dos cales chámase cs50.h, ten outros dous 659 00:31:23,560 --> 00:31:24,770 tipos de datos nel. 660 00:31:24,770 --> 00:31:29,700 Booleanos non existen en C. Pode simulalo los usando só 0s e 1s 661 00:31:29,700 --> 00:31:30,850 ao longo dos seus programas. 662 00:31:30,850 --> 00:31:35,500 Pero na biblioteca CS50 crearon os símbolos de "certo" e "falso" 663 00:31:35,500 --> 00:31:38,580 para representar 1 e 0 para que non ten que codificar algo 664 00:31:38,580 --> 00:31:39,810 literalmente como 1 e 0. 665 00:31:39,810 --> 00:31:40,980 Pero imos ver de novo. 666 00:31:40,980 --> 00:31:42,330 >> Cadea, tamén, non existe. 667 00:31:42,330 --> 00:31:44,520 E é por iso que eu mencionen é un pouco de mentira para agora. 668 00:31:44,520 --> 00:31:46,660 Pero imos pelar que capa antes de tempo. 669 00:31:46,660 --> 00:31:49,540 Pero, polo momento, unha cadea é un secuencia de caracteres. 670 00:31:49,540 --> 00:31:51,790 >> Mentres tanto, en C, é de feito teñen diferentes tipos de datos. 671 00:31:51,790 --> 00:31:53,200 Teña en conta que estes son minúsculas. 672 00:31:53,200 --> 00:31:56,960 Así, as funcións que viu hai pouco son funcións escritas por CS50 que 673 00:31:56,960 --> 00:32:02,310 volverei para vós un valor que cae nunha destas categorías. 674 00:32:02,310 --> 00:32:06,730 >> A Cheat Sheets matrimonio só para plantar a semente aquí. printf non só 675 00:32:06,730 --> 00:32:08,600 levar% s como espazos reservados. 676 00:32:08,600 --> 00:32:13,490 Leva% d para enteiros decimais, ou% i ía funcionar tan ben. 677 00:32:13,490 --> 00:32:19,450 % F está valores de punto flotante. % C é para un char, se quere só conectar un 678 00:32:19,450 --> 00:32:23,510 caracteres nunha secuencia pre-formatado como temos benvida a facer, pode utilizar% c. 679 00:32:23,510 --> 00:32:28,490 >> E entón, un pouco irritante,% LLD é por un longo, longo enteiro decimal, 680 00:32:28,490 --> 00:32:31,050 o que só quere dicir que se realmente precisa dun gran número e que está a usar algo 681 00:32:31,050 --> 00:32:35,450 chama un longo, que virá de volta a nun pset, pode usar% para LLD 682 00:32:35,450 --> 00:32:40,700 dicir printf, Póñase realmente unha gran enteiro aquí baixo a forma do seu segundo ou 683 00:32:40,700 --> 00:32:41,830 algún outro argumento. 684 00:32:41,830 --> 00:32:45,700 >> E, finalmente, eu che prometín que Hai algunhas outras fuga 685 00:32:45,700 --> 00:32:47,670 secuencias que printf soporta. 686 00:32:47,670 --> 00:32:49,160 Vimos barra-n. 687 00:32:49,160 --> 00:32:50,510 Barra-r verás. 688 00:32:50,510 --> 00:32:51,780 É unha especie de unha cousa old-school. 689 00:32:51,780 --> 00:32:55,920 Se xa usou unha verdadeira máquina de escribir anos atrás e tirou a manivela 690 00:32:55,920 --> 00:32:59,810 que non só a rotación do volante mover a liña, tamén cambiou a 691 00:32:59,810 --> 00:33:03,730 todo isto por todo o camiño de volta a á esquerda, así, barra-r só 692 00:33:03,730 --> 00:33:06,480 esencialmente move o cursor de volta para o inicio da liña 693 00:33:06,480 --> 00:33:07,830 sen mover para abaixo. 694 00:33:07,830 --> 00:33:09,780 Pero, de novo, máis sobre iso, se cadra, no futuro. 695 00:33:09,780 --> 00:33:13,670 >> Barra-citas, barra-double, barra-barra invertida é o 696 00:33:13,670 --> 00:33:16,600 solución para o pequeno misterio Aludi anteriormente. 697 00:33:16,600 --> 00:33:18,920 E barra-0 é realmente bastante interesante. 698 00:33:18,920 --> 00:33:21,470 Pero imos volver ao que en pouco tempo. 699 00:33:21,470 --> 00:33:25,640 >> Entón déixeme entrar, agora, o CS50 aparello, e imos realmente facer unha 700 00:33:25,640 --> 00:33:28,930 rápida quentar con un dos exemplos xa e despois moveuse para 701 00:33:28,930 --> 00:33:31,160 algo un pouco máis complexo. 702 00:33:31,160 --> 00:33:34,980 Entón, se eu abrir o meu programa chamado gedit - 703 00:33:34,980 --> 00:33:36,840 este é o meu editor gráfico. 704 00:33:36,840 --> 00:33:38,460 E eu podo facer iso - 705 00:33:38,460 --> 00:33:39,820 déixeme pechar a fiestra alí - 706 00:33:39,820 --> 00:33:42,720 por medio deste icono aquí en baixo, gedit, na parte inferior esquerda 707 00:33:42,720 --> 00:33:44,170 canto á beira do menú. 708 00:33:44,170 --> 00:33:48,670 >> Eu estou indo a ir adiante e avanzar, e gardar este exemplo en, digamos, John 709 00:33:48,670 --> 00:33:49,660 Pasta de Harvard. 710 00:33:49,660 --> 00:33:52,690 Pasta de John Harvard é só a súa casa directorio onde todos os seus arquivos de vivir 711 00:33:52,690 --> 00:33:53,340 por defecto. 712 00:33:53,340 --> 00:33:58,410 E eu vou gardalo como un arquivo chamado Ola-0.C. 713 00:33:58,410 --> 00:34:01,260 E eu escollín ese nome só por iso aliñan co código de exemplo na 714 00:34:01,260 --> 00:34:04,210 páxina web do curso e na YouTube vídeos en liña. 715 00:34:04,210 --> 00:34:06,320 >> Entón agora eu vou comezar a escribir o meu primeiro programa. 716 00:34:06,320 --> 00:34:08,469 Déixeme achegar a lexibilidade. 717 00:34:08,469 --> 00:34:12,760 E eu estou indo a ir adiante e dicir int void main, que é así mesmo 718 00:34:12,760 --> 00:34:14,900 amarelo peza do puzzle que inicia un programa. 719 00:34:14,900 --> 00:34:18,290 Comece o hábito ao longo do anos de apertura meu chaveta, a continuación, 720 00:34:18,290 --> 00:34:22,000 tamén pecha-lo e, a continuación, voltar a onde quero poñer o meu código, simplemente 721 00:34:22,000 --> 00:34:24,630 porque iso me axuda a manter todo equilibrada, sobre o meu 722 00:34:24,630 --> 00:34:25,880 programa queda moito tempo. 723 00:34:25,880 --> 00:34:29,239 >> E agora, aquí, eu estou indo a ir adiante e dicir, printf, citar unquote, 724 00:34:29,239 --> 00:34:34,330 Ola mundo, barra-n, preto cita, Pechar parénteses, o punto e coma. 725 00:34:34,330 --> 00:34:38,100 Entón, eu estou só repetindo todo o que temos tomado como certo ata agora. 726 00:34:38,100 --> 00:34:39,270 Agora vou para diminuír o zoom. 727 00:34:39,270 --> 00:34:43,030 >> E esa fiestra de terminal aquí abaixo, o que estou autorizado a facer nesta negro 728 00:34:43,030 --> 00:34:44,389 ea fiestra de negro? 729 00:34:44,389 --> 00:34:46,977 O que podo usalo? 730 00:34:46,977 --> 00:34:49,770 Polo tanto, este é o lugar onde eu executar comandos e onde eu poida compilar as cousas. 731 00:34:49,770 --> 00:34:50,620 E eu vou mantelo simple. 732 00:34:50,620 --> 00:34:52,780 Vou usar un programa chamado Make, o que non é 733 00:34:52,780 --> 00:34:54,020 tecnicamente un compilador. 734 00:34:54,020 --> 00:34:56,360 Chamado Clang do compilador, pero imos volver a iso nun 735 00:34:56,360 --> 00:34:57,190 semana ou tempo de dous. 736 00:34:57,190 --> 00:35:03,410 >> De momento, eu só vou escribir facer Ola-0, pero os que foron 737 00:35:03,410 --> 00:35:07,050 comparando nas súas mentes o que me ingresaran co que eu debería ingresaran pode 738 00:35:07,050 --> 00:35:10,180 xa sei que eu fixen algo mal aquí. 739 00:35:10,180 --> 00:35:12,160 Agora, hai claramente algúns erros. 740 00:35:12,160 --> 00:35:16,742 Antes de ollar para o que son, de calquera pensamentos sobre o que eu fixen de malo? 741 00:35:16,742 --> 00:35:18,590 >> ESTUDANTES: [interpondo voces]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID Malan: Yeah. 743 00:35:18,840 --> 00:35:20,640 Estou sentindo falta de ficheiro de cabeceira da biblioteca. 744 00:35:20,640 --> 00:35:24,240 Calquera destes arquivos h. San chamados de cabeceira arquivos, e colectivamente 745 00:35:24,240 --> 00:35:25,680 pertencen a cousas chamadas bibliotecas. 746 00:35:25,680 --> 00:35:28,030 Bibliotecas son só anacos de código que outros escribiron. 747 00:35:28,030 --> 00:35:32,140 Así, o estándar de [? i?] é unha biblioteca colección de arquivos que conteñan código 748 00:35:32,140 --> 00:35:33,330 que outros escribiron. 749 00:35:33,330 --> 00:35:34,820 >> Entón, eu estou sentindo falta diso. 750 00:35:34,820 --> 00:35:36,520 Entón por que estou a recibir un erro? 751 00:35:36,520 --> 00:35:40,840 Ben, deixe-me volver arriba en miña fiestra da terminal aquí. 752 00:35:40,840 --> 00:35:44,310 E, por desgraza, no C, como en unha morea de linguaxes de programación, especialmente 753 00:35:44,310 --> 00:35:47,830 se é todo novo para ti, o erro mensaxes son precisos, pero eles tamén son 754 00:35:47,830 --> 00:35:48,620 moi enigmática. 755 00:35:48,620 --> 00:35:51,720 E o problema aquí, en vermello, é "Función de biblioteca implicitamente declarando 756 00:35:51,720 --> 00:35:57,660 printf co tipo ", e entón rula á seguinte liña, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "El só queda realmente esmagadora rapidamente. 758 00:36:00,220 --> 00:36:04,420 >> Pero o que ten que comezar a facer, se, novo, novo para todo iso, é só para 759 00:36:04,420 --> 00:36:06,010 comezar a buscar palabras clave. 760 00:36:06,010 --> 00:36:08,770 Obviamente, eu non podería entender a metade as palabras que eu estou a ver aínda. 761 00:36:08,770 --> 00:36:10,140 Vai, con todo, dentro dunha semana. 762 00:36:10,140 --> 00:36:11,230 Pero vexo printf. 763 00:36:11,230 --> 00:36:14,310 E iso debe comezar, en pouco tempo, a refrescar a súa memoria, todo ben, printf. 764 00:36:14,310 --> 00:36:15,210 Algo está mal con printf. 765 00:36:15,210 --> 00:36:16,580 Será que eu deletrear mal? 766 00:36:16,580 --> 00:36:18,130 Non, non se parece - oh. 767 00:36:18,130 --> 00:36:21,350 Non podo usalo, a non ser que eu ensino o compilador que existe. 768 00:36:21,350 --> 00:36:25,220 E así, unha vez máis, vai cos seus instintos, mesmo se realmente non entendo 769 00:36:25,220 --> 00:36:26,510 as mensaxes de erro reais. 770 00:36:26,510 --> 00:36:30,240 >> E, de feito, a solución aquí é só inclui-lo na parte superior do arquivo 771 00:36:30,240 --> 00:36:34,340 así, resaving meu arquivo con Control-S ou o menú Ficheiro. 772 00:36:34,340 --> 00:36:36,730 E se eu agora volver aquí, Vou aclarar iso. 773 00:36:36,730 --> 00:36:39,150 Control-L é só un xeito agradable para limpar a pantalla. 774 00:36:39,150 --> 00:36:44,870 E entón eu vou escribir "Ola facer 0 "Enter, e agora eu aínda vexo un 775 00:36:44,870 --> 00:36:47,710 secuencia enigmática de símbolos, pero imos volver a iso. 776 00:36:47,710 --> 00:36:49,230 Iso é o que fan está facendo por ti. 777 00:36:49,230 --> 00:36:52,590 É a automatización do proceso de toma unha orde moi aburrido que inclúen 778 00:36:52,590 --> 00:36:54,050 Clang, o compilador real. 779 00:36:54,050 --> 00:36:57,460 Pero o feito de que eu non teño erros significa que esa cousa debe funcionar. 780 00:36:57,460 --> 00:37:00,630 >> Entón, eu estou indo agora para facer - déixeme achegar de novo - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Intro, e, de feito, eu vexo "Ola, mundo". Entón, imos agora mellorar 782 00:37:07,070 --> 00:37:12,105 este nunca tan pouco só para replicar os pasos que pretendía. 783 00:37:12,105 --> 00:37:15,370 Vou cambiar o nome deste con Gardar como para hello1.c. 784 00:37:15,370 --> 00:37:20,300 E agora vou declarar unha variable chamou o nome, por iso o nome cadea, 785 00:37:20,300 --> 00:37:23,420 e eu vou poñer nel o valor entre comiñas 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D close-quote punto e coma. 787 00:37:27,030 --> 00:37:31,150 E agora eu estou indo para substituír o "mundo" co espazo reservado para unha cadea? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> E agora, cantos argumentos deben printf aproveitar este momento? 790 00:37:35,040 --> 00:37:35,700 Así, dous. 791 00:37:35,700 --> 00:37:37,090 Entón eu ir fóra das comiñas. 792 00:37:37,090 --> 00:37:39,330 Eu tecleo "nome" despois de comas. 793 00:37:39,330 --> 00:37:41,550 Pero eu fixen algo máis mal neste momento. 794 00:37:41,550 --> 00:37:43,940 Pero imos supor que eu non fixen entender iso aínda. 795 00:37:43,940 --> 00:37:44,910 Déixeme ir ata aquí. 796 00:37:44,910 --> 00:37:48,850 >> E noten, tamén, eu estou quedando un pouco cansar de escribir "facer Ola 0" todo o 797 00:37:48,850 --> 00:37:50,180 tempo, "facer" e todo iso. 798 00:37:50,180 --> 00:37:53,270 Así, verifica-se, en Linus pode moitas veces bater a frecha para arriba no seu 799 00:37:53,270 --> 00:37:56,850 teclado, e realmente pode rolar a través de todos os comandos que eu 800 00:37:56,850 --> 00:37:58,830 executado anterior para agora. 801 00:37:58,830 --> 00:38:02,040 Entón, se eu fai iso, Arriba, Arriba, hai facer Ola 0. 802 00:38:02,040 --> 00:38:02,610 Non quero iso. 803 00:38:02,610 --> 00:38:05,450 Eu só quero cambiar isto para Ola 1 neste momento, Intro. 804 00:38:05,450 --> 00:38:07,620 Finalmente, que vai aforrar tempo. 805 00:38:07,620 --> 00:38:08,150 >> Todo ben. 806 00:38:08,150 --> 00:38:09,520 Desafortunadamente, non é un erro. 807 00:38:09,520 --> 00:38:10,980 Entón deixe-me ir para arriba. 808 00:38:10,980 --> 00:38:13,120 Este parece que realmente masacrado este programa. 809 00:38:13,120 --> 00:38:16,530 Quero dicir, o meu Deus, é dúas liñas de código, e as súas 10 liñas de erros. 810 00:38:16,530 --> 00:38:18,800 Mais olle para o alto primeiro. 811 00:38:18,800 --> 00:38:21,640 Uso da cadea do identificador non declarado. 812 00:38:21,640 --> 00:38:23,270 Será que quero dicir estándar i n? 813 00:38:23,270 --> 00:38:23,930 Non, eu non fixen. 814 00:38:23,930 --> 00:38:24,940 Eu quería dicir cadea. 815 00:38:24,940 --> 00:38:29,390 >> Pero onde está a variable de cadea tipo declarado, DD podemos dicir? 816 00:38:29,390 --> 00:38:30,730 Polo tanto, é o CS50 da biblioteca. 817 00:38:30,730 --> 00:38:33,740 Por iso, non é suficiente, nestes primeiros par de semanas, só para usar 818 00:38:33,740 --> 00:38:34,860 C o que nos dá. 819 00:38:34,860 --> 00:38:38,120 Eu tamén estou indo a ir ata aquí, e eu podería poñelas enriba ou abaixo, pero vou 820 00:38:38,120 --> 00:38:40,340 só mantelo alfabética para manter as cousas en orde. 821 00:38:40,340 --> 00:38:43,470 Eu estou indo a incluír cs50.h, que é pre-instalado para 822 00:38:43,470 --> 00:38:44,900 vostede no aparello CS50. 823 00:38:44,900 --> 00:38:47,640 E é de código aberto, polo que mesmo as persoas en Internet pode usalo na súa 824 00:38:47,640 --> 00:38:48,450 ordenadores propios. 825 00:38:48,450 --> 00:38:50,700 Pero el ven co aparello CS50. 826 00:38:50,700 --> 00:38:55,320 >> Entón, agora déixeme volver e recompilar Ola facelo con un. 827 00:38:55,320 --> 00:38:55,710 Drogas. 828 00:38:55,710 --> 00:38:57,240 Aínda outro erro. 829 00:38:57,240 --> 00:38:59,370 Déixeme ir ata o primeiro, con todo. 830 00:38:59,370 --> 00:39:00,630 Esta é algo complexo. 831 00:39:00,630 --> 00:39:03,830 Constante carácter multi-carácter. 832 00:39:03,830 --> 00:39:04,890 Isto non está me axudando. 833 00:39:04,890 --> 00:39:08,220 Pero aviso, Clang é polo menos un pouco algo decente, en que con un pouco de 834 00:39:08,220 --> 00:39:11,890 verde símbolo acento circunflexo, está dicindo aquí é onde eu estraguei todo. 835 00:39:11,890 --> 00:39:16,160 Por que é apuntar, con ese pequeno Arqueiro Verde, ao apóstrofo seguinte 836 00:39:16,160 --> 00:39:18,290 para o meu nome? 837 00:39:18,290 --> 00:39:20,880 >> Polo tanto, esta é unha das cousas que só acostumar, especialmente se ten sido 838 00:39:20,880 --> 00:39:23,980 programación en Python, JavaScript ou, ou outras linguas onde este detalle 839 00:39:23,980 --> 00:39:24,560 non importa. 840 00:39:24,560 --> 00:39:25,740 En C, non importa. 841 00:39:25,740 --> 00:39:29,520 Se declarar unha cadea, que é unha secuencia de 0 ou máis caracteres, 842 00:39:29,520 --> 00:39:32,280 realmente usar comiñas dobres. 843 00:39:32,280 --> 00:39:36,670 Entón, eu realmente teño cambiar isto de volta para abrir cita, pecha cita, con 844 00:39:36,670 --> 00:39:37,800 comiñas dobres. 845 00:39:37,800 --> 00:39:41,610 As aspas teñen o seu lugar, pero só cando está usando individuo 846 00:39:41,610 --> 00:39:44,100 caracteres, pero máis sobre iso outra hora. 847 00:39:44,100 --> 00:39:46,550 Polo momento, as comiñas dobres son necesarias. 848 00:39:46,550 --> 00:39:50,460 >> Entón, agora, déixeme volver ao meu terminal fiestra, faga Ola 1. 849 00:39:50,460 --> 00:39:51,450 E quen é seguro? 850 00:39:51,450 --> 00:39:53,800 Este programa agora vai para compilar correctamente? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 Aceptar. 853 00:39:58,540 --> 00:39:59,780 Así, tres de nós pensamos iso. 854 00:39:59,780 --> 00:40:00,280 Todo ben. 855 00:40:00,280 --> 00:40:01,190 Intro. 856 00:40:01,190 --> 00:40:02,440 E el realmente fixo. 857 00:40:02,440 --> 00:40:05,130 Polo tanto, non hai ningún erro esta vez, mesmo que este programa está quedando un pouco 858 00:40:05,130 --> 00:40:05,840 máis complexa. 859 00:40:05,840 --> 00:40:10,110 Se eu agora facer punto barra 1 Ola, intro vai dicir "Hola, David." 860 00:40:10,110 --> 00:40:11,750 >> Pero imos facer a terceira iteración Por iso é polo que, cando a 861 00:40:11,750 --> 00:40:13,380 programa é realmente dinámica. 862 00:40:13,380 --> 00:40:16,770 Déixeme ir adiante e cambiar o arquivo nome, só por coherencia coa 863 00:40:16,770 --> 00:40:20,410 arquivos que terá dispoñible para ti despois liña. 864 00:40:20,410 --> 00:40:21,620 Intro. 865 00:40:21,620 --> 00:40:25,510 E agora estou indo a ir e non almacenar "David" codificación aquí. 866 00:40:25,510 --> 00:40:28,826 O que eu podería facer para moi simplemente mellorar este programa? 867 00:40:28,826 --> 00:40:30,520 >> Podería chamar getstring. 868 00:40:30,520 --> 00:40:33,240 Pode ser un pouco o que non é obvio a piques de acontecer, entón eu vou 869 00:40:33,240 --> 00:40:38,470 para realmente engadir outra liña, printf, e dicir o nome, colonos, preto cita, só 870 00:40:38,470 --> 00:40:40,790 para dar ao usuario un aviso na pantalla. 871 00:40:40,790 --> 00:40:42,980 E agora eu estou indo a ir aquí, e eu estou vai utilizar o meu atallo de teclado. 872 00:40:42,980 --> 00:40:47,680 Eu estou indo a ir cara arriba, cara arriba, e cambiar Hola Hola 1 a 2, Intro. 873 00:40:47,680 --> 00:40:49,260 E, por sorte, estou facendo progreso. 874 00:40:49,260 --> 00:40:52,720 >> E agora vou subir a punto barra Ola e 875 00:40:52,720 --> 00:40:54,690 cambiar isto a 2, Intro. 876 00:40:54,690 --> 00:40:55,650 E agora o meu programa - 877 00:40:55,650 --> 00:40:57,700 Vou facer zoom in - está quedando algo máis fermosa. 878 00:40:57,700 --> 00:41:02,190 Nome será, digamos Rob Neste momento, entra, Ola, Rob. 879 00:41:02,190 --> 00:41:03,260 Podemos facelo de novo. 880 00:41:03,260 --> 00:41:05,360 Nome, Lauren, Intro. 881 00:41:05,360 --> 00:41:07,820 Nome: José, Intro. 882 00:41:07,820 --> 00:41:11,596 Nome, imos tratar de ser difícil, Intro. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Non é realmente un erro. 885 00:41:14,680 --> 00:41:16,090 Entón é un pouco feo. 886 00:41:16,090 --> 00:41:18,640 Entón quizais poidamos solucionar este no futuro, non agora. 887 00:41:18,640 --> 00:41:20,840 >> Pero como é que instintivamente percorrer preto de enderezo 888 00:41:20,840 --> 00:41:21,990 ese desafío particular? 889 00:41:21,990 --> 00:41:23,710 El só parece estúpido. 890 00:41:23,710 --> 00:41:27,320 Como evita cousas ollar estúpido? 891 00:41:27,320 --> 00:41:29,890 Así poderiamos facer, OK, eu oín un par cousas, unha condición e un loop. 892 00:41:29,890 --> 00:41:33,340 Poderíamos usar, unha, unha condición, para comprobar o que é a lonxitude da cadea 893 00:41:33,340 --> 00:41:34,190 o usuario nos deu? 894 00:41:34,190 --> 00:41:37,100 E se é 0, el é só citar unquote, eles só prema Intro, en seguida, 895 00:41:37,100 --> 00:41:38,930 talvez eu debería berrar con eles e leva-los de novo. 896 00:41:38,930 --> 00:41:39,970 Pero como a levalos de novo? 897 00:41:39,970 --> 00:41:44,230 Ben, eu tamén oín loop, e eu podía facelo de novo e de novo e de novo 898 00:41:44,230 --> 00:41:47,010 avisar o usuario para o mesmo. 899 00:41:47,010 --> 00:41:48,880 >> Ben, imos facer outro exemplo usar unha diferente 900 00:41:48,880 --> 00:41:50,620 función na biblioteca CS50. 901 00:41:50,620 --> 00:41:52,330 Déixeme pechar este proceso. 902 00:41:52,330 --> 00:41:53,510 Déixeme crear un novo. 903 00:41:53,510 --> 00:41:58,510 E eu vou chamalo adder.c, só porque é fácil de facer aritmética simple, 904 00:41:58,510 --> 00:42:00,890 aínda que iso será completamente por baixo do esperado co que podería facer 905 00:42:00,890 --> 00:42:02,250 con calquera ordenador moderno. 906 00:42:02,250 --> 00:42:03,750 >> Pero déixeme ir adiante agora e - 907 00:42:03,750 --> 00:42:10,680 Eu aprendín miña lección última vez - inclúen cs50.h, include stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, que, polo momento, vou asumir unha fe cega, pero imos asumir 909 00:42:14,170 --> 00:42:16,380 que vai entender o que isto significa que antes de tempo. 910 00:42:16,380 --> 00:42:21,030 E eu vou dicir unha cousa como "dáme un int." 911 00:42:21,030 --> 00:42:22,140 >> E agora, como fago para obter un int? 912 00:42:22,140 --> 00:42:26,820 Quero finalmente declarar unha variable chamada x de tipo int e 913 00:42:26,820 --> 00:42:29,240 nela almacenar un número enteiro a partir do usuario. 914 00:42:29,240 --> 00:42:29,970 Así, foi un bocado. 915 00:42:29,970 --> 00:42:35,680 Pero se alguén quere propoñer, como fago para declarar un enteiro chamado x? 916 00:42:35,680 --> 00:42:36,310 X INT. 917 00:42:36,310 --> 00:42:37,430 >> Entón, el realmente é tan sinxelo. 918 00:42:37,430 --> 00:42:38,240 Dáme un int. 919 00:42:38,240 --> 00:42:39,070 Chama-x. 920 00:42:39,070 --> 00:42:40,580 Agora eu uso o operador de asignación. 921 00:42:40,580 --> 00:42:43,400 E como fago para almacenar a partir do deixou un valor de usuario? 922 00:42:43,400 --> 00:42:47,310 Non quero chamar getstring, obviamente, senón getInt. 923 00:42:47,310 --> 00:42:49,060 Calquera argumentos? 924 00:42:49,060 --> 00:42:49,350 Non 925 00:42:49,350 --> 00:42:51,870 Por iso, ábrese paréntesis, preto paren de inmediato, e logo unha 926 00:42:51,870 --> 00:42:53,440 comas remata a liña. 927 00:42:53,440 --> 00:42:54,930 >> Agora, deixe-me facelo de novo. 928 00:42:54,930 --> 00:42:57,070 Dáme outra int. 929 00:42:57,070 --> 00:43:01,850 Esta vez eu vou facer int, imos chamalo y, é igual a getInt. 930 00:43:01,850 --> 00:43:05,060 E agora déixeme facer unha cousa super-sinxelo como un pouco de matemáticas. 931 00:43:05,060 --> 00:43:14,340 Así printf, a suma das% d é o espazo reservado para un int. 932 00:43:14,340 --> 00:43:20,030 E% d, período, barra-n. 933 00:43:20,030 --> 00:43:20,360 >> Todo ben. 934 00:43:20,360 --> 00:43:21,670 Entón, iso non é verdade matemática. 935 00:43:21,670 --> 00:43:25,500 Pero se eu quero dicir que a suma deste valor máis este valor é igual a este 936 00:43:25,500 --> 00:43:29,320 outro valor, cantos argumentos en total de que eu debería estar dando printf, 937 00:43:29,320 --> 00:43:30,520 en última instancia? 938 00:43:30,520 --> 00:43:31,420 Así, catro, non? 939 00:43:31,420 --> 00:43:33,790 Esta cadea e, a continuación, os tres valores. 940 00:43:33,790 --> 00:43:37,560 Entón x é o primeiro que quero ser conectados por primeira vez ao% d. 941 00:43:37,560 --> 00:43:39,270 y será o próximo. 942 00:43:39,270 --> 00:43:42,030 >> E agora eu medio que quero dicir z, z, aínda non existe. 943 00:43:42,030 --> 00:43:43,190 Pero isto non é un gran negocio. 944 00:43:43,190 --> 00:43:45,440 Porque o que fai instintivamente, especialmente se tivese un 945 00:43:45,440 --> 00:43:47,820 calculadora gráfica, o que escribe? 946 00:43:47,820 --> 00:43:48,760 Como preto de x + y? 947 00:43:48,760 --> 00:43:50,200 Polo tanto, non é unha variable real. 948 00:43:50,200 --> 00:43:51,820 É só a suma de dous outras variables. 949 00:43:51,820 --> 00:43:53,170 E iso é perfectamente lexítimo. 950 00:43:53,170 --> 00:43:56,630 C seguramente entende simple aritmética así. 951 00:43:56,630 --> 00:43:58,450 >> Punto e coma, salva. 952 00:43:58,450 --> 00:44:02,080 Agora, deixe-me ir para abaixo aquí e escriba make víbora, Intro. 953 00:44:02,080 --> 00:44:04,100 Non hai erros, de xeito que é un avance tamén. 954 00:44:04,100 --> 00:44:04,890 Escriba víbora. 955 00:44:04,890 --> 00:44:07,100 E outro atallo de teclado, se comezar a se cansar 956 00:44:07,100 --> 00:44:08,760 con todos os comandos - 957 00:44:08,760 --> 00:44:12,650 Se comeza a escribir unha orde, como punto reducir anuncio, e é aí onde o 958 00:44:12,650 --> 00:44:16,020 aburrimento entra en acción, normalmente pode bater Tab para que o ordenador rematar a 959 00:44:16,020 --> 00:44:20,510 descansar da frase para ti, se non é ambiguo que debe vir despois do anuncio. 960 00:44:20,510 --> 00:44:23,950 >> Entón deixe-me ir adiante agora e premer en Intro. 961 00:44:23,950 --> 00:44:27,490 Dáme un int, 1, 2, e Afortunadamente, é 3. 962 00:44:27,490 --> 00:44:29,900 Pero, como sempre, os programas de probas non debe reducir a 963 00:44:29,900 --> 00:44:30,820 só probalo unha vez. 964 00:44:30,820 --> 00:44:35,560 Déixeme tentar un caso extremo, como negativo 1, dáme un, e que un 965 00:44:35,560 --> 00:44:36,210 verifícase tamén. 966 00:44:36,210 --> 00:44:38,870 E eu probablemente vai querer facer un pouco máis probas rigorosos, pero estou moi 967 00:44:38,870 --> 00:44:40,630 cómodo co lugar onde iso está. 968 00:44:40,630 --> 00:44:43,110 >> Ben, agora imos tratar outro programa que esta vez utiliza un 969 00:44:43,110 --> 00:44:44,620 bits doutra sintaxe. 970 00:44:44,620 --> 00:44:46,100 Déixeme crear un novo arquivo. 971 00:44:46,100 --> 00:44:51,050 Vou chamar esta conditions0.c para aliñar cun código de exemplo liña. 972 00:44:51,050 --> 00:44:55,550 E déixeme ir adiante e facer inclúen cs50.h inclúen 973 00:44:55,550 --> 00:45:00,320 stdio.h, en void main - 974 00:45:00,320 --> 00:45:01,030 Aceptar. 975 00:45:01,030 --> 00:45:01,850 Alí imos nós. 976 00:45:01,850 --> 00:45:03,010 Temos o noso cliché estándar. 977 00:45:03,010 --> 00:45:08,170 >> E esta vez eu vou dicir printf, "Gustaríame un int, por favor", só para 978 00:45:08,170 --> 00:45:10,030 facer a ventá de algo máis agradable. 979 00:45:10,030 --> 00:45:11,620 E agora quero ter unha int do usuario. 980 00:45:11,620 --> 00:45:15,010 Vou chamalo n este tempo, só porque non soa como número. 981 00:45:15,010 --> 00:45:18,140 getInt, e agora, o que facer Eu quero facer con el? 982 00:45:18,140 --> 00:45:21,640 Ben, se non é - e eu vou facer zoom in - 983 00:45:21,640 --> 00:45:25,930 se n é maior que 0, quero facer o seguinte - 984 00:45:25,930 --> 00:45:36,060 printf "Escolleu un número positivo." Senón, vou escribir printf "Vostede 985 00:45:36,060 --> 00:45:37,870 escolleu un negativo 986 00:45:37,870 --> 00:45:39,650 número. "Todo ben. 987 00:45:39,650 --> 00:45:44,410 Polo tanto, este programa, aínda que eu fixen iso rápido, parece certo sintaticamente. 988 00:45:44,410 --> 00:45:45,010 Déixeme tentar iso. 989 00:45:45,010 --> 00:45:46,890 Fai condición 0. 990 00:45:46,890 --> 00:45:47,710 Parece estar a funcionar. 991 00:45:47,710 --> 00:45:49,230 Condición 0, entrar. 992 00:45:49,230 --> 00:45:51,910 Imos darlle un int de 50. 993 00:45:51,910 --> 00:45:53,160 Eu escollín un número positivo. 994 00:45:53,160 --> 00:45:54,230 Imos tentar de novo. 995 00:45:54,230 --> 00:45:54,930 Estado 0. 996 00:45:54,930 --> 00:45:56,260 Negativo 50. 997 00:45:56,260 --> 00:45:57,290 Eu escollín un número negativo. 998 00:45:57,290 --> 00:46:00,350 >> Pero agora, déixeme escoller o que imos seguir chamando un caso de canto, que é máis 999 00:46:00,350 --> 00:46:04,702 un caso interesante que pensa pode darlle algúns problemas, 0. 1000 00:46:04,702 --> 00:46:07,940 Agora, eu estou seguro que este é un dos Nestes casos recuncho onde cero é 1001 00:46:07,940 --> 00:46:12,330 nin positivo nin negativo, entón miña programa, aínda que en sintaticamente 1002 00:46:12,330 --> 00:46:15,440 corrixir - el compila, el roda - non é loxicamente correcta. 1003 00:46:15,440 --> 00:46:21,050 Entón cal é a solución simple aquí se eu queira para detectar, se eu queira manipular n 1004 00:46:21,050 --> 00:46:23,840 é igual a 0 separado? 1005 00:46:23,840 --> 00:46:32,980 >> Así, se n é igual a 0, entón quero dicir algo así como printf "Escolleu a 0." 1006 00:46:32,980 --> 00:46:33,990 Déixeme tentar iso agora. 1007 00:46:33,990 --> 00:46:38,320 Déixeme volver aquí, desmarque miña fiestra, e recompilar. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Un erro xerar. 1010 00:46:39,770 --> 00:46:41,630 Pero eu quere comprobar se n é igual a 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Entón, de novo, outra cousa estúpida para acostumar, é signo igual 1013 00:46:47,720 --> 00:46:48,910 o operador de asignación. 1014 00:46:48,910 --> 00:46:52,240 Polo tanto, este é realmente un erro en que, tecnicamente, aínda que o compilador 1015 00:46:52,240 --> 00:46:56,450 protexeu-me de min mesmo, nos ser tecnicamente copiar 0 en n, que 1016 00:46:56,450 --> 00:46:57,590 non é o que quero. 1017 00:46:57,590 --> 00:47:00,950 Quero probar a igualdade con iguais iguais. 1018 00:47:00,950 --> 00:47:03,390 E para que agora se pode o meu mellor solución. 1019 00:47:03,390 --> 00:47:07,810 >> Déixeme realmente salva isto como, por exemplo, conditions1, para ser novo e mellorado. 1020 00:47:07,810 --> 00:47:10,480 Polo tanto, agora si recompilar tanto, faría condicións - 1021 00:47:10,480 --> 00:47:16,960 berros - facer conditions1 dot barra conditions1, Intro, "Gustaríame un int, 1022 00:47:16,960 --> 00:47:18,760 por favor. "Eu estou indo a ir adiante e escriba 50. 1023 00:47:18,760 --> 00:47:19,660 El aínda é bo. 1024 00:47:19,660 --> 00:47:21,200 Negativo 50, menos mal. 1025 00:47:21,200 --> 00:47:24,920 0, e, de feito, detectáronse que eu peguei 0. 1026 00:47:24,920 --> 00:47:28,200 >> Entón, o que máis pode agora fago con isto? 1027 00:47:28,200 --> 00:47:32,280 Ben, nós certamente podemos facer cada vez máis cousas complexas. 1028 00:47:32,280 --> 00:47:37,240 Pero o que me gustaría propoñer é que imos rematar con esta nota aquí. 1029 00:47:37,240 --> 00:47:41,680 Se tirar tanto, vai ver, se cadra, unha caricatura súa favorita 1030 00:47:41,680 --> 00:47:43,326 ata hoxe pode nunca entendín. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 E iso é sobre a calidade da risa ten que comezar con bromas CS. 1033 00:47:49,520 --> 00:47:51,060 Entón, iso é certo. 1034 00:47:51,060 --> 00:47:54,900 >> Pero o máis convincente, eu penso que tiña dar un pouco de provocación para luns. 1035 00:47:54,900 --> 00:47:56,430 Entón nós comezamos con números enteiros. 1036 00:47:56,430 --> 00:47:57,510 Nós xa mencionado carrozas. 1037 00:47:57,510 --> 00:48:00,120 Temos aínda refire dúos, que, unha vez máis, darlle números 1038 00:48:00,120 --> 00:48:01,390 tras os puntos decimais. 1039 00:48:01,390 --> 00:48:04,230 >> Pero resulta que os coches alegóricos e dobres, e, en realidade, ordenadores, 1040 00:48:04,230 --> 00:48:08,470 fundamentalmente, non pode expresar algúns valores precisamente. 1041 00:48:08,470 --> 00:48:12,840 Sabemos de clases de matemáticas que pode ter calquera número de números despois do 1042 00:48:12,840 --> 00:48:13,510 punto decimal. 1043 00:48:13,510 --> 00:48:16,460 E tamén se pode poñer unha barra vertical para dicir que estes van para sempre. 1044 00:48:16,460 --> 00:48:18,810 >> Desafortunadamente, non pode realmente facelo nun ordenador. 1045 00:48:18,810 --> 00:48:20,400 E así xorden casos de canto. 1046 00:48:20,400 --> 00:48:23,120 Por exemplo, supoñamos que está facendo algo financeira. 1047 00:48:23,120 --> 00:48:25,700 Está facendo matemáticas con porcentaxes e 1048 00:48:25,700 --> 00:48:27,030 con dólares e centavos. 1049 00:48:27,030 --> 00:48:29,230 E os centavos non liña necesariamente up. 1050 00:48:29,230 --> 00:48:34,120 Pois ben, parece que as fraccións de tostões pode comezar a sumar cando 1051 00:48:34,120 --> 00:48:37,250 modelado cun sistema informático de tal forma que intelixente 1052 00:48:37,250 --> 00:48:39,100 os seres humanos poden sacar proveito. 1053 00:48:39,100 --> 00:48:42,650 >> E aqueles de vostedes que aínda non viron, eu quere darlle un teaser de 30 segundos de 1054 00:48:42,650 --> 00:48:48,290 un filme marabilloso, coñecido como Office Space, que vai pintar un retrato dun 1055 00:48:48,290 --> 00:48:51,205 problema que debe enfrontar primeiro que o luns. 1056 00:48:51,205 --> 00:48:53,960 Se puidésemos aumentar o volume algo, doulle 30 1057 00:48:53,960 --> 00:48:55,495 segundos de espazo de oficina. 1058 00:48:55,495 --> 00:48:55,770 >> [REPRODUCIÓN] 1059 00:48:55,770 --> 00:48:59,000 >> -Quero dicir, ti, non se mostra e pode manter o seu emprego. 1060 00:48:59,000 --> 00:49:00,620 >> -En realidade, eu a ser promovido. 1061 00:49:00,620 --> 00:49:03,240 >> -Podería programar un virus que rasgar aquel lugar fóra un gran momento. 1062 00:49:03,240 --> 00:49:04,430 >> -Ben, como é que funciona? 1063 00:49:04,430 --> 00:49:06,782 >> -Cada vez que hai unha transacción bancaria onde o interese é calculado, e non 1064 00:49:06,782 --> 00:49:10,160 son miles ao día, o equipo termina con estas fraccións de un centavo. 1065 00:49:10,160 --> 00:49:12,030 >> -Pero eu non vou facer algo ilegal. 1066 00:49:12,030 --> 00:49:12,660 >> -Ilegal? 1067 00:49:12,660 --> 00:49:15,075 Samir, este é a América. 1068 00:49:15,075 --> 00:49:16,570 >> -Temos de xuro por Deus. 1069 00:49:16,570 --> 00:49:19,070 >> -Se ninguén sabe sobre iso pero nós, non? 1070 00:49:19,070 --> 00:49:21,920 Ningún membro da familia, sen noivas, ninguén. 1071 00:49:21,920 --> 00:49:22,700 >> -Claro. 1072 00:49:22,700 --> 00:49:23,320 >> -Estou de acordo. 1073 00:49:23,320 --> 00:49:24,280 >> -Non te preocupes, cara. 1074 00:49:24,280 --> 00:49:25,640 Non vou contar a ninguén quere. 1075 00:49:25,640 --> 00:49:26,504 >> [FIN reprodución de vídeo] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID Malan: Entón este é, entón, CS50, que era Office Space, e todo vai 1077 00:49:30,030 --> 00:49:31,465 ter sentido o luns. 1078 00:49:31,465 --> 00:49:33,940 Vexo vostedes despois. 1079 00:49:33,940 --> 00:49:37,880 >> Narrador: Na seguinte CS50, Rob axusta-se estar fóra do 1080 00:49:37,880 --> 00:49:39,130 Harvard plan de comida. 1081 00:49:39,130 --> 00:49:56,160