[Reprodución de música] Este é CS50-- Harvard introdución da universidade ao intelectual empresas de informática ea arte da programación. E o meu nome é David Malan, e Eu só estaba a pensar nesta mañá, foi sorprendentemente 20 anos hoxe desde a última vez que sentou no que vostedes fan agora. Foi 1996. Eu estaba no segundo ano, e eu estaba tomando CS50 por primeira vez. E eu aínda non chegara ata o nervio para levalo a min mesmo primeiro ano, en parte por mor do tempo. ciencia da computación para min era unha especie de gusto, meh. Eu estaba un pouco de un geek que crece -Se, pero eu realmente non ter calquera intelectual interese en que parecía para ser só unha morea de persoas programando o tempo. E eu estaba con medo de ser honesto. O curso e ciencia da computación máis xeralmente tiñan e, en certa medida, aínda ten esa reputación dun campo para coidado, mesmo porque tantos de nós non está familiarizado con el e non está seguro diso. E realmente non foi ata que eu compras esta clase que segundo ano fall-- e, aínda así, eu só inscritos porque o professor-- un dos meus primeiros mentores, Brian Kernighan agora Princeton-- permitiume tomar o pase clase falla. E, de feito, é por iso hoxe permitir e alentar os alumnos a tomar esta clase sentouse / unsat. E só entón, por final do semestre deime conta de como, uau, iso non era un campo tan descoñecido. De feito, este foi un moi estimulante campo, e máis excitante, especialmente despois como eu fixo cursos de Artes Dramáticas 101 e latino-A e, finalmente, arqueoloxía escola do graduado, realmente comezar a ver a interseccións deste campo, ordenador ciencia, coas ciencias humanas, ciencias naturais, artes, medicina, e similares. E iso é o que é tan interesante sobre ciencia da computación en última instancia, como esperamos que vai see-- é a súa aplicabilidade a eses outros campos, e como pode tomar un pouco do hoxe e do semestre de ideas e habilidades prácticas de volta para o seu propio dominio, e realmente explotar esta intersección das artes liberais e ciencias. Así, o 73% de ti, se o último ano é calquera indicación, nunca tomou un curso de CS antes. Entón, se, como eu, está sentindo un pouco medo, ou francamente non está realmente seguro porque está mesmo aquí. Quizais só seguiu algúns amigos para Sanders agora mesmo. Isto é totalmente ben. O obxectivo aquí é conectar vostede e para tranquilizalo lo que se ollar para á esquerda e á dereita, vai ver compañeiros con tan pouco ou moita experiencia que mesmo poida ter. E, de feito, imos compartir algunhas estatísticas máis tarde hoxe en canto ao que a demografía de a clase normalmente se parecen. E como engadido reassurance-- e iso nós quero dicir sempre que asumín o curso algúns anos en ago-- Syllabus do curso é isto-- que o que en definitiva, asuntos neste curso non é tanto onde remata -se en relación aos seus compañeiros, pero onde a semana 11, a fin de a semestre, acaban en relación ao mesmo a semana 0, que é onde estamos hoxe aquí. E iso é o que eu entendín todos estes anos. E eu coñezo unha morea de clases de dicir isto, pero é especialmente certo en ciencia da computación. Ao final do día, este campo non é familiar como foi para min e pode ser para ti, é realmente sobre a resolución de problemas. E como tal, non teñen este aplicabilidade para outros campos. E, de feito, se tentásemos para destilar o que iso significa, esta é a resolución de problemas en esencia, atrévome a dicir. Hai input-- así que sexa é que está intentando resolver. Non hai saída, que é esperanza a solución para este problema. E entón, como sería dicir en ciencia da computación, hai esa caixa negra no media que non necesariamente ten que se preocupan o xeito no que funciona. Vostede mesmo, finalmente, pode aplicar o que está dentro desa caixa. Pero para fins de hoxe e máis xeralmente na vida, todo o que importa é que estes problemas son resoltos. E o que esta disciplina é en definitiva, sobre está explotando a intersección de estas entradas e saídas, e os chamados algoritmos, como veremos en breve, que aplican o que é debaixo alí, o capó. Pero estas entradas e estes outputs-- o que iso realmente significa? Ben, ao final do día, cómpre dalgún xeito de representar información. Isto é especialmente certo en un ordenador, que tan extravagante e complexa, xa que pode parecer, é un dispositivo moi burro. Leva electricity-- a partir un cable ou unha batería como input-- e logo, que produce algún respostas pre-programados na pantalla. Pero como é que imos comezar a partir de do principio ao final alí? Ben, o que é un problema a ser resolto? Ben, quizais nós pode, en do inicio de calquera parte, tentar levar atención nunha sala como esta. Entón eu podería facer como un, dous, tres. Ou que, se eu fixen iso a sorte de seguir de myself-- manter o control de coisas- Podería rapidamente quedar sen dedos. Entón, eu só podería facer hash dun marks-- persoa, dous, tres, catro, cinco, seis, sete, oito. E todos temos probablemente feito isto, sexa nas súas mans ou sobre un anaco de papel. E iso é realmente só algo chamado notation-- unário onde se só ten unha letra no seu alfabeto, un ou haxix marca neste caso, para cada entrada que quere contar, ten que poñer para abaixo unha delas letters-- destas marcas. Todo ben. Isto é todo moi ben e bo e non tan complicado. Pero os ordenadores non son todos que moito máis complicada. En realidade, a maioría de vostedes probablemente sei aínda se non teño realmente considerou que iso significa, que ordenadores só entenden ceros e ones-- o chamado sistema binario. Nós, seres humanos, por contraste, son tan máis sofisticado na medida tal como a entendemos ceros mediante noves. Pero aínda se binario é, en primeiro lugar vista, non tan familiarizado, verifícase que é como os sistemas e as ideas que xa sabemos. Así, por exemplo, considerar isto. Esta é só unha secuencia de símbolos. E todos vós, cando mirando para el, probablemente, creo 123-- nada realmente interesante alí. Pero por que é ese número, 123? Estes son só glyphs en o screen-- só estándares que alguén podería deseñado ou ingresaran. Pero se vostede é como eu, vostede probablemente se lembra de escola que hai unha especie de columnas ou lugares aquí. Non hai lugar eo do un lugar ten e lugar a centos de. E a razón que este é 123 e non só un estándar de tres símbolos é porque, por suposto, se teñen unha na casa dos centos, fai as contas de 100 veces un, e logo dous no lugar dos dez. Entón, iso é 10 veces 2, e logo, de tres en o lugar do un e que é 1 veces 3. E cando engade todos os anteriores, de Por suposto, ten 100 máis 20 máis 3. Entón comezamos con só un nivel de symbols-- un alphabet-- pero, a continuación, mapeamos significado para que por medio destas columnas. Ben, parece que ordenadores non son realmente tan diferente de ti e eu. Pero en vez de usar potencias de 10, para speak-- 1, 10, 100, 1000, 10.000 lugar e así forth-- realmente só tes que usar poderes de 2-- así unha, dúas, catro, e logo se colocarmos máis díxitos, 8, 16, 32, 64, 128, e así por diante. E así é dicir como un ordenador representaría o número 0, Así como nos seres humanos. 0, 0, 0-- e probablemente pode adiviñar o patrón de ceros e uns, Un ordenador só pode falar 0 ou 1-- o patrón vai representar o número que seres humanos saben 1? Yeah-- 0, 0, 1. Todo ben. Así, 0, 0, 1 é como nós representamos 1, de modo que pode estar inclinado logo para representar o número 2, se ten lugar a catro do lugar e os dous de como a un lugar, pode dicir, ben, se tivésemos un 1 no lugar do un, e agora queremos cóntanse a 2, pode facelo e deixar que este é un cero. Pero está claro que iso non é así o sistema decimal funciona tanto. Se pór un díxito ambas as columnas, ten que facer a aritmética. Entón, o número fixo I accidentalmente só representan? Entón é 3, porque 2 veces 1 máis 1 1 veces, por suposto, ofrécenos tres. Polo tanto, este sería dous. O bit tipo de aletas, por así dicir, como 0 convértese nun, moi parecido un 9 papeis máis e se fai un 0 cando levar a 1. Este sería, entón, tres claro. Four-- algo interesante acontece, onde os rolar e transportar a 1, por así dicir. Entón, iso, por suposto, é de 4. Pero se avance rápido agora, Cal é o maior número vai ser un equipo que pode representar? Entón é só sete neste caso, non? Porque ten unha en catro, un en dous, un a un, nun. Entón, iso é 4 máis 2 máis 1. Así que lle dá sete. E, de feito, sería parecer a primeira vista que os ordenadores poden contar non superior a esta. Pero iso, claro, non é verdade. O que nós humanos facemos cando quere a conta máis elevada do que como 999? Só ten que levar a un e só engadir un cuarto díxito á esquerda. E así, en realidade poderiamos. Poderiamos ter un oito de lugar e un lugar de un día 16, e lugar a 32 de 64, 128-- e pode só ter en curso ata o infinito. Entón, eses ceros e ones-- o chamado binario system-- son o que un científico da computación sería xeralmente chamamos un pouco, ou díxito binario. Pero agora, como é que imos comezar a partir do concepto ou os gráficos destas cousas a un ordenador real? Parece que estamos a saltar unha etapa aquí. Ben, a única entrada ao final do día, para o meu portátil aquí é este fluxo de electricidade. Mesmo se foi un longo tempo dende que penso sobre ou nunca pensou en como a electricidade funciona, hai electróns que flúen dentro ou a fóra, e ese é o meu tipo de entrada. Entón, se isto é todo o que somos recibindo como entrada aquí, o que podemos facer con esa información? Así, poderiamos pensar nun cero como só unha ausencia de electricidade. Nada é flowinw, nada é en movemento, nada está a suceder. Isto é só o patrón state-- cero. Pero se hai electricidade fluíndo, por que non só arbitrariamente, senón global consistente, chama iso dun. Entón, simplemente por ter ningún poder, temos un cero, si poder, temos unha um-- ningún poder, si poder. E deste xeito, usando algo máis físico ou electrónico comezamos a aplicar esa noción de algo, quere ser un ou cero. De feito, poderiamos só facelo aquí. non aquí, eu teño tres, pero oito lámpadas, cada unha das cales ten a súa propia chave. E entón se eu quería representar o número sete aquí, Podería chamar estes tres lámpadas. E, de feito, dentro meu ordenador é de millóns, millóns de cousas que son só menor que, chamados transistores, switches, que acaba de activar e desactivar. Entón, estas son big-- relativamente interruptores big-- dentro da miña laptop-- moitos, moitos, moitos, moitos máis interruptores. Pero todos eles fan é exactamente isso-- transformar algo, chame algo fóra. E, como tal, un ordenador pode representar, cos millóns ou billóns de transistores, lotes e lotes de ceros e uns. E non hai outro hardware aínda que permite gardar información de longo prazo, de xeito que cando tira o conectar, non perde-lo. Pero iso é unha historia para outro día. Entón o que podemos facer con eses bits? Poderiamos só para sacar a presión fóra de me-- Pode alguén quere vir ata aquí e ofrecer unha demo? Vin iso de primeira man. Como te chamas? Maday: Maday. DAVID Malan: Maday, imos para arriba. Encantado de coñecerte. Maday: Pracer en coñece-lo. DAVID Malan: Ven aquí. Non terán que lip-lo. Todo ben. Entón, aquí temos, notice-- un, dois-- imos editar este out-- un, dous, catro, oito, 16, 32, 64, 128. Isto é deliberado. Hai oito bits aqui-- binario ceros digits-- e uns. E é algo útil unha unidade de measure-- non é tan útil unha unidade de medida sobre si propia. Normalmente quere, polo menos, oito destas cousas, a.k.a. un byte. Polo tanto, temos un byte de bits aquí. Entón, se nós quería desafia-lo con, por exemplo, soletrado, en binario, este valor aqui-- 42. Quere tomar unha facada en que? Maday: [inaudível]. DAVID Malan: Si, só tes que premer o pequenos interruptores brancos diante. E quere deletrear a 42, e para gañar é ese estrés CS50 bola, se conseguir isto. Todo ben. Entón tes 32. Nós imos ter que 42. Entón, iso é un oito, de xeito que é 40. E excelente-- moi ben feito. Grazas. [Aplausos] Todo ben. Polo tanto, temos unha bola antiestrés. Imos facelo unha vez máis, se pudermos. Outro voluntario? balón sen estrés, balón sen estrés. OK. Durante aquí no medio, quere baixar? Todo ben. Sei. Alí imos nós. Así, os números aqui-- imos para abaixo. Como te chamas? Davey: Davey. DAVID Malan: Davey. OK. Imos cara arriba, Davey. Encantado de coñecerte. E o que nós imos ter que spell-- se podería estar alí para só un moment-- é o número 50. Pero, pero, pero, pero, pero, son escola primaria imáns por unha razón. Quedou un pouco máis difícil, non? Aínda hai oito. Todo ben. Entón o que temos alí? Temos 32. Niza. 32 máis 16 dános 48-- tan preto. E marabilloso. Parabéns a Davey ben. [Aplausos] Todo ben. Así, podemos facelo durante todo o día, e non queda todo moito máis interesante e máis reto. Pero iso é realmente o ponto-- É así relativamente simple é, ao final do día, o que é un ordenador fai para almacenar información, para almacenar as entradas e finalmente almacenar ou representar esas saídas. Pero números por si só non son todo o que interesante. Así, os seres humanos, hai uns anos, decidido, vostede sabe o que? Sería bo que ordenadores non eran só calculadoras para a aritmética operacións, pero, en realidade, podería facer cousas como procesamento de texto, ou correo electrónico, ou encarnações máis modernos destes tipos de tecnoloxías. E así o mundo decidiu arbitrariamente, senón universalmente, que se quere almacenar a capital letra A en un ordenador, vostede sabe o que? Nós só todos coinciden para almacenar algún defecto de ceros e ones-- bits-- que en definitiva representa o número decimal 65. Imos todos de acordo con iso. 66 representaría B, 67 representaría C, e non hai acios doutros patróns de ceros e uns, ou os números subxacentes, que representaría outras letras estáticas. Entón, se tipo de mental absorber iso por un momento, Eu deliberadamente poñer-se da a I, onde H a 72 e I é de 73. Un ordenador, a continuación, no contexto un programa de procesamento de texto ou un correo electrónico, revelado por baixo do capuz ter eses patróns de patrón bits-- de bits que representan 72, despois 73, despois 33-- o que podería esta máxica nese programa? Entón, ola, e despois algo. Non necesariamente saben, pero en realidade, 33-- non no gráfico earlier-- era simplemente un signo de admiración. Entón 72 foi H, 73 e I, 33 acontece para ser un punto de exclamación aínda. Pero iso é todo moi ben e bo, e, de feito, hoxe en día, en vez de usar só sete ou oito bits, grazas a algo chamado Unicode en oposición para ASCII de volta ao día, realmente pode representar máis aínda personaxes interesantes que estes orixinal en inglés tendenciosa letras. Pero tamén pode representar ata cousas máis puro como cores. Se vostede xa escoitou a sigla RGB, vermello, verde, azul, que Significa só que un ordenador xeralmente usa tres conxuntos de bits-- algún número de bits que representan un número para a cantidade de vermello que quere, outro conxunto de bits para canto verde que quere, e outro número establecido para a cantidade de azul que quere. Así, un gran número significa lotes de vermello número, pequeno non significa ningún vermello. E así estes son o tipo dos valores medios aquí. Entón me dea un pouco de vermello, me dea un pouco verde, e me dar un pouco de azul. E se mesturar estas tres máscaras de cor xuntos, neste caso, recibe esa sombra escura de amarelo ou marrón. Pero este estándar de oito máis oito máis eight-- así 24 bits-- esquerda a dereita, é como un ordenador representaría esta cor particular. Agora, este é só un punto nunha pantalla. Se ollar moi de preto o seu televisor seu ordenador, verá puntos ou píxeles. E se ten unha reixa enteira de píxeles, horizontal e vertical, ten imaxes. E entón se tomar unha imaxe e, a continuación, lavado amosar-se outra imaxe, outra imaxe, outra imaxe, outra imaxe, moi rápido, naturalmente teñen películas. E así entender onde comezamos. Comezamos con eses ceros e uns. Traballamos de alí para decimal números, como podemos representa-los. Agora temos letras do alfabeto. Pero noutros contextos esperar, podemos usar algúns anacos e representan as cores. Así que ten a capacidade de representar as cores, ten a capacidade de representar fotos e gifs animados e outros tales personaxes na pantalla. E cando ten unha morea de imaxes voando polo ser humano dunha soa vez, parece que imaxes en movemento, e para obter vídeos tamén. Entón, usando estes moi primitivas sinxelas nós ten a forma de representar en definitiva, todas estas formas de comunicación. E nós captada de novo e de novo e de novo, ata que comezar dende o nivel máis baixo a ese nivel. De xeito que nos dá esta vista xeral de abstracción. Pero comezan aquí. Aquí, agora, poderiamos representan nun ordenador nosos entradas con ceros e uns, nosas saídas en ceros e uns, pero o que pasa dentro da caixa? É aí que ordenador ciencia queda interesante. É aí que realmente traer o seu mentes propias de soportar para resolver problemas. agora podemos predicir, ao resto do semestre, si. Sei como funciona o binarios. Lembro como ASCII ou Unicode-- o mapeamento para letters-- obras. E certamente para razoar que podería representar vermello e verde e azul, e representan multimedia tamén. Pero esta é a cousa interesante. Isto é o que fai alguén capaz de resolver os problemas. E un tal problema que gusta de facer, de feito, está levando atención, ou facelo a través de algoritmos. E de novo, eu podería facelo. Eu podería facer un, dous, tres, catro cinco, seis, sete, oito e nove. E eu podería escribir-lo abaixo para manter o control do mesmo. Pero iso é só como eu faría representan a información. Ou eu podería facelo faster-- dous, catro, seis, oito, dez, 12, 14, 16, 18, 20, 22-- parece que o dobre tan rápido, pero aínda é vai levar moito tempo. Pero resulta que, se alavancar aínda outros ordenadores resource-- e de feito estes días teñen múltiples CPUs ou cerebros. Acontece que computadores poden facer moitas cousas á vez, e, de feito, nós, nesta sala, pode representar exactamente isto. Polo tanto, é un pouco socialmente raro, pero se faría humor me por só un proceso de tres pasos, imos me pedir a todos no lugar hai só a levantar-se por un momento. Levantarse. Entón, pensar a si mesmo, o número de um-- para que todos nesta sala, excepto as persoas que non fixeron oblige, están a pensar número un. Entón este é o seu número no momento. Este é o primeiro paso, ou como unha científico da computación ou un programador normalmente faría, imos para comezar a contar desde cero. Se o menor número que pudermos representar estas lámpadas é cero, por só deixando- todo isto, así como eu podería só comezar a contar desde cero é, en vez de un. E iso é o que Científicos de ordenador. Entón, paso cero, levantarse e pensar no número un. O seguinte paso é isto-- par fóra con alguén de pé e engadir os seus números. Marabilloso. Polo tanto, neste momento no tempo, literalmente todos os participantes Está a pensar do número 2, con excepción para unha persoa estraña se temos un número impar de persoas na sala. E agora o terceiro paso aquí vai ser isto-- un de vós debe sentir-se. Un de vós debe sentir-se, e se aínda está de pé, volva ao paso dun. Todo ben. Todo ben. Así, máis e máis xente debería estar sentado abaixo. Teña en conta que este ten inducido un loop-- algún tipo de ciclo. Algúns de vostedes deben estar sen xeito detido, indo e volvendo entre o primeiro paso e dous, un e dous, un e dous. Está ben. O noso primeiro erro. Nós imos tratar con isto. Todo ben. Déixeme probar estimular as cousas. En teoría, só unha persoa está de pé como todos continúa par fóra. Pero déixeme apresurar as cousas co pobo aínda está de pé. Que número está a pensar? 46. OK. Dalle sentir-se. Vós aínda están de pé. Que aínda está de pé? Que número está a pensar? OK. Entón, imos voltar a vostede. Na parte de atrás? Qué e iso? 22. OK alguén se top-- si? 34. OK. Aquí no meu direita-- aquí enriba? 132, moi bo. 22? OK. E que aínda está de pé? Por aquí? 46, moi agradable. 72. Non podo deixar por moito máis tempo. Si? 30, agradable. Por aquí? 23? 23. E eu creo que iso é todo excepto vós, ningunha presión. Oh, espera. 28? Só oito. OK. Só oito. Aquí abaixo? 30. 23. 24. 18. Este é o peor implementación deste algoritmo nunca. OK. Entón, alguén? Alguén? OK. Un máis. 16? OK. 16. Todo ben. Entón, se eu non perdín ninguén en o brillo aquí, cando prema Intro, veremos, mediante algoritmos, o número total de persoas en Sanders. Porque unha vez máis, é como se todo como sentou-se, pasou o seu número off a outra persoa, a outra persoa, a outra persoa, de xeito que, en teoría, Ao final, só un estraño persoa debe estar de pé. Pero iso é bo. Nós acelerou as cousas a man. É especialmente difícil de ver neste espazo particular. E o número total de persoas cremos que hai aquí é 546. O número total I foi entregada polos compañeiros de ensino, quen fixo iso o vello forma lenta escola, era 820. [Risas] [Aplausos] Está ben. Así, por suposto, a continuación, hai eses erros. E iso é bo. E así creo que volta nesta a primeira vez que algo escribe non necesariamente funcionar. Isto aconteceu-me aquí tamén. Pero imos agora considerar como podemos aplicar esta mesma idea para algo pode ter visto antes, o que É esta tecnoloxía antiga escola aqui-- un libro de teléfono realmente grande. E supoña que este libro de teléfono ten 1.000 páxinas e 1.000 nomes e os números en orde alfabética dentro del. Ben, poderíamos tipo de aplicar un semellante idea a este problema moi físico, só me a usar. Só tipo de erro aproveitando todo de ti con lotes e lotes de CPUs diferentes ou cerebros realizar algún algoritmo. Pero se é só algo vello min, eu poida aproveitar esa mesma esencia dunha idea de dividir e conquistar este problema unha e outra vez, en que a metade de vós, metade de vós, metade de vós, metade de vós, teoricamente mantivo sentado, ata que foron, en teoría, con só unha persoa. Polo tanto, neste vella escola technology-- non Debe deste map-- este tecnoloxía da vella escola, podemos comezar a ollar para alguén como Mike Smith, unha páxina de cada vez. E vexo que non, Mike non está aquí. Eu aínda estou na sección A. Finalmente, eu creo me na sección B. E esta é unha algorithm-- paso a paso instrución. Comezar na páxina de inicio e un á vez, mirar para Mike Smith. Este correct-- este algoritmo ou visión? Si, é correcto. Se Mike está aquí, finalmente, Vou chegar ata el. Pero non é eficiente. É evidente que é moi lento. Para que eu poida aproveitar o mesmos twosies achegar. Podo facer unha especie de dous, catro, seis, oito, 10, 12. É dúas veces máis rápido. Eu vou chegar a Mike máis rápido se está alí. É correcto? Si, pero eu oín un non little--. Agora eu oín un non. Si. Hai un erro potencialmente. Quizais Mike fica só accidentalmente ensanduichada entre dúas páxinas, porque eu estou voando a través este dous de cada vez. Así, polo menos necesitamos algún tipo de corrección condicional. Eu teño que dicir, hey, se eu acertar alguén cuxa nome comeza cun T en vez de un S, É mellor eu dobre volta polo menos unha páxina. Entón, de buggy en principio, pero solucionáveis. Pero ningún de nós están indo buscar Mike Smith a través dun teléfono con 1.000 páxinas reservar unha páxina de cada vez. ¿Que é unha persoa normal vai facer? Está indo a ir ao S do, se sabía onde o S do. Pode ir máis ou menos para o medio ou lixeiramente inclinado cara ao final. E eu ollo para abaixo aquí e Estou na sección M. Pero o que sabe sobre este problema, que non necesariamente saber antes con todos nós só contando connosco equivalentemente? Ben, Mike vai claramente estar nesta metade do libro se está aquí en todo, porque é clasificado. E así pode moi dramatically-- [Ofegante] Sei. [Aplausos] É realmente moi fácil facelo na espiña alí. Pero pode a continuación, xoga metade do problema de distancia. Agora, eu estou á esquerda coa mesma problema-- atopar Mike Smith nun teléfono book-- pero agora o libro de teléfono comeza en M e vai ata Z, pero é a metade do tamaño. Pero iso é o que é impresionante. Así como na teoría, rapaces, cando todos vostedes sentou-se só a metade de cada vez, o problema ten a metade do tamaño, metade do tamaño, unha e outra vez. Entón, ten este problema facer o mesmo problema, pero a metade do tamaño. Agora é un problema de 250 páxinas. Así que eu entendo, oh, eu son na sección T accidentalmente. Teño demasiado lonxe. Podo xogar que a metade do libro de teléfono de distancia. Agora, eu estou disposto a un trimestre do problema. E pode repetir, repetir, repetir ata que, en teoría, está deixou con só unha páxina. E se Mike está nesa páxina, agora podo solucionar este problema. Pero a rapidez con que solucionar isto? No primeiro caso, el me levou como quizais 1.000 pasos para atopar Mike Smith. Podería ter tomado me-- Peguei o libro de teléfono e eu comece a ollar unha páxina de cada vez, e Mike poderían 1.000 páxinas máis tarde. Segunda visión, quizais me leva 500 pasos, porque eu estou voando a través de dous de cada vez. E a terceira visión, porén, é especialmente potente. Pero imos considerar o que realmente fixo que esa terceira vía. Vou ter o que eu vou chamar só estes demostracións aquí, un de cada vez. Pegar un libro de teléfono. Abre a través do libro de teléfono. Olle para os nomes. E entón as cousas están un pouco intelectualmente máis interesante, aínda simple. Se Smith está entre os nomes nesta páxina actual, a continuación, facer algo condicional. É como unha bifurcación na estrada. Chame Mike. Se Mike está entre os nomes Na páxina chamada Mike. Pero só faga liña catro a liña árbore, se é verdade. A resposta a esta pregunta é si. Else if Smith é o inicio do book-- noutras palabras, se eu está na sección M e eu estou buscando alguén para a esquerda, entón o que debo facer é algo moi semellante. Entón eu debería abrir para o medio da metade esquerda do libro. Entón vai cara á esquerda e logo volva para a etapa dous. Olle para os nomes alí. Polo tanto, noutras palabras, facer o mesmo, pero nun problema que foi reducida a metade. Sabe o que máis? Se Smith é máis tarde no libro con base na páxina que eu estou ollando, aberta ao medio da metade dereita do libro e, a continuación, volver de novo a etapa dous, else-- hai unha cuarta posibilidade aquí. Mike aquí ou á esquerda ou á dereita ou non existe. E aquí é mellor considerar isto. E, de feito, se xa tivo computador só bater en ti, que é, por veces, pero non sempre, a resultado de só un programador humano non entendendo, oh disparar, hai Realmente este cuarto escenario. E se non escribir o código para xestionar este escenario, ás veces non sabe o que o ordenador pode facer. E, de feito un programa pode fallar. Pero, neste caso, eu penso sobre el, e eu dixen, senón saír, porque esa é a cuarta lóxica escenario posible. Agora, imos engadir algún vocabulario para que Pode comezar a tirar en torno de termos que son doutro xeito moi intuitiva. Todas as cousas que eu só destacadas en amarelo aquí, Eu estou indo só para o funcións ou procedementos. Son só un tipo de accións. Entón tome, aberto a, ollar a chamada, aberto, aberto, quit-- estes son só accións, ou nós imos chamalos de xeito máis formal, funcións. Mentres tanto, agora en amarelo, Eu destacou as cousas isso-- imos comezar a chamar -lhes condicións ou ramas. Estes son os puntos de decisión onde que pode ir por este camiño, deste xeito, ou algunha outra dirección aínda. Polo tanto, aqueles estarán condicións. E agora esta é algo afeccionado. Imos chamar esas preguntas expresións booleanas, despois de que alguén con un apelido bool. E unha expresión booleana é só algo isto é certo ou falso, si ou non. Polo tanto, é a pregunta cuxa resposta vostede se preocupan, para nunha condición facer unha decision-- volver unha resposta, e despois ir á esquerda ou á dereita, ou algo algo completamente. E, a continuación, por último, estes liñas aqui-- volver a etapa dous, volva mentres que podería dois-- aplicar esta idea de xeitos diferentes. E entón aqueles de vostedes con experiencia en programación podería ter feito ou pode imaxinar facendo iso de forma diferente. Pero para fins de hoxe, é só a idea que importa. Isto é o que inducir imos xeralmente chamamos un loop-- algún tipo de ciclo, porque Isto está me facendo facer algo novo. Entón, agora, imos considerar só como é bo este algoritmo é. É correcto. Se Mike no libro, é un dos os catro scenarios-- novo e de novo e de novo, imos atopalo. Pero como é que é bo? Ben, non temos ser demasiado formal aquí. Pero imos trazar algo, x e y, para obter un sentido da forma deste problema. No eixo x é aquí o tamaño do meu problema. E un eixe y aquí será o tempo para resolver. Entón, talvez este é o número de páxinas. Quizais esta sexa segundos ou A páxina turns-- o que quere. Con todo, quere contar é o que esta imaxe vai representar. E que primeiro algoritmo, eu vou para describir como só unha liña recta. Se hai n páxinas o libro de teléfono, el me pode levar como moitos como n pasos para atopar Mike. Se Verizon ou a empresa de telefonía engade unha páxina o próximo ano, isto pode levar-me unha step-- unha unidade de tempo para atopar Mike. Polo tanto, hai só iso 12:59 ratio. É un declive liña recta. Mentres tanto, que a segunda algorithm-- se eu son indo de dous en dous dous tempo--, catro, seis, oito, ou double-- pasando as páxinas dúas veces á vez, dúas de cada vez, aínda é lineal. Hai agora un 1-2 ratio, pero un pouco máis baixa. Polo tanto, se hai que moitas páxinas no gráfico aquí en amarelo, que poida me aproveitar esta moitos pasos ou segundos, se non me vai levar o dobre na liña vermella. Pero a liña verde é o takeaway real. Isto é o que normalmente chamar un rexistro logorithm-- n, onde n é o número de páxinas. Pero é o xeito que importa hoxe, porque non temos para sequera pensar en Plot puntos. Debería un escenario extremo. Supoña Verizon mañá dobra o número de páxinas en que o libro de teléfono, de 1.000 a 2.000. No primeiro algoritmo, I Pode perder un extra de 1000 etapas buscando Mike, só porque Verizon duplicou o tamaño do libro. A segunda algorithm-- que podería leve-me un extra de 500 pasos. máis de 1.000 páxinas, eu vou de dous en dous tempo-- 500 pasos para atopar Mike. Pero ese terceiro algoritmo é unha especie de maxia. Verizon duplica o número de páxinas de 1000 a 2000, Pero cantos máis pasos fai me levar para buscar Mike? É só un, porque eu podo só rasgar o libro de teléfono unha vez dun problema de 2.000 páxina a un 1.000 problema páxina, e listo. Eu tomei unha mordida enorme fóra del. E se é realmente extremo, supoñer que o libro de teléfono empresa tiña algo tolo como un libro de teléfono 4 millóns páxina. Ben cantos pasos que pode tomar para atopar Mike Smith nun 4000000000 libro de teléfono páxina? É un gran número, pero só 4 millóns para 2000-1000 millóns a 500 millóns, 250 milhões-- aínda soa como grandes números, pero eu son moi rapidamente chegando a valores menores. E, de feito, se eu fai as contas dereito, só podo dividir 4 millóns por preto de 32 veces antes Eu baixar para só un. Polo tanto, se ese libro de teléfono foron 4 mil millóns de páxinas, non é gran cousa. Dentro de poucos segundos, quizais 32 segundo, eu podería división lo ao medio e, finalmente, atopar Mike ou concluír que el non está alí. E esa é a esencia dun algorithm-- un bo algoritmo. E iso é unha das obxectivos dunha clase como este, está intentando descubrir como fago resolver o problema non só correctamente, como sempre sabía como facelo un páxina de cada vez-- pero correctamente e ben. Cómo creo boa solucións aos problemas? Polo tanto, imos ter un momento aquí e darlle un sentido agora de CS50 o curso itself-- introducir membros do equipo a poucos curso. Pouco antes de 02:00, imos facer unha pequena pausa de xeito que aqueles de vostedes que están a mercar pode Duck para fóra, e dar un mirar algunha outra clase e ver o resto deste liña. Pero, por agora, deixe-me presentar CS50, a clase en si, e, en particular, o que é novo. Así, a primavera pasado, nós pasei un pouco de tempo-- o persoal do curso e eu- pensar sobre o que é que queremos CS50 sendo, e voltar á primeira principios, por así dicir, considerando que é o que queremos este curso para parecer e ser como polos seus alumnos. E entón verás no problema definir a cero, así como, unha invitación para dar un ollo ao que URL que resume algunhas das motivacións detrás do seguintes características de caída de 2016. Entón, como pode ter recollido do TL: apostila DR, o programa de hoxe, así como de o catálogo de cursos, este ano, en CS50, vostede se espera só para participar today-- así traballo ben done-- ea última charla en 21 de novembro. E é benvido, pero non se espera que ver esas charlas no medio, porque o que estamos facendo este ano, está tirando en tempo real o material do curso. Entón, todo vai estar corrente e incorporada o mellor que can-- eventos actuais e conversacións que persoas poden ter na industria no mundo, pero facendo que o material dispoñible, como un resultado, mesmo earlier-- completo con transcricións de texto completo e investigación ea ligazóns a outros recursos. E, de feito, fomos reivindicando por algún tempo e nós agora crer, que podemos crear, dixitalmente, un máis envolvente, a máis atractiva experiencia educativa, en oposición para a reunir aquí preto de 23 veces en persoa, escoitando alguén como eu simplemente falar ciencia da computación, en oposición ao compromiso de forma máis activa. Entón verás no currículo do curso un esbozo do semestre aquí, xunto con cando conferencias ser filmado, para o cal está Benvido, pero non esperaba, e cando eles van ser lanzado na web do curso. E o que imos facer aquí en Mércores a partir da próxima semana, é moito máis intimamente, con só aquelas persoas que queiran participar, é un chamado camiña a través, onde e as cabezas do curso vai realmente facer as cousas un pouco máis íntima aquí abaixo na orquestra sección, aínda teñen algunha tecnoloxía e percorrer o conxunto de problemas semana en curso, e ofrecer-lle particularly-- entre Os menos comfortable-- aínda máis orientación que pode querer ou precisa para o reto da semana. E do mesmo xeito, para os que non poden ver aqueles en persoa, non é gran cousa. Non será semellante conducido por un dos cadros superiores do curso, Zamalya, a mesma oportunidade incorporado no problema define-se. Problema define este ano será lanzado en venres e xa non fan sete días despois, pero 10 días later-- deliberadamente superposición con cada problema definido, para mellor acomodar, Esperamos, fluxo e refluxo en horarios de estudantes, especialmente cando midterms ou atletismo ou académicos ou extracurriculars tenden a ir e vir especialmente na metade do semestre. Isto debe darlle un pouco máis criterio para saber se adiante Cargando o semana con CS50 ou carga de volta Lo na fin de semana seguinte no seu lugar. Entón mire para Syllabus do curso aquí para a programación do mesmo. E vai notar tamén entre os cambios que este ano, para aqueles máis familiarizado con programación no pasado, imos comezar o semestre como imos hoxe en perigo, concentrarse especialmente na linguaxe chamado C, e despois non transición para PHP, pero para unha linguaxe chamada Python para o fin do semestre no contexto de programación web, xunto con SQL e JavaScript, HTML, CSS, e aínda máis. E, en resposta a unha FAQ, que é realmente o caso que o CS non é tan asustado como eu xa pensei que era, pero é tanto traballo como eu tiña oído falar que podería ser. Pero esta é a palabra que aquí están algúns estatísticas do outono de 2015 alumnado, en que as liñas azuis horizontais representa o número medio de horas informar. E vai ver unha media de seis a 10 a 16 12-- quizais ou así e así por diante, pero con alta varianza para ser claro. E así entender que non hai só alumnos máis cómodo e menos cómodo no curso, pero un soporte correspondente estrutura para estes alumnos por medio do semestre correctamente. Efectivamente, en resposta a unha FAQ, debe tomar CS50 como un primeiro ano? Absolutamente. E, de feito, eu me arrepinto Non tendo atopado meu camiño ou atopar un novo campo que o primeiro ano tamén. E ten que tomar CS50 con outros cursos, certamente como bem-- eo Consello Xeral poderiamos dar aos alumnos, que CS50 é probablemente non o tipo de clase ou clase de introdución que ten que tomar con tres Outro ou outros catro clases de set-p. Pero se está tomando dous outros p-set clases, outra cousa, e CS50, absolutamente controlable. Tiven moitos alumnos en pasado fixo iso con bastante éxito. E para chegar cara a ese rematar liña con éxito, O curso ten sections-- diferentes grupos para estudantes menos cómodo, máis cómodo, e nalgún lugar no medio, polo que no transcurso da primeiro conxunto de problemas, lle será solicitada a describir a si mesmo. E se está entre os menos cómodo, é o tipo de cousas que acaba de vez sei. E, de feito, esta foi a crecemento demográfico no CS50 hai moi poucos anos. A partir de finais do ano pasado para exemplo, o 58% da clase Describíronse como entre aqueles menos cómodo, con 9% entre aqueles máis cómodo, e, a continuación, os outros alumnos alí vermello se describen como algures no medio. E vai ver aquí os temas xeral e programación de seccións, as cales son ofrecidos en persoa, en tempo real, co curso de incrible equipo de bolseiros de ensino e os asistentes do curso, algúns dos cales vai atopar en só un momento. Seccións si, como podes ver, a vontade ser luns e martes e mércores, para permitir-lle mergullo en despois de se implican, así escoller, durante o charla no inicio daquela semana. E despois do expediente, que Certamente, cada ano que pasa, non foron menos dun desafiar ao curso. E este ano, non estamos a planear só para exercer o cargo horas-- un nun oportunidades de axuda para alumnos os mércores ás xoves e os domingos, a última destas sendo pola tarde por deseño para reducir algún do esforzo que invariabelmente xorde con altas horas da noite p-settting cun prazo looming-- pero tamén será ofrecido o horario de expediente ás segundas e martes e Cuartas e venres e sábados, grazas aos nosos amigos no HSA. CS50 agora ten o seu propio espazo para estudantes e persoal CS50, na parte superior de 67 Mount Auburn Street, alí mesmo na Harvard Square. A visión para o que é que CS50 de TFS e CAS ao longo da semana, practicamente durante a maior días, vai estar alí para o apoio. Entón, se ten algún pregunta nun p-set ou se está sentindo un pouco bloqueadas ou un pouco confuso, e diaños, ten unha hora ou media hora entre as clases, especialmente no square-- podes pop e ter esa pregunta contestada de ter esa confusión clarified-- moi no espírito, está familiarizado, da matemática propio centro de preguntas de matemáticas do departamento, pero practicamente todo o día por [? Gcal?] Que poremos en liña. Explicacións tamén está dispoñible para os estudantes, libremente do curso de propio persoal se quere máis íntima dun nun, ou dous ou tres compañeiros de clase única, traballando cun dos membros do equipo do curso. E, de feito, estas aquí son só algúns dos membros do equipo do curso, algúns dos cales vai reunir-se en só un momento. De feito, CS50 propia cabeza de ensino compañeiro, e claro cabeza asistente e preceptor, podería vir enriba, permiten Los para dicir Hola. [Aplausos] COLUMNA 1: [inaudível]. [Aplausos] COLUMNA 2: [inaudível]. [Aplausos] COLUMNA 3: [inaudível]. [Aplausos] DAVID Malan: E nos permiten levar a bordo dous dos CS50 da maioría altos funcionarios, Rob e Zamayla tamén. [Aplausos] Efectivamente, tanto Rob e Zamayla estiveron connosco por tanto tempo, que eu era capaz para entrar en arquivos do CS50 e creo que moi SD metragem deles participando no escenario se hai uns anos. ROB: [inaudível]. [Aplausos] ZAMAYLA: [inaudível] [Aplausos] DAVID Malan: Grazas. Así, ademais destas os membros do equipo aquí, CS50 ten un equipo de case 100 os funcionarios, os cales estará dispoñible para seccións e horas de oficina e moito máis. E, como Rob di tamén, este é a revisión máis significativa de CS50 nos 10 anos que Eu estiven no [inaudível]. [Inaudível] centrado especialmente na subministración dunha estrutura de soporte, aparar fóra unha morea de a maior que foi acumulada en 10 anos desenvolvementos de iterativos en conxuntos de problemas do curso. Polo tanto, este ano, non só en clase, pero Tamén baixo a forma do problema do curso conxuntos, ten que atopar as cousas para ser máis racionalizado, Trimmer, moi máis manexable que o ano pasado, como nós publicar algunha da equipaxe que é desenvolvido pola natureza do ano en evolución tras ano e iteración. Así, o novo e mellorado comeza hoxe. Vai coñecer un pouco máis da equipo fóra do curso no [inaudível] ás 2:30, onde serviu, como unha tradición, bolo. Hai algo máis bolo que iso, pero vai meet Erin e Tobias e outros aínda. E deixe-me dar-lle un paseo antes de escoitar dalgúns dos outros membros do equipo na clase, que espera tamén. En realidade, sempre comezar CS50 de semestre do próximo sábado, co que se chama Día CS50 Puzzles. Non ten nada que ver con ciencia da computación, por si só, pero con preto de problema resolvendo de forma máis xeral. E, se o decide participar, por algúns dos convites, podes ver porta caeu ou na fase aquí, é unha oportunidade en equipos de dous ou tres ou catro, para participar de puzzles e pizza e premios e more-- hoxe, Sexa conectado para máis. Atoparás tamén que todo Venres, en Fire and Ice, O CS50 traer un todo grupo de estudantes para o xantar, para facer un gran clase sentirse máis íntimo, e, xeralmente, achegar ex-alumnos e amigos da industria para falar do que eles teñen foi ata desde a graduación. Do mesmo xeito, este ano, será que inaugurar a primeira CS50 50 codificación contest-- a medio do semestre oportunidade de permitir que todos nunha opción na base, para ter un desafío de xuízo contra os compañeiros, de novo en equipos de dous, tres ou catro, usando só que a programación savvy que entón baixo o cinto despois de só seis ou sete semanas de clase, e participando neste tipo de competición online-- se desexa mellorar o seu propio habilidades aínda máis nese desafío. Ao final do semestre é o chamado CS50 Hackathon-- unha oportunidade que comeza ás 7:00 PM remata ás 07h00, e ao longo do camiño Son 12 horas da noite en que a mergullo en project-- final da Claro unha oportunidade para proxectar e aplicar a maioría calquera cousa de interese para ti co seu ensino a dirección de compañeiros. Ao redor de 09:00 nós normalmente serven pizza, 1:00 AM, Philippe de, e os poucos de nós que aínda están acordados ás 5:00 AM, son shuttle bussed abaixo da estrada para IHOP no almorzo. E despois de algúns días máis tarde é o chamado CS50 fare-- un fin de exposición semestre en celebración de quão lonxe tantos de CS50 estudantes viñeron de semana de cero ata a semana pasada, e tendo en conta que o 73% dos compañeiros e seu este ano Nunca fixo un curso de CS antes. De feito, para enfatizar que logo, aquí É máis algúns rostros do persoal do CS50. COLUMNA 4: [inaudível]. COLUMNA 5: [inaudível]. COLUMNA 6: [inaudível]. COLUMNA 7: [inaudível]. COLUMNA 8: [inaudível] COLUMNA 9: [inaudível]. COLUMNA 4: [inaudível]. COLUMNA 10: [inaudível]. COLUMNA 11: [inaudível]. COLUMNA 12: [inaudível]. COLUMNA 13: [inaudível] COLUMNA 14: [inaudível]. COLUMNA 13: [inaudível]. COLUMNA 15: [inaudível] COLUMNA 16: [inaudível]. COLUMNA 11: [inaudível] COLUMNA 5: [inaudível]. DAVID Malan: Algúns do equipo son eles mesmos compras clases. Pero se eses membros do persoal CS50 está aquí, podería vir enriba por só un momento. TFS do CS50 e CAs e [? equipo?] membros aqui-- estes son só algúns do faces-- un dos cales só vin, e algúns outro-- e algúns outros aínda. Por que non podemos ir adiante e facer vós unha pausa de cinco minutos. Se precisa de pato para clases de tenda, todo ben. E en cinco minutos, imos retomar, tendo un ollar para o primeiro Scratch-- da nosa linguaxe de programación, atender o persoal do curso aquí un pouco máis, e en definitiva, concentrar no conxunto de problemas cero. Entón, imos estar de volta en cinco minutos. [Aplausos] Todo ben. Entón, estamos de volta. E no noso restantes xa hoxe, o obxectivo é nivelar o terreo de xogo en termos dalgunha terminoloxía, en termos de algunhas ideas. Xa que, de feito, segundo algúns dos gráficos anteriores, alí vai ser unha serie de niveis de experiencia na clase, algúns de cuxos alumnos teñen tomado algunha programación antes, algúns dos cales non teñen. E así, con este primeiro problema e establecer con este primeiro idioma temos unha oportunidade para comezar tomando para concedida a partir de hoxe algún vocabulario ea idea común. E nós imos facelo por medio de primeira languages-- do curso Ademais de C e Python e JavaScript e SQL e HTML e CSS, imos concentrar inicialmente e só para o problema de definir a cero nesta linguaxe gráfica, chamada Cero, desenvolvido polo Laboratorio de Medios do MIT por debaixo da estrada, para axudar estudantes e nenos especialmente expresar-se algorithmically-- dun modo máis consistente co que podemos chamar de pensamento computacional. E é unha lingua útil porque moi rapidamente a próxima semana nunha semana, é que imos facer a transición cara a unha forma máis linguaxe tradicional e misteriosa chamada C, que é puramente textual. Só pode usar o teclado en Para escribir instrucións como estes en pantalla. Pero aínda que nunca viu unha linguaxe de programación antes, en só mirando para tanto, todos sexa enigmático, probablemente pode adiviñar que probablemente imprime Ola Mundo. Pero hai unha morea de sobrecarga sintáctica alí. Non é o hash estraño símbolo ou hash tag enriba. Hai o ángulo entre parénteses, algúns parénteses, corchetes, semi-colon-- hai tanta cousa visuais sintaxe que queda no camiño. Comezamos o curso con Cero para obter pasado todo intelectualmente distraccións desinteressante, e concentrar-se nas ideas. En realidade, iso se pode antes. Este, por iso, a semana será despois. Isto, neste gráfico Risco linguaxe, é como podería aplicar esa mesma program-- un programa que, cando se executa, simplemente di Ola mundo. E o que é agradable sobre Scratch é que é esta programación gráfica ambiente que usa pezas do puzzle é bloques, que só en conxunto interbloquear se ten sentido lóxico para facelo. E co Scratch pode desenvolver animacións e xogos interactivos e arte, e calquera número de cousas que que vostede pode imaxinar na súa propia mente, e implementar las simplemente arrastrando e soltando pezas do puzzle. E, de feito, teremos a posibilidade para expresar algunhas das mesmas ideas que eu acabo de mencionar un momento atrás no contexto Mike Smith e buscar as cousas un teléfono book-- como funcións, só a accións, cousas como loops que facer cousas de novo e de novo, variables, que é algo que imos presentar, pero é familiarizado quizais desde algebra-- só algún tipo de espazo reservado para almacenar un valor que podes Debe expresións booleanas later--, onde aqueles si non é certo falsas cuestións de antes. As condicións son aqueles garfos na road-- as ramas por así dicir. E despois hai algúns columbófilo características que veremos aínda hoxe, chamados matrices e fíos e eventos, que imos, a continuación, volver máis tempo en distintos idiomas. Pero cero permítenos para explorar todos estes. Entón, aquí en cero, este vermello bloque é o que unha función é tipicamente vai parecer. Esta peza de puzzle roxa que ten algún palabra como por exemplo, que é a acción, e logo, pode ter un argumento ou parameter-- algún do tipo de personalización o que o bloque fai de xeito que non está pre-determinada pola MIT que este bloque vermello di. De feito, poderás ver nun momento que eu son capaz de escribir as palabras como Ola mundo, ou Ola David, ou ola Zamayla, ou o que quero, no argumento para ese enigma piece-- a caixa branca alí. Mentres tanto, se quero un loop, imos ver que non hai pezas do puzzle que mirar un pouco de laranxa como este. E a súa forma de tipo que suxire algo pasa unha e outra vez nun ciclo. Entón, se eu romper un bloque mundo dicir Hola cun bloque para sempre en perigo, el só vai continuar a dicir Hola mundo para sempre, literalmente. Mentres tanto, non hai outra tipo de loop en risco que imos see-- unha repetición block-- onde, se saber con antelación as veces quere que o loop para realizar un número finito de veces en fact-- vostede Pode especificar que, escribindo un número ou incluso chamar unha variable, como x ou y, como veremos. De feito, variables como I neste caso, que é un nome común para unha variable enteira que só almacena unha number-- un completo pode ser, usar este bloque de laranxa aquí para definir unha variable como a cero. Aquí está un exemplo no verde dun expresión booleana en perigo. Aínda que esta parece ser unha matemática fórmula, as desigualdades de matemáticas como este Realmente son expresións booleanas. Isto é verdadeiro ou falso. I é inferior a 50. É tanto unha resposta si ou non ou resposta certa ou falsa. E nós imos xeralmente chamamos esas expresións booleana. E non ten que ser 50. Pode ser x menos que Y, maior que Y, igual a y-- calquera número de outras preguntas poden ser feitas. Agora, a primeira vista, isto pode parecer de súpeto moi ousada aquí, e é. Pero o concepto sabio, é moi familiar de antes. Se x é menor que y, que dicir o mesmo. Senón, se x é maior de y, a continuación, dicir o mesmo. Outro dicir x é igual a y. Polo tanto, temos un exemplo Hai unha terceira scenario-- a única terceira possibility-- x é ou maior que, menos, o igual a. Polo tanto, temos un garfo de tres vías no camiño. E entender o que é legal cero aqui--, ao parecer, ten só un puzzle peza, neste caso, en que bloque else. E, con todo, que parece implicar que podes só ten un garfo de dúas vías no camiño. Pode ir á esquerda ou á dereita, pero que sobre ese terceiro escenario? E se x é igual a y? Non é gran cousa. Tome unha peza de puzzle, puxo outra dentro del para crear o equivalente semántico de if, else se, else-- e agora ten o seu garfo de tres vías no camiño. E, como veremos, o pezas de puzzle do cero pode ser estirado e medrar, así como empinar máis cousas neles. Non ten que se encaixan todo no seu tamaño estándar. Isto é algo que vai ver pronto é chamada dunha matriz. É como un lista-- algún tipo de almacenamento de múltiples pezas de información nunha variable, non só un número. Estes veremos un representante da algo chamado multi-Threading. En realidade, todo o seu Macs e PCs estes días soporte multi-Threading, que significa que pode literalmente facer varias cousas á vez. Pode que o Microsoft Word para arriba no primeiro plano, a traballar nalgún ensaio. Pode que un navegador na apertura de fondo G electrónico ou Facebook ou similar. O seu ordenador pode facer moitas cousas hoxe porque é multi-threaded, e os programas que están en en particular tamén son multi-threaded. Hai cousas chamadas eventos como ben no mundo do scratch, e despois hai un xeito tamén, para facer nosas propias pezas do puzzle costume as cousas en realidade non existen con antelación. Entón, imos motivar iso do seguinte xeito. Hai uns anos, cando eu descuberto por primeira vez Scratch cando eu era en realidade un estudante de graduación no MIT, nós nos foron designados de facer a lección de casa. E eu implemented-- que, en retrospectiva, Foi unha decisión moi pobre porque é a música máis irritante do mundo para escoitar durante oito horas mentres traballaba no seu homework-- pero algo que eu chamara Oscar Equipo, que é, se cadra, unha canción familiar. CS50s posúe Jordan Hayashi, un dos nosos empregados máis seniores, elevouse a para 2015 e agora 2016, xa de volta ao día, Eu tiña todo indo só en lata de lixo do Oscar. Agora imos apoiar a reciclaxe e compostaxe. Pero, para pintar o cadro do que podemos facer aquí e motivar algúns dos os exemplos de nivel máis baixo, poderiamos obter outro voluntario para só veñen-se e xogar o meu primeiro deberes sempre? Imos cara arriba. Como te chamas? HENRY: Henry. DAVID Malan: Henry, imos para arriba. Imos cara arriba. Cabeza de calquera xeito, e verás nun momento, Eu estou indo a ir adiante e bateu no bandeira verde na man superior dereito canto, o que significa ir. A icona de sinal pequena parada vai dicir stop, e iso é cando comeza e deixar o programa. Encantado de coñecerte. Todo ben. Entón, nós estamos indo a ver as instrucións na pantalla en só un momento. E só por xogar este xogo para algúns seconds-- confía en min, Non imos querer xogar todo o camiño para o end-- vai ter unha noción do que o programa fai. E máis que centrarse Henry sendo bo ou malo nese xogo, foco E como foi aplicado por min inicialmente e despois por Jordan. Noutras palabras, onde están as variables? Onde están os loops? Onde están as funcións? E imos ver se nós non vemos aqueles debaixo do capó. Só ten que premer e arrastrar o lixo para a bandexa apropiada. [Reprodución de música] Todo ben. Isto é moi bo. Por que non podemos para-lo alí. Grazas. Parabéns a Henry. Grazas. [Aplausos] Basta imaxinar a depuración este programa. Se hai un problema de dous minutos de song-- pero tan o que está pasando aquí realmente? Tan complicado como puido comezan a parecer para chegar ao longo do tempo, en realidade, máis e máis cousas comezaron a caer, o que é interesante sobre este tipo de example-- e veremos algunhas outros- é ​​que se mirar o pasado a complexidade ou a sofisticación do xogo, hai un edificio moi sinxelo bloques que play-- os cales, se destilar los aqueles bloques de construción, son moi accesibles e implementável para si mesmos. Por exemplo, é Xa fai algún tempo, pero estou seguro que eu inicialmente fixo cando facendo este partido por primeira vez eu estaba completamente como procrastinado. Non centrar en todo na a lóxica ou as pezas do puzzle, Eu me concentrei nos gráficos e descubrimento o poste de rúa ea lata de lixo e todo iso. Pero aqueles eran necesarias ingredientes en primeiro lugar. E xa que eu rematar de procrastinar e que define o marco xeral, Eu decidir, deixe-me facer unha peza de caída lixo do ceo. E veremos Raspadinha Soporta cousas chamadas caracteres que poden sprites-- teñen diferentes traxes en que ollar diferente. E por iso eu coloque nunha lata de lixo traxe nunha tal entidade gráfica. E eu só precisaba a caer do ceo. E así el saír, risco, como a maioría das linguaxes de programación, admite os números aleatorios ou números aleatorios tecnicamente pseudocódigo, de xeito que, arrastrando e deixando caer algunhas pezas do puzzle, Eu era capaz de ter o lixo veñen de esquerda en primeiro lugar. E entón a próxima vez que caeu, de a dereita e, a continuación, a partir do medio. E todo o partido que era só ten lixo que cae do ceo. Non podes ligar a el ou faga clic sobre el. Non podía abrir a lata de lixo. Non podía facer nada. Pero foi un paso de bebé cara a miña visión final. E despois diso, realmente aplicado algún tipo de detección de xeito que se premeu e arrastra sobre o anaco de lixo sobre a lata de lixo, Oscar tapa ía abrir e pechar. Nada pasaría ao lixo, pero polo menos a tapa vai abrir e pechar. Entón, a continuación, comprobar, paso dous de dous. E iso é o que vai ser clave en ambos conxunto de problemas de cero e na programación dun modo máis xeral, é a tomar estes pequenos pasos moi deliberados. Porque non só permiten que sinto honesta conseguir moito máis quickly-- é o peor do mundo para tratar de aplicar todas Oscar Equipo, logo horas despois bateu a bandeira verde, e nada funciona como espera porque onde mesmo comezar a depuración ou para solucionar este programa? É só esmagadora. E así realmente aperta esta idea de dar pasos de bebé steps-- novo e novamente-- edificación algo que é, ao final, realmente impresionante e complexo, pero en primeiro lugar, non é case tan grande así. De feito, imos facelo. Déixeme ir adiante e- Acoitelado si existe na web en Scratch.MIT.edu, e vai ser considerado coma moi novo no problema definir cero, a especificación para que xa está na páxina web do CS50. Pero iso é o que Raspe en si é. E non hai realmente só tres áreas principais. Na esquina superior esquerda existe é a fase de chamada. Este é cero. O traxe estándar é un gato. E este é o mundo rectangular en que podes move-- arriba, abaixo, á esquerda dereito e algunhas outras cousas. No medio aquí están as nosas categorías ou os nosos palés de pezas do puzzle, e cores diferentes significar cousas distintas. E se picar arredor, verás cousas como loops e condicións e variables e outros ingredientes. E entón aquí é a área de scripts. Este é o lugar onde eu poida arrastrar e soltar estas pezas do puzzle para facer as cousas. Entón imos facer unha cousa desas. Déixeme ir adiante e- e sei onde está. Entón, eu vou inmediatamente prema onde eu sei que as cousas están listas para ser, pero apuntando e premendo e bisbilhotar son inevitables. Entón, cando a bandeira verde premendo, o que quero facer? Eu vou facelo. Eu estou indo a arrastrar este puzzle vermello peza, dicir Hola por dous segundos, e deixe-me facer zoom. E eu vou cambiar isto para ser o que quero que ser-- Ola mundo por dous segundos é bo. Agora eu vou prema o bandeira verde, ou se realmente quero, Podo pantalla completa lo e despois volver. El só vai manter todo nunha ventá. Verde Ola mundo flag--. Todo ben. Non todo o que interesante. Entón deixe-me ir adiante e facelo. Déixeme probar outro. Cando a bandeira verde clicked-- imos facer algo parecido a un son. E teña en conta que, de a caixa de balde que comeza un son de gato, como é o sprite estándar. Entón, agora déixeme ir adiante e bateu a bandeira verde agora. [Miando] Aw. Isto é encantador. Estou programando. Entón o que foi que eu fixen? Isto é o equivalente dun programa. É evidente que é super sinxelo. Realmente non tomar tanto esforzo e MIT fixo a maior parte do traballo, pero eu teño chamado de función. Eu teño usado unha función. Eu fixen un pouco de acción, usando só que unha parte do enigma vermello. Ben, se quero facer tres miados nunha fileira? Deixe-me ir adiante e facer dous e tres. E teña en conta que cando pair preto dunha parte do enigma, un pouco de liña branca aparece tipo de magneticamente, e se encaixará xuntos cando deixar ir. Imos ver que pasa aquí. [Miando] Hai un erro. Só escoitar un miado. Por que podería ser? Si? Si. Nós realmente non oín-lo, pero iso é bo intuición. Están todos tocando á vez. Por que? Ben, o ordenador é só ir para facer o que diga a el para facer. Entón, se di, son xogo, reproducir o son, reproducir o son, pero non diga a el para xogar ata estea listo, xogar ata que está feito, vai soprar a través o programa moi rápido e non só o que diga a el para facer. Entón, realmente precisa corrixir isto nun par de formas. Podería só iso, se librar desa. Déixeme probar este outro puzzle piece-- xogar miado de son ata feito, a continuación, arrastra tres estes e prema Reproducir. [Miando] Non é realmente very-- grazas você-- moi natural. Entón por que non deixar eu- me ir para controlar aquí. Niza. Espere un segundo, e agora déixeme volver a ruído e son xogo ata feito, e logo, déixeme esperar un segundo. E, a continuación, deixe-me ir e obter un máis de son, e aquí imos nós. [Miando] Algo máis natural, pero Isto non é moi eficiente. Como eu estaba quedando aburrido, ser todos Lo brevemente, premendo adiante e cara atrás e realmente duplicar o meu trabalho-- practicamente copiar e pegar. En realidade, se eu control premendo ou dereito premendo, Podería ter só copiado e pegado. O que sería unha mellor construción de usar? Que idea de antes? É, polo tanto, un loop. E, de feito, se remexia, podemos atopar exactamente isto. Deixe-me ir a eventos ou mellor control. Entón repeat-- non Quere que sexa 10 veces. Isto vai ser aburrido rapidamente. Pero vou repetir tres veces. Déixeme volver ao son e reproducir o son ata que se realice. Déixeme volver Control e só esperar un segundo. E observen, pode creo que non encaixa, pero de novo se magneticamente deixar encaixe no lugar, vai medrar para cubrir. Que xogar agora? [Miando] OK. Niza. E iso é o que sería chamado un programa que tamén é correcto. El Miou tres veces moi por suposto, pero é mellor deseñado. Está a usar menos redundancia. Non copiar e pegar calquera cousa. Eu só usei unha idea mellor. Agora, iso non é todo o que interesante co Scratch non facer nada. Entón, imos facer algo no seu lugar. Imos facer algo para sempre. E vostede sabe o que? Movemento parece interesante. Imos telo moverse a 10 pasos e bateu xogar agora. OK. Así podemos tipo de arrastre Lo de volta, e aínda está correr, porque está facendo iso para sempre. Así, o circuíto está facendo o que está dicindo para facer, pero iso non é todo o que interesante. Imos facelo. Déixeme engadir un bloque de control, e utilizar unha destas condicións para a primeira vez. Por iso, vai a mover 10 steps-- 10 puntos, 10 píxeles na screen-- logo vai facer esta pregunta. Se algo é certo, a continuación, facer algo dentro deste bloque. Non é que a detección ten un todo banda de expressions-- booleana cuestións do si non é certo false form-- déixeme facelo. Se touching-- e entón hai este pequeno menú desplegable. I pode parametrizar iso. Se tocar na edge-- imos facer algo así. Entón, se tocar edge-- déixeme volver ao movemento. E por que non só virar 180 graos? Todo ben. Entón, para sempre, mover 10 pasos. Se está tocando o bordo, xirar 180 graos. E iso non é o fin do programa porque está nun bloque para sempre, polo que vai a ir de novo e de novo e de novo e de novo. Entón, imos ver que pasa. OK. Un pouco de buggy, pero legal. E podemos engadir a isto algunhas cousas tolas que non son todos os que intelectualmente interesante. Pero se se loita este pequeno micrófono button-- ouch. Déixeme limpar iso. Déixeme mellorar isto como eles dirían na TV. Limpar isto, Gardar e agora vaia scripts. E agora, deixe-me ir ao son. Deixe-me dar-lle un nome. Vou chamar este ouch. E agora xogar ouch son. Lembre que aparece no pouco menú desplegable. Vexamos. [AI] [Risas] Pero podemos cambiar t seu na Moscova. Podemos ser dúas veces máis irritante. [AI] Ou se nós facelo como 1.000 chanzos de cada vez-- OK. Entón, nós estamos indo a deixar que un só. Entón, de novo, a construción de blocks-- I comezou con algo super sinxelo, e entón eu engade un recurso, engadiu un recurso, engadiu un recurso. E eu xa non se preocupe como a primeira destas características implementado como eu continuar a capa cousas enriba. Entón, en realidade, déixeme facer outro aquí. Deixe-me ir adiante e abrir un ficheiro Eu trouxo de antelación, chamado Sheep. Entón, ten un pouco diferente personaxe que parece con isto. E deixe-me ver se eu non poida facer algo usando un contador neste case-- unha variable chamada. Eu estou indo a ir adiante e baixo Events-- déixeme ver unha bandeira verde premendo. Entón deixe-me ir datos, que sei xogar un pouco antes, é onde as variables son. E eu estou indo a ir adiante e arrastrar esta. Así, unha variable chamada contador, e Eu estou indo a iniciar a cero. Podo chamalo anything-- x ou y ou z-- pero na programación, chamando algo nun semanticamente forma útil, como contador, que describe o que é, é un moito máis fácil de ler o código máis tarde. Deixe-me ir adiante e conseguir unha bloquear sempre aquí. E déixeme ir a aparencia páxina e facer un bloque Say. Pero o que é legal sobre variables é I Non é necesario só escribir algo como Ola mundo, que xa feito, podo máis que ir Data e arrastra miña variable, e mesmo aínda que a forma non moi mira como debe encaixar, vai medrar para cubrir. E eu vou só dicir que o contador para un spoiler-- second-- vai contar. Imos dicir que por un segundo. Entón eu estou indo a ir e telo esperar por un segundo, polo que non conta moi rápido. E, a continuación, por último, contra cambiar por um-- noutras palabras, incrementar o contador por un valor adicional e facelo para sempre. Así, as ovellas tamén, como un programador, conta de 0. E se esperarmos o tempo suficiente, vai facelo para sempre. Pero iso non é exactamente verdade, porque de feito, como imos descubrir unha semana, enteiros e ordenadores de xeito máis xeral, tecnicamente teñen só unha finite-- ben, no canto ordenadores, cando eles representan números enteiros, só ten un número finito de bits. Estas lámpadas alí só pode contar tan alto antes de que está fóra de lámpadas. E tamén un ordenador, só ten tanta memoria, só ten tantas transistores, por iso só pode contar tan alto. Así, verifícase que as ovellas, Eu penso, pode contar ata 2 millóns ou algo moi grande. Entón, nós non imos esperar a que isto ocorre. Pero, finalmente, un erro ocorrerá que pode ter un mundo moi real ramificacións. Pero, ademais das ovellas, que só introduce unha variable. Imos adiante e abrir algo que eu fixen con antelación aquí chamado Pet o Cat-- Acariñar o gato aquí. E observar aquí é pouco bloques, pero cando a bandeira verde premendo, sempre facendo o seguinte. Se está tocando o rato pointer-- de xeito que o cursor na pantalla, o miado de son xogo arrow-- e despois esperar dous segundos. E só facelo para sempre. Só ten que esperar constantemente a ver se o pointer-- o gato está tocando o punteiro. Entón eu bati xogo. Non está pasando nada. Pero como eu mover o cursor sobre o gato, [Miando] E se eu afastalo, non acariciar máis o gato. Entón, algunha lóxica condicional aniñada dentro dun loop. Como sobre este exemplo, deliberadamente chamado Non pet o gato? Que isto vai facer? [Miando] Por que non debe xogar co gato? [Miando] OK. Polo tanto, este é un exemplo dun caso máis. É un punto de decisión e porque está sentado no circuíto, ambos están verificados. Iso é verdade? Iso é verdade? Iso é verdade? Iso é verdade? E, finalmente, un de aqueles vai aplicar e así pode escoitar o miado ou o ruxido do león, nese caso. Ben, imos facer un pouco máis extravagante que fixeron con antelación demasiado-- threads. Así, un fío é só un cousa que un ordenador pode facer. Así, un programa multi-threaded é un programa que pode facer varias cousas á vez. E todos estes exemplos ata agora tiveron só un script, entón a speak-- un programa como este aquí enriba. Pero teña en conta que este programa ten dous sprites, dous caracteres. Un deles é un paxaro. Un deles é un gato. E teña en conta cando premer sobre estes para abaixo esquerda, cada un deles ten os seus propios scripts ou programas asociados a eles. E ambos programas, previo aviso, inicio con clicked-- bandeira cando verde imos ollar para a cat-- cando a bandeira verde premendo. E así, de feito, cando bati o xogo agora, dúas cousas van ocorrer á vez. O gato eo paxaro son ambos vai operar simultaneamente para crear este efecto. E pode imaxinar o que está a suceder. Hai un loop eo paxaro e que o gato está nun bucle. O paxaro é só saltando como Eu era antes cando dixo ouch. Pero o gato ten claramente unha vantaxe. Hai outro bloque de detección que apunta o gato deliberadamente ao paxaro, neste caso aquí. Así, poderiamos provocar unha separación, mirando a través destes bloques, o que está pasando. Pero o ingrediente clave aquí é un deles. A ave, de xeito que este partido non é totalmente boring-- ou este animation-- comeza nunha dirección aleatoria. E o ordenador é escoller un número entre 90 e 180 esencialmente, de xeito que é un pouco Animación diferente de cada vez. E, a continuación, observar aquí, o gato está tocando o paxaro, a continuación, xogar o león catro sound-- o ruxido. Pero, mentres tanto na ave de paleta, temos iso. Para sempre, se non tocar o gato, só manter en movemento tres etapas. E entón aquí está outra peza do puzzle. Se é no bordo, ir. Entón, o paxaro é só unha especie de coidando do seu propio negocio, só voando arredor e saltando, e é realmente o gato que a lóxica condicional para determinar se tiña pego o paxaro. Todo ben. Entón imos facer outro aquí, está a ser chamado Hi Hi Hi. E este aquí só fai isto nun loop para sempre. Pero notice-- como é que imos deixar este programa moi aburrido? Bata a barra de espazo. Porque se eu fai iso, o program-- man esquerda ter en conta que é constantemente listening-- é o prema a tecla espazo. Se a barra de espazo premida, e se é así, o que fai? Fai unha técnica moi común. El define unha variable igual a algún valor. Pero cambia este valor. [? Así aspecto?] con base no I shape-- ten unha variable que escribiu previamente chamado Silenciado, que só di si ou non. É o son mudo ou non? Verdadeiro ou falso? E noten, eu digo isto-- se silenciado é cero, entón cambiar a un, else definir mudo-a para cero. Entón, só tes que virar o valor de cero a un. Eu podería done-- cambia-lo de dous a tres e 3-2 ou 4:56 ou 5:56. Pero iso non importa o que os números que eu uso, mentres eu sigo cambiando-se o contrario. E o máis calquera programador sería só escoller cero e um-- falso e certo, off e on-- para representar este. E iso aínda está en execución. Se eu acertar a barra de espazo novo [SEAL sons] O programa aínda está en execución. Porque non hai ese outro script que di que, para sempre facer o seguinte. Se a variable silenciado é igual zero-- por iso, se non está silenciado é o logic-- se é falsa ou non, logo reproducir o son, porque non está silenciado. Debe reproducir o son e, a continuación, creo oi oi oi por dous segundos e despois esperar, e facelo de novo e de novo e de novo. E así, deste xeito temos un camiño para persoas a-- para programas para interactuar. E non ten que ser como datada como os outros. De feito, cutucando circundar-- sen trocadilho intended-- alguén pasou unha enorme cantidade de tempo en internet execución PokemonGo en perigo. Inda geolocates-lo Cambridge ou Allston aquí. Entón, se quere ver tamén o que a xente pode facer é isto-- menú moi extravagante. Prema aquí. Ese son eu coas miñas claves de frecha agora. Eu estou indo a ir despois diso. Clic. E agora prema o Pokéball. É dicir, eu creo que é suposto prema o Pokéball. Todo ben. Entón eu fixen iso. Podo pasar por riba aquí. E esa persoa implantado un pouco máis Pokeballs máis aqui-- tres Pokeballs. Imos publicar unha ligazón a esta en liña para que poida xogar. Pero aviso hai só algúns bloques de construción básicos. Ela parécese moito máis sofisticado, e é. Isto é impresionante e máis do que sería normalmente esperar, por suposto para conxunto de problemas cero. Eu non teño ningunha idea de canto tempo esa persoa pasou en liña. Pero é todo só un loop. Hai un xogo de son. Hai algún tipo de circuíto escoitar a si estou bater a frecha para arriba e abaixo a frecha ou á esquerda e á dereita, e logo, se é así, está movendo -lle algún número de píxeles. E entón se eu premer outro sprite, hai algún tipo de condición if alí. Si, iso está quedando moi intensa. Nós imos parar. É todos os bloques básicos de construción. Non hai outros outros ingredientes que os que xa mirou xa. Con todo, aquí, déixeme facer un conxunto final de exemplos que pinta un cadro moi do que se pode facer aquí. Aquí está un programa moi sinxelo que só fai isto-- tose, tose, tose. E con base só en nós miramos ata agora, onde está o evidente oportunidade de mellora. Este programa é correcta. El tose por tres veces, que é o que eu pretendía. Pero está mal aplicado. É mal deseñado. Por que? Si. Non é un loop. E non é tanto que non é un loop, é que hai unha morea de redundancia. Non é copiado e código pegado, por así dicir. E a solución, probablemente é de feito un loop. Entón deixe-me ir adiante e mellorar enriba diso. E eu vou arrastralo los para acá. Deixe-me ir adiante e conseguir unha repetición bloque, cambiar isto para tres. Eu estou indo a xogar fóra algúns destes bloques. E podes ver que é moi intuitivo. Arrastrar e soltar e cousas aparecen e desaparecen finalmente. E podo simplemente arrastrar este aquí, e agora eu teño unha versión máis limpa aínda. Pero vostede sabe o que? Hai a oportunidade -Se agora a abstraction-- para comezar a definir un novo vocabulario que o MIT non anticipar. Hai que esperar e repita e para sempre e se, pero o que se eu queira introducir a palabra tose como un bloque? E se eu queira unha peza do puzzle cuxo propósito na vida é a tose? Ben, imos ollar para esta versión aquí, o que eu fixen como segue. Magic, eu creei este puzzle anaco aquí, que cero permítelle. E, de feito C e Python e JavaScript son permitirá que faga iso tamén. Pode crear o seu propio costume pezas que chama o que quere. Neste caso, tose sente como unha definición razoable. E, a continuación, con estas pezas abaixo Aquí pode definir o que significa. Eu arrastrado e caeu de esta paleta aqui-- máis blocks-- este gran vermello bloque, onde eu escriba na tose como o nome da miña nova peza do puzzle. E entón eu digo sempre que un usuario chama esa nova peza tose puzzle, facer unha palabra que dicir e unha espera. E así ata aquí no meu bloque de repetición, Podo só tossir tres veces. E eu diría, especialmente Se agora ocultar ese detalle. Quen lle importa como tose é aplicado? Todo o que me importa como programador que podo tossir. Eu non me importa como dis é aplicado. Só me importa que o gato pode dicir algo. Poida abstraerse ese detalle e incidir só sobre o que está na pantalla aquí. Pero podo dar un paso máis aló. Teña en conta que aquí, eu teño aplicou o circuíto tres veces. Pero e se en vez diso eu coller esta versión? E se, no canto nesta versión aquí, Só cambiar a miña peza do puzzle para tomar un argumento e entrada en si mesmo? E esa entrada pode ser un número como tres. Entón, agora, se eu estou escribindo un programa e quero o gato a tossir, Podo realmente dicir o puzzle peza cantas veces a tossir, porque no fondo aquí, un columbófilo versión destas pezas do puzzle personalizado permíteme especificar que tos realmente leva un input-- leva un argumento como este. E vostede sabe o que? Poida que eu entendo, agarde un minuto. A tose é o same-- é fundamentalmente a mesma idea como espirros. É só un diferente palabra na pantalla. Poida abstraerse máis e aplicar esta versión final dun tos, que a primeira vista é moito máis complexa procura. Pero teña en conta o que eu fixen. Teño agora generalized-- genericized realmente-- esta peza de puzzle a ser chamado dicir palabra n veces. E agora eu teño dúas novas pezas do puzzle aquí definir tose n veces. E o que fai a función de tose facer? Que o meu costume facer parte do enigma? El só chama o bloque digamos, pasando a palabra que quero dicir, pasando o número de veces que quero dicir. Porque agora podo aplicar espirro, simplemente dicindo achoo, neste caso, un determinado número de veces. E por iso estou capas e capas. E, de novo, a clave aquí non é como eu aplicado, pero o feito que se eu só literalmente mover los para fóra da pantalla, vexa como simple, se non moi o meu programa agora parece. Porque fai o que di, eu abstraído o que está dentro desa caixa negra. el pasa a ser unha caixa roxa aquí, pero obstruída fóra o que está dentro porque eu non me importa como funciona. Só me importa agora que funciona. E, de feito, no problema definir cero, isto é exactamente o tipo de superposición de ideas que vai teñen a oportunidade de explorar. É exactamente a oportunidade de aplicar técnicas de resolución de problemas, para o que é, probablemente, un ambiente descoñecido. E se non programado antes ou programado antes, vai descubrir que hai un pouco de algo neste ambiente para todos. E con conxunto de problemas un nunha semana, imos ser trasladada para focando nunha linguaxe de alto nivel chamado C-- ou mellor, un menor linguaxe de nivel chamada C-- que é aínda máis poderoso, aínda que sexa algo máis enigmática a primeira vista. E vai entender por TL de hoxe: DR, que este problema definido ten un menor a xanela de tempo do que os do futuro, simplemente porque ten que considerar que é moi accesibles. E non se preocupe se engadir a clase tarde. Nós imos solucionar isto antes de tempo. E antes de suspender os traballos por bolo, imos rematar con só unha mirada de dous minutos polo que o espera aquí no CS50. [Reprodución de música] Todo ben. Isto é todo para CS50. Imos velo pronto. O bolo é agora servido. [Reprodución de música] COLUMNA 17: Xa escoitou falar dun ano sabático, xefe? COLUMNA 18: Se houbese máis baixo o capó.