[Powered by Google Translate] DAVID Malan: Este é CS50, e isto é o inicio da Semana 1. O que nós pensamos en facer hoxe é dar un ollo cara atrás en algo que moitos de vostedes probablemente xa pasou por algún tempo e agora pode parecer un pouco familiar. Esta cousa aquí, que, por suposto, é na - Audiencia: Ciencia. DAVID Malan: Ciencia centro. Polo tanto, esta é, en realidade, un dos primeiros ordenadores de volta da década de 1940. Foi un dos primeiros ordenadores electromecánicos que foi capaz de particularmente longa, auto-sostidas cálculos, e que realmente vemos en o centro de ciencia é só un pequeno anaco desa cousa. O que nós pensamos en facer, entón, é dar un ollo cara atrás nun vídeo que foi feita hai algún tempo, a introdución deste cousa para o mundo. E vai ver a partir da música e da voz que de feito os Foron tempos moi felices. [REPRODUCIÓN] -Un triunfo de habilidade matemática e mecánica é este nova calculadora gran automática na Universidade de Harvard. Intricados problemas de matemáticas, colocado a través da máquina, en forma codificada na cinta, sexan resoltos de precisión pequena fracción do tempo necesario para o humano cálculo. Deseñado para axilizar toda forma de matemáticas e científica investigación, o cerebro mecánico xigante vai traballar para os Estados Unidos Mariña dos Estados ata o final da guerra. DAVID Malan: Entón, o que quizais non sabe é que estaba en este mesmo dispositivo que un termo que todos agora tomar moi bonito por certo foi cuñado, que un erro. Así, un dos enxeñeiros que traballan neste ordenador literalmente atopar unha traza pequena na máquina que resultou nalgúns cálculos incorrectos. E como a historia vai que traza foi gravado para este rexistro xornal aquí, de volta de 09 de setembro de 1940 e algo, e así naceu para o mundo o "erro" prazo. Así, a partir de agora, consideramos erros para calquera tipo de erros en programas, tanto feitas polo home, ou, neste caso, os insectos. Entón, algúns anuncios, como proceder. Entón CS50 ten unha tradición de ofrecer comidas de tipos de a maioría dos venres durante o semestre, onde levamos de 30 a 40 alumnos ó lume e xeo en Praza de casual conversa fiada, conversa sobre ciencias da computación, falar sobre o futuro. Invitados alumnos e amigos da industria para falar estudantes. Realmente para un fin de facer o que é unha clase moi grande todo o máis íntimo, polo menos de cando en vez para subconxuntos de alumnos. Entón, se quere unirse a nós este venres, 1:15 PM, ir CS50.net/lunch RSVP. E nós imos facelo recorrentemente, non tan de preocuparse se non está entre os primeiros 30 ou así esta semana. Así notas escriba. Unha palabra sobre os recursos que pode agora comezar a estar dispoñible para os alumnos da clase. De xeito que os seus xefes non precisan estar en baixo durante as clases rabiscar baixo todo o que digo e así por diante, o que facemos en vez diso é proporcionar a partir do corpo docente dunha conxunto canónico de notas. Polo tanto, temos un dos nosos compañeiros de ensino, Andrew Sellergren, que se senta cada semana, revisa os vídeos, e despois escribe o que cremos que é unha forma xusta conxunto oficial de notas. E desexa Andrew, tamén, de poñer notas de rodapé en snarky a parte inferior. Entón, esperamos que aproveite estes como un libro de referencia para divertido, e tamén, vir preguntar o tempo, como unha oportunidade para revisar o que pasou en conferencias individuais. Polo tanto, aqueles están ligados na páxina de charla. 0 conxunto de problemas, mentres, está fóra. E, en termos de recursos dispoñibles para ti - paso a paso. Milo levou o primeiro venres. Foi filmado, poñer en liña ata sábado. E así entender, se non está seguro por onde comezar, para este ou futuro P-sets Apague sempre primeiro o paso a paso ou o seu vídeo. Paso está en marcha; no cs50.net/section é onde deberán presentar as súas preferencias, se non ten xa, por hoxe. Porque seccións comezará o vindeiro domingo, luns, e martes. Facemos seccións eses tres días, todas as semanas do semestre para a maior parte. E nós tamén introducir de novo, pistas diferentes. Entón, será preguntado sobre esta forma de paso, se non vin iso xa se está entre os menos cómodo, máis cómodo, ou algures no medio. E se é unha especie de enriba do muro, xeralmente en algún lugar entre o que a maioría dos alumnos acaban verificando. Horario de oficina comezar esta noite. Entón Scratch é clave mínimo, a pesar de que é moi natural a executar para varios erros, ou ser incerto sobre como implementar algo. Entón entender que vai comezar o horario de expediente esta semana. Eles van estar en Annenberg luns, martes, mércores, Xoves, 20:00 - 23:00 durante as vacacións de cerebro. Classmen superiores pode entrar, e se ten problemas para obter na porta, porque vai ser swiping, pode falar o seu camiño e explicar que está con CS50. Tipicamente 20 a 30 nós no equipo vai estar alí para axudar Vostede é un en un. Tras a chegada a idea é esta: vai traer o seu ordenador portátil, vai ter o seu cargador, nós imos ter os cables de alimentación extra, particularmente ao longo da parede sur do Annenberg onde hai moitas tomas eléctricas. E o principal punto de entrada para a oficina hora Q & A é para ir cs50.net/discuss e escribir súa pregunta alí. E rótula-lo con pset 0 ou 1 pset, calquera que sexa a semana pode ocorrer de ser. E entón o que imos facer é ter unha táboa de bolseiros de ensino e asistentes do curso, xeralmente 8 ou 10 ou ben de nós, pasando, mantendo un ollar atento sobre a tarxeta, e arrincar coas preguntas realmente tan axiña como sexa posible, referíndose lo a artigos relacionados, se aínda non atopou os vós, referencias en liña, segundo o caso. E entón, se hai problemas, como hai inevitablemente será, ou só fai máis sentido para sentir un a un, traballar con problemas con alguén. Ou acaba de entrar en horario de oficina realmente necesitando esa mentalidade. Non quere ir a través do formulario electrónico, realmente quere atopar con alguén. Comunicar que a nós, eo que vai ocorrer é cando o seu pregunta foi vista por un membro do equipo, e nós determinar, si, este debe ser enviado a un dos 20 ou 30 membros do equipo aquí localmente, vai ver na esquina superior esquerda desta pouco Introduza o botón Fila comeza a palpebrar no cs50.net / discutir. E iso está lle dicindo que agora foron convidados, así para falar, para entrar na cola. E facendo clic neste botón, o seu nome aparecerá en un iPad que o saúdo CS50, un dos cabezas do curso, será estar seguro preto da entrada de Annenberg, que, entón, ver como descritos aquí, os alumnos que teñan dúbidas sobre á esquerda, os membros do equipo que están presentes na dereita. E con un click de esquerda e dereita, o seu navegador irá comezar a palpebrar así que, por exemplo, o profesor McGonnagal Está preparado para velo nunha táboa específica en Annenberg. Entón nós fixemos parte deste último ano. Nós reiniciar o horario de expediente e reimplementadas moito do software. Entón entender que esta será quentar esta semana. Pero tamén entender tamén, nos últimos anos, como xa debería ter oído de amigos, o horario de expediente tiña de feito 50 a 150 alumnos dunha soa vez. E é simplemente imposible para nós para tratar con isto En efecto, un a un, ao longo da noite. E entón o que realmente estamos indo a tentar facer este ano é capitalizar o feito de que unha morea de preguntas son frecuentes e moitas veces pode ser mellor respostar de forma asíncrono. Entón pode clasificar de pensar a través da resposta do persoal, e podemos pensar a través do seu código, sen Calefacción presión de necesariamente loitando polo lado a lado. Así, estímase que preto dun terzo ou a metade das cuestións será enviado en persoa, e imos tentar arrincar fóra como moitos como un media ou máis electronicamente, durante o expediente. E nós imos continuar a utilizar Discutir ao longo da semana, así. E, finalmente, entender que este curso pode ser feito de aprobación / reprovação. Entón se está enriba do muro ou só pensar que é realmente non estou seguro se este é o mundo para ti, ou iso é realmente moi raro para ti, entender que esta é unha forma marabillosa de gañar un pouco de confianza que para entrar no clase, como eu fixen, francamente, anos atrás. E entón temos cinco semanas para clasificar de descubrir por a si mesmo se quere quedar de aprobación / reprovação, pasar a unha carta grao, ou semellante. E, normalmente, o que pasa / fallo non, eu creo que, para os estudantes e que, se pór en que 10 horas, 20 horas, o que sexa pode ser en algúns problemas, e está batendo coa cabeza contra a parede, e realmente non pode perseguir algo, e ten tantas outras cousas que cómpre facer, honestamente, o que creo que pasa / falla é, leva a bordo fóra de situacións como esta. Onde tomou a cousa de 90% do camiño. Vostede sabe, non é moi perfecto. Pero ten unha morea de fóra, no entanto. Por iso, considero pasa / fallo como dando-lle que modelo mental, se cadra. Durante toda a semana, certo modo pasado, mergullou Scratch, e nós falou sobre a programación nun nivel moi elevado de vídeo. E hoxe nós facemos a transición cara a unha linguaxe chamado C, unha linguaxe de baixo nivel de programación enriba que moitas linguas modernas son agora construídos, incluíndo algúns dos que estamos usando para finais do prazo. E sintaticamente, o que parece é todo moi semellante. Entón, imos comezar a facer esa transición aquí. Polo tanto, este foi un programa da semana pasada que era o máis sinxelo de Ola programas mundiais. El simplemente impreso para a pantalla do mundo Ola, cun globo de fala pouco saíndo do gato. Ben, se nós comezamos agora a traducir isto para outro linguaxe, entender que as ideas de hoxe e mércores son idénticas, pero a sintaxe comeza a cambiar. Así, mentres a semana pasada tivemos, cando premendo bandeira verde, digamos Ola mundo. Hoxe imos ter int, void, principal, printf, retorno, con algunha outra sintaxe de alí tamén. Chaves e parénteses e comiñas, e outros enfeites. Pero entenda que o núcleo da idea aquí é a impresión, e, finalmente, o feito principal é que agora vai ser sinónimo do inicio dun programa. Inicio vai ser o lugar onde a bandeira verde xuta as cousas fóra. Entón agora imos desmembrar algúns dos bloques de construción aquí Antes de mergullo en algúns exemplos concretos. Polo tanto, chamado esta semana unha última declaración, en que é só unha instrución. Facelo - neste caso, dicir Hola mundo. Ben en C, se miramos só unha liña que, é así que somos vai comezar a expresar esa peza de puzzle particular: printf ("Ola mundo");. E agora imos provocar estes separados máis e máis ao longo do tempo, pero entende que non hai un patrón aquí. Entón un, temos esa cousa chamada printf, que é esencialmente análoga á palabra Say. Isto é o que vai facer. Printf, e f aquí significa "plano". Por iso só significa que pode inserir varios detalles estéticos. Entón, pecha comiñas é o comezo do que imos para comezar a chamar a unha cadea. Unha palabra, unha frase, unha frase. Unha secuencia nunha linguaxe de programación é unha secuencia de cero ou máis caracteres. Así, h-e-l-l-o, coma, e así por diante é, pecha comiñas, unha cadea. E agora barra invertida n, un pouco sintaticamente raro, pero nós xa definido que a semana pasada no sentido de que? É só unha nova liña. É só un xeito de transmitir ao ordenador que quere que o equivalente de bater a entrar alí, pero non quere realmente prema Intro e, polo tanto, desorde todo o formato do seu programa actual. Agora, os parénteses rodean esa secuencia, aberto e paren paren preto, e dentro do que é a nosa secuencia. Porque iso é porque en C, programación e outros linguas, cousas como printf ter argumentos, ou tomar parámetros. Entón comeza a pensar agora este bloque Say vermello como un función, como un método, como un procedemento. Pode chamar o que ti queiras, por agora, pero é unha especie de miniatura dun programa que só fai unha cousa, nunha única liña, nin menos. Entón printf tamén é o que nós imos comezar a chamar a función, e as funcións de facer algo - neste caso imprime unha cadea formatada para a pantalla - pero funciona ter argumentos ou parámetros. E por argumentos ou parámetros, grazas, queremos dicir que o seu comportamento pode ser influenciado polo que pasa dentro dos parénteses. Polo tanto, neste caso, as necesidades printf dicir que imprimir, e nós só pasar, entre comiñas aquí, a secuencia que realmente quere imprimir. E o punto e coma ao final desta liña é só un incómodo histórico en que a finais da maioría das liñas de código, poñer un punto e coma para facer super claro para o ordenador que esta liña de código remata aquí. Agora iso é bo porque, como veremos como os programas están máis complexo, a coma vai facer super-humanos claras para nós, e tamén o ordenador, onde as liñas de código de inicio e de fin. Entenda que algunhas linguas non teñen ningún deses mesmos detalles. E, de feito, en JavaScript, non sempre de algo como o punto e coma. Pero máis sobre iso por vir. Entón loops. Tivemos algo así, moi intuitivamente, obvio, facer algo novo e de novo e de novo. Como poñer medias, ou dicindo Hola, neste caso. Ben, a partir de hoxe en C, poderiamos expresar esa arañazos bloquear como while (true) printf ("Ola Mundo"). Entón, observe que estamos empezando a construír sobre o puzzle, literalmente peza de antes. Temos o mesmo bloque vermello, pero é dentro deste bloque para sempre entre corchetes, ea mellor maneira de traducir iso C é a seguinte. Non hai ningunha contrasinal para sempre. Vostede non pode simplemente escribir f-o-r-e-v-e-r en C. Así, o análogo é máis próxima ao mesmo tempo. Agora, mentres (certo) semella un pouco estúpido, porque fai o valor de cambio sempre certo? Presuntamente non. É como dicir que mentres un, mentres, ao mesmo tempo certo. É todo a mesma cousa, certo é sempre o caso. Polo tanto, este lazo é, en realidade, inducindo o tipo de loop? Só un ciclo infinito, seguro. Un lazo para sempre ou como nós o chamamos a semana pasada, só un ciclo infinito. Entón, ás veces iso é malo. Ás veces iso é un erro, ás veces é por iso que ten a esfera de praia fiación ou ampulheta ou semellante. Pero, neste caso, de forma deliberada, por calquera razón, quería imprimir a mesma cousa de novo e de novo e de novo. Ou, no caso de que como un reloxo, que quere facer algo novo e de novo e de novo. Así loops infinitos pode ter sentido. E isto é como en C podemos traducir para sempre ao código. Entón, agora que é un pouco máis específico. Tiñamos repetir 10 veces a seguinte declaración. Así, mentres (certo) non funciona moi ben alí, porque é a verdadeira sempre é verdade. Entón, en vez ollar para a versión C, agora a sintaxe queda un pouco máis enigmática. Pero para ser honesto unha vez que comezar a ver iso, todo queda bastante familiar rapidamente. Entón é iso que se chama un loop. Un lazo for vai dicir ao ordenador para facer algo de novo e de novo e de novo durante o tempo que esas cousas son certas. Agora, o que queremos dicir con iso? Así, hai tres partes para un loop for, e imos Volveremos a este nun contexto real de exemplos nun momento. Entón non se preocupe se non moi afondar dunha vez. Pero int i = 0 é, longa historia curta, dicindo que me dea un variable que é do tipo enteiro, entón me dea un número chamado I, e arrincar a 0. Isto é dar-me como un x alxébrica variable e inicializar a 0. Pero, neste caso, nós o chamamos i. Entón, no medio, di i é menor que 10. Que está dicindo ao ordenador as seguintes cousas así por moito tempo como i é menor que 10. E, obviamente, comeza a menos de 10 porque que comeza en 0. Entón, finalmente, pode, talvez, creo que o que eu + + medios. É un pouco de sintaxe que significa só incrementar i. Entón engada 1 para i, de novo e de novo e de novo. E así, como veremos este ciclo, esta sintaxe, ao contrario, aplica precisamente o mesmo que, francamente, en scratch era tan moito máis fácil de expresar. Repita 10, e está feito. C, e na maioría das linguaxes de programación, temos que ser un pouco máis instrutivo para o ordenador e, en realidade, especificar algo así. Pero imos voltar a esta e outra sintaxe. E sobre variables? En Scratch tivemos algo así como estes bloques de laranxa, onde eu podería declarar unha variable. Imos chamalo arbitrariamente balcón. Imos comezar a 0, e despois imos sempre facer algo. Neste caso Scratch eu estou dicindo que o balcón, de xeito que o gato vai ter unha burbulla pequeno discurso que está falando o número que é nesta variable. E entón temos contra o cambio por 1. Entón, todo isto é acondicionada dentro dun bloqueo Forever. Entón, nós xa agora os bloques de construción en C con que para traducir iso. Unha forma de facelo é iso. Déame un enteiro, chamalo de balcón. Arrincar-lo a 0 na primeira liña alí. While (true), entón eu vou roubar esa idea a partir dun momento atrás, vai adiante e faga o seguinte. Imprimir o balcón, e entón incrementar o contador, de novo, e de novo, e de novo. Ou aínda, + + significa só engadir 1 para algo. Pero hai unha nova peza de sintaxe aquí. O que está pulando como non entre os nosos exemplos anteriores? Si, este% d. Así, pode talvez inferir que isto está facendo, francamente, con base en que o bloque de borrador é facendo. Pero, de novo en C, nós só temos que ser un pouco máis específico cando se trata de nos expresar. Entón printf ("% d \ n"). Moito máis do que podemos tirar tan familiar. As citas só significa que é unha corda, barra invertida n é só unha liña nova. Entón a única cousa nova aquí% d. E todo o que é un espazo reservado. D% vai para denotar un número decimal. E ordenador% d medio, coloque un número decimal aquí. Ben, o número que quere poñer alí? Ben, como pode talvez inferir, tras a vírgula dicimos contador, que é o nome dunha variable que declarou ou creou algunhas liñas antes. Polo tanto, esta é só unha forma de C de conectar unha variable nun corda dinámica. Porque, por outra banda, se eu tivese feito algo parecido en vez iso, printf ("contador"), o que sería esa programa, en vez facer, presuntamente? El vai, literalmente, imprimir "contador". O que non é o efecto que quero. Eu teño que substituír nalgunhas valor numérico. Entón, imos ver que as funcións entón, como printf, non pode tomar só argumentos individuais, como "Ola mundo". Eles poden tomar coma entre comiñas, e despois de algunhas variables que vai estar conectado, como veremos a secuencia anterior A través destes espazos reservados sinal%. Ben o que dicir de expresións booleanas? Expresións booleanas eran eses valores, verdadeiro ou falso. Si ou non. 1 ou 0. Activado ou desactivado. Entón, en scratch se parecen con iso, e entender que o bloque inferior aquí é, en realidade, a conxunción de dous bloques máis pequenos. Entón eu medio que arrastrada e caeu tres pezas do puzzle xuntos para facer esta peza de puzzle máis alá para que eu pode transmitir a idea de que quero x ser menor que Y e y para ser inferior a z. E para que eu poida traducir esas dúas liñas separadas do seguinte xeito. A parte superior pode ser moi trivialmente traducida para C, con só x