1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID Malan: Este é CS50, e isto é o inicio da Semana 1. 2 00:00:12,200 --> 00:00:15,520 O que nós pensamos en facer hoxe é dar un ollo cara atrás en 3 00:00:15,520 --> 00:00:18,290 algo que moitos de vostedes probablemente xa pasou por algún 4 00:00:18,290 --> 00:00:20,570 tempo e agora pode parecer un pouco familiar. 5 00:00:20,570 --> 00:00:23,720 Esta cousa aquí, que, por suposto, é na - 6 00:00:23,720 --> 00:00:24,155 Audiencia: Ciencia. 7 00:00:24,155 --> 00:00:26,030 DAVID Malan: Ciencia centro. 8 00:00:26,030 --> 00:00:28,940 Polo tanto, esta é, en realidade, un dos primeiros ordenadores 9 00:00:28,940 --> 00:00:30,220 de volta da década de 1940. 10 00:00:30,220 --> 00:00:33,790 Foi un dos primeiros ordenadores electromecánicos 11 00:00:33,790 --> 00:00:35,730 que foi capaz de particularmente longa, 12 00:00:35,730 --> 00:00:38,450 auto-sostidas cálculos, e que realmente vemos en 13 00:00:38,450 --> 00:00:41,580 o centro de ciencia é só un pequeno anaco desa cousa. 14 00:00:41,580 --> 00:00:44,170 O que nós pensamos en facer, entón, é dar un ollo cara atrás nun vídeo 15 00:00:44,170 --> 00:00:46,670 que foi feita hai algún tempo, a introdución deste 16 00:00:46,670 --> 00:00:47,520 cousa para o mundo. 17 00:00:47,520 --> 00:00:50,200 E vai ver a partir da música e da voz que de feito os 18 00:00:50,200 --> 00:00:52,070 Foron tempos moi felices. 19 00:00:54,885 --> 00:00:59,700 >> [REPRODUCIÓN] 20 00:00:59,700 --> 00:01:02,490 -Un triunfo de habilidade matemática e mecánica é este 21 00:01:02,490 --> 00:01:06,340 nova calculadora gran automática na Universidade de Harvard. 22 00:01:06,340 --> 00:01:08,620 Intricados problemas de matemáticas, colocado a través da 23 00:01:08,620 --> 00:01:12,420 máquina, en forma codificada na cinta, sexan resoltos de precisión 24 00:01:12,420 --> 00:01:15,200 pequena fracción do tempo necesario para o humano 25 00:01:15,200 --> 00:01:16,450 cálculo. 26 00:01:27,050 --> 00:01:30,600 Deseñado para axilizar toda forma de matemáticas e científica 27 00:01:30,600 --> 00:01:34,610 investigación, o cerebro mecánico xigante vai traballar para os Estados Unidos 28 00:01:34,610 --> 00:01:36,570 Mariña dos Estados ata o final da guerra. 29 00:01:50,280 --> 00:01:52,980 >> DAVID Malan: Entón, o que quizais non sabe é que estaba en 30 00:01:52,980 --> 00:01:56,310 este mesmo dispositivo que un termo que todos agora tomar moi bonito 31 00:01:56,310 --> 00:01:59,300 por certo foi cuñado, que un erro. 32 00:01:59,300 --> 00:02:01,140 Así, un dos enxeñeiros que traballan neste ordenador 33 00:02:01,140 --> 00:02:05,280 literalmente atopar unha traza pequena na máquina que resultou 34 00:02:05,280 --> 00:02:07,580 nalgúns cálculos incorrectos. 35 00:02:07,580 --> 00:02:10,410 E como a historia vai que traza foi gravado para este rexistro 36 00:02:10,410 --> 00:02:14,180 xornal aquí, de volta de 09 de setembro de 1940 e algo, 37 00:02:14,180 --> 00:02:16,550 e así naceu para o mundo o "erro" prazo. 38 00:02:16,550 --> 00:02:19,880 Así, a partir de agora, consideramos erros para calquera tipo de erros en 39 00:02:19,880 --> 00:02:23,290 programas, tanto feitas polo home, ou, neste caso, os insectos. 40 00:02:23,290 --> 00:02:25,030 >> Entón, algúns anuncios, como proceder. 41 00:02:25,030 --> 00:02:29,160 Entón CS50 ten unha tradición de ofrecer comidas de tipos de 42 00:02:29,160 --> 00:02:31,600 a maioría dos venres durante o semestre, onde levamos de 30 a 43 00:02:31,600 --> 00:02:34,650 40 alumnos ó lume e xeo en Praza de casual 44 00:02:34,650 --> 00:02:36,390 conversa fiada, conversa sobre ciencias da computación, 45 00:02:36,390 --> 00:02:37,420 falar sobre o futuro. 46 00:02:37,420 --> 00:02:40,000 Invitados alumnos e amigos da industria para falar 47 00:02:40,000 --> 00:02:40,690 estudantes. 48 00:02:40,690 --> 00:02:44,020 Realmente para un fin de facer o que é unha clase moi grande 49 00:02:44,020 --> 00:02:46,740 todo o máis íntimo, polo menos de cando en vez para 50 00:02:46,740 --> 00:02:47,710 subconxuntos de alumnos. 51 00:02:47,710 --> 00:02:50,940 Entón, se quere unirse a nós este venres, 1:15 PM, ir 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch RSVP. 53 00:02:53,340 --> 00:02:55,840 E nós imos facelo recorrentemente, non tan de preocuparse se non está 54 00:02:55,840 --> 00:02:57,930 entre os primeiros 30 ou así esta semana. 55 00:02:57,930 --> 00:02:59,070 >> Así notas escriba. 56 00:02:59,070 --> 00:03:01,500 Unha palabra sobre os recursos que pode agora comezar a estar dispoñible 57 00:03:01,500 --> 00:03:03,040 para os alumnos da clase. 58 00:03:03,040 --> 00:03:05,540 De xeito que os seus xefes non precisan estar en baixo durante as clases 59 00:03:05,540 --> 00:03:08,560 rabiscar baixo todo o que digo e así por diante, o que facemos 60 00:03:08,560 --> 00:03:10,765 en vez diso é proporcionar a partir do corpo docente dunha 61 00:03:10,765 --> 00:03:11,920 conxunto canónico de notas. 62 00:03:11,920 --> 00:03:14,850 Polo tanto, temos un dos nosos compañeiros de ensino, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 que se senta cada semana, revisa os vídeos, e despois 64 00:03:17,830 --> 00:03:19,730 escribe o que cremos que é unha forma xusta 65 00:03:19,730 --> 00:03:21,840 conxunto oficial de notas. 66 00:03:21,840 --> 00:03:24,180 E desexa Andrew, tamén, de poñer notas de rodapé en snarky 67 00:03:24,180 --> 00:03:24,820 a parte inferior. 68 00:03:24,820 --> 00:03:27,300 Entón, esperamos que aproveite estes como un libro de referencia para 69 00:03:27,300 --> 00:03:30,230 divertido, e tamén, vir preguntar o tempo, como unha oportunidade para revisar 70 00:03:30,230 --> 00:03:31,830 o que pasou en conferencias individuais. 71 00:03:31,830 --> 00:03:33,580 Polo tanto, aqueles están ligados na páxina de charla. 72 00:03:33,580 --> 00:03:35,300 >> 0 conxunto de problemas, mentres, está fóra. 73 00:03:35,300 --> 00:03:37,470 E, en termos de recursos dispoñibles para ti - 74 00:03:37,470 --> 00:03:38,020 paso a paso. 75 00:03:38,020 --> 00:03:39,730 Milo levou o primeiro venres. 76 00:03:39,730 --> 00:03:41,470 Foi filmado, poñer en liña ata sábado. 77 00:03:41,470 --> 00:03:44,030 E así entender, se non está seguro por onde comezar, 78 00:03:44,030 --> 00:03:47,280 para este ou futuro P-sets Apague sempre primeiro o 79 00:03:47,280 --> 00:03:49,300 paso a paso ou o seu vídeo. 80 00:03:49,300 --> 00:03:52,950 Paso está en marcha; no cs50.net/section é onde 81 00:03:52,950 --> 00:03:54,540 deberán presentar as súas preferencias, se non ten 82 00:03:54,540 --> 00:03:55,880 xa, por hoxe. 83 00:03:55,880 --> 00:03:58,140 Porque seccións comezará o vindeiro domingo, luns, 84 00:03:58,140 --> 00:03:58,760 e martes. 85 00:03:58,760 --> 00:04:02,470 Facemos seccións eses tres días, todas as semanas do 86 00:04:02,470 --> 00:04:03,870 semestre para a maior parte. 87 00:04:03,870 --> 00:04:06,600 E nós tamén introducir de novo, pistas diferentes. 88 00:04:06,600 --> 00:04:08,270 Entón, será preguntado sobre esta forma de paso, se 89 00:04:08,270 --> 00:04:10,350 non vin iso xa se está entre os menos 90 00:04:10,350 --> 00:04:12,800 cómodo, máis cómodo, ou algures no medio. 91 00:04:12,800 --> 00:04:14,960 E se é unha especie de enriba do muro, xeralmente en algún lugar 92 00:04:14,960 --> 00:04:18,160 entre o que a maioría dos alumnos acaban verificando. 93 00:04:18,160 --> 00:04:19,579 Horario de oficina comezar esta noite. 94 00:04:19,579 --> 00:04:23,020 >> Entón Scratch é clave mínimo, a pesar de que é moi natural 95 00:04:23,020 --> 00:04:25,300 a executar para varios erros, ou ser incerto sobre como 96 00:04:25,300 --> 00:04:26,550 implementar algo. 97 00:04:26,550 --> 00:04:28,880 Entón entender que vai comezar o horario de expediente esta semana. 98 00:04:28,880 --> 00:04:30,500 Eles van estar en Annenberg luns, martes, mércores, 99 00:04:30,500 --> 00:04:34,300 Xoves, 20:00 - 23:00 durante as vacacións de cerebro. 100 00:04:34,300 --> 00:04:38,160 Classmen superiores pode entrar, e se ten problemas para obter 101 00:04:38,160 --> 00:04:40,720 na porta, porque vai ser swiping, pode falar o seu camiño 102 00:04:40,720 --> 00:04:42,560 e explicar que está con CS50. 103 00:04:42,560 --> 00:04:45,230 Tipicamente 20 a 30 nós no equipo vai estar alí para axudar 104 00:04:45,230 --> 00:04:46,190 Vostede é un en un. 105 00:04:46,190 --> 00:04:48,980 >> Tras a chegada a idea é esta: vai traer o seu ordenador portátil, 106 00:04:48,980 --> 00:04:51,300 vai ter o seu cargador, nós imos ter os cables de alimentación extra, 107 00:04:51,300 --> 00:04:53,320 particularmente ao longo da parede sur do Annenberg onde 108 00:04:53,320 --> 00:04:55,080 hai moitas tomas eléctricas. 109 00:04:55,080 --> 00:04:59,290 E o principal punto de entrada para a oficina hora Q & A é para ir 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss e escribir 111 00:05:01,690 --> 00:05:02,580 súa pregunta alí. 112 00:05:02,580 --> 00:05:05,600 E rótula-lo con pset 0 ou 1 pset, calquera que sexa a semana 113 00:05:05,600 --> 00:05:06,810 pode ocorrer de ser. 114 00:05:06,810 --> 00:05:09,240 E entón o que imos facer é ter unha táboa de bolseiros de ensino 115 00:05:09,240 --> 00:05:12,040 e asistentes do curso, xeralmente 8 ou 10 ou ben de nós, 116 00:05:12,040 --> 00:05:14,430 pasando, mantendo un ollar atento sobre a tarxeta, e 117 00:05:14,430 --> 00:05:16,810 arrincar coas preguntas realmente tan axiña como sexa posible, 118 00:05:16,810 --> 00:05:19,600 referíndose lo a artigos relacionados, se aínda non atopou os 119 00:05:19,600 --> 00:05:22,220 vós, referencias en liña, segundo o caso. 120 00:05:22,220 --> 00:05:24,280 E entón, se hai problemas, como hai inevitablemente 121 00:05:24,280 --> 00:05:27,190 será, ou só fai máis sentido para sentir un a un, 122 00:05:27,190 --> 00:05:28,660 traballar con problemas con alguén. 123 00:05:28,660 --> 00:05:30,810 >> Ou acaba de entrar en horario de oficina realmente 124 00:05:30,810 --> 00:05:31,640 necesitando esa mentalidade. 125 00:05:31,640 --> 00:05:33,400 Non quere ir a través do formulario electrónico, 126 00:05:33,400 --> 00:05:34,410 realmente quere atopar con alguén. 127 00:05:34,410 --> 00:05:37,240 Comunicar que a nós, eo que vai ocorrer é cando o seu 128 00:05:37,240 --> 00:05:40,620 pregunta foi vista por un membro do equipo, e nós 129 00:05:40,620 --> 00:05:43,660 determinar, si, este debe ser enviado a un dos 20 ou 130 00:05:43,660 --> 00:05:47,800 30 membros do equipo aquí localmente, vai ver na esquina superior esquerda desta 131 00:05:47,800 --> 00:05:51,590 pouco Introduza o botón Fila comeza a palpebrar no cs50.net / 132 00:05:51,590 --> 00:05:52,165 discutir. 133 00:05:52,165 --> 00:05:55,260 E iso está lle dicindo que agora foron convidados, así 134 00:05:55,260 --> 00:05:56,880 para falar, para entrar na cola. 135 00:05:56,880 --> 00:05:59,090 E facendo clic neste botón, o seu nome aparecerá en 136 00:05:59,090 --> 00:06:02,660 un iPad que o saúdo CS50, un dos cabezas do curso, será 137 00:06:02,660 --> 00:06:05,250 estar seguro preto da entrada de Annenberg, que, entón, 138 00:06:05,250 --> 00:06:08,630 ver como descritos aquí, os alumnos que teñan dúbidas sobre 139 00:06:08,630 --> 00:06:11,630 á esquerda, os membros do equipo que están presentes na dereita. 140 00:06:11,630 --> 00:06:14,830 E con un click de esquerda e dereita, o seu navegador irá 141 00:06:14,830 --> 00:06:18,610 comezar a palpebrar así que, por exemplo, o profesor McGonnagal 142 00:06:18,610 --> 00:06:21,460 Está preparado para velo nunha táboa específica en Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Entón nós fixemos parte deste último ano. 144 00:06:23,340 --> 00:06:25,430 Nós reiniciar o horario de expediente e 145 00:06:25,430 --> 00:06:26,980 reimplementadas moito do software. 146 00:06:26,980 --> 00:06:29,940 Entón entender que esta será quentar esta semana. 147 00:06:29,940 --> 00:06:32,970 Pero tamén entender tamén, nos últimos anos, como xa debería ter oído 148 00:06:32,970 --> 00:06:35,710 de amigos, o horario de expediente tiña de feito 50 a 149 00:06:35,710 --> 00:06:37,040 150 alumnos dunha soa vez. 150 00:06:37,040 --> 00:06:39,300 E é simplemente imposible para nós para tratar con isto 151 00:06:39,300 --> 00:06:42,060 En efecto, un a un, ao longo da noite. 152 00:06:42,060 --> 00:06:44,570 E entón o que realmente estamos indo a tentar facer este ano é 153 00:06:44,570 --> 00:06:46,590 capitalizar o feito de que unha morea de preguntas son 154 00:06:46,590 --> 00:06:49,050 frecuentes e moitas veces pode ser mellor respostar 155 00:06:49,050 --> 00:06:50,030 de forma asíncrono. 156 00:06:50,030 --> 00:06:52,140 Entón pode clasificar de pensar a través da resposta do persoal, 157 00:06:52,140 --> 00:06:54,360 e podemos pensar a través do seu código, sen Calefacción 158 00:06:54,360 --> 00:06:57,050 presión de necesariamente loitando 159 00:06:57,050 --> 00:06:58,210 polo lado a lado. 160 00:06:58,210 --> 00:07:00,980 Así, estímase que preto dun terzo ou a metade das cuestións 161 00:07:00,980 --> 00:07:03,500 será enviado en persoa, e imos tentar arrincar fóra como 162 00:07:03,500 --> 00:07:05,530 moitos como un media ou máis electronicamente, 163 00:07:05,530 --> 00:07:06,710 durante o expediente. 164 00:07:06,710 --> 00:07:08,070 E nós imos continuar a utilizar Discutir 165 00:07:08,070 --> 00:07:09,990 ao longo da semana, así. 166 00:07:09,990 --> 00:07:12,680 >> E, finalmente, entender que este curso pode ser feito de aprobación / reprovação. 167 00:07:12,680 --> 00:07:16,230 Entón se está enriba do muro ou só pensar que é realmente 168 00:07:16,230 --> 00:07:18,650 non estou seguro se este é o mundo para ti, ou iso é realmente 169 00:07:18,650 --> 00:07:21,310 moi raro para ti, entender que esta é unha forma marabillosa 170 00:07:21,310 --> 00:07:24,840 de gañar un pouco de confianza que para entrar no 171 00:07:24,840 --> 00:07:26,780 clase, como eu fixen, francamente, anos atrás. 172 00:07:26,780 --> 00:07:28,630 E entón temos cinco semanas para clasificar de descubrir por 173 00:07:28,630 --> 00:07:30,850 a si mesmo se quere quedar de aprobación / reprovação, pasar a unha carta 174 00:07:30,850 --> 00:07:31,800 grao, ou semellante. 175 00:07:31,800 --> 00:07:34,050 E, normalmente, o que pasa / fallo non, eu creo que, para os estudantes e 176 00:07:34,050 --> 00:07:36,700 que, se pór en que 10 horas, 20 horas, o que sexa 177 00:07:36,700 --> 00:07:38,830 pode ser en algúns problemas, e está batendo coa cabeza 178 00:07:38,830 --> 00:07:39,690 contra a parede, 179 00:07:39,690 --> 00:07:41,750 e realmente non pode perseguir algo, e 180 00:07:41,750 --> 00:07:44,230 ten tantas outras cousas que cómpre facer, honestamente, o que 181 00:07:44,230 --> 00:07:46,070 creo que pasa / falla é, leva a bordo fóra de 182 00:07:46,070 --> 00:07:47,250 situacións como esta. 183 00:07:47,250 --> 00:07:49,350 Onde tomou a cousa de 90% do camiño. 184 00:07:49,350 --> 00:07:50,830 Vostede sabe, non é moi perfecto. 185 00:07:50,830 --> 00:07:52,950 Pero ten unha morea de fóra, no entanto. 186 00:07:52,950 --> 00:07:55,440 Por iso, considero pasa / fallo como dando-lle que 187 00:07:55,440 --> 00:07:57,590 modelo mental, se cadra. 188 00:07:57,590 --> 00:08:00,680 >> Durante toda a semana, certo modo pasado, mergullou Scratch, e nós 189 00:08:00,680 --> 00:08:03,610 falou sobre a programación nun nivel moi elevado de vídeo. 190 00:08:03,610 --> 00:08:05,340 E hoxe nós facemos a transición cara a unha linguaxe 191 00:08:05,340 --> 00:08:08,300 chamado C, unha linguaxe de baixo nivel de programación enriba 192 00:08:08,300 --> 00:08:11,260 que moitas linguas modernas son agora construídos, incluíndo algúns 193 00:08:11,260 --> 00:08:13,010 dos que estamos usando para finais do prazo. 194 00:08:13,010 --> 00:08:15,530 E sintaticamente, o que parece 195 00:08:15,530 --> 00:08:17,330 é todo moi semellante. 196 00:08:17,330 --> 00:08:19,080 Entón, imos comezar a facer esa transición aquí. 197 00:08:19,080 --> 00:08:21,730 Polo tanto, este foi un programa da semana pasada que era o máis sinxelo de 198 00:08:21,730 --> 00:08:22,910 Ola programas mundiais. 199 00:08:22,910 --> 00:08:25,560 El simplemente impreso para a pantalla do mundo Ola, cun 200 00:08:25,560 --> 00:08:27,650 globo de fala pouco saíndo do gato. 201 00:08:27,650 --> 00:08:30,590 Ben, se nós comezamos agora a traducir isto para outro 202 00:08:30,590 --> 00:08:33,419 linguaxe, entender que as ideas de hoxe e mércores 203 00:08:33,419 --> 00:08:36,450 son idénticas, pero a sintaxe comeza a cambiar. 204 00:08:36,450 --> 00:08:39,370 Así, mentres a semana pasada tivemos, cando premendo bandeira verde, digamos 205 00:08:39,370 --> 00:08:40,340 Ola mundo. 206 00:08:40,340 --> 00:08:43,870 Hoxe imos ter int, void, principal, printf, 207 00:08:43,870 --> 00:08:46,350 retorno, con algunha outra sintaxe de alí tamén. 208 00:08:46,350 --> 00:08:49,200 Chaves e parénteses e comiñas, e outros enfeites. 209 00:08:49,200 --> 00:08:54,520 Pero entenda que o núcleo da idea aquí é a impresión, 210 00:08:54,520 --> 00:08:58,470 e, finalmente, o feito principal é que agora vai ser 211 00:08:58,470 --> 00:09:00,770 sinónimo do inicio dun programa. 212 00:09:00,770 --> 00:09:04,250 Inicio vai ser o lugar onde a bandeira verde xuta as cousas fóra. 213 00:09:04,250 --> 00:09:06,390 >> Entón agora imos desmembrar algúns dos bloques de construción aquí 214 00:09:06,390 --> 00:09:08,650 Antes de mergullo en algúns exemplos concretos. 215 00:09:08,650 --> 00:09:11,620 Polo tanto, chamado esta semana unha última declaración, en que é só 216 00:09:11,620 --> 00:09:12,470 unha instrución. 217 00:09:12,470 --> 00:09:15,660 Facelo - neste caso, dicir Hola mundo. 218 00:09:15,660 --> 00:09:18,400 Ben en C, se miramos só unha liña que, é así que somos 219 00:09:18,400 --> 00:09:20,920 vai comezar a expresar esa peza de puzzle particular: 220 00:09:20,920 --> 00:09:24,780 printf ("Ola mundo");. 221 00:09:24,780 --> 00:09:27,330 E agora imos provocar estes separados máis e máis ao longo do tempo, 222 00:09:27,330 --> 00:09:29,330 pero entende que non hai un patrón aquí. 223 00:09:29,330 --> 00:09:31,870 Entón un, temos esa cousa chamada printf, que é 224 00:09:31,870 --> 00:09:34,310 esencialmente análoga á palabra Say. 225 00:09:34,310 --> 00:09:35,800 Isto é o que vai facer. 226 00:09:35,800 --> 00:09:37,870 Printf, e f aquí significa "plano". 227 00:09:37,870 --> 00:09:39,270 Por iso só significa que pode inserir 228 00:09:39,270 --> 00:09:41,600 varios detalles estéticos. 229 00:09:41,600 --> 00:09:43,770 Entón, pecha comiñas é o comezo do que imos 230 00:09:43,770 --> 00:09:45,340 para comezar a chamar a unha cadea. 231 00:09:45,340 --> 00:09:47,110 Unha palabra, unha frase, unha frase. 232 00:09:47,110 --> 00:09:50,220 Unha secuencia nunha linguaxe de programación é unha secuencia de cero 233 00:09:50,220 --> 00:09:51,330 ou máis caracteres. 234 00:09:51,330 --> 00:09:54,390 Así, h-e-l-l-o, coma, e así por diante é, 235 00:09:54,390 --> 00:09:56,290 pecha comiñas, unha cadea. 236 00:09:56,290 --> 00:09:58,710 E agora barra invertida n, un pouco sintaticamente raro, pero nós 237 00:09:58,710 --> 00:10:01,780 xa definido que a semana pasada no sentido de que? 238 00:10:01,780 --> 00:10:02,630 É só unha nova liña. 239 00:10:02,630 --> 00:10:05,000 É só un xeito de transmitir ao ordenador que quere que o 240 00:10:05,000 --> 00:10:07,700 equivalente de bater a entrar alí, pero non 241 00:10:07,700 --> 00:10:10,460 quere realmente prema Intro e, polo tanto, desorde todo o 242 00:10:10,460 --> 00:10:12,130 formato do seu programa actual. 243 00:10:12,130 --> 00:10:15,500 Agora, os parénteses rodean esa secuencia, aberto e paren 244 00:10:15,500 --> 00:10:18,130 paren preto, e dentro do que é a nosa secuencia. 245 00:10:18,130 --> 00:10:22,600 Porque iso é porque en C, programación e outros 246 00:10:22,600 --> 00:10:27,510 linguas, cousas como printf ter argumentos, ou tomar 247 00:10:27,510 --> 00:10:28,420 parámetros. 248 00:10:28,420 --> 00:10:31,490 >> Entón comeza a pensar agora este bloque Say vermello como un 249 00:10:31,490 --> 00:10:34,890 función, como un método, como un procedemento. 250 00:10:34,890 --> 00:10:36,890 Pode chamar o que ti queiras, por agora, pero 251 00:10:36,890 --> 00:10:39,260 é unha especie de miniatura dun programa que só fai unha 252 00:10:39,260 --> 00:10:41,480 cousa, nunha única liña, nin menos. 253 00:10:41,480 --> 00:10:43,620 Entón printf tamén é o que nós imos comezar a chamar a 254 00:10:43,620 --> 00:10:46,680 función, e as funcións de facer algo - neste caso 255 00:10:46,680 --> 00:10:49,320 imprime unha cadea formatada para a pantalla - 256 00:10:49,320 --> 00:10:53,220 pero funciona ter argumentos ou parámetros. 257 00:10:53,220 --> 00:10:55,880 E por argumentos ou parámetros, grazas, queremos dicir 258 00:10:55,880 --> 00:11:01,220 que o seu comportamento pode ser influenciado polo que pasa 259 00:11:01,220 --> 00:11:03,420 dentro dos parénteses. 260 00:11:03,420 --> 00:11:06,460 Polo tanto, neste caso, as necesidades printf dicir que imprimir, e nós 261 00:11:06,460 --> 00:11:09,520 só pasar, entre comiñas aquí, a secuencia que 262 00:11:09,520 --> 00:11:11,270 realmente quere imprimir. 263 00:11:11,270 --> 00:11:14,060 E o punto e coma ao final desta liña é só un 264 00:11:14,060 --> 00:11:18,020 incómodo histórico en que a finais da maioría das liñas de código, 265 00:11:18,020 --> 00:11:21,170 poñer un punto e coma para facer super claro para o ordenador 266 00:11:21,170 --> 00:11:23,020 que esta liña de código remata aquí. 267 00:11:23,020 --> 00:11:25,600 Agora iso é bo porque, como veremos como os programas están máis 268 00:11:25,600 --> 00:11:29,030 complexo, a coma vai facer super-humanos claras para nós, 269 00:11:29,030 --> 00:11:32,280 e tamén o ordenador, onde as liñas de código de inicio e de fin. 270 00:11:32,280 --> 00:11:34,360 Entenda que algunhas linguas non teñen ningún 271 00:11:34,360 --> 00:11:35,045 deses mesmos detalles. 272 00:11:35,045 --> 00:11:37,870 E, de feito, en JavaScript, non sempre de algo 273 00:11:37,870 --> 00:11:38,670 como o punto e coma. 274 00:11:38,670 --> 00:11:40,210 Pero máis sobre iso por vir. 275 00:11:40,210 --> 00:11:41,170 >> Entón loops. 276 00:11:41,170 --> 00:11:43,520 Tivemos algo así, moi intuitivamente, obvio, facer 277 00:11:43,520 --> 00:11:44,860 algo novo e de novo e de novo. 278 00:11:44,860 --> 00:11:47,720 Como poñer medias, ou dicindo Hola, neste caso. 279 00:11:47,720 --> 00:11:51,090 Ben, a partir de hoxe en C, poderiamos expresar esa arañazos 280 00:11:51,090 --> 00:11:54,970 bloquear como while (true) printf ("Ola Mundo"). 281 00:11:54,970 --> 00:11:57,630 Entón, observe que estamos empezando a construír sobre o puzzle, literalmente 282 00:11:57,630 --> 00:11:58,480 peza de antes. 283 00:11:58,480 --> 00:12:01,310 Temos o mesmo bloque vermello, pero é dentro deste 284 00:12:01,310 --> 00:12:04,880 bloque para sempre entre corchetes, ea mellor maneira de traducir iso 285 00:12:04,880 --> 00:12:06,480 C é a seguinte. 286 00:12:06,480 --> 00:12:08,130 Non hai ningunha contrasinal para sempre. 287 00:12:08,130 --> 00:12:10,940 Vostede non pode simplemente escribir f-o-r-e-v-e-r en C. 288 00:12:10,940 --> 00:12:13,440 Así, o análogo é máis próxima ao mesmo tempo. 289 00:12:13,440 --> 00:12:17,050 >> Agora, mentres (certo) semella un pouco estúpido, porque fai o valor 290 00:12:17,050 --> 00:12:18,700 de cambio sempre certo? 291 00:12:18,700 --> 00:12:19,810 Presuntamente non. 292 00:12:19,810 --> 00:12:22,770 É como dicir que mentres un, mentres, ao mesmo tempo certo. 293 00:12:22,770 --> 00:12:25,430 É todo a mesma cousa, certo é sempre o caso. 294 00:12:25,430 --> 00:12:29,860 Polo tanto, este lazo é, en realidade, inducindo o tipo de loop? 295 00:12:29,860 --> 00:12:31,210 Só un ciclo infinito, seguro. 296 00:12:31,210 --> 00:12:32,930 Un lazo para sempre ou como nós o chamamos a semana pasada, 297 00:12:32,930 --> 00:12:33,870 só un ciclo infinito. 298 00:12:33,870 --> 00:12:35,250 Entón, ás veces iso é malo. 299 00:12:35,250 --> 00:12:37,060 Ás veces iso é un erro, ás veces é por iso que ten 300 00:12:37,060 --> 00:12:39,340 a esfera de praia fiación ou ampulheta ou semellante. 301 00:12:39,340 --> 00:12:41,260 Pero, neste caso, de forma deliberada, por calquera 302 00:12:41,260 --> 00:12:43,040 razón, quería imprimir a mesma cousa de novo 303 00:12:43,040 --> 00:12:43,970 e de novo e de novo. 304 00:12:43,970 --> 00:12:45,900 Ou, no caso de que como un reloxo, que quere facer 305 00:12:45,900 --> 00:12:47,470 algo novo e de novo e de novo. 306 00:12:47,470 --> 00:12:49,070 Así loops infinitos pode ter sentido. 307 00:12:49,070 --> 00:12:53,560 E isto é como en C podemos traducir para sempre ao código. 308 00:12:53,560 --> 00:12:55,570 >> Entón, agora que é un pouco máis específico. 309 00:12:55,570 --> 00:12:58,880 Tiñamos repetir 10 veces a seguinte declaración. 310 00:12:58,880 --> 00:13:02,490 Así, mentres (certo) non funciona moi ben alí, porque é a verdadeira 311 00:13:02,490 --> 00:13:03,590 sempre é verdade. 312 00:13:03,590 --> 00:13:07,060 Entón, en vez ollar para a versión C, agora a sintaxe queda un 313 00:13:07,060 --> 00:13:08,180 pouco máis enigmática. 314 00:13:08,180 --> 00:13:11,380 Pero para ser honesto unha vez que comezar a ver iso, todo queda 315 00:13:11,380 --> 00:13:12,600 bastante familiar rapidamente. 316 00:13:12,600 --> 00:13:14,370 Entón é iso que se chama un loop. 317 00:13:14,370 --> 00:13:17,210 Un lazo for vai dicir ao ordenador para facer algo 318 00:13:17,210 --> 00:13:20,710 de novo e de novo e de novo durante o tempo que 319 00:13:20,710 --> 00:13:21,850 esas cousas son certas. 320 00:13:21,850 --> 00:13:23,370 Agora, o que queremos dicir con iso? 321 00:13:23,370 --> 00:13:25,470 Así, hai tres partes para un loop for, e imos 322 00:13:25,470 --> 00:13:28,240 Volveremos a este nun contexto real de 323 00:13:28,240 --> 00:13:29,100 exemplos nun momento. 324 00:13:29,100 --> 00:13:31,650 Entón non se preocupe se non moi afondar dunha vez. 325 00:13:31,650 --> 00:13:35,400 Pero int i = 0 é, longa historia curta, dicindo que me dea un 326 00:13:35,400 --> 00:13:38,290 variable que é do tipo enteiro, entón me dea un número 327 00:13:38,290 --> 00:13:40,890 chamado I, e arrincar a 0. 328 00:13:40,890 --> 00:13:43,460 Isto é dar-me como un x alxébrica variable e 329 00:13:43,460 --> 00:13:44,580 inicializar a 0. 330 00:13:44,580 --> 00:13:46,250 Pero, neste caso, nós o chamamos i. 331 00:13:46,250 --> 00:13:49,120 Entón, no medio, di i é menor que 10. 332 00:13:49,120 --> 00:13:52,150 Que está dicindo ao ordenador as seguintes cousas así por moito tempo 333 00:13:52,150 --> 00:13:53,770 como i é menor que 10. 334 00:13:53,770 --> 00:13:55,370 E, obviamente, comeza a menos de 10 porque 335 00:13:55,370 --> 00:13:56,550 que comeza en 0. 336 00:13:56,550 --> 00:13:59,150 Entón, finalmente, pode, talvez, creo que o que eu + + medios. 337 00:13:59,150 --> 00:14:02,140 É un pouco de sintaxe que significa só incrementar i. 338 00:14:02,140 --> 00:14:05,270 Entón engada 1 para i, de novo e de novo e de novo. 339 00:14:05,270 --> 00:14:09,260 >> E así, como veremos este ciclo, esta sintaxe, ao contrario, aplica 340 00:14:09,260 --> 00:14:12,160 precisamente o mesmo que, francamente, en scratch era tan 341 00:14:12,160 --> 00:14:13,250 moito máis fácil de expresar. 342 00:14:13,250 --> 00:14:15,170 Repita 10, e está feito. 343 00:14:15,170 --> 00:14:17,690 C, e na maioría das linguaxes de programación, temos que ser un 344 00:14:17,690 --> 00:14:20,190 pouco máis instrutivo para o ordenador e, en realidade, 345 00:14:20,190 --> 00:14:21,630 especificar algo así. 346 00:14:21,630 --> 00:14:23,730 Pero imos voltar a esta e outra sintaxe. 347 00:14:23,730 --> 00:14:24,780 >> E sobre variables? 348 00:14:24,780 --> 00:14:26,940 En Scratch tivemos algo así como estes bloques de laranxa, 349 00:14:26,940 --> 00:14:28,180 onde eu podería declarar unha variable. 350 00:14:28,180 --> 00:14:30,000 Imos chamalo arbitrariamente balcón. 351 00:14:30,000 --> 00:14:31,880 Imos comezar a 0, e despois 352 00:14:31,880 --> 00:14:33,240 imos sempre facer algo. 353 00:14:33,240 --> 00:14:35,760 Neste caso Scratch eu estou dicindo que o balcón, de xeito que o 354 00:14:35,760 --> 00:14:38,230 gato vai ter unha burbulla pequeno discurso que está falando 355 00:14:38,230 --> 00:14:40,010 o número que é nesta variable. 356 00:14:40,010 --> 00:14:42,460 E entón temos contra o cambio por 1. 357 00:14:42,460 --> 00:14:45,760 Entón, todo isto é acondicionada dentro dun bloqueo Forever. 358 00:14:45,760 --> 00:14:48,960 Entón, nós xa agora os bloques de construción en C con 359 00:14:48,960 --> 00:14:50,040 que para traducir iso. 360 00:14:50,040 --> 00:14:51,650 >> Unha forma de facelo é iso. 361 00:14:51,650 --> 00:14:53,890 Déame un enteiro, chamalo de balcón. 362 00:14:53,890 --> 00:14:55,190 Arrincar-lo a 0 363 00:14:55,190 --> 00:14:56,490 na primeira liña alí. 364 00:14:56,490 --> 00:14:59,390 While (true), entón eu vou roubar esa idea a partir dun momento 365 00:14:59,390 --> 00:15:01,300 atrás, vai adiante e faga o seguinte. 366 00:15:01,300 --> 00:15:04,880 Imprimir o balcón, e entón incrementar o contador, 367 00:15:04,880 --> 00:15:06,930 de novo, e de novo, e de novo. 368 00:15:06,930 --> 00:15:09,380 Ou aínda, + + significa só engadir 1 para algo. 369 00:15:09,380 --> 00:15:11,030 Pero hai unha nova peza de sintaxe aquí. 370 00:15:11,030 --> 00:15:15,730 O que está pulando como non entre os nosos exemplos anteriores? 371 00:15:15,730 --> 00:15:17,190 Si, este% d. 372 00:15:17,190 --> 00:15:19,810 Así, pode talvez inferir que isto está facendo, francamente, con base 373 00:15:19,810 --> 00:15:21,410 en que o bloque de borrador é facendo. 374 00:15:21,410 --> 00:15:24,510 Pero, de novo en C, nós só temos que ser un pouco máis específico 375 00:15:24,510 --> 00:15:25,990 cando se trata de nos expresar. 376 00:15:25,990 --> 00:15:30,560 >> Entón printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Moito máis do que podemos tirar tan familiar. 378 00:15:32,320 --> 00:15:34,910 As citas só significa que é unha corda, barra invertida n 379 00:15:34,910 --> 00:15:35,970 é só unha liña nova. 380 00:15:35,970 --> 00:15:38,860 Entón a única cousa nova aquí% d. 381 00:15:38,860 --> 00:15:40,390 E todo o que é un espazo reservado. 382 00:15:40,390 --> 00:15:43,510 D% vai para denotar un número decimal. 383 00:15:43,510 --> 00:15:47,820 E ordenador% d medio, coloque un número decimal aquí. 384 00:15:47,820 --> 00:15:49,450 Ben, o número que quere poñer alí? 385 00:15:49,450 --> 00:15:52,400 Ben, como pode talvez inferir, tras a vírgula dicimos 386 00:15:52,400 --> 00:15:55,480 contador, que é o nome dunha variable que declarou ou 387 00:15:55,480 --> 00:15:57,260 creou algunhas liñas antes. 388 00:15:57,260 --> 00:16:02,420 Polo tanto, esta é só unha forma de C de conectar unha variable nun 389 00:16:02,420 --> 00:16:04,480 corda dinámica. 390 00:16:04,480 --> 00:16:07,350 Porque, por outra banda, se eu tivese feito algo parecido en vez 391 00:16:07,350 --> 00:16:12,470 iso, printf ("contador"), o que sería esa 392 00:16:12,470 --> 00:16:15,220 programa, en vez facer, presuntamente? 393 00:16:15,220 --> 00:16:17,260 El vai, literalmente, imprimir "contador". 394 00:16:17,260 --> 00:16:18,750 O que non é o efecto que quero. 395 00:16:18,750 --> 00:16:20,920 Eu teño que substituír nalgunhas valor numérico. 396 00:16:20,920 --> 00:16:24,340 Entón, imos ver que as funcións entón, como printf, non pode tomar 397 00:16:24,340 --> 00:16:26,930 só argumentos individuais, como 398 00:16:26,930 --> 00:16:28,150 "Ola mundo". 399 00:16:28,150 --> 00:16:32,050 Eles poden tomar coma entre comiñas, e despois de algunhas variables 400 00:16:32,050 --> 00:16:35,830 que vai estar conectado, como veremos a secuencia anterior 401 00:16:35,830 --> 00:16:38,280 A través destes espazos reservados sinal%. 402 00:16:38,280 --> 00:16:39,660 >> Ben o que dicir de expresións booleanas? 403 00:16:39,660 --> 00:16:42,200 Expresións booleanas eran eses valores, verdadeiro ou falso. 404 00:16:42,200 --> 00:16:42,830 Si ou non. 405 00:16:42,830 --> 00:16:44,020 1 ou 0. 406 00:16:44,020 --> 00:16:45,190 Activado ou desactivado. 407 00:16:45,190 --> 00:16:47,570 Entón, en scratch se parecen con iso, e entender que o 408 00:16:47,570 --> 00:16:50,170 bloque inferior aquí é, en realidade, a conxunción 409 00:16:50,170 --> 00:16:51,500 de dous bloques máis pequenos. 410 00:16:51,500 --> 00:16:53,610 Entón eu medio que arrastrada e caeu tres pezas do puzzle 411 00:16:53,610 --> 00:16:56,450 xuntos para facer esta peza de puzzle máis alá para que eu 412 00:16:56,450 --> 00:17:00,420 pode transmitir a idea de que quero x ser menor que Y e 413 00:17:00,420 --> 00:17:02,540 y para ser inferior a z. 414 00:17:02,540 --> 00:17:05,790 E para que eu poida traducir esas dúas liñas separadas do seguinte xeito. 415 00:17:05,790 --> 00:17:08,650 A parte superior pode ser moi trivialmente traducida para C, 416 00:17:08,650 --> 00:17:10,069 con só x 00:17:11,990 Quizais con algúns parénteses para unha boa medida. 418 00:17:11,990 --> 00:17:15,520 E entón, en C, non escribe e para denotar a 419 00:17:15,520 --> 00:17:16,819 conxunción de algo. 420 00:17:16,819 --> 00:17:19,585 Vostede no canto escribir &&. 421 00:17:19,585 --> 00:17:22,849 E como nós imos finalmente ver un único e comercial acontece 422 00:17:22,849 --> 00:17:23,880 significa algo diferente. 423 00:17:23,880 --> 00:17:27,530 Entón && só denota a idea de AND. 424 00:17:27,530 --> 00:17:30,040 >> Entón, de novo, aínda que iso comeza a parecer bastante complexo, 425 00:17:30,040 --> 00:17:32,560 un dos efectos da introdución de riscos, ademais 426 00:17:32,560 --> 00:17:34,810 ter só un tipo de diversión na rampa onde podes facer 427 00:17:34,810 --> 00:17:36,590 algo que é moi gráfica e animación, e 428 00:17:36,590 --> 00:17:39,000 partilhável e similares, e tamén para transmitir a idea de que 429 00:17:39,000 --> 00:17:42,010 todas as ideas que comezan mergullo hoxe en diante 430 00:17:42,010 --> 00:17:44,300 foron incorporados, aínda que sinxela 431 00:17:44,300 --> 00:17:46,850 interface desde o primeiro día. 432 00:17:46,850 --> 00:17:47,790 Que tal ese aquí? 433 00:17:47,790 --> 00:17:48,860 >> Así, as condicións. 434 00:17:48,860 --> 00:17:50,590 Así, o bloque de arañazos na esquerda alí parece 435 00:17:50,590 --> 00:17:51,610 un pouco máis complexo. 436 00:17:51,610 --> 00:17:52,650 Pero é só arrastrar e algúns 437 00:17:52,650 --> 00:17:54,140 caendo de pezas coñecidas. 438 00:17:54,140 --> 00:17:56,690 Se x é menor que y, digamos así. 439 00:17:56,690 --> 00:17:59,900 Else if x é maior que y, digamos así. 440 00:17:59,900 --> 00:18:02,460 Senón, podemos loxicamente supoñer é de supoñer que 441 00:18:02,460 --> 00:18:03,580 eles deben ser iguais. 442 00:18:03,580 --> 00:18:05,220 Entón, dicir que son iguais. 443 00:18:05,220 --> 00:18:07,690 Agora en C, á dereita, a mesma cousa exacta. 444 00:18:07,690 --> 00:18:09,730 E noten que as claves van ser un 445 00:18:09,730 --> 00:18:12,190 recurso de C e outras linguaxes que fan este tipo 446 00:18:12,190 --> 00:18:13,210 de túnel. 447 00:18:13,210 --> 00:18:15,470 Así como o bloque si é esa cousa amarela que é unha especie de 448 00:18:15,470 --> 00:18:17,770 agarrando o bloque vermello dentro del. 449 00:18:17,770 --> 00:18:19,480 Do mesmo xeito son estas claves - 450 00:18:19,480 --> 00:18:20,870 esas claves - 451 00:18:20,870 --> 00:18:24,710 destínase a evocar a mesma idea de abrazar un ou máis 452 00:18:24,710 --> 00:18:27,680 liñas de código que son recuados para dentro deles. 453 00:18:27,680 --> 00:18:31,270 Así, no lado da man dereita aquí, menos do que x, y printf 454 00:18:31,270 --> 00:18:32,270 ("X é menor que y"). 455 00:18:32,270 --> 00:18:34,980 Else if x é maior que y, imprimir o mesmo. 456 00:18:34,980 --> 00:18:38,360 Imprimir máis que son iguais. 457 00:18:38,360 --> 00:18:41,750 >> Entón, en suma, non hai un mapeamento bastante directa ou tradución 458 00:18:41,750 --> 00:18:44,720 da lingua que vimos ata agora, ata para algúns 459 00:18:44,720 --> 00:18:45,940 dos recursos máis sofisticados. 460 00:18:45,940 --> 00:18:48,680 Entón non pode estar usando isto para o seu proxecto, ou quizais non 461 00:18:48,680 --> 00:18:51,150 estar usando isto para o seu proxecto esta semana. 462 00:18:51,150 --> 00:18:54,650 Pero nós temos esas cousas chamadas de matrices en C. No Scratch, 463 00:18:54,650 --> 00:18:55,680 son chamados de listas. 464 00:18:55,680 --> 00:18:59,370 E vimos que o RPG Fruitcraft semana pasada. 465 00:18:59,370 --> 00:19:01,320 O carinha azul que estaba andando, pegando 466 00:19:01,320 --> 00:19:03,010 cereixas e laranxas e afíns. 467 00:19:03,010 --> 00:19:05,110 Ben no scratch, que foi aplicado con esa laranxa 468 00:19:05,110 --> 00:19:09,000 bloque que contén palabras, neste caso, estamos literalmente 469 00:19:09,000 --> 00:19:10,800 Ademais de "Orange" para unha 470 00:19:10,800 --> 00:19:12,460 variable chamada inventario. 471 00:19:12,460 --> 00:19:14,910 Así, en C, esta sintaxe vai estar un pouco máis enigmática. 472 00:19:14,910 --> 00:19:17,250 E nós imos voltar a este a próxima semana e facer máis 473 00:19:17,250 --> 00:19:21,060 cousas interesantes no mundo da criptografía con el. 474 00:19:21,060 --> 00:19:23,990 Pero na parte inferior aquí, estas dúas liñas esencialmente 475 00:19:23,990 --> 00:19:27,550 traducir para o que estamos facendo un scratch bloquear alí enriba. 476 00:19:27,550 --> 00:19:30,120 Pero máis sobre iso por vir. 477 00:19:30,120 --> 00:19:34,120 >> Entón, poñer isto xuntos, aquí é un programa en C. Entón imos 478 00:19:34,120 --> 00:19:36,590 rapidamente provocar unha separación de algúns dos anacos de sintaxe aquí, pero 479 00:19:36,590 --> 00:19:40,300 entón imos realmente comezar a escribir un código, Coñeza 480 00:19:40,300 --> 00:19:42,440 vostede con algunhas das ferramentas que vai utilizar, e ver se 481 00:19:42,440 --> 00:19:45,400 pode construír agora algúns deses bloques básicos de construción 482 00:19:45,400 --> 00:19:49,150 a semana pasada, agora sintaticamente en C. Así, na parte superior aquí, este 483 00:19:49,150 --> 00:19:51,380 é, quizais, un dos programas máis chat que podería 484 00:19:51,380 --> 00:19:53,130 escribir máis calquera linguaxe de programación. 485 00:19:53,130 --> 00:19:55,010 Pero é un tipo de ten un significado especial porque é a 486 00:19:55,010 --> 00:19:58,120 programa canónica que calquera científico da computación cando escribe 487 00:19:58,120 --> 00:19:59,620 ensinar a alguén unha linguaxe de programación - 488 00:19:59,620 --> 00:20:01,230 un programa Ola Mundo. 489 00:20:01,230 --> 00:20:05,120 >> Así, na parte superior, vemos esa noción de # include 490 00:20:05,120 --> 00:20:08,180 e, a continuación, entre parénteses angulares, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Nós imos voltar a iso, pero realmente o que 492 00:20:10,580 --> 00:20:13,770 significa que hai un arquivo neste mundo chamado estándar 493 00:20:13,770 --> 00:20:17,670 I / O, stdio punto h, e que é só un arquivo de texto que 494 00:20:17,670 --> 00:20:19,240 alguén escribiu anos. 495 00:20:19,240 --> 00:20:22,550 E dentro dese ficheiro de texto son un monte de 496 00:20:22,550 --> 00:20:25,840 funcións ou métodos ou procedementos, que alguén 497 00:20:25,840 --> 00:20:28,970 escribiu que somos os beneficiarios do porque 498 00:20:28,970 --> 00:20:31,420 agora pode usar o código da persoa. 499 00:20:31,420 --> 00:20:33,070 As funcións que el ou ela escribiu. 500 00:20:33,070 --> 00:20:36,320 Neste caso, printf non é algo que eu escribín, é 501 00:20:36,320 --> 00:20:37,500 non algo que CS50 escribiu. 502 00:20:37,500 --> 00:20:40,290 É algo que alguén escribiu anos atrás e poñer un 503 00:20:40,290 --> 00:20:43,450 arquivo chamado stdio.h e entón, como un aparte, poñer 504 00:20:43,450 --> 00:20:45,830 outra parte da función noutro arquivo. 505 00:20:45,830 --> 00:20:46,940 Pero imos chegar alí. 506 00:20:46,940 --> 00:20:50,070 >> Entón # include é só a nosa forma de dicir, en 507 00:20:50,070 --> 00:20:53,110 C, me dá acceso a funcións que outra persoa escribiu. 508 00:20:53,110 --> 00:20:55,490 E neste caso eu me importa, porque quero printf. 509 00:20:55,490 --> 00:20:57,530 Agora temos int main (void). 510 00:20:57,530 --> 00:21:00,160 Polo tanto, esta é unha desas cousas que, francamente, que o día 0, 511 00:21:00,160 --> 00:21:02,400 moi bonito eu teño que tipo de fóra da zona, porque é só 512 00:21:02,400 --> 00:21:03,260 non é interesante 513 00:21:03,260 --> 00:21:04,780 intelectualmente, algunha da sintaxe. 514 00:21:04,780 --> 00:21:07,940 Pero, por agora sei que funciona, tamén coñecido como 515 00:21:07,940 --> 00:21:11,660 procedementos ou métodos, xeralmente producen algún valor. 516 00:21:11,660 --> 00:21:12,520 Eles fan algo. 517 00:21:12,520 --> 00:21:13,810 Eles veñen con unha resposta. 518 00:21:13,810 --> 00:21:15,020 Eles producen saída. 519 00:21:15,020 --> 00:21:18,780 Entón int xunto principal é só a nosa forma abreviada de dicir 520 00:21:18,780 --> 00:21:21,380 que esta función, este procedemento, e, finalmente, vai 521 00:21:21,380 --> 00:21:22,650 para lle dar de volta o número. 522 00:21:22,650 --> 00:21:24,370 E por que imos volver. 523 00:21:24,370 --> 00:21:27,810 Principal é só o estándar mundial estándar para o estándar 524 00:21:27,810 --> 00:21:30,990 función que vai executar nun programa C, cando 525 00:21:30,990 --> 00:21:31,860 executalo. 526 00:21:31,860 --> 00:21:34,160 Baleiro significa só unha cousa, principal, non leva 527 00:21:34,160 --> 00:21:35,270 argumentos, neste caso. 528 00:21:35,270 --> 00:21:36,400 Entón, eu estou sendo super explícito. 529 00:21:36,400 --> 00:21:38,160 Non hai cordas alí, non hai comas. 530 00:21:38,160 --> 00:21:40,690 Baleiro significa que non hai argumentos para inicio. 531 00:21:40,690 --> 00:21:44,350 >> Agora, por fin, afortunadamente, as dúas últimas liñas son familiares. 532 00:21:44,350 --> 00:21:46,160 Dentro das claves, temos un printf 533 00:21:46,160 --> 00:21:47,620 e temos un retorno. 534 00:21:47,620 --> 00:21:50,450 E o retorno é o tipo de pena que temos que 535 00:21:50,450 --> 00:21:53,510 poñelas alí, pois neste caso non está facendo todo o que 536 00:21:53,510 --> 00:21:54,600 moito interese. 537 00:21:54,600 --> 00:21:58,790 Pero, en un programa de ordenador, cando unha función devolve 0, 538 00:21:58,790 --> 00:22:00,610 Isto significa que todo está ben. 539 00:22:00,610 --> 00:22:01,820 Nada deu errado. 540 00:22:01,820 --> 00:22:06,170 En cambio, se unha función devolve 1, ou un negativo, ou 541 00:22:06,170 --> 00:22:11,670 1.337 negativo, ou algúns números aleatorios como esta, que 542 00:22:11,670 --> 00:22:14,020 significa, xeralmente, que, en realidade, un erro. 543 00:22:14,020 --> 00:22:16,150 Entón, se está no seu Mac ou PC, se xa viu 544 00:22:16,150 --> 00:22:18,590 algunha mensaxe irritante porque o ordenador deixou de funcionar ou 545 00:22:18,590 --> 00:22:20,660 conxelado, e hai unha mensaxe de erro enigmáticas, 546 00:22:20,660 --> 00:22:23,320 e despois de algún código, código do sistema como 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, algún número, 548 00:22:25,110 --> 00:22:29,270 que, xeralmente, é un detalle innecesario dicir 549 00:22:29,270 --> 00:22:32,110 a maioría de nós seres humanos, pero iso é o que algunha función ou algún 550 00:22:32,110 --> 00:22:34,890 programa realmente volveu, un valor non cero. 551 00:22:34,890 --> 00:22:38,540 E o beneficio diso é que 0 significa que todo ben, e 552 00:22:38,540 --> 00:22:40,470 entón ten basicamente un número infinito de cousas que 553 00:22:40,470 --> 00:22:41,130 pode dar mal. 554 00:22:41,130 --> 00:22:44,700 É por iso que eles escolleron 0 para o ben e un valor distinto de cero a 555 00:22:44,700 --> 00:22:46,450 malo, como veremos en breve. 556 00:22:46,450 --> 00:22:47,870 >> Entón, imos adiante e escribir isto. 557 00:22:47,870 --> 00:22:51,610 Entón, lembro que outro día eu usei o meu Mac para abrir unha 558 00:22:51,610 --> 00:22:53,970 ventá de terminal e logo abri programa de texto, como 559 00:22:53,970 --> 00:22:55,900 TextEdit, e empecei a escribir un código. 560 00:22:55,900 --> 00:22:56,580 Ben, iso é bo. 561 00:22:56,580 --> 00:22:58,636 Pero a súa experiencia vai ser diferente nun Mac, ou 562 00:22:58,636 --> 00:23:01,220 nun ordenador Solaris, un ordenador con Linux, calquera que sexa operativo 563 00:23:01,220 --> 00:23:02,810 sistema de ocorrer de estar usando. 564 00:23:02,810 --> 00:23:04,970 E así, o curso, o que, en vez de usar é algo 565 00:23:04,970 --> 00:23:07,010 chamado Appliance CS50. 566 00:23:07,010 --> 00:23:10,420 Así, o CS50 Appliance é unha peza de software para descargar 567 00:23:10,420 --> 00:23:13,640 que permite que executa un sistema operativo chamado Linux, 568 00:23:13,640 --> 00:23:16,810 especialmente Fedora Linux, no seu propio Mac ou PC. 569 00:23:16,810 --> 00:23:20,810 E fai iso baixando algo chamado un hypervisor. 570 00:23:20,810 --> 00:23:23,100 Entón, todo isto será documentado en conxunto de problemas 1. 571 00:23:23,100 --> 00:23:25,240 E vai ser orientado cara o que precisa facer a descarga. 572 00:23:25,240 --> 00:23:27,510 Pero o resultado final, se ten un Mac ou PC, e vostede 573 00:23:27,510 --> 00:23:29,080 baixar un software libre. 574 00:23:29,080 --> 00:23:32,340 Vostede, entón, baixar o Appliance CS50, e di que 575 00:23:32,340 --> 00:23:33,960 software libre - o hypervisor - 576 00:23:33,960 --> 00:23:38,080 para executar o Appliance CS50 nunha ventá no seu ordenador. 577 00:23:38,080 --> 00:23:39,490 E o que ocorre é iso. 578 00:23:39,490 --> 00:23:43,660 >> Teño agora, aviso aquí, o que parece ser un escritorio 579 00:23:43,660 --> 00:23:44,130 ambiente. 580 00:23:44,130 --> 00:23:46,150 E deixe-me realmente encoller este única xanela. 581 00:23:46,150 --> 00:23:49,640 Polo tanto, este é agora o meu Mac, cunha pequena fiestra aquí, e no interior 582 00:23:49,640 --> 00:23:51,300 desta xanela pasa a ser unha totalmente 583 00:23:51,300 --> 00:23:52,380 sistema operativo diferente. 584 00:23:52,380 --> 00:23:55,250 De feito hai este menú iniciar aquí, lembra 585 00:23:55,250 --> 00:23:57,990 Windows, que ten unha morea de sub-menús, incluíndo 586 00:23:57,990 --> 00:24:00,720 unha ligazón para a guía de CS50, Dropbox, e similares. 587 00:24:00,720 --> 00:24:03,480 E o que este ambiente agora é un ambiente estándar 588 00:24:03,480 --> 00:24:06,280 que todos poden agora utilizar, de xeito que non importa o que o seu 589 00:24:06,280 --> 00:24:08,960 ordenador, o que ten instalado, que a versión 590 00:24:08,960 --> 00:24:11,430 Mac OS ou Windows está executando, todos nós agora temos a 591 00:24:11,430 --> 00:24:12,800 mesmo ambiente. 592 00:24:12,800 --> 00:24:15,850 E agora, neste ambiente que pode comezar a escribir un código. 593 00:24:15,850 --> 00:24:18,480 >> Entón, eu estou indo a ir adiante e abrir un programa chamado gedit. 594 00:24:18,480 --> 00:24:21,500 Isto é comparable a notepad.exe, ou 595 00:24:21,500 --> 00:24:22,790 TextEdit en un Mac 596 00:24:22,790 --> 00:24:25,390 E este é só un programa de edición de texto super sinxelo 597 00:24:25,390 --> 00:24:27,500 que se parece iso a primeira vista. 598 00:24:27,500 --> 00:24:30,640 Agora arriba, eu teño unha paleta de branco, no fondo eu 599 00:24:30,640 --> 00:24:33,860 ten esa ventá negra que di jharvard aparello @. 600 00:24:33,860 --> 00:24:36,440 E iso porque a conta de usuario que pre-creado 601 00:24:36,440 --> 00:24:38,430 para todos é chamado John Harvard. 602 00:24:38,430 --> 00:24:41,490 El ten un cartafol onde todos os seus arquivos están indo para ir, e 603 00:24:41,490 --> 00:24:43,500 é aquí que podemos comezar a escribir un código. 604 00:24:43,500 --> 00:24:45,810 Entón deixe-me ir adiante aquí e zoom un pouco, e eu son 605 00:24:45,810 --> 00:24:51,550 vai facer # include, int main (void), e 606 00:24:51,550 --> 00:24:57,470 entón eu vou facer printf ("Ola Mundo") 607 00:24:57,470 --> 00:24:59,490 , Presentar 0. 608 00:24:59,490 --> 00:25:01,400 Agora, iso é todo moi negro e branco. 609 00:25:01,400 --> 00:25:03,830 >> Deixe-me ir adiante e facer unha cousa para ensinar gedit o que eu son 610 00:25:03,830 --> 00:25:04,510 realmente facendo. 611 00:25:04,510 --> 00:25:06,140 Deixe-me ir Gardar como. 612 00:25:06,140 --> 00:25:08,560 Vou escoller o lado esquerdo aquí jharvard. 613 00:25:08,560 --> 00:25:11,010 Entón, de novo, mesmo se nunca usou Linux antes, francamente 614 00:25:11,010 --> 00:25:13,680 hoxe en día, todos eles son esencialmente en devolver o 615 00:25:13,680 --> 00:25:14,590 mesmo tipo de interface - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows e Linux. 617 00:25:16,030 --> 00:25:18,680 Entón eu escollín cartafol jharvard casa aquí. 618 00:25:18,680 --> 00:25:21,120 E eu estou indo a gardar o arquivo como hello.c. 619 00:25:21,120 --> 00:25:24,260 Así, na parte superior, eu escriba hello.c; nomear un C 620 00:25:24,260 --> 00:25:26,520 programa coa extensión c. é 621 00:25:26,520 --> 00:25:27,570 o que é unha práctica común. 622 00:25:27,570 --> 00:25:28,650 E eu bati en Gardar. 623 00:25:28,650 --> 00:25:32,510 E agora o que é bo é que efectivamente ensina gedit, 624 00:25:32,510 --> 00:25:33,690 que se trata dun programa C. 625 00:25:33,690 --> 00:25:36,470 Teña en conta que o meu texto en branco e negro é agora codificados por cores, ou 626 00:25:36,470 --> 00:25:39,330 sintaxe destacada, o que só me chama a atención sobre o 627 00:25:39,330 --> 00:25:41,540 diferentes partes semántica do programa. 628 00:25:41,540 --> 00:25:44,260 Na parte superior esquerda alí, como os meus programas están máis complexos, eu son 629 00:25:44,260 --> 00:25:47,060 Vai ter un resumo de todas as cousas que eu escribín. 630 00:25:47,060 --> 00:25:48,050 Entón é iso aí. 631 00:25:48,050 --> 00:25:52,350 Entón deixe-me afastar e ir ata a fiestra da terminal. 632 00:25:52,350 --> 00:25:54,570 >> Polo tanto, esta é quizais novo para moitas persoas. 633 00:25:54,570 --> 00:25:57,260 Se nunca usou un ambiente de liña de comandos, nunca 634 00:25:57,260 --> 00:26:00,020 utilizado DOS, ou nunca usou Linux, ou nunca abriu 635 00:26:00,020 --> 00:26:02,550 Mac OS xanela de terminal, hai unha morea de cousas que 636 00:26:02,550 --> 00:26:04,820 podería facer a interface gráfica, como apuntar e premer e 637 00:26:04,820 --> 00:26:07,080 arrastrando e deixando caer, e outros semellantes, pero en xeral - 638 00:26:07,080 --> 00:26:09,360 seguramente no mundo da informática - 639 00:26:09,360 --> 00:26:11,580 usando unha liña de comandos, onde non ten o rato 640 00:26:11,580 --> 00:26:14,220 Xeralmente, só tes o teclado, é realmente moi 641 00:26:14,220 --> 00:26:17,260 máis poderoso do que interface, unha vez que se acostumar a 642 00:26:17,260 --> 00:26:18,580 varios comandos. 643 00:26:18,580 --> 00:26:20,940 E tipo que libre-de da necesidade de apuntar e premer 644 00:26:20,940 --> 00:26:21,690 en todo. 645 00:26:21,690 --> 00:26:23,890 Así, en gedit imos clasificar de ter o mellor dos dous mundos. 646 00:26:23,890 --> 00:26:25,600 Nós pode arrastrar e soltar texto, podemos velo 647 00:26:25,600 --> 00:26:26,840 agradable e codificados por cores. 648 00:26:26,840 --> 00:26:29,630 Pero cando chega a hora de executar o noso programa, nós ás veces 649 00:26:29,630 --> 00:26:31,750 usar só esta pequena fiestra aquí. 650 00:26:31,750 --> 00:26:33,460 >> Entón, eu estou indo a ir adiante e facelo. 651 00:26:33,460 --> 00:26:36,420 Na xanela inferior en branco e negro, eu estou indo para adiante 652 00:26:36,420 --> 00:26:37,890 e escribir bumbum. 653 00:26:37,890 --> 00:26:40,130 E tinido é o nome dun compilador. 654 00:26:40,130 --> 00:26:43,310 É un programa que converte o meu código fonte 655 00:26:43,310 --> 00:26:48,770 en, para que o código obxecto. 656 00:26:48,770 --> 00:26:51,270 0s e 1s, que vimos brevemente a semana pasada. 657 00:26:51,270 --> 00:26:53,700 Teña en conta que, a semana pasada, nós prometemos que iríamos 658 00:26:53,700 --> 00:26:55,920 ir algo así - é necesario para 659 00:26:55,920 --> 00:26:57,010 algo así - 660 00:26:57,010 --> 00:26:58,700 e este certamente non é algo que un ser humano vai 661 00:26:58,700 --> 00:26:59,690 facer manualmente. 662 00:26:59,690 --> 00:27:01,980 Polo tanto, en vez imos utilizar un programa, e este programa en 663 00:27:01,980 --> 00:27:03,430 Neste caso chámase Clang. 664 00:27:03,430 --> 00:27:06,020 E o nome do meu programa é hello.c. 665 00:27:06,020 --> 00:27:09,670 Polo tanto, a fin de compilar hello.c a partir do código fonte en 666 00:27:09,670 --> 00:27:12,930 código obxecto ou 0s e 1s, que debe ser suficiente só para facer 667 00:27:12,930 --> 00:27:14,820 isto e prema Intro. 668 00:27:14,820 --> 00:27:16,850 >> Ok, nada parece ter acontecido. 669 00:27:16,850 --> 00:27:20,450 Pero eu sei que agora, ou a semana pasada, que o nome do patrón de 670 00:27:20,450 --> 00:27:24,920 un programa, cando escrito en C, é estupidamente chamado a.out. 671 00:27:24,920 --> 00:27:26,610 Nome máis desinteressante que podería vir enriba con. 672 00:27:26,610 --> 00:27:28,790 Unha é a primeira letra do alfabeto para fóra é o que era 673 00:27:28,790 --> 00:27:29,960 emitidas, pero que así sexa. 674 00:27:29,960 --> 00:27:33,570 Este é o meu programa, e agora punto barra, como veremos, é 675 00:27:33,570 --> 00:27:36,170 en realidade, só un tipo de recurso de seguridade, pois 676 00:27:36,170 --> 00:27:38,250 a.out é un programa que eu escribín. 677 00:27:38,250 --> 00:27:39,650 El non veu co meu ordenador, é 678 00:27:39,650 --> 00:27:40,790 non en arquivos de programas. 679 00:27:40,790 --> 00:27:42,910 Non está no cartafol Mac aplicacións. 680 00:27:42,910 --> 00:27:45,740 Eu teño ser explícito super co ordenador, e dicir 681 00:27:45,740 --> 00:27:49,030 Neste programa, a.out, está no cartafol actual, o 682 00:27:49,030 --> 00:27:50,260 directorio actual. 683 00:27:50,260 --> 00:27:53,160 E a forma de representar isto nun ambiente coma este 684 00:27:53,160 --> 00:27:57,070 é punto representa calquera cartafol no que está dentro 685 00:27:57,070 --> 00:27:59,420 E así. / A.out significa só correr 686 00:27:59,420 --> 00:28:00,530 o cartafol actual. 687 00:28:00,530 --> 00:28:04,830 E eu executar este con Intro, e listo, o meu primeiro programa. 688 00:28:04,830 --> 00:28:05,990 >> Agora, deixe-me dar un paso atrás. 689 00:28:05,990 --> 00:28:08,280 Esta xanela é un pouco pequeno, e entender que o fondo 690 00:28:08,280 --> 00:28:10,340 á esquerda do aparello aquí é outro icono. 691 00:28:10,340 --> 00:28:12,660 Unha delas é o Chrome, que debe ser moi familiar, só unha tea de 692 00:28:12,660 --> 00:28:14,350 navegador dentro do aparello. 693 00:28:14,350 --> 00:28:16,340 E este icona branco e negro é só un 694 00:28:16,340 --> 00:28:17,720 fiestra máis grande terminal. 695 00:28:17,720 --> 00:28:19,830 Entón, se está un pouco aburrido a sorte de ter só 696 00:28:19,830 --> 00:28:22,270 esta porción minúscula dunha fiestra coa que interactúan 697 00:28:22,270 --> 00:28:24,370 cos programas, podemos facelo en vez. 698 00:28:24,370 --> 00:28:26,640 E agora déixeme comezar a escribir algúns logo 699 00:28:26,640 --> 00:28:27,980 ser comandos coñecidos. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Entón, ls é o comando para a lista. 702 00:28:31,410 --> 00:28:33,900 Así, en un Mac ou Windows, en xeral, dúas veces nun 703 00:28:33,900 --> 00:28:36,510 carpeta e listo, ve todos os ficheiros de varios 704 00:28:36,510 --> 00:28:37,210 e carpetas. 705 00:28:37,210 --> 00:28:39,650 Nun ambiente de liña de comandos, onde podes escribir só 706 00:28:39,650 --> 00:28:42,390 mandos ou texto ls é o equivalente. 707 00:28:42,390 --> 00:28:44,380 Entón me mostre o que está neste directorio. 708 00:28:44,380 --> 00:28:46,540 >> Agora, hai unha morea de cousas aquí que é tanto un pouco 709 00:28:46,540 --> 00:28:48,190 familiar e un pouco raro. 710 00:28:48,190 --> 00:28:50,740 Pero teña en conta que, como Windows e Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 ten un cartafol de escritorio. 712 00:28:52,190 --> 00:28:54,520 Así, as iconas que están na miña zona de traballo acontecer 713 00:28:54,520 --> 00:28:55,650 para o cartafol. 714 00:28:55,650 --> 00:28:57,250 Hai unha carpeta de descargas, cousas que 715 00:28:57,250 --> 00:28:58,890 Chrome pode poñer alí. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Así, o dispositivo vén con soporte embutido para o Dropbox 718 00:29:01,820 --> 00:29:04,500 de xeito que, ao longo do semestre, pode sincronizar co Dropbox 719 00:29:04,500 --> 00:29:06,420 conta para que todos os seus programas son copiados. 720 00:29:06,420 --> 00:29:08,050 Son accesibles no seu outro ordenador. 721 00:29:08,050 --> 00:29:09,780 Se algo der mal co aparello, pode 722 00:29:09,780 --> 00:29:11,340 moi facilmente recuperar Dropbox. 723 00:29:11,340 --> 00:29:12,940 Así que a carpeta está alí para iso. 724 00:29:12,940 --> 00:29:14,660 Hai dous arquivos que eu fixen - hello.c 725 00:29:14,660 --> 00:29:16,540 e a.out. 726 00:29:16,540 --> 00:29:18,530 E despois a dereita hai algunhas outras carpetas que nós imos 727 00:29:18,530 --> 00:29:20,710 chegar ata o final do semestre, a web 728 00:29:20,710 --> 00:29:21,540 programación. 729 00:29:21,540 --> 00:29:26,160 Entón, cando eu fago. /, A.out, Intro, que está dicindo que vai 730 00:29:26,160 --> 00:29:29,460 no directorio no que estou, o directorio actual, e executar o 731 00:29:29,460 --> 00:29:32,465 programa chamado a.out alí. 732 00:29:32,465 --> 00:29:35,810 >> Todo ben, entón iso é bo e bo, pero non é todo o que 733 00:29:35,810 --> 00:29:38,550 convincente para escribir un programa chamado axudar a.out. 734 00:29:38,550 --> 00:29:40,790 Así, podemos realmente facer iso un pouco diferente. 735 00:29:40,790 --> 00:29:43,980 Entón, en vez de só clang execución, hello.c, imos engadir 736 00:29:43,980 --> 00:29:46,850 o que se chama un argumento de liña de comandos. 737 00:29:46,850 --> 00:29:50,730 Así, un argumento de liña de comandos, ou un conmutador, neste caso, é só 738 00:29:50,730 --> 00:29:54,930 outra palabra ou frase que escribe nun prompt despois 739 00:29:54,930 --> 00:29:56,290 o programa que quere executar. 740 00:29:56,290 --> 00:29:59,970 Polo tanto, neste caso, bumbum é o programa que quero correr, o 741 00:29:59,970 --> 00:30:03,480 saída dun medio de ficheiro que non é máis chamado a.out. 742 00:30:03,480 --> 00:30:07,510 Saída dun arquivo chamado Ola, e facelo por compilar o 743 00:30:07,510 --> 00:30:10,200 A última palabra sobre a liña, hello.c. 744 00:30:10,200 --> 00:30:13,200 Así, en breve, esta é unha mellora moi marxinal, en que 745 00:30:13,200 --> 00:30:15,850 en vez de ter este ficheiro a.out estupidamente nomeado, 746 00:30:15,850 --> 00:30:21,430 Agora podo facer clang o Hola, entón hello.c, e 747 00:30:21,430 --> 00:30:22,530 a continuación, prema Intro. 748 00:30:22,530 --> 00:30:25,510 Nada parece acontecer, pero de novo moi parecido 0 - cando 749 00:30:25,510 --> 00:30:28,510 nada parece ocorrer significa que nada de malo aconteceu - 750 00:30:28,510 --> 00:30:31,460 entón imos facer ls agora Intro, e en realidade eu agora 751 00:30:31,460 --> 00:30:32,780 ten un programa Olá 752 00:30:32,780 --> 00:30:38,510 Entón, se eu escribir Ola agora, non comando encontrado. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Entón exactamente correcto. 755 00:30:40,220 --> 00:30:43,170 Entón, porque este programa que eu escribín, e non veu con 756 00:30:43,170 --> 00:30:45,810 o ordenador,. / Ola, Intro, significa 757 00:30:45,810 --> 00:30:47,350 Agora estou correndo Olá 758 00:30:47,350 --> 00:30:48,440 >> Entón é iso aí. 759 00:30:48,440 --> 00:30:51,070 Agora, o que vai finalmente chegar a liña de comandos máis e máis 760 00:30:51,070 --> 00:30:54,110 argumentos que nos permiten facer máis, pero só para aqueles para 761 00:30:54,110 --> 00:30:57,760 quen este pode ser o vello sombreiro, deixe-me realmente entrar nunha 762 00:30:57,760 --> 00:31:01,910 directorio aquí e só dar-lle un teaser do que doutra forma nós 763 00:31:01,910 --> 00:31:05,770 podería ir sobre a aplicación Ola Mundo. 764 00:31:05,770 --> 00:31:10,730 Deixe-me entrar aquí, e eu vou abri-lo. 765 00:31:10,730 --> 00:31:13,090 Entón, en realidade, eu vou explicar o que eu estou facendo, entón 766 00:31:13,090 --> 00:31:15,610 Isto é útil. 767 00:31:15,610 --> 00:31:17,410 Deixe-me de volta. 768 00:31:17,410 --> 00:31:19,620 >> Entón, eu veño facendo iso hai moito tempo. 769 00:31:19,620 --> 00:31:23,030 Entón, observe máis á dereita, hai un par de 770 00:31:23,030 --> 00:31:26,940 directorios que son nomeados estrañas source1m e source1w. 771 00:31:26,940 --> 00:31:28,830 Esta é só unha convención boba que usan. 772 00:31:28,830 --> 00:31:31,825 Fonte significa só o código fonte, significa que este é un dunha semana, e 773 00:31:31,825 --> 00:31:34,000 m significa que é luns, e w significa que é Mércores. 774 00:31:34,000 --> 00:31:34,900 Polo tanto, nada de enigmático alí. 775 00:31:34,900 --> 00:31:37,830 É só notación abreviada. 776 00:31:37,830 --> 00:31:39,860 Esas cousas azuis son carpetas, tamén coñecido como 777 00:31:39,860 --> 00:31:40,630 directorios. 778 00:31:40,630 --> 00:31:43,870 Eu quero ir a esa carpeta agora, e nun ordenador normal 779 00:31:43,870 --> 00:31:45,710 Eu podería simplemente facer dobre clic na icona de cartafol e 780 00:31:45,710 --> 00:31:46,810 hai todos os meus arquivos. 781 00:31:46,810 --> 00:31:49,270 Pero nun ambiente de liña de comandos, eu non podo facer 782 00:31:49,270 --> 00:31:52,640 que, entón en vez diso, eu teño que cambiar directorios manualmente. 783 00:31:52,640 --> 00:31:57,900 Entón, se eu escribir cd e despois source1m, Intro, observe que 784 00:31:57,900 --> 00:32:01,180 miña solicitude, a cousa en branco á esquerda, só cambiou. 785 00:32:01,180 --> 00:32:03,690 E así, de feito, cando só dixo parénteses e, a continuación, os 786 00:32:03,690 --> 00:32:06,450 squiggle pouco, o símbolo til, que só significaba que estaba 787 00:32:06,450 --> 00:32:08,800 no directorio de John Harvard casa, os seus Meus Documentos, 788 00:32:08,800 --> 00:32:10,390 os seus arquivos persoais. 789 00:32:10,390 --> 00:32:14,000 Pero agora, en parénteses dise ~ source1m /. 790 00:32:14,000 --> 00:32:17,090 Isto só significa que eu estou nunha carpeta chamada source1m 791 00:32:17,090 --> 00:32:19,160 que está no directorio de John Harvard casa. 792 00:32:19,160 --> 00:32:22,030 Entón, se eu agora quero listar os ficheiros neste cartafol, fácil 793 00:32:22,030 --> 00:32:25,300 pregunta, eu escriba só ls. 794 00:32:25,300 --> 00:32:28,860 E agora eu vexo todos os ficheiros que pre-creado para hoxe 795 00:32:28,860 --> 00:32:31,020 lectura, todos os cales, ou a maioría dos cales, pasar 796 00:32:31,020 --> 00:32:32,740 ao final. c. 797 00:32:32,740 --> 00:32:36,210 >> Entón deixe-me ir adiante agora e executar gedit dun programa chamado 798 00:32:36,210 --> 00:32:39,140 holloway.c, que é escrito por un hacker aleatoria 799 00:32:39,140 --> 00:32:42,920 en Internet, que parece un pouco con iso. 800 00:32:42,920 --> 00:32:44,880 E nós non imos pasar por iso en calquera 801 00:32:44,880 --> 00:32:48,530 detalle, pero para aqueles máis cómodo, en particular, se 802 00:32:48,530 --> 00:32:50,935 quere dar un palpite sobre o que este programa fai aquí. 803 00:32:57,950 --> 00:32:59,990 Asegúrese, se é máis ou menos cómodo, 804 00:32:59,990 --> 00:33:01,655 Non estamos sequera chegar a este tipo de cousas ata o final de 805 00:33:01,655 --> 00:33:02,160 neste semestre. 806 00:33:02,160 --> 00:33:05,390 Isto é o que é un exemplo de un concurso C ofuscado, que 807 00:33:05,390 --> 00:33:08,390 medios escribir o programa máis enigmático ollar posiblemente 808 00:33:08,390 --> 00:33:10,820 pode superar outras persoas intelixentes, que son igualmente 809 00:33:10,820 --> 00:33:13,010 tentando escribir cousas e demostrar que poden escribir 810 00:33:13,010 --> 00:33:14,280 cousas máis enigmáticas do que. 811 00:33:14,280 --> 00:33:17,290 De xeito que este non é un exemplo de un programa de benestar escrito do 812 00:33:17,290 --> 00:33:21,260 perspectiva de estilo, este é un exemplo dun programa que 813 00:33:21,260 --> 00:33:22,860 gaña un concurso, para as persoas intentando 814 00:33:22,860 --> 00:33:24,090 ser vago e abstracto. 815 00:33:24,090 --> 00:33:27,670 >> Entón, se nós executar esa cousa, deixe-me ir para a miña xanela de terminal, 816 00:33:27,670 --> 00:33:28,110 por así dicir. 817 00:33:28,110 --> 00:33:29,650 Polo tanto, este ambiente branco e negro é chamado de 818 00:33:29,650 --> 00:33:31,160 ventá de terminal en xeral. 819 00:33:31,160 --> 00:33:32,600 Deixe-me ir adiante e recompila-lo. 820 00:33:32,600 --> 00:33:34,440 Eu non vou usar bumbum, porque este programa é un 821 00:33:34,440 --> 00:33:36,340 pouco enigmática e precisa de un distinto 822 00:33:36,340 --> 00:33:38,190 compilador, un chamado GCC. 823 00:33:38,190 --> 00:33:39,200 Pero fai a mesma cousa. 824 00:33:39,200 --> 00:33:41,130 É preciso fonte para código obxecto. 825 00:33:41,130 --> 00:33:43,940 E agora, se eu executar a.out, programa que 826 00:33:43,940 --> 00:33:46,065 só vin isto. 827 00:33:49,220 --> 00:33:51,170 Entón aquel suxeito que ano gañou a competición. 828 00:33:51,170 --> 00:33:54,020 De calquera forma, non estamos indo nesa dirección, per se. 829 00:33:54,020 --> 00:33:57,400 >> Entón, imos realmente probar agora destrinçar o que podemos facer 830 00:33:57,400 --> 00:33:59,540 con estes bloques de construción básicos para facer máis e máis 831 00:33:59,540 --> 00:34:00,590 programas interesantes. 832 00:34:00,590 --> 00:34:02,800 Entón, escribiu un programa, nós executar un programa. 833 00:34:02,800 --> 00:34:05,780 Agora podemos realmente simplificar e xa non ten que escribir 834 00:34:05,780 --> 00:34:07,210 o ruído palabra no prompt. 835 00:34:07,210 --> 00:34:10,710 Acontece que os nosos programas están máis enigmática, que pode, ou 836 00:34:10,710 --> 00:34:14,699 máis complexo si, podemos realmente facer ese comando. 837 00:34:14,699 --> 00:34:17,610 Entón deixe-me volver para o meu directorio home, por así dicir, deixe-me 838 00:34:17,610 --> 00:34:20,750 Eliminar - RM é o comando de eliminación - estou indo a eliminar 839 00:34:20,750 --> 00:34:23,060 o ficheiro chamado a.out e Olá 840 00:34:23,060 --> 00:34:25,489 E agora conta nun ambiente de liña de comandos, así como no 841 00:34:25,489 --> 00:34:27,800 unha interface gráfica, ten solicitado. Eu non podo facer clic nun botón aínda que eu 842 00:34:27,800 --> 00:34:31,040 ten que escribir y para si, y para si. 843 00:34:31,040 --> 00:34:33,460 E agora eu escriba ls novo, observe que os verdes 844 00:34:33,460 --> 00:34:35,469 programas - a.out e Ola - 845 00:34:35,469 --> 00:34:35,734 se foron. 846 00:34:35,734 --> 00:34:37,340 Coidado con rm. 847 00:34:37,340 --> 00:34:39,739 Pode facer cousas malas, como pode arrastrando 848 00:34:39,739 --> 00:34:40,810 cousas para o lixo. 849 00:34:40,810 --> 00:34:43,989 >> Entón, agora imos adiante - e eu podería facelo - clang o 850 00:34:43,989 --> 00:34:45,139 Ola, ola - 851 00:34:45,139 --> 00:34:46,884 Eu xa estou aburrido escribindo este comando. 852 00:34:46,884 --> 00:34:48,080 Aínda que eu escriba algo axiña. 853 00:34:48,080 --> 00:34:51,870 Así, podemos, en vez fan Olá 854 00:34:51,870 --> 00:34:53,880 Entón, fai non é un compilador. 855 00:34:53,880 --> 00:34:57,720 É só un programa agradable que vén con Linux, neste 856 00:34:57,720 --> 00:34:59,070 caso - o sistema operativo - 857 00:34:59,070 --> 00:35:02,480 que automatizar o proceso de compilación de programas. 858 00:35:02,480 --> 00:35:05,555 Entón, en vez de lembrar clang o nome do ficheiro e 859 00:35:05,555 --> 00:35:08,190 a continuación, así por diante, especialmente unha vez que as liñas están máis longos e 860 00:35:08,190 --> 00:35:10,110 máis, eu só podo escribir facer. 861 00:35:10,110 --> 00:35:12,030 E iso vai cuspir unha morea de cousas que 862 00:35:12,030 --> 00:35:13,940 imos finalmente ver este semestre. 863 00:35:13,940 --> 00:35:17,500 Pero agora, se eu entender ls tipo, Ola está de volta no meu directorio. 864 00:35:17,500 --> 00:35:19,850 E de feito eu poida executa-lo con. / Olá 865 00:35:19,850 --> 00:35:23,330 Entón faga só automatizar o proceso de executar o que foi, 866 00:35:23,330 --> 00:35:26,910 neste caso, un mando moito máis tempo, máis complexa. 867 00:35:26,910 --> 00:35:29,060 Entón, imos comezar a usar make, só porque é moi 868 00:35:29,060 --> 00:35:30,530 máis agradable. 869 00:35:30,530 --> 00:35:32,770 >> Pero agora imos facer un programa máis interesante 870 00:35:32,770 --> 00:35:34,650 que simplemente dicir Olá 871 00:35:34,650 --> 00:35:38,680 Entón, nos programas que temos escrito ata agora non hai principal. 872 00:35:38,680 --> 00:35:40,890 Isto é só a cousa estándar que chuta todo fóra. 873 00:35:40,890 --> 00:35:43,340 Pero hai outras funcións aí fóra tamén, e 874 00:35:43,340 --> 00:35:45,890 stdio.h é o único que vimos ao comezo do noso 875 00:35:45,890 --> 00:35:48,480 ficheiro, e iso é o que se coñece como a biblioteca estándar. 876 00:35:48,480 --> 00:35:51,300 Dentro da biblioteca estándar é unha morea de funcións 877 00:35:51,300 --> 00:35:53,850 que alguén escribiu, e podemos comezar a usar estes 878 00:35:53,850 --> 00:35:55,050 funcións para escribir máis 879 00:35:55,050 --> 00:35:56,760 programas interesantes para nós mesmos. 880 00:35:56,760 --> 00:35:58,370 >> Entón deixe-me volver para o aparello. 881 00:35:58,370 --> 00:35:59,820 Vou pechar esta xanela de terminal. 882 00:35:59,820 --> 00:36:02,630 Vou pechar as cousas que escribín anteriormente, e só ir 883 00:36:02,630 --> 00:36:07,350 en hello.c, e observe agora podo facer o seguinte. 884 00:36:07,350 --> 00:36:09,730 Ola mundo non é tan interesante, gustaríame 885 00:36:09,730 --> 00:36:11,770 personalizar o programa para min. 886 00:36:11,770 --> 00:36:13,440 Entón, en vez de dicir mundo, eu vou 887 00:36:13,440 --> 00:36:14,830 vai adiante e dicir - 888 00:36:14,830 --> 00:36:16,880 Eu podería escribir David -, pero iso realmente é unha especie de 889 00:36:16,880 --> 00:36:18,050 fundamentalmente os mesmos. 890 00:36:18,050 --> 00:36:19,970 Pero imos tentar esa idea do espazo reservado. 891 00:36:19,970 --> 00:36:24,460 Lembre que en C, en vez de printf, tivemos estes 892 00:36:24,460 --> 00:36:28,110 espazos reservados, e hai máis que% d. 893 00:36:28,110 --> 00:36:31,150 Entón% d era, proba de sanidade rápido. 894 00:36:31,150 --> 00:36:32,310 Ok, número decimal, é iso. 895 00:36:32,310 --> 00:36:33,860 Díxitos decimais, iso é todo. 896 00:36:33,860 --> 00:36:37,755 Entón c%, como imos atopar, vai ser un personaxe. 897 00:36:37,755 --> 00:36:40,530 Engade un personaxe aquí, unha carta da a Z, 898 00:36:40,530 --> 00:36:41,600 ou símbolo de puntuación. 899 00:36:41,600 --> 00:36:45,590 Un único carácter,% f, alguén sabe doutras linguas? 900 00:36:45,590 --> 00:36:47,020 Así, un valor de punto flotante. 901 00:36:47,020 --> 00:36:47,880 Un número real. 902 00:36:47,880 --> 00:36:51,550 Entón, non é un número decimal - este é realmente un número real con 903 00:36:51,550 --> 00:36:54,130 un punto decimal e un número de díxitos á esquerda 904 00:36:54,130 --> 00:36:55,520 e dereita. 905 00:36:55,520 --> 00:36:58,060 % S, cadea. 906 00:36:58,060 --> 00:36:59,530 Iso que nós imos ver con bastante frecuencia. 907 00:36:59,530 --> 00:37:02,140 Un fío de novo, é só unha palabra, unha frase, unha secuencia de 908 00:37:02,140 --> 00:37:03,330 caracteres individuais. 909 00:37:03,330 --> 00:37:06,730 E, por último, LLD? 910 00:37:06,730 --> 00:37:08,210 Polo tanto, este é un caso de esquina. 911 00:37:08,210 --> 00:37:09,850 Longo decimal, de lonxitude. 912 00:37:09,850 --> 00:37:12,035 Entón, se non quere só un número que é tan grande, 913 00:37:12,035 --> 00:37:14,160 quere un número maior, vai ter que especificar a 914 00:37:14,160 --> 00:37:16,400 o ordenador que é dun tamaño específico. 915 00:37:16,400 --> 00:37:17,610 >> Entón, imos axustar iso un pouco. 916 00:37:17,610 --> 00:37:20,610 En vez de só un código ríxido de David, deixe-me un pouco 917 00:37:20,610 --> 00:37:22,460 dinámicamente dicir s%. 918 00:37:22,460 --> 00:37:25,790 Entón engada% s aquí, que é un espazo reservado para a cadea. 919 00:37:25,790 --> 00:37:30,500 Entón deixe-me facer coma e "David" por aquí. 920 00:37:30,500 --> 00:37:32,770 Agora, iso non é todo o que intelectualmente interesante, 921 00:37:32,770 --> 00:37:35,060 porque todo o que eu teño feito agora é realmente crear máis traballo para 922 00:37:35,060 --> 00:37:35,790 o ordenador. 923 00:37:35,790 --> 00:37:39,660 En vez de dicir ao ordenador facelo todo dunha vez, eu estou agora 924 00:37:39,660 --> 00:37:43,760 dicindo iso e inserir unha cadea aquí eventualmente, coma, 925 00:37:43,760 --> 00:37:44,950 aquí é esa cadea. 926 00:37:44,950 --> 00:37:47,220 Entón iso non é unha mellora, pero é polo menos 927 00:37:47,220 --> 00:37:49,010 un paso cara a un programa máis interesante. 928 00:37:49,010 --> 00:37:51,240 Porque agora, deixe-me ir adiante e facer esta xanela un pouco 929 00:37:51,240 --> 00:37:56,850 maior, deixe-me ir adiante e executar o make Olá 930 00:37:56,850 --> 00:38:01,340 E agora,. / A.out non funciona, por que? 931 00:38:03,880 --> 00:38:05,570 Todo ben, agora é chamado Olá 932 00:38:05,570 --> 00:38:09,400 Entón, de novo, facer, e tamén cun estrondo o-, o nome de 933 00:38:09,400 --> 00:38:11,120 programa a ser algo máis interesante. 934 00:38:11,120 --> 00:38:13,060 E listo: agora di Ola David. 935 00:38:13,060 --> 00:38:14,590 >> Todo ben, aínda un programa estúpido. 936 00:38:14,590 --> 00:38:18,070 Entón agora imos realmente volver aquí e introducir a noción 937 00:38:18,070 --> 00:38:18,810 dunha variable. 938 00:38:18,810 --> 00:38:21,600 Non sería bo se eu puidese declarar unha variable 939 00:38:21,600 --> 00:38:23,150 cuxo tipo é string? 940 00:38:23,150 --> 00:38:26,720 E o valor da variable, en realidade, vén de usuario 941 00:38:26,720 --> 00:38:27,810 si mesmo. 942 00:38:27,810 --> 00:38:30,240 Así, de forma arbitraria, vou conectar o meu s variable, que é 943 00:38:30,240 --> 00:38:32,410 só unha convención común cando ten unha variable chamada 944 00:38:32,410 --> 00:38:33,250 a cadea. 945 00:38:33,250 --> 00:38:35,670 Vou facer signo igual, e entón eu vou chamar un 946 00:38:35,670 --> 00:38:38,030 función chamada GetString. 947 00:38:38,030 --> 00:38:40,830 Entón GetString non é algo que vén embutido C. É 948 00:38:40,830 --> 00:38:43,330 unha función que o persoal CS50 escribiu, en realidade, só para 949 00:38:43,330 --> 00:38:45,670 estas dúas primeiras semanas, para simplificar o proceso de 950 00:38:45,670 --> 00:38:49,450 incorporarse entrada do usuario e obter a entrada do usuario en forma 951 00:38:49,450 --> 00:38:51,960 de cordas, ou números, e tal. 952 00:38:51,960 --> 00:38:55,520 Entón GetString é como printf, pero, obviamente, no canto de 953 00:38:55,520 --> 00:38:58,700 imprimir lo vai facer o que o seu nome di, ten unha cadea. 954 00:38:58,700 --> 00:39:00,970 Pero para usar GetString, nós imos ter que facer un cambio 955 00:39:00,970 --> 00:39:03,180 aquí, alén diso. 956 00:39:03,180 --> 00:39:07,170 Entón intuitivamente, este programa, esperamos, vai de algunha maneira 957 00:39:07,170 --> 00:39:09,700 obter unha cadea de usuario, e entón o que é o que vai facer 958 00:39:09,700 --> 00:39:11,460 con esa secuencia, chamada s? 959 00:39:15,060 --> 00:39:16,470 El só vai imprimir lo, non? 960 00:39:16,470 --> 00:39:18,870 Aínda non un programa estimulante porque todo o que está a suceder 961 00:39:18,870 --> 00:39:22,160 que facer é conectar ese valor onde% s 962 00:39:22,160 --> 00:39:23,750 di que debe ir. 963 00:39:23,750 --> 00:39:25,290 >> Entón, imos polo menos ver iso en acción. 964 00:39:25,290 --> 00:39:27,040 Deixe-me salvar e zoom out. 965 00:39:27,040 --> 00:39:30,280 Agora, na miña xanela de terminal para acá, a pequena porción de unha, 966 00:39:30,280 --> 00:39:32,760 deixe-me de novo fan Olá 967 00:39:32,760 --> 00:39:35,160 Ok, e ah, caramba, eu teño unha morea de erros. 968 00:39:35,160 --> 00:39:38,020 Deixe-me ir para arriba, e vemos o noso primeiro - 969 00:39:38,020 --> 00:39:40,430 entón imos realmente facelo nunha ventá aínda maior para que 970 00:39:40,430 --> 00:39:42,110 pode ver o que eu estraguei todo - 971 00:39:42,110 --> 00:39:44,460 entón faga Olá 972 00:39:44,460 --> 00:39:46,540 Ok, iso é un desastre, non? 973 00:39:46,540 --> 00:39:48,740 Eu escribín tres liñas de código, e 974 00:39:48,740 --> 00:39:50,070 que me deu 12 erros. 975 00:39:50,070 --> 00:39:51,980 Entón, por que é isto? 976 00:39:51,980 --> 00:39:55,720 Entón, por sorte, moitas veces cando ve moitos, moitos erros 977 00:39:55,720 --> 00:39:57,730 cuspindo unha vez máis, é realmente só porque 978 00:39:57,730 --> 00:39:59,760 confundiu o ordenador aquí. 979 00:39:59,760 --> 00:40:02,330 E permanece confuso co tempo el está aquí. 980 00:40:02,330 --> 00:40:04,400 E por iso só comeza a tropezar, e tropezando, e 981 00:40:04,400 --> 00:40:07,310 cuspindo máis asustado do que realmente se aplica. 982 00:40:07,310 --> 00:40:10,120 Así, en xeral, sempre comezar co de arriba. 983 00:40:10,120 --> 00:40:13,320 >> Entón, o exemplo máis arriba de vermello, a 984 00:40:13,320 --> 00:40:14,740 mensaxe de erro é este. 985 00:40:14,740 --> 00:40:17,750 Uso de cadea do identificador non declarado, que 986 00:40:17,750 --> 00:40:19,160 significa estándar en? 987 00:40:19,160 --> 00:40:19,900 Non. 988 00:40:19,900 --> 00:40:24,180 Eu quería dicir corda, pero iso é porque, tamén, a secuencia de palabras 989 00:40:24,180 --> 00:40:26,020 que eu continúe a usar verbalmente, en realidade, 990 00:40:26,020 --> 00:40:27,240 non existe en C tamén. 991 00:40:27,240 --> 00:40:29,470 É algo que vai usar só para a primeira ou segunda semana 992 00:40:29,470 --> 00:40:34,500 aquí, pero hai un ficheiro chamado cs50.h. 993 00:40:34,500 --> 00:40:37,110 Entón, por agora, sei que hai esa outra biblioteca que o 994 00:40:37,110 --> 00:40:39,330 persoal escribiu, polo que foi escrito máis recentemente do que 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Pero dentro cs50.h é unha definición, un sinónimo de 997 00:40:45,020 --> 00:40:48,310 tipo, que crea esta secuencia de palabras. 998 00:40:48,310 --> 00:40:50,890 >> Entón, agora déixeme volver á miña xanela de terminal. 999 00:40:50,890 --> 00:40:53,200 Eu estou indo para limpar toda esa desorde por Ctrl-L. Nós só 1000 00:40:53,200 --> 00:40:55,700 limpe todo limpo, e eu estou indo a ir adiante e facer 1001 00:40:55,700 --> 00:40:57,860 Ola de novo, Intro. 1002 00:40:57,860 --> 00:40:59,440 Entón, o que pasou agora? 1003 00:40:59,440 --> 00:41:01,150 Agora, todos estes erros foi aínda. 1004 00:41:01,150 --> 00:41:02,230 Entón o que eu realmente fixen? 1005 00:41:02,230 --> 00:41:05,920 Eu só ensinaba o ordenador que cadea existe, e é 1006 00:41:05,920 --> 00:41:07,890 nese ficheiro chamado cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Entón deixe de reclamar, porque agora sabe onde atopar 1008 00:41:10,930 --> 00:41:13,220 declaración de que a función do modo de falar. 1009 00:41:13,220 --> 00:41:15,200 Nos casos en que existe no mundo. 1010 00:41:15,200 --> 00:41:18,820 >> Entón agora eu estou indo a ir adiante e executar Olá 1011 00:41:18,820 --> 00:41:22,300 Parece que teño un loop infinito, que nada está a suceder. 1012 00:41:25,530 --> 00:41:26,870 Entón eu teño escribir algo aquí, certo. 1013 00:41:26,870 --> 00:41:29,650 A primeira liña de código no meu programa foi GetString. 1014 00:41:29,650 --> 00:41:31,750 Polo tanto, é literalmente agardando por min para obter unha cadea. 1015 00:41:31,750 --> 00:41:33,680 Entón, nese sentido, si, é un loop infinito. 1016 00:41:33,680 --> 00:41:36,520 Ao parecer, en GetString é o comportamento estándar que 1017 00:41:36,520 --> 00:41:37,510 escribiu - o persoal - 1018 00:41:37,510 --> 00:41:39,550 que só di esperar e esperar e esperar e esperar e esperar, 1019 00:41:39,550 --> 00:41:42,550 ata que o usuario lle dá unha secuencia escribindo algo dentro 1020 00:41:42,550 --> 00:41:46,000 Entón deixe-me ir adiante e escriba D-a-v - i-d, Intro. 1021 00:41:46,000 --> 00:41:47,420 E aí está, Ola David. 1022 00:41:47,420 --> 00:41:50,430 >> Agora iso parece que é só un acto? 1023 00:41:50,430 --> 00:41:52,810 Deixe-me ir adiante e escribir en Tommy. 1024 00:41:52,810 --> 00:41:54,740 Introduce, ok, parece estar funcionando. 1025 00:41:54,740 --> 00:41:59,130 Obras para Rob, obras para Zamyla, traballa para - ok. 1026 00:41:59,130 --> 00:42:01,000 Por iso, vai para o traballo, o máis probable. 1027 00:42:01,000 --> 00:42:05,030 Por iso, debe imprimir o que realmente darlle, 1028 00:42:05,030 --> 00:42:07,830 e podemos ser un pouco difícil aquí. 1029 00:42:07,830 --> 00:42:12,130 Imos ver se facemos algo como Olá 1030 00:42:12,130 --> 00:42:18,000 Pode ir por aquí, imos ver, copiar, pegar. 1031 00:42:18,000 --> 00:42:19,950 Eu non vou ser capaz de pegar que moitas veces aquí. 1032 00:42:19,950 --> 00:42:24,410 Cole, ok, Shift + Ctrl + V. Entón, o que podería 1033 00:42:24,410 --> 00:42:26,970 acontecer que é malo aquí? 1034 00:42:26,970 --> 00:42:27,770 >> Ok, entón, segfaults. 1035 00:42:27,770 --> 00:42:29,710 Entón, algúns de vostedes con orixes anteriores sabe que 1036 00:42:29,710 --> 00:42:32,710 xeralmente, dando ordenadores lotes de entradas cando son 1037 00:42:32,710 --> 00:42:36,140 probablemente non quixo recibir nomes longos coma este - ruins 1038 00:42:36,140 --> 00:42:36,740 as cousas acontecen. 1039 00:42:36,740 --> 00:42:39,230 De feito, no mundo da web, tamén, iso pasa un pouco, 1040 00:42:39,230 --> 00:42:41,000 polo que, cando está designado un sitio web, cando está 1041 00:42:41,000 --> 00:42:43,850 deseño de Facebook, ten que tomar decisións arbitrarias se 1042 00:42:43,850 --> 00:42:45,370 fronte, como canto tempo será de alguén 1043 00:42:45,370 --> 00:42:46,360 Facebook usuario ser? 1044 00:42:46,360 --> 00:42:48,050 Ou canto tempo vai primeiro nome de alguén ser? 1045 00:42:48,050 --> 00:42:50,110 Canto tempo o número de teléfono de alguén ser e similares. 1046 00:42:50,110 --> 00:42:53,580 E se os programadores fan suposicións malas, programas de romper 1047 00:42:53,580 --> 00:42:56,640 porque tentar darlles máis saída, máis entrada 1048 00:42:56,640 --> 00:42:58,330 en vez diso, eles teñen de memoria. 1049 00:42:58,330 --> 00:43:01,860 Ou RAM alocados para el, e por iso, agora eu presione Enter, 1050 00:43:01,860 --> 00:43:04,640 que o programa realmente funciona, porque estabamos na biblioteca 1051 00:43:04,640 --> 00:43:06,790 e nós, en realidade, adiantou que neste caso particular. 1052 00:43:06,790 --> 00:43:10,900 Pero, sen dúbida, este semestre, vai escribir polo menos un 1053 00:43:10,900 --> 00:43:13,280 programa que vai dicir estas palabras. 1054 00:43:13,280 --> 00:43:16,520 Teña en conta que esta semana a partir de agora, quizais dentro de dous días. 1055 00:43:16,520 --> 00:43:18,760 Fallo de segmento é unha cousa mala. 1056 00:43:18,760 --> 00:43:21,920 El ha referirse a súa facendo algo que o ordenador do 1057 00:43:21,920 --> 00:43:23,310 non prevista. 1058 00:43:23,310 --> 00:43:25,810 E, nese caso, o programador, non prevista. 1059 00:43:25,810 --> 00:43:27,720 Así como o que esta pila de medias, varias foron as 1060 00:43:27,720 --> 00:43:29,520 casos de canto que poderiamos ter atopado. 1061 00:43:29,520 --> 00:43:32,340 Do mesmo xeito en programas se non prevista o tempo que 1062 00:43:32,340 --> 00:43:33,310 o nome de alguén que vai ser. 1063 00:43:33,310 --> 00:43:35,890 Ou o que eu teño un usuario mal intencionado, eo seu nome é 1064 00:43:35,890 --> 00:43:37,230 realmente moi curto, pero eles están só tentando 1065 00:43:37,230 --> 00:43:37,960 xogar comigo? 1066 00:43:37,960 --> 00:43:40,490 O que vai ser o comportamento do meu programa? 1067 00:43:40,490 --> 00:43:43,930 Ben, nese caso, algo realmente pode funcionar. 1068 00:43:43,930 --> 00:43:44,750 >> Entón, imos facelo. 1069 00:43:44,750 --> 00:43:46,860 En 90 minutos, este é un tempo moi longo 1070 00:43:46,860 --> 00:43:47,780 facer ciencia da computación. 1071 00:43:47,780 --> 00:43:49,550 Por que non temos o costume de tomar un de cinco minutos 1072 00:43:49,550 --> 00:43:51,520 romper aquí, e cando volvemos, imos mergullar en algúns 1073 00:43:51,520 --> 00:43:53,430 programas máis complexos e convincente? 1074 00:43:53,430 --> 00:43:54,680 Cinco minutos. 1075 00:43:56,910 --> 00:43:58,160 >> Todo ben. 1076 00:44:01,138 --> 00:44:02,780 Entón, un comentario rápido. 1077 00:44:02,780 --> 00:44:05,590 Dixéronme que se iso fose na pantalla antes, o que 1078 00:44:05,590 --> 00:44:08,880 saíu da miña boca foi cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Isto é correcto. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Entón, agora pode probar RSVPing a este en / xantar. 1081 00:44:16,030 --> 00:44:16,980 Pero imos facelo agora. 1082 00:44:16,980 --> 00:44:20,150 Así que esta foi super rápido, super novo para unha morea de xente. 1083 00:44:20,150 --> 00:44:21,560 Sombreiro vello para algunhas persoas. 1084 00:44:21,560 --> 00:44:24,930 Entón, imos voltar por un momento, e ver como chegamos a 1085 00:44:24,930 --> 00:44:29,350 esta saída Ola mundo hai pouco. 1086 00:44:29,350 --> 00:44:31,780 >> Entón, primeiro, hai esa Appliance CS50. 1087 00:44:31,780 --> 00:44:34,270 Unha vez máis, peza de problema de software, definir un vai dicir 1088 00:44:34,270 --> 00:44:36,610 como baixa-lo, onde baixa-lo, o que para premer 1089 00:44:36,610 --> 00:44:37,430 e así por diante. 1090 00:44:37,430 --> 00:44:39,670 E entón, unha vez que seguir estas instrucións, será capaz 1091 00:44:39,670 --> 00:44:42,840 maximizar a xanela, eo seu Mac ou PC vai parecer un 1092 00:44:42,840 --> 00:44:43,910 pouco algo como isto. 1093 00:44:43,910 --> 00:44:47,170 Un fondo negro, unha carpeta base, na parte superior, onde todos 1094 00:44:47,170 --> 00:44:49,850 seus arquivos van, unha lata de lixo na esquina superior esquerda, 1095 00:44:49,850 --> 00:44:51,130 un menú na parte inferior. 1096 00:44:51,130 --> 00:44:54,010 Entón, de novo, moi semellante en espírito para Mac OS ou Windows, 1097 00:44:54,010 --> 00:44:56,040 mesmo que pasa a ser o Linux. 1098 00:44:56,040 --> 00:44:58,120 Entón, o que seguinte facer? 1099 00:44:58,120 --> 00:44:59,580 Ben, nós comezamos a escribir programas. 1100 00:44:59,580 --> 00:45:02,260 E lembrar da semana pasada, que todo leva a escribir unha 1101 00:45:02,260 --> 00:45:04,970 programa é un editor de texto simple, 1102 00:45:04,970 --> 00:45:06,550 como o Bloc de Notas ou TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Francamente, aínda pode usar o Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Pero as cousas malas van ocorrer finalmente, porque iso é moi 1105 00:45:11,170 --> 00:45:13,930 pesada solución para escribir un programa, máis vai 1106 00:45:13,930 --> 00:45:15,400 garda-lo no formato de ficheiro incorrecto. 1107 00:45:15,400 --> 00:45:18,150 Pero é só un editor de texto, un procesador de texto, é todo o que é 1108 00:45:18,150 --> 00:45:19,390 necesario para escribir un programa. 1109 00:45:19,390 --> 00:45:23,420 >> Así, no Appliance CS50, podemos facelo dunha forma sinxela. 1110 00:45:23,420 --> 00:45:25,580 Podemos simplemente prema na icona no ángulo inferior esquerdo. 1111 00:45:25,580 --> 00:45:28,790 E, de novo, un conxunto de problemas ha aconsellamos-lo sobre iso, e listo - 1112 00:45:28,790 --> 00:45:31,210 ten esta interface branco e negro onde podemos comezar 1113 00:45:31,210 --> 00:45:32,160 escribir código. 1114 00:45:32,160 --> 00:45:34,960 Entón, imos comezar a escribir un programa super sinxelo de novo. 1115 00:45:34,960 --> 00:45:38,890 Eu estou indo a ir a Arquivo, Gardar, e eu vou chamar 1116 00:45:38,890 --> 00:45:42,870 iso, imos dicir, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 E eu estou só dicindo o premendo no jharvard, coloque o 1118 00:45:45,410 --> 00:45:46,750 no seu directorio home, eu realmente non me importa 1119 00:45:46,750 --> 00:45:47,980 onde este vai. 1120 00:45:47,980 --> 00:45:49,090 E despois en Gardar. 1121 00:45:49,090 --> 00:45:50,880 E agora podo comezar a escribir o meu programa. 1122 00:45:50,880 --> 00:45:53,560 E recordo máis cedo que eu teño que escribir int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom arriba, á esquerda. 1125 00:45:57,000 --> 00:46:02,670 E entón quero dicir printf, leve dous. 1126 00:46:02,670 --> 00:46:05,690 E agora unha cita, nova liña estreita, peche 1127 00:46:05,690 --> 00:46:07,820 parénteses, punto e coma. 1128 00:46:07,820 --> 00:46:10,560 E entón eu vou por aquí a miña xanela de terminal que se 1129 00:46:10,560 --> 00:46:12,840 incorporado no gedit, só por conveniencia. 1130 00:46:12,840 --> 00:46:15,200 E eu estou indo a ir adiante e escribir facer Ola, pero non 1131 00:46:15,200 --> 00:46:17,500 Ola só, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Entón, o meu arquivo é chamado hello2.c. Meu arquivo, polo tanto, 1133 00:46:20,490 --> 00:46:23,510 debe ser chamado hello2, neste caso. 1134 00:46:23,510 --> 00:46:26,490 Caramba, o que eu fixen de malo? 1135 00:46:26,490 --> 00:46:29,490 Todo ben, entón eu claramente omitido unha liña, se se lembra o que 1136 00:46:29,490 --> 00:46:31,020 programas anteriores parecer. 1137 00:46:31,020 --> 00:46:32,480 Pero imos ver se non podemos provocar este apart. 1138 00:46:32,480 --> 00:46:35,310 Desafortunadamente, a maioría das persoas que escriben os programas cos que 1139 00:46:35,310 --> 00:46:38,820 escribimos programas non simplificar as cousas moi ben. 1140 00:46:38,820 --> 00:46:41,520 Entón, temos que tipo de roçar sobre o que non facer moito 1141 00:46:41,520 --> 00:46:44,050 sentir aquí e ver se conseguimos descubrir o que está mal. 1142 00:46:44,050 --> 00:46:46,700 A primeira liña alí di implicitamente declarando C 1143 00:46:46,700 --> 00:46:49,310 función de biblioteca printf con tipo int. 1144 00:46:49,310 --> 00:46:51,210 OK, eu entendín parte diso. 1145 00:46:51,210 --> 00:46:54,570 Pero parece estar aludindo ao feito de que eu usei printf 1146 00:46:54,570 --> 00:46:55,700 mal, de algunha maneira. 1147 00:46:55,700 --> 00:46:56,930 E que sentido é malo? 1148 00:46:56,930 --> 00:46:59,970 Eu só non ensinar o ordenador que está nun arquivo 1149 00:46:59,970 --> 00:47:01,420 chamado stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Agora eu só teño que só memorizar agora que printf é 1151 00:47:04,120 --> 00:47:06,540 en stdio.h, e por suposto haberá outras 1152 00:47:06,540 --> 00:47:08,900 funcións no mesmo arquivo que imos acostumar. 1153 00:47:08,900 --> 00:47:12,490 >> Entón, agora deixe-me ir adiante e prema Ctrl-L só suposto 1154 00:47:12,490 --> 00:47:16,050 distancia, reprise facer hello2, e listo. 1155 00:47:16,050 --> 00:47:19,490 E este comando novo, máis complexo do que nós imos explicar a 1156 00:47:19,490 --> 00:47:20,520 fins de hoxe. 1157 00:47:20,520 --> 00:47:23,570 Pero foi bumbum, bumbum e leva o código fonte e 1158 00:47:23,570 --> 00:47:24,870 Cospe 0s e 1s. 1159 00:47:24,870 --> 00:47:28,610 E os 0s e 1s, neste caso, son chamados de que? 1160 00:47:28,610 --> 00:47:29,470 Ok, obxecto de código. 1161 00:47:29,470 --> 00:47:32,210 E o ficheiro que está no chámase así 1162 00:47:32,210 --> 00:47:33,820 hello2, neste caso. 1163 00:47:33,820 --> 00:47:37,040 Porque o meu arquivo de texto hello2.c, Intro. 1164 00:47:37,040 --> 00:47:39,820 E agora eu tomar dous puntos de exclamación, exclamación 1165 00:47:39,820 --> 00:47:41,880 punto, punto de exclamación. 1166 00:47:41,880 --> 00:47:45,430 Todo ben, entón agora temos a capacidade de obter cordas, 1167 00:47:45,430 --> 00:47:46,280 aparentemente. 1168 00:47:46,280 --> 00:47:48,190 Ben, o que máis podemos comezar a partir de usuarios? 1169 00:47:48,190 --> 00:47:51,010 >> Ben na biblioteca CS50, hai outras funcións que 1170 00:47:51,010 --> 00:47:53,300 están indo para simplificar as nosas vidas nestes primeiros días. 1171 00:47:53,300 --> 00:47:56,350 GetChar, GetDouble, GetFloat, GetInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Ben, imos arrincar fóra o máis fácil deles en primeiro lugar. 1174 00:47:59,550 --> 00:48:01,430 GetString literalmente fai iso. 1175 00:48:01,430 --> 00:48:04,210 El está alí, á espera de que o usuario escriba algo, 1176 00:48:04,210 --> 00:48:07,170 e así que eu escriba algo e presione Enter, el 1177 00:48:07,170 --> 00:48:08,860 fai algo con ese valor. 1178 00:48:08,860 --> 00:48:11,700 Entón, imos voltar a ese exemplo para ver exactamente o que 1179 00:48:11,700 --> 00:48:12,950 GetString estaba facendo. 1180 00:48:12,950 --> 00:48:17,445 Deixe-me ir adiante e abrir o gedit, hello.c, e recordar 1181 00:48:17,445 --> 00:48:20,590 este dereito antes do rango, este é o lugar onde paramos. 1182 00:48:20,590 --> 00:48:23,240 >> Entón, imos agora provocar isto ademais de un pouco máis de detalles. 1183 00:48:23,240 --> 00:48:27,190 Así, na liña 6, hai dúas cousas 1184 00:48:27,190 --> 00:48:28,450 suceder na actualidade. 1185 00:48:28,450 --> 00:48:32,630 O signo igual é separar primeiro semestre e segundo semestre. 1186 00:48:32,630 --> 00:48:34,670 Así, no lado esquerdo do signo igual, estamos 1187 00:48:34,670 --> 00:48:35,580 dicindo cadea s. 1188 00:48:35,580 --> 00:48:37,580 E entón, só palabras laicos, que é string s 1189 00:48:37,580 --> 00:48:41,040 facendo, que pensas? 1190 00:48:41,040 --> 00:48:42,990 É a creación de algo? 1191 00:48:42,990 --> 00:48:44,930 Entón, é a creación dunha cadea chamada s. 1192 00:48:44,930 --> 00:48:46,370 Agora, o que iso realmente significa? 1193 00:48:46,370 --> 00:48:51,540 Ben, é reservar espazo para unha cadea chamada s. 1194 00:48:51,540 --> 00:48:52,490 Iso non é certo. 1195 00:48:52,490 --> 00:48:53,120 O que se está facendo? 1196 00:48:53,120 --> 00:48:55,400 Ordenadores ben, como saben, teñen unidades de disco duro, que é onde 1197 00:48:55,400 --> 00:48:56,300 os seus arquivos están gardados. 1198 00:48:56,300 --> 00:48:59,100 Os ordenadores teñen memoria RAM, e é onde os programas son cargados 1199 00:48:59,100 --> 00:49:00,240 mentres eles están funcionando. 1200 00:49:00,240 --> 00:49:02,470 Entón, cando premer dúas veces nun icono e Microsoft Word abre 1201 00:49:02,470 --> 00:49:06,380 anterior, o Microsoft Word está en execución, por así dicir, na RAM, o que é 1202 00:49:06,380 --> 00:49:08,160 a parte electrónica do seu ordenador. 1203 00:49:08,160 --> 00:49:10,660 Non é a parte física, mecánica que está xirando, onde 1204 00:49:10,660 --> 00:49:12,640 os datos son xeralmente almacenadas a longo prazo. 1205 00:49:12,640 --> 00:49:15,810 Así cadea s é moi fermoso dicir que o ordenador me dá 1206 00:49:15,810 --> 00:49:18,150 memoria RAM suficiente para atender a unha corda. 1207 00:49:18,150 --> 00:49:20,450 Agora que é un pouco de unha simplificación, porque 1208 00:49:20,450 --> 00:49:22,300 quão grande é a corda vai ser? 1209 00:49:22,300 --> 00:49:24,410 Ben, nós realmente non sabemos aínda, entón nas próximas semanas 1210 00:49:24,410 --> 00:49:27,290 nós imos realmente tirar a capa que é a cadea e 1211 00:49:27,290 --> 00:49:28,510 imos dicir-lle o que realmente é. 1212 00:49:28,510 --> 00:49:31,050 Cadea, polo de agora, só unha simplificación agradable do noso mundo. 1213 00:49:31,050 --> 00:49:35,700 Pero cadea s declara unha cadea chamada s, por agora. 1214 00:49:35,700 --> 00:49:36,520 Declara unha cadea. 1215 00:49:36,520 --> 00:49:39,310 El reserva un espazo na memoria RAM para a cadea que o usuario é 1216 00:49:39,310 --> 00:49:40,150 a piques de escribir. 1217 00:49:40,150 --> 00:49:41,840 >> Agora imos ollar para a dereita do signo igual. 1218 00:49:41,840 --> 00:49:44,110 Por iso, di GetString (). 1219 00:49:44,110 --> 00:49:45,070 E un pouco de sanidade comprobar. 1220 00:49:45,070 --> 00:49:47,940 O feito de que non hai nada dentro dos parénteses 1221 00:49:47,940 --> 00:49:50,810 implica que sobre GetString? 1222 00:49:50,810 --> 00:49:52,180 El non ten argumentos. 1223 00:49:52,180 --> 00:49:55,290 Ou sexa, non pode influír no seu comportamento de forma algunha. 1224 00:49:55,290 --> 00:49:58,940 Cada vez que usalo, vai incorporarse unha cadea e é iso. 1225 00:49:58,940 --> 00:50:02,210 Por outra banda, printf, espero que o seu comportamento fai 1226 00:50:02,210 --> 00:50:03,010 cambian cada momento. 1227 00:50:03,010 --> 00:50:05,230 Se non, é unha función de impresión bastante inútil se 1228 00:50:05,230 --> 00:50:06,480 fai a mesma cousa. 1229 00:50:06,480 --> 00:50:07,970 Se sempre imprime David ou algo 1230 00:50:07,970 --> 00:50:09,500 arbitrario todo o tempo. 1231 00:50:09,500 --> 00:50:11,540 Entón printf ten sentido ter un argumento. 1232 00:50:11,540 --> 00:50:14,240 GetString realmente non precisa dun argumento, porque eu quería 1233 00:50:14,240 --> 00:50:16,700 para obter unha cadea de usuario e é o usuario que vai 1234 00:50:16,700 --> 00:50:19,580 para abastecer o dinamismo escribindo en letras diferentes 1235 00:50:19,580 --> 00:50:20,850 cada tempo no teclado. 1236 00:50:20,850 --> 00:50:23,140 >> Entón, o que GetString que en última instancia? 1237 00:50:23,140 --> 00:50:25,080 Pense nisso como esta pequena caixa negra. 1238 00:50:25,080 --> 00:50:29,340 E esa caixa negra ten ningunha entrada, pero cando bate 1239 00:50:29,340 --> 00:50:33,240 , El cospe unha cadea que o usuario introduciu dentro 1240 00:50:33,240 --> 00:50:36,660 E o feito de que hai un sinal de igual non significa tomar 1241 00:50:36,660 --> 00:50:39,890 o que é cuspir na dereita e almacena-lo dentro 1242 00:50:39,890 --> 00:50:41,390 o que está na esquerda. 1243 00:50:41,390 --> 00:50:43,470 Sinal para igual aquí, en realidade, non significa 1244 00:50:43,470 --> 00:50:46,490 igualdade, en vez tecnicamente significa asignación. 1245 00:50:46,490 --> 00:50:49,330 Colla o valor á dereita, e coloque-o no 1246 00:50:49,330 --> 00:50:51,050 variable á esquerda. 1247 00:50:51,050 --> 00:50:52,820 Entón, iso é todo o que está a suceder alí. 1248 00:50:52,820 --> 00:50:55,640 >> Agora na liña 7, estamos chamando printf. 1249 00:50:55,640 --> 00:50:58,170 Entón, espero que printf está quedando un pouco aburrido agora. 1250 00:50:58,170 --> 00:50:59,530 Así imprimir unha secuencia formatada. 1251 00:50:59,530 --> 00:51:00,440 O cadea? 1252 00:51:00,440 --> 00:51:05,460 Imprimir "h-p-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 Todo ben, entón o que quero plug-in% s? 1255 00:51:10,470 --> 00:51:12,960 Literalmente, calquera que sexa almacenado s. 1256 00:51:12,960 --> 00:51:15,570 Polo tanto, neste caso, proba de sanidade pouco, cantos argumentos fai 1257 00:51:15,570 --> 00:51:16,820 printf tomar? 1258 00:51:19,860 --> 00:51:21,110 Ok, eu oín un. 1259 00:51:23,840 --> 00:51:26,330 Eu oín unha vez. 1260 00:51:26,330 --> 00:51:27,730 Dous, eu oín dous. 1261 00:51:27,730 --> 00:51:29,920 E como preto de tres? 1262 00:51:29,920 --> 00:51:30,450 Ok, tres? 1263 00:51:30,450 --> 00:51:30,930 Excelente. 1264 00:51:30,930 --> 00:51:33,170 Tres respostas posibles, só unha delas é a correcta. 1265 00:51:33,170 --> 00:51:36,390 Así, os argumentos de novo influír no comportamento dunha función. 1266 00:51:36,390 --> 00:51:39,380 No pasado, printf que só pode tomar un argumento. 1267 00:51:39,380 --> 00:51:42,260 "Ola mundo" foi un único argumento. 1268 00:51:42,260 --> 00:51:45,190 Con todo, agora, entender onde esta coma é. 1269 00:51:45,190 --> 00:51:49,600 Esta comas está fóra da cita / unquote, o que significa 1270 00:51:49,600 --> 00:51:52,170 printf hey, aquí vén un segundo argumento. 1271 00:51:52,170 --> 00:51:54,240 >> Entón comas en linguaxes de programación 1272 00:51:54,240 --> 00:51:57,300 separados varios argumentos. 1273 00:51:57,300 --> 00:51:59,600 Polo tanto, a resposta é sempre non é un, porque 1274 00:51:59,600 --> 00:52:00,390 hai este comas. 1275 00:52:00,390 --> 00:52:03,680 Entón, como mínimo, printf é aparentemente levando dous 1276 00:52:03,680 --> 00:52:04,940 argumentos desta vez. 1277 00:52:04,940 --> 00:52:07,050 Pero a oportunidade para unha pregunta truco aquí é o que 1278 00:52:07,050 --> 00:52:07,990 sobre esta coma? 1279 00:52:07,990 --> 00:52:11,260 Isto implica que hai, en realidade, tres argumentos? 1280 00:52:11,260 --> 00:52:13,820 Isto, este, e este. 1281 00:52:13,820 --> 00:52:18,820 Entón, non, porque esa coma está dentro das comiñas, que 1282 00:52:18,820 --> 00:52:20,890 significa que é realmente só unha estética de inglés. 1283 00:52:20,890 --> 00:52:23,180 Non ten nada que ver co número de 1284 00:52:23,180 --> 00:52:24,890 argumentos deste programa. 1285 00:52:24,890 --> 00:52:27,670 Polo tanto, este é coma fóra das comiñas. 1286 00:52:27,670 --> 00:52:28,850 E a continuación, voltar 0. 1287 00:52:28,850 --> 00:52:30,980 Por agora, imos só unha especie de levar un regalo na fe para 1288 00:52:30,980 --> 00:52:34,460 hoxe, e só sei que cando as funcións son feitas execución 1289 00:52:34,460 --> 00:52:37,950 liñas de código, que xeralmente debe retornar algún valor. 1290 00:52:37,950 --> 00:52:42,010 Neste caso, só porque principal debe voltar un int, 1291 00:52:42,010 --> 00:52:44,320 iso é só a forma como a linguaxe C funciona. 1292 00:52:44,320 --> 00:52:47,040 >> Entón, porque nada deu mal, se sente como o programa 1293 00:52:47,040 --> 00:52:49,960 ben, eu só codificado no retorno 0. 1294 00:52:49,960 --> 00:52:52,980 Pero, en contraste, e eu vou escribir isto no código pseudo 1295 00:52:52,980 --> 00:52:55,020 agora, así como José fixo cando fixemos a media 1296 00:52:55,020 --> 00:52:56,220 exemplo, a semana pasada. 1297 00:52:56,220 --> 00:53:00,440 Se algo deu mal - este non é o código real - foi 1298 00:53:00,440 --> 00:53:06,570 mal, a continuación, voltar, digamos, 1. 1299 00:53:06,570 --> 00:53:08,770 Else return 0. 1300 00:53:08,770 --> 00:53:10,070 Polo tanto, este é o lugar onde nós estamos indo con iso. 1301 00:53:10,070 --> 00:53:12,090 Este non é o código C real, só pseudocódigo. 1302 00:53:12,090 --> 00:53:14,010 Pero é así que pode volver 1303 00:53:14,010 --> 00:53:15,580 distintos valores posibles. 1304 00:53:15,580 --> 00:53:19,520 Pero agora eu estou indo só para ir adiante e volver 0. 1305 00:53:19,520 --> 00:53:24,410 Todo ben, todas as preguntas, ata agora, sobre a funcionalidade, sintaxe, 1306 00:53:24,410 --> 00:53:25,000 ou semellantes? 1307 00:53:25,000 --> 00:53:26,280 Si, na parte de atrás. 1308 00:53:26,280 --> 00:53:27,530 >> Audiencia: [inaudível] 1309 00:53:30,510 --> 00:53:32,210 DAVID Malan: Pode falar un pouco máis alto? 1310 00:53:32,210 --> 00:53:34,325 Por que fixo iso 0 retorno do programa, e? 1311 00:53:34,325 --> 00:53:35,575 Audiencia: [inaudível] 1312 00:53:39,910 --> 00:53:43,450 DAVID Malan: Ah, iso é porque eu teño preguiza, desculpe. 1313 00:53:43,450 --> 00:53:48,290 Ningunha resposta boa académico, volver 0. 1314 00:53:48,290 --> 00:53:52,690 Podo tipo de rescatar iso, dicindo tecnicamente C, se principal 1315 00:53:52,690 --> 00:53:55,900 non retorna explicitamente un valor, 0 será devolto 1316 00:53:55,900 --> 00:53:57,730 automaticamente para ti. 1317 00:53:57,730 --> 00:54:00,290 O que é certo, eu non estou cubrindo-se. 1318 00:54:00,290 --> 00:54:03,270 Pero, eu debería ter feito isto desta maneira. 1319 00:54:03,270 --> 00:54:05,250 Non takeaway interesante do que a outra que o meu erro. 1320 00:54:05,250 --> 00:54:06,170 Si? 1321 00:54:06,170 --> 00:54:08,470 >> Audiencia: Normalmente, cando escribe no baleiro, significa que 1322 00:54:08,470 --> 00:54:10,770 non retornar algo. 1323 00:54:10,770 --> 00:54:11,420 DAVID Malan: Correcto. 1324 00:54:11,420 --> 00:54:15,800 En vez diso, vostede especifica antes do nome dunha función, por 1325 00:54:15,800 --> 00:54:18,590 exemplo, aquí, nula, entón a función 1326 00:54:18,590 --> 00:54:20,480 non retorna nada. 1327 00:54:20,480 --> 00:54:25,210 E, polo tanto, quere só de dicir, o retorno ou nada, 1328 00:54:25,210 --> 00:54:26,730 e que sería consistente. 1329 00:54:26,730 --> 00:54:27,750 E nós imos voltar a iso. 1330 00:54:27,750 --> 00:54:31,030 E só FYI, unha das capturas coa aprendizaxe 1331 00:54:31,030 --> 00:54:33,450 programación nun mundo que ten centos de libros e 1332 00:54:33,450 --> 00:54:36,180 centos de sitios por aí que vai, invariablemente 1333 00:54:36,180 --> 00:54:38,220 ver sintaxe diferente en diferentes libros 1334 00:54:38,220 --> 00:54:40,220 por persoas distintas. 1335 00:54:40,220 --> 00:54:42,100 Entenda que imos facer o noso mellor en seccións e conferencias para 1336 00:54:42,100 --> 00:54:42,960 consistente. 1337 00:54:42,960 --> 00:54:46,660 Pero ás veces vai ver sintaxe conflitantes. 1338 00:54:46,660 --> 00:54:48,540 Así, sempre en dúbida, pode preguntar. 1339 00:54:48,540 --> 00:54:51,100 E, en xeral, nós imos coidar de conferencias e seccións para 1340 00:54:51,100 --> 00:54:53,710 case sempre presenta-lo no camiño certo. 1341 00:54:53,710 --> 00:54:56,070 E digo case sempre, porque se trate. 1342 00:54:56,070 --> 00:54:56,860 Outras preguntas? 1343 00:54:56,860 --> 00:55:01,590 >> Público:% s hai fóra do aparello? 1344 00:55:01,590 --> 00:55:03,710 DAVID Malan:% s hai fóra do aparello? 1345 00:55:03,710 --> 00:55:04,180 Si 1346 00:55:04,180 --> 00:55:07,760 Entón% s ten que ver coa C. O feito de que nós estamos usando o en 1347 00:55:07,760 --> 00:55:10,290 o aparello fundamentalmente non ten nada que ver co 1348 00:55:10,290 --> 00:55:12,080 características da linguaxe que estamos a usar. 1349 00:55:12,080 --> 00:55:15,990 De feito, a semana pasada, cando usamos o meu Mac, eu escribín 1350 00:55:15,990 --> 00:55:17,160 C código no meu Mac 1351 00:55:17,160 --> 00:55:20,020 Eu podería usar% s no meu Mac, e pode usalo en 1352 00:55:20,020 --> 00:55:22,400 seu ordenador con Windows se instala un compilador, como 1353 00:55:22,400 --> 00:55:24,070 Visual Studio de Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Así,% s. 1355 00:55:24,990 --> 00:55:27,860 Todo o que estamos facendo neste xanela de hoxe ten que 1356 00:55:27,860 --> 00:55:31,140 facer C. E, fundamentalmente, nada que ver co 1357 00:55:31,140 --> 00:55:33,450 sistema operativo en cuestión. 1358 00:55:33,450 --> 00:55:35,900 Por outra banda, a xanela do terminal branco e negro - cando 1359 00:55:35,900 --> 00:55:40,160 Eu estou escribindo cousas como ls, rm e CD e - 1360 00:55:40,160 --> 00:55:42,020 que ten que ver co sistema operativo e 1361 00:55:42,020 --> 00:55:43,562 navegar arredor. 1362 00:55:43,562 --> 00:55:44,546 Si 1363 00:55:44,546 --> 00:55:46,520 Audiencia: eu quería dicir a biblioteca, a biblioteca CS50. 1364 00:55:46,520 --> 00:55:49,960 DAVID Malan: Ok, entón se quere dicir a secuencia de palabras clave, que 1365 00:55:49,960 --> 00:55:52,460 só existe na biblioteca CS50, correcta. 1366 00:55:52,460 --> 00:55:55,350 Isto non existe no C-se, e de feito nun par 1367 00:55:55,350 --> 00:55:58,220 de semana imos tirar a biblioteca CS50 e comezar 1368 00:55:58,220 --> 00:56:02,290 facer as cousas a partir de cero nos, por así dicir. 1369 00:56:02,290 --> 00:56:02,940 Outras preguntas? 1370 00:56:02,940 --> 00:56:04,577 Si 1371 00:56:04,577 --> 00:56:05,827 >> Audiencia: [inaudível] 1372 00:56:09,470 --> 00:56:10,160 DAVID Malan: Boa pregunta. 1373 00:56:10,160 --> 00:56:11,720 Son o caso ordes sensibles? 1374 00:56:11,720 --> 00:56:13,710 E deixe-me facer unha distinción aquí. 1375 00:56:13,710 --> 00:56:15,840 Así, os comandos son xeralmente as cousas que vou escribir no 1376 00:56:15,840 --> 00:56:17,940 parte inferior da xanela, na fiestra da terminal. 1377 00:56:17,940 --> 00:56:21,770 Calquera cousa ata aquí sería declaracións ou de código C. 1378 00:56:21,770 --> 00:56:24,490 Pero en ambos os casos, a resposta é a mesma, si. 1379 00:56:24,490 --> 00:56:27,800 Ambos estes ambientes, o código C na parte superior ea 1380 00:56:27,800 --> 00:56:29,910 liña de comandos do sistema operativo no 1381 00:56:29,910 --> 00:56:31,440 fondo, son maiúsculas de minúsculas. 1382 00:56:31,440 --> 00:56:33,830 Polo tanto, ten que capitalizar GetString con capital G, 1383 00:56:33,830 --> 00:56:37,050 capital de S. Debe escribir printf en todas as minúsculas. 1384 00:56:37,050 --> 00:56:39,520 Debe teclear ls en todas as minúsculas. 1385 00:56:39,520 --> 00:56:43,260 Así, en case todas as situacións deste semestre caso, pode, en 1386 00:56:43,260 --> 00:56:44,820 materia feito,. 1387 00:56:44,820 --> 00:56:46,148 Si 1388 00:56:46,148 --> 00:56:47,398 >> Audiencia: [inaudível] 1389 00:56:54,770 --> 00:56:56,480 DAVID Malan: Ah, entón todo ben, o que se tivésemos un ficheiro 1390 00:56:56,480 --> 00:56:57,840 chamado hello.d. 1391 00:56:57,840 --> 00:57:00,090 Así, parece D é unha linguaxe de programación. 1392 00:57:00,090 --> 00:57:02,790 E así, nalgúns casos, poderiamos escribir un programa en 1393 00:57:02,790 --> 00:57:06,190 este ficheiro e telo compilado en que a moda. 1394 00:57:06,190 --> 00:57:09,090 Podemos, e en realidade, resposta curta é, eu non sei. 1395 00:57:09,090 --> 00:57:10,440 Entón, imos facelo. 1396 00:57:10,440 --> 00:57:13,040 Deixe-me ir adiante e crear un novo arquivo. 1397 00:57:13,040 --> 00:57:15,580 E o spin aquí, honesta, en xeral, é que sempre que calquera dúbida 1398 00:57:15,580 --> 00:57:18,130 neste semestre, e ten o seu dispositivo ou ordenador 1399 00:57:18,130 --> 00:57:20,030 abrir, vai adiante e tratar de algo. 1400 00:57:20,030 --> 00:57:23,740 Entón, eu estou indo a gardar un arquivo chamado hello.d. 1401 00:57:23,740 --> 00:57:25,010 Gardar esta. 1402 00:57:25,010 --> 00:57:29,070 E eu vou correr facer Ola Intro. 1403 00:57:29,070 --> 00:57:31,660 Parecía inferir que c é máis probable 1404 00:57:31,660 --> 00:57:35,920 que d, neste caso. 1405 00:57:35,920 --> 00:57:38,046 Outras cuestións. 1406 00:57:38,046 --> 00:57:40,456 Si 1407 00:57:40,456 --> 00:57:41,706 >> Audiencia: [inaudível] 1408 00:57:48,170 --> 00:57:49,837 DAVID Malan: Ok, dicir que, unha vez máis. 1409 00:57:49,837 --> 00:57:51,087 Audiencia: [inaudível] 1410 00:58:04,250 --> 00:58:05,780 DAVID Malan: Como faría para diagnosticar ou que 1411 00:58:05,780 --> 00:58:06,380 solución de problemas que? 1412 00:58:06,380 --> 00:58:08,800 Entón, moi probablemente, porque son diferentes linguas, 1413 00:58:08,800 --> 00:58:10,280 máis probable que vai quedar completamente 1414 00:58:10,280 --> 00:58:11,580 programa diferente emitidas. 1415 00:58:11,580 --> 00:58:14,140 Recibir mensaxes de erro completamente diferentes. 1416 00:58:14,140 --> 00:58:16,750 E tamén só en termos de deseño, sería sen dúbida ser un 1417 00:58:16,750 --> 00:58:19,140 decisión de proxecto pobres para estar escribindo dous diferentes 1418 00:58:19,140 --> 00:58:21,510 linguas con arquivos de forma case idéntica nomeados, en 1419 00:58:21,510 --> 00:58:23,000 o directorio exactamente o mesmo, utilizando un 1420 00:58:23,000 --> 00:58:24,550 ferramenta automática como facer. 1421 00:58:24,550 --> 00:58:27,750 Entón eu tamén pode empurrar cara atrás e dicir, en 15 anos de facelo, 1422 00:58:27,750 --> 00:58:29,190 nunca cometeu ese erro. 1423 00:58:29,190 --> 00:58:30,030 Podería acontecer. 1424 00:58:30,030 --> 00:58:31,190 Pero hai só diferentes, eu creo, 1425 00:58:31,190 --> 00:58:33,180 defensas loxísticos no lugar. 1426 00:58:33,180 --> 00:58:35,440 Ademais, as mensaxes de erro que decorreriam, que sería 1427 00:58:35,440 --> 00:58:37,260 finalmente revelar cal é o problema. 1428 00:58:37,260 --> 00:58:39,120 Pero un caso extremo posible. 1429 00:58:39,120 --> 00:58:41,730 >> Todo ben, entón imos presentar só un par de outro 1430 00:58:41,730 --> 00:58:45,600 características aquí agora, para que poidamos comezar a construírse en máis 1431 00:58:45,600 --> 00:58:47,140 e un programa máis complexo. 1432 00:58:47,140 --> 00:58:49,000 Entón, primeiro de todo, de matemáticas. 1433 00:58:49,000 --> 00:58:51,520 Así, exemplos de matemáticas son só unha especie de fácil a primeira semana. 1434 00:58:51,520 --> 00:58:53,560 Isto non é para dicir que toda a programación está a piques 1435 00:58:53,560 --> 00:58:54,390 matemáticas. 1436 00:58:54,390 --> 00:58:57,890 Certamente, a comprensión de varias características de 1437 00:58:57,890 --> 00:58:59,610 matemática, álxebra, en particular, é 1438 00:58:59,610 --> 00:59:00,330 bastante relevante aquí. 1439 00:59:00,330 --> 00:59:03,010 Nas clases de nivel superior CS, álxebra lineal, 1440 00:59:03,010 --> 00:59:03,920 cálculo, e semellantes. 1441 00:59:03,920 --> 00:59:06,500 Pero entendo que a maioría do que imos facer este semestre non reduce 1442 00:59:06,500 --> 00:59:09,230 de matemáticas, e por suposto non a aritmética, por si só, pero realmente 1443 00:59:09,230 --> 00:59:11,570 só para a lóxica e pensamento coidadoso. 1444 00:59:11,570 --> 00:59:14,310 E así esa conexión que a informática ten moito tempo, 1445 00:59:14,310 --> 00:59:16,570 especialmente no nivel do ensino medio, coa matemática, é unha 1446 00:59:16,570 --> 00:59:17,370 pouco erro. 1447 00:59:17,370 --> 00:59:20,090 Porque a maioría dos programas que imos escribir, realmente, son 1448 00:59:20,090 --> 00:59:23,290 especie de maior nivel e foco na resolución de problemas que 1449 00:59:23,290 --> 00:59:26,410 seguro, pode utilizar algunha adición, subtracción, e varios 1450 00:59:26,410 --> 00:59:28,650 fórmulas matemáticas ou semellantes, 1451 00:59:28,650 --> 00:59:30,860 pero ao final do día, é sobre pensar e non 1452 00:59:30,860 --> 00:59:33,240 só aplicar o que podería ter feito como se fose un TI 1453 00:59:33,240 --> 00:59:35,050 calculadora no ensino medio. 1454 00:59:35,050 --> 00:59:38,410 >> Entón, con iso dito, imos agora facer algo con estes 1455 00:59:38,410 --> 00:59:40,980 operadores matemáticos que existen para que poidamos viaxe 1456 00:59:40,980 --> 00:59:43,950 ao longo de algúns dos aspectos fundamentais da programación, ou en 1457 00:59:43,950 --> 00:59:48,930 Neste caso C. Así, existen, como a biblioteca CS50 suxerido, 1458 00:59:48,930 --> 00:59:51,520 e hoxe estamos usando só GetString - e nun momento 1459 00:59:51,520 --> 00:59:52,940 quizais función de outro - 1460 00:59:52,940 --> 00:59:55,380 pero existen diferentes tipos de datos dun ordenador. 1461 00:59:55,380 --> 00:59:58,550 Ao final do día, os ordenadores só sei 0s e 1s. 1462 00:59:58,550 --> 01:00:01,880 Pero lembre que a semana pasada falamos sobre o sistema binario 1463 01:00:01,880 --> 01:00:05,000 na representación de números, como o número 0, e 1, e 2, 1464 01:00:05,000 --> 01:00:07,480 todo o camiño ata un 8, como no vídeo de Nate. 1465 01:00:07,480 --> 01:00:08,840 E entón podemos contar moito maior debido a que 1466 01:00:08,840 --> 01:00:10,000 fixo no escenario aquí. 1467 01:00:10,000 --> 01:00:15,660 Pero se quere representar non só números, pero letras, 1468 01:00:15,660 --> 01:00:18,240 Nós, os seres humanos, teñen que chegar a algún arbitraria 1469 01:00:18,240 --> 01:00:21,180 convencións, no que, ao final do día todos meu ordenador 1470 01:00:21,180 --> 01:00:24,260 ten é a capacidade de expresar 0s e 1s, así que sería mellor 1471 01:00:24,260 --> 01:00:27,990 comezar a estandarizar os patróns de 0s e 1s que representan 1472 01:00:27,990 --> 01:00:28,800 cousas distintas. 1473 01:00:28,800 --> 01:00:32,370 Un nivel de 0s e 1s que representa a letra a. 1474 01:00:32,370 --> 01:00:34,840 Patróns de 0s e 1s que representan a letra z. 1475 01:00:34,840 --> 01:00:37,600 Patróns de 0s e 1s que representan a cor azul, ou 1476 01:00:37,600 --> 01:00:38,600 vermello, ou algo semellante. 1477 01:00:38,600 --> 01:00:42,360 Necesitamos utilizar todos eses 0s e 1s nos expresar en 1478 01:00:42,360 --> 01:00:45,140 contextos diferentes, de formas distintas que non son 1479 01:00:45,140 --> 01:00:46,470 necesariamente numéricas. 1480 01:00:46,470 --> 01:00:51,150 >> Polo tanto, en termos de representación, C ten diferentes tipos de datos, 1481 01:00:51,150 --> 01:00:52,550 e vimos un deses ata agora. 1482 01:00:52,550 --> 01:00:54,940 Vimos int, e observe o que non está na pantalla 1483 01:00:54,940 --> 01:00:56,140 agora é string. 1484 01:00:56,140 --> 01:00:58,550 Cadea non, de feito, existen en C. De novo, é unha 1485 01:00:58,550 --> 01:01:00,610 simplificación que estamos presentando para o primeiro 1486 01:01:00,610 --> 01:01:01,570 par de semanas. 1487 01:01:01,570 --> 01:01:03,770 Un char é un personaxe individual. 1488 01:01:03,770 --> 01:01:07,050 Un float é un número real, cun punto decimal e cifras para 1489 01:01:07,050 --> 01:01:09,066 á esquerda e á dereita. 1490 01:01:09,066 --> 01:01:16,040 O dúo é o que, para aqueles con fondo de volta antes? 1491 01:01:16,040 --> 01:01:19,720 Así, unha parella é algo dúas veces. 1492 01:01:19,720 --> 01:01:21,240 Engade dúas veces moita precisión. 1493 01:01:21,240 --> 01:01:22,440 Entón, o que significa isto? 1494 01:01:22,440 --> 01:01:26,090 Así, en cada un destes casos, o tipo de mundo estándar 1495 01:01:26,090 --> 01:01:27,960 cantos bits son usados ​​para representar 1496 01:01:27,960 --> 01:01:29,160 cada unha desas cousas. 1497 01:01:29,160 --> 01:01:31,590 Entón, se asistiu vídeo ASCII Nate xa cara á parte 1498 01:01:31,590 --> 01:01:36,170 de pset 0 ou máis tarde esta semana vai, probablemente sabe 1499 01:01:36,170 --> 01:01:37,450 que ASCII - 1500 01:01:37,450 --> 01:01:38,610 representacións de caracteres - 1501 01:01:38,610 --> 01:01:40,670 utilizar tantos bits? 1502 01:01:40,670 --> 01:01:43,410 E pode ata lembrar da nosa demo a semana pasada como 1503 01:01:43,410 --> 01:01:45,500 moitas persoas estaban no escenario. 1504 01:01:45,500 --> 01:01:46,840 Así, 7 ou 8, tipicamente. 1505 01:01:46,840 --> 01:01:49,230 Entón, xeralmente 8, e hai algo chamado prorrogado 1506 01:01:49,230 --> 01:01:51,240 ASCII que utiliza todos os 8 bits, en vez de sete. 1507 01:01:51,240 --> 01:01:54,710 Pero, en xeral, estamos a falar de potencias de 2, polo tanto, neste caso, 8. 1508 01:01:54,710 --> 01:01:58,900 Así, un char nunha linguaxe de programación é xeralmente 8 bits. 1509 01:01:58,900 --> 01:02:02,550 Así, un int é xeralmente 32 bits. 1510 01:02:02,550 --> 01:02:04,810 Un flotador é xeralmente 32 bits. 1511 01:02:04,810 --> 01:02:08,060 O dúo é xeralmente 64 bits. 1512 01:02:08,060 --> 01:02:08,870 E o que significa isto? 1513 01:02:08,870 --> 01:02:11,500 Isto significa que pode representar números grandes, ou no caso 1514 01:02:11,500 --> 01:02:15,490 de números reais, pode ter números máis tras a 1515 01:02:15,490 --> 01:02:16,240 decimal. 1516 01:02:16,240 --> 01:02:18,980 A precisión moito máis, nese caso. 1517 01:02:18,980 --> 01:02:21,780 Agora, un longo tempo, por desgraza, é nomeado. 1518 01:02:21,780 --> 01:02:24,340 Polo tanto, hai un int que é de 32 bits. 1519 01:02:24,340 --> 01:02:29,800 Hai unha lonxitude que é, non, os 32 bits. 1520 01:02:29,800 --> 01:02:32,610 E un longo tempo, que é de 64 bits. 1521 01:02:32,610 --> 01:02:34,830 Con todo, algúns dos que son sensibles ao contexto, depende 1522 01:02:34,830 --> 01:02:36,190 que tipo de ordenador que ten. 1523 01:02:36,190 --> 01:02:40,510 Así, en xeral, imos indicar nunha casa ou nun quiz cando 1524 01:02:40,510 --> 01:02:41,180 que realmente importa. 1525 01:02:41,180 --> 01:02:43,080 Pero o punto é que hai todos estes diferentes 1526 01:02:43,080 --> 01:02:44,250 representacións aquí. 1527 01:02:44,250 --> 01:02:45,950 >> Entón, imos mergullar de feito nun programa. 1528 01:02:45,950 --> 01:02:48,300 En vez de escribir este a partir de cero, deixe-me ir adiante 1529 01:02:48,300 --> 01:02:50,940 e abrir a partir do código fonte de hoxe - o que é 1530 01:02:50,940 --> 01:02:54,980 en liña - se quere xogar en torno liña, o retorno ou 1531 01:02:54,980 --> 01:02:57,120 Mércores o aparello no seu ordenador, instrucións 1532 01:02:57,120 --> 01:02:59,160 para que ha conectar na páxina principal do curso. 1533 01:02:59,160 --> 01:03:00,830 Aquí está o programa super sinxelo. 1534 01:03:00,830 --> 01:03:02,520 Pero el ten un pouco de algo novo na parte superior que 1535 01:03:02,520 --> 01:03:03,650 non tiñamos antes. 1536 01:03:03,650 --> 01:03:05,800 Unha morea de liñas azuis de texto. 1537 01:03:05,800 --> 01:03:08,410 Entón, estas liñas azuis representan comentarios. 1538 01:03:08,410 --> 01:03:10,620 Polo tanto, é moi útil nun programa para ser capaz de escribir 1539 01:03:10,620 --> 01:03:13,160 algúns comentarios para si mesmo ou para os compañeiros ou amigos, ou 1540 01:03:13,160 --> 01:03:15,700 compañeiros de ensino, este tipo de describir o que está a suceder no 1541 01:03:15,700 --> 01:03:18,500 este ficheiro, pero non ten nada que ver co código C en si. 1542 01:03:18,500 --> 01:03:20,860 Nada que ver co programa funcional, é só 1543 01:03:20,860 --> 01:03:21,760 estética. 1544 01:03:21,760 --> 01:03:24,580 Así, a forma de facelo en C é xeralmente comezar o seu 1545 01:03:24,580 --> 01:03:29,860 comentarios / *, e que acaban cos seus comentarios 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 E se vostede é realmente anal e quere debuxar tipo de imaxes, 1548 01:03:34,140 --> 01:03:35,870 entón ía poñer unha morea de estrelas, faría unha 1549 01:03:35,870 --> 01:03:36,970 pequena caixa como esta. 1550 01:03:36,970 --> 01:03:37,990 Pero nada diso importa. 1551 01:03:37,990 --> 01:03:40,230 O único que importa é a primeira 1552 01:03:40,230 --> 01:03:41,620 e. último 1553 01:03:41,620 --> 01:03:43,820 Isto é o que se chama un comentario multi-liña. 1554 01:03:43,820 --> 01:03:46,610 E iso é só unha convención humana moitas veces fan as estrelas e caixa 1555 01:03:46,610 --> 01:03:48,420 cousas como esta se ten unha morea de tempo libre. 1556 01:03:48,420 --> 01:03:51,550 >> Entón, despois de que teña escrito en algúns comentarios, en xeral, veñen 1557 01:03:51,550 --> 01:03:53,160 a coraxe reais do programa. 1558 01:03:53,160 --> 01:03:55,630 Aquí está o noso familiarizado # include. 1559 01:03:55,630 --> 01:04:00,410 E só rápido, iso é necesario ou non necesario? 1560 01:04:00,410 --> 01:04:02,860 Audiencia: necesario. 1561 01:04:02,860 --> 01:04:04,390 DAVID Malan: Entón non é realmente necesario. 1562 01:04:04,390 --> 01:04:07,070 Entón, por que, con todo, non é necesario? 1563 01:04:07,070 --> 01:04:08,170 Polo tanto, non hai printf. 1564 01:04:08,170 --> 01:04:08,510 De feito. 1565 01:04:08,510 --> 01:04:10,470 Todo o que estamos facendo neste programa é a matemática. 1566 01:04:10,470 --> 01:04:11,640 Entón, podo realmente eliminar iso. 1567 01:04:11,640 --> 01:04:14,330 Entón non ten que sempre inclúen algo 1568 01:04:14,330 --> 01:04:15,420 a parte superior dun programa. 1569 01:04:15,420 --> 01:04:17,020 >> Entón imos simplificar isto un pouco. 1570 01:04:17,020 --> 01:04:18,650 E agora entender o que este programa fai. 1571 01:04:18,650 --> 01:04:19,920 Non moito interese. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Ben, o que se está facendo? 1574 01:04:22,550 --> 01:04:25,130 Ben, creo que volver para o modelo mental antes. 1575 01:04:25,130 --> 01:04:27,500 O lado esquerdo desta expresión fai o que? 1576 01:04:31,440 --> 01:04:32,830 Crear espazo para un número enteiro. 1577 01:04:32,830 --> 01:04:33,930 Entón, canto espazo? 1578 01:04:33,930 --> 01:04:36,980 Ben, acontece que sei agora que é 32 bits. 1579 01:04:36,980 --> 01:04:40,070 Anteriormente, unha corda foi tecnicamente 32 bits, pero máis 1580 01:04:40,070 --> 01:04:40,950 en que, no futuro. 1581 01:04:40,950 --> 01:04:42,240 Pero un int é de 32 bits. 1582 01:04:42,240 --> 01:04:45,590 Polo tanto, esta expresión á esquerda aquí, int x só di hey 1583 01:04:45,590 --> 01:04:48,490 sistema operativo, dáme 32 bits de memoria RAM - 1584 01:04:48,490 --> 01:04:50,450 tamén coñecida como 4 bytes de memoria RAM - 1585 01:04:50,450 --> 01:04:53,930 para que eu poida poñer un enteiro nese espazo. 1586 01:04:53,930 --> 01:04:55,330 O número enteiro que quere poñer? 1587 01:04:55,330 --> 01:04:56,640 Ben, só o número 1. 1588 01:04:56,640 --> 01:04:59,530 int y recibe 2, fai exactamente a mesma cousa, aínda que o 1589 01:04:59,530 --> 01:05:02,160 número é maior, en termos da súa magnitude. 1590 01:05:02,160 --> 01:05:04,790 O número en si é aínda só 32 bits. 1591 01:05:04,790 --> 01:05:06,520 É só o patrón de bits é diferente 1592 01:05:06,520 --> 01:05:08,260 representan 1 contra 2. 1593 01:05:08,260 --> 01:05:11,980 int z agora di me dar outro de 32 bits, chame-z, e poñer o 1594 01:05:11,980 --> 01:05:14,210 engadir 1 e 2 en. 1595 01:05:14,210 --> 01:05:18,050 De xeito que agora é presuntamente z almacenar o valor 3, 1596 01:05:18,050 --> 01:05:19,360 e despois voltar 0. 1597 01:05:19,360 --> 01:05:23,020 >> Agora este programa, non é facer calquera cousa de interese? 1598 01:05:23,020 --> 01:05:26,170 Entón, en realidade, non fai nada de interesante, en calquera 1599 01:05:26,170 --> 01:05:28,450 sentido, por que? Está facendo un pouco de matemáticas. 1600 01:05:28,450 --> 01:05:30,590 Pero non está retornando a resposta, non. 1601 01:05:30,590 --> 01:05:31,790 Está retornando 0. 1602 01:05:31,790 --> 01:05:33,440 Non está imprimindo a resposta. 1603 01:05:33,440 --> 01:05:35,760 Polo tanto, este programa é fundamentalmente inútil, xa que 1604 01:05:35,760 --> 01:05:36,350 agora. 1605 01:05:36,350 --> 01:05:37,220 Está facendo un traballo. 1606 01:05:37,220 --> 01:05:39,530 Vai levar moito número de segundos ou microssegundos, para 1607 01:05:39,530 --> 01:05:41,510 correr, pero non está realmente facendo algo 1608 01:05:41,510 --> 01:05:42,770 útiles para o ser humano. 1609 01:05:42,770 --> 01:05:46,810 >> Entón, imos realmente agora abrir math2, onde agora estou, en realidade, 1610 01:05:46,810 --> 01:05:48,250 impresión do resultado. 1611 01:05:48,250 --> 01:05:51,260 Polo tanto, este tamén pode ser detectada a partir dos exemplos anteriores. 1612 01:05:51,260 --> 01:05:54,320 Se eu queira facer algunha matemáticas sinxelas, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z é 1 máis 2 agora. 1614 01:05:56,820 --> 01:05:59,240 O que é que isto vai imprimir obviamente? 1615 01:05:59,240 --> 01:06:00,120 Só 3. 1616 01:06:00,120 --> 01:06:01,590 Entón sanidade rápido check. 1617 01:06:01,590 --> 01:06:03,830 Deixe-me cambiar a este directorio. 1618 01:06:03,830 --> 01:06:06,480 Entón cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Deixe-me ir adiante e escriba make math2. 1620 01:06:09,370 --> 01:06:11,510 Ningunha mensaxe de erro xurdiu, entón deixe-me executar - 1621 01:06:11,510 --> 01:06:14,800 non a.out me deixar correr math2. Intro. 1622 01:06:14,800 --> 01:06:16,750 E, de feito, el imprimiu 3. 1623 01:06:16,750 --> 01:06:18,460 Ben, imos dar un ollo a unha variante deste. 1624 01:06:18,460 --> 01:06:23,870 En math3.c, agora temos este exemplo aquí. 1625 01:06:23,870 --> 01:06:26,540 >> Entón, este tipo de un interesante. 1626 01:06:26,540 --> 01:06:32,000 Polo tanto, neste un aquí, a resposta vai estar 1 dividido por 10, 1627 01:06:32,000 --> 01:06:33,910 e entender que eu dixo-o como unha boia. 1628 01:06:33,910 --> 01:06:35,200 Por que quero que sexa unha boia? 1629 01:06:35,200 --> 01:06:36,110 Ben, é unha fracción. 1630 01:06:36,110 --> 01:06:37,140 Vai ser un número real. 1631 01:06:37,140 --> 01:06:40,970 Por iso, vai ser 0,1, espero - 10%, neste caso. 1632 01:06:40,970 --> 01:06:42,610 E o que eu, entón quere imprimir? 1633 01:06:42,610 --> 01:06:43,440 Ben, esa resposta. 1634 01:06:43,440 --> 01:06:44,760 Ben, imos provocar estes separados en primeiro lugar. 1635 01:06:44,760 --> 01:06:47,020 Así, no lado esquerdo, declarar unha 1636 01:06:47,020 --> 01:06:49,410 flotar, chamalo de responder. 1637 01:06:49,410 --> 01:06:52,280 No lado dereito, non un dividido por 10 e poñer este 1638 01:06:52,280 --> 01:06:54,370 responder dentro da variable. 1639 01:06:54,370 --> 01:06:56,410 Agora, esta liña parece un pouco máis enigmática. 1640 01:06:56,410 --> 01:06:59,440 Pero notar algunhas características familiares. % Significa aquí vén un 1641 01:06:59,440 --> 01:07:00,490 espazo reservado. 1642 01:07:00,490 --> 01:07:03,230 f significa aquí está un valor de punto flotante, só un real 1643 01:07:03,230 --> 01:07:05,490 número, algo cun punto decimal. 1644 01:07:05,490 --> 01:07:07,330 0,2 significa o que? 1645 01:07:07,330 --> 01:07:10,740 Alguén sabe por experiencia anterior? 1646 01:07:10,740 --> 01:07:12,010 Dúas casas decimais. 1647 01:07:12,010 --> 01:07:14,050 Entón, nós non vimos isto antes, pero é só unha forma de 1648 01:07:14,050 --> 01:07:16,360 exercicio de un pouco máis de control sobre printf e 1649 01:07:16,360 --> 01:07:20,840 dito non me dá 30 puntos despois do punto decimal, 1650 01:07:20,840 --> 01:07:22,490 ao contrario, danme só 2. 1651 01:07:22,490 --> 01:07:23,960 >> E entón, imos adiante e executar este. 1652 01:07:23,960 --> 01:07:30,160 Entón faga matemática 3, e agora déixeme correr de matemáticas 3, Intro. 1653 01:07:30,160 --> 01:07:34,630 E iso non é certo. 1654 01:07:34,630 --> 01:07:37,390 Nós parecemos ter atopado noso primeiro erro xenuíno. 1655 01:07:37,390 --> 01:07:39,400 Ben, quizais eu non estou só mirando preto o suficiente. 1656 01:07:39,400 --> 01:07:41,960 Entón deixe-me ir ata aquí, e deixe-me poñer 20 decimal 1657 01:07:41,960 --> 01:07:43,300 lugares punto alí. 1658 01:07:43,300 --> 01:07:47,950 E deixe-me compilar iso, facer math3, execute. 1659 01:07:47,950 --> 01:07:50,960 Seguro que 1 dividido por 10 non é 0. 1660 01:07:50,960 --> 01:07:54,270 Entón, o que está a suceder? 1661 01:07:54,270 --> 01:07:56,740 Ben ok, entón, en realidade, el non ten que ver con iso. 1662 01:07:56,740 --> 01:07:57,600 Isto é un bo pensamento. 1663 01:07:57,600 --> 01:07:59,140 Isto é realmente só unha coincidencia 1664 01:07:59,140 --> 01:08:00,220 que nós estamos facendo isto. 1665 01:08:00,220 --> 01:08:02,010 Pero só para probar que non é iso, eu vou 1666 01:08:02,010 --> 01:08:03,160 voltar algo aleatorio. 1667 01:08:03,160 --> 01:08:05,160 Non faga iso na casa, porque é simplemente incorrecto. 1668 01:08:05,160 --> 01:08:08,000 Pero facer math3, deixe-me executalo. 1669 01:08:08,000 --> 01:08:10,690 Entón non ten nada que ver co que eu estou volvendo, só ten que ver 1670 01:08:10,690 --> 01:08:11,940 co que eu estou imprimindo. 1671 01:08:11,940 --> 01:08:14,150 Pero eu oín-lo aquí. 1672 01:08:14,150 --> 01:08:15,270 O que? 1673 01:08:15,270 --> 01:08:17,524 Audiencia: Entón necesitamos escribir os números en 1674 01:08:17,524 --> 01:08:19,680 a división como - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID Malan: Ok bo. 1676 01:08:20,319 --> 01:08:22,810 Polo tanto, temos que escribir os números que participan do 1677 01:08:22,810 --> 01:08:25,979 división aquí como valores de punto flotante de si mesmos. 1678 01:08:25,979 --> 01:08:29,359 Así, o problema aquí é como antes: C, como acontece con moitos 1679 01:08:29,359 --> 01:08:31,819 linguas, ten diferentes tipos de datos. 1680 01:08:31,819 --> 01:08:34,600 E eses tipos de datos, por exemplo, son estes aquí. 1681 01:08:34,600 --> 01:08:37,430 E os tipos de datos en cuestión aquí, cando eu escriba un e entón eu 1682 01:08:37,430 --> 01:08:40,870 tipo 10, son probablemente os tipos que datos? 1683 01:08:40,870 --> 01:08:42,170 Por iso pode ser un int, non? 1684 01:08:42,170 --> 01:08:44,149 Definitivamente non é un flotador porque non hai decimal 1685 01:08:44,149 --> 01:08:45,460 punto ou algo así. 1686 01:08:45,460 --> 01:08:48,270 Entón, realmente, eu teño un int dividido por un int. 1687 01:08:48,270 --> 01:08:52,160 >> Entón, a cousa interesante sobre matemáticas e un ordenador que 1688 01:08:52,160 --> 01:08:54,840 se está facendo división con números enteiros - 1689 01:08:54,840 --> 01:08:57,310 1 dividido por 10, é de 0,1 si. 1690 01:08:57,310 --> 01:09:01,420 Con todo, cando está dividindo un número enteiro por un número enteiro, o 1691 01:09:01,420 --> 01:09:06,859 resposta ten que ser tamén un enteiro só porque, por agora. 1692 01:09:06,859 --> 01:09:08,630 E cal é a implicación entón? 1693 01:09:08,630 --> 01:09:13,640 Ben, a resposta é 1 dividido por 10 é igual a 0,1, o que 1694 01:09:13,640 --> 01:09:15,680 o ordenador vai facer é que eu non teño ningunha idea de como 1695 01:09:15,680 --> 01:09:19,270 representan 0,1, porque iso é un valor de punto flotante e non un 1696 01:09:19,270 --> 01:09:21,910 enteiro, que vai cortar todo despois do 1697 01:09:21,910 --> 01:09:27,470 punto decimal e só mostrar a 0 no inicio. 1698 01:09:27,470 --> 01:09:29,540 E o feito de que está a ser impreso como un punto flotante 1699 01:09:29,540 --> 01:09:31,200 valor, é só unha cousa estética. 1700 01:09:31,200 --> 01:09:34,279 Isto é porque eu estou forzando o ordenador para imprimir esta como unha 1701 01:09:34,279 --> 01:09:35,229 flotando valor de punto. 1702 01:09:35,229 --> 01:09:37,720 E de feito eu teño declarouse como unha boia, pero a matemática é 1703 01:09:37,720 --> 01:09:39,010 pasando por aquí. 1704 01:09:39,010 --> 01:09:41,859 >> Entón deixe-me realmente solucionar isto dun xeito moi sinxelo. 1705 01:09:41,859 --> 01:09:45,250 Por que non eu só fago 10,0 e 1,0, aínda que 1706 01:09:45,250 --> 01:09:47,609 tecnicamente eu podería ir lonxe con só facendo un deses. 1707 01:09:47,609 --> 01:09:50,630 Agora déixeme ir adiante e facer math3. 1708 01:09:50,630 --> 01:09:56,350 Deixe-me ir adiante e agora corren math3, Intro. 1709 01:09:56,350 --> 01:09:57,500 E agora, oh boy. 1710 01:09:57,500 --> 01:10:00,050 Agora temos un novo problema completamente. 1711 01:10:00,050 --> 01:10:05,600 Entón é mellor, non, estamos máis preto de 0,1, pero o que é claramente 1712 01:10:05,600 --> 01:10:06,240 mal aquí? 1713 01:10:06,240 --> 01:10:08,260 A non ser que estamos mentindo para ti por anos, non? 1714 01:10:08,260 --> 01:10:13,660 1 dividido por 10 é, en realidade, non é ben 0,1, entón o que é 1715 01:10:13,660 --> 01:10:14,700 realmente está a suceder aquí? 1716 01:10:14,700 --> 01:10:16,420 Ben, pode tipo de razón por esta lóxica. 1717 01:10:16,420 --> 01:10:19,200 Se un ordenador ten só unha cantidade finita de RAM para comezar 1718 01:10:19,200 --> 01:10:23,530 con, e en realidade un ordenador só usa 32 bits para unha 1719 01:10:23,530 --> 01:10:26,200 flotando valor do punto, é lóxico que, cunha 1720 01:10:26,200 --> 01:10:29,870 número finito de bits, 32, neste caso, si, pode 1721 01:10:29,870 --> 01:10:31,050 representan unha morea de cousas. 1722 01:10:31,050 --> 01:10:33,220 Realmente é de catro mil millóns de valores distintos pode ser 1723 01:10:33,220 --> 01:10:38,040 representado con 32 bits, 2 a 32, pero aínda é finito. 1724 01:10:38,040 --> 01:10:40,730 Entón, o problema é que hai un número infinito de real 1725 01:10:40,730 --> 01:10:41,370 números, certo. 1726 01:10:41,370 --> 01:10:43,560 Se me der un número real, sempre te podo atopar un 1727 01:10:43,560 --> 01:10:46,080 un pouco maior, un pouco menos, por só mellorar a 1728 01:10:46,080 --> 01:10:47,970 números que están despois do punto decimal. 1729 01:10:47,970 --> 01:10:50,870 Entón, se non ten un número infinito de bits, que 1730 01:10:50,870 --> 01:10:52,940 posiblemente non pode representar un infinito 1731 01:10:52,940 --> 01:10:54,800 número de números reais. 1732 01:10:54,800 --> 01:10:58,090 >> Entón hai esa imprecisión inherente ordenadores, e 1733 01:10:58,090 --> 01:11:00,930 iso está tropezou en todo o tempo, mesmo no máis simple dos 1734 01:11:00,930 --> 01:11:02,260 programas coma este. 1735 01:11:02,260 --> 01:11:05,640 Pero tamén nalgúns problemas do mundo moi real tamén. 1736 01:11:05,640 --> 01:11:07,790 En realidade, imos ter un momento para só dar un ollo 1737 01:11:07,790 --> 01:11:09,530 algo que realmente aconteceu na realidade. 1738 01:11:09,530 --> 01:11:11,620 Nós imos asistir só o primeiro par de minutos, e logo 1739 01:11:11,620 --> 01:11:13,270 imos publicar a liña de conexión. 1740 01:11:13,270 --> 01:11:16,700 Pero esta é a proba só o que pode dar mal, moi 1741 01:11:16,700 --> 01:11:19,680 honestamente, dunha forma moi tráxica cando estas cousas non son 1742 01:11:19,680 --> 01:11:23,870 apreciados ou só a nós, seres humanos cometen erros cando se trata de 1743 01:11:23,870 --> 01:11:26,792 eses tipos de detalles de implementación dos computadores modernos. 1744 01:11:26,792 --> 01:11:27,284 >> [XOGO VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -E agora volvemos a desastres de enxeñaría en marabillas modernas. 1746 01:11:30,730 --> 01:11:32,200 Ordenadores. 1747 01:11:32,200 --> 01:11:34,920 Todos temos que chegou a aceptar os problemas, moitas veces frustrantes 1748 01:11:34,920 --> 01:11:36,750 que ir con eles. 1749 01:11:36,750 --> 01:11:40,690 Erros, virus e erros de software son pequenos prezos da 1750 01:11:40,690 --> 01:11:42,550 pagar para o barrio. 1751 01:11:42,550 --> 01:11:45,170 Pero en militar de alta velocidade e de alta tecnoloxía e espazo 1752 01:11:45,170 --> 01:11:48,450 aplicacións do programa, o problema pode ser menor 1753 01:11:48,450 --> 01:11:52,220 ampliada en desastre. 1754 01:11:52,220 --> 01:11:56,780 O 4 de xuño de 1996, os científicos se preparaba para lanzar un non tripulado 1755 01:11:56,780 --> 01:11:58,430 Foguete Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 El estaba transportando satélites científicos destinados a 1757 01:12:00,750 --> 01:12:03,580 establecer con precisión como o campo magnético da Terra 1758 01:12:03,580 --> 01:12:06,900 interactúa cos ventos solares. 1759 01:12:06,900 --> 01:12:10,330 O foguete foi construído para a Axencia Espacial Europea e 1760 01:12:10,330 --> 01:12:13,450 despegou da súa instalación na costa da Güiana Francesa. 1761 01:12:13,450 --> 01:12:16,970 >> -A cerca de cerca de 37 segundos de voo, eles primeiro 1762 01:12:16,970 --> 01:12:19,700 notado algo estaba mal, que os picos foron 1763 01:12:19,700 --> 01:12:21,590 xiratoria de forma que realmente non debería. 1764 01:12:21,590 --> 01:12:25,020 Preto de 40 segundos de voo, claramente o vehículo 1765 01:12:25,020 --> 01:12:27,340 estaba con problemas, e é aí onde eles tomaron a decisión de 1766 01:12:27,340 --> 01:12:28,136 destruílo. 1767 01:12:28,136 --> 01:12:31,450 Un oficial de seguridade da serie con coraxe tremendas presionou o 1768 01:12:31,450 --> 01:12:34,160 botón, explotou o foguete antes que podería converterse nun 1769 01:12:34,160 --> 01:12:37,470 perigo para a seguridade pública. 1770 01:12:37,470 --> 01:12:40,750 >> -Esa foi a viaxe inaugural do Ariane 5, ea súa 1771 01:12:40,750 --> 01:12:43,990 destrución ocorreu por mor dun fallo incorporado no 1772 01:12:43,990 --> 01:12:45,480 software foguete. 1773 01:12:45,480 --> 01:12:47,660 >> -O problema do Ariane foi que había un número que 1774 01:12:47,660 --> 01:12:51,245 require 64 bits para expresar e que quería convertelo lo 1775 01:12:51,245 --> 01:12:53,010 a un número de 16 bits. 1776 01:12:53,010 --> 01:12:54,900 Eles asumiron que o número nunca foi 1777 01:12:54,900 --> 01:12:56,280 vai ser moi grande, 1778 01:12:56,280 --> 01:12:59,920 que a maioría dos díxitos do número de 64 bits foron 0s. 1779 01:12:59,920 --> 01:13:01,860 Eles estaban equivocados. 1780 01:13:01,860 --> 01:13:04,550 >> -A incapacidade de un programa de software para aceptar o 1781 01:13:04,550 --> 01:13:07,730 tipo de número xerado polo outro estaba na raíz 1782 01:13:07,730 --> 01:13:08,930 o fallo. 1783 01:13:08,930 --> 01:13:11,490 Desenvolvemento de software tornouse unha parte moi cara 1784 01:13:11,490 --> 01:13:13,280 nova tecnoloxía. 1785 01:13:13,280 --> 01:13:16,530 O foguete Ariane 4 fora moi exitosa. 1786 01:13:16,530 --> 01:13:19,100 Así, gran parte do software creado para el tamén foi usado 1787 01:13:19,100 --> 01:13:21,050 no Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -O problema básico é que o Ariane 5 foi máis rápido, 1789 01:13:25,530 --> 01:13:27,280 acelerado máis rápido. 1790 01:13:27,280 --> 01:13:30,590 E o software non tiña que representou. 1791 01:13:30,590 --> 01:13:33,060 >> -A destrución do foguete foi un enorme financeiro 1792 01:13:33,060 --> 01:13:37,670 desastre, todo debido a un erro de software minutos. 1793 01:13:37,670 --> 01:13:40,750 Pero esta non foi a primeira vez problemas de conversión de datos tivo 1794 01:13:40,750 --> 01:13:43,680 atormentado tecnoloxía de foguetes modernos. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID Malan: Nós imos deixar por iso mesmo. 1796 01:13:44,390 --> 01:13:46,870 Pero iso é proba de quão aplicable mesmo algúns dos 1797 01:13:46,870 --> 01:13:48,750 máis baixos estes detalles de nivel que comezamos a 1798 01:13:48,750 --> 01:13:50,040 explotar hoxe son. 1799 01:13:50,040 --> 01:13:52,510 Polo tanto, aínda que comeza un pouco distraído, quizais, por algúns dos 1800 01:13:52,510 --> 01:13:55,240 a sintaxe e arcaneness aquí, entendemos que ao longo do 1801 01:13:55,240 --> 01:13:57,690 termo que vai ser focado só como iso é aplicable 1802 01:13:57,690 --> 01:13:59,530 mundos moito máis alá do CS. 1803 01:13:59,530 --> 01:14:00,780 Imos velo o mércores.