[Powered by Google Translate] [ROCK] [Música - "Happy Together" As tartarugas] DAVID Malan: Hoxe, comezamos a nosa explotación do fundamentos da ciencia da computación e nosa introdución, Agora, coa técnica de programación, sendo que é só un exemplo. Pero, na mesma liña de resolución de problemas, sabe que Día CS50 do enigma tradicional é mañá. Se aínda non deu RSVP para este evento, pode ir cs50.net/rsvp. Pode traer equipos de dous, tres ou catro. Será desafiado con problemas como o que viu alí enriba no comezo. Todos os novos problemas deste ano se participou o ano pasado, e terá unha oportunidade tras gañar algúns premios fabulosos. Entre eles, un Wii e algúns certificados de presente e como, todo ao mesmo tempo saír con CS50 alumnos e compañeiros e pizza e Facebook. Entón máis sobre iso mañá, se desexa. Este é, entón, CS50, para aqueles de vostedes unirse a nós para o primeira vez. E sabemos que este curso é particularmente determinado a conseguir través deste curso ao seu fin, en que punto se vai ter non só unha comprensión destes fundamentos da ciencia da computación, pero vai ter este conxunto de habilidades moi práctico, que pode levar a seu propio departamento, se é ciencias de enxeñería, matemática aplicada, as ciencias físicas, naturais ciencia, ou semellante. En realidade, o que é tan emocionante sobre ciencia da computación estes días é que é tan aplicable a todos os tipos de campos. E aínda que hoxe, imos só rabuñar a superficie dun linguaxe de programación moi tradicional coñecida como C, imos en vez ollar para algo chamado Scratch, algo que esa historia de amor cookie foi aplicado por un dos seus antecesores nos últimos anos, para contar historias, para crear xogos, para crear arte interactiva, e para realmente comezar a involucrar noso mente en torno a algunhas das construcións fundamentais que subxacentes a programación, pero nun contexto, como podes ver, que é moito menos asustado, iso é moito menos misterioso, que vai ver antes do tempo. E entender, tamén, para aqueles de vostedes só unirse a nós esta semestre, as frases en que estamos encerrados charla do mércores, non é tan importante cando rematar en relación ao seu compañeiros nesta clase, pero onde, ata o final do semestre a semana 11, acaban-se mesmo en relación a este mesmo día. Entón, sen máis delongas, este é tamén de notar que os menos cómodos, aqueles en algún lugar no medio, son tamén, polo proxecto do curso, non a calquera inconveniente vis-á-vis os máis cómodos que vén a este clase. Como podes ver ao longo das semanas que virán, temos diferentes pistas para o fondo volta dispares, seccións para aqueles menos cómodos, máis cómodo, os algures no medio. Como podes ver este fin de semana e na próxima semana, dúas versións a maioría dos conxuntos de problemas, tanto na edición estándar e hacker así que todos poden se auto-seleccionar o camiño co que son máis cómodos. Entón, hoxe, nós mergullo neste programación linguaxe chamada scratch. É unha linguaxe de programación gráfica, e aínda ten o mesmas características dalgunhas das linguaxes de alto nivel que imos explotar máis tarde no semestre, entre elas C e JavaScript e PHP. Pero iso vai permitir previr algunhas das distraccións no inicio da sintaxe, cousas como punto e coma, parénteses, e outros detalles secretos que, a primeira vista, non só en todo intelectualmente interesante e tenden a entrar en o camiño de unha comprensión fundamental. En termos de estrutura de soporte de agora á fronte, está realizada ferramenta, CS50 discutir, que será comunicada no seu curso web aínda hoxe, é o foro de discusión en liña en que vai ser capaz de facer preguntas uns dos outros e persoal, e é tamén unha ferramenta, como veremos a próxima semana, que nós imos usar bastante integratedly en horario de oficina tamén. En realidade, o horario de expediente comezar o luns, e, francamente, o primeiro semana do horario de oficina é fundamental bastante baixa. Eu non creo que vai atopar todo o que Scratch inaccesible. É bastante auto-explicativo, como veremos, e así o que imos usalo para hoxe é de extraer algunhas das ideas fundamentais, que, a continuación, continuar durante o resto do semestre. Pero a partir Luns, ás 8:00 PM través 23:00 será o horario de expediente en Annenberg máis de pausa cerebro. Paso dúas comezará esta noite, entón nalgún momento deste fin de semana, ir cs50.net/section, e vai ser feitas unha serie de preguntas. Entre eles, como describiría o seu nivel de confort a partir de hoxe? Non hai ningunha regra dura e rápida como a que está en que balde. É exactamente o tipo de cousas que probablemente sabe, se están entre os menos cómodos ou doutra forma. E agora, orientacións. A especificación do conxunto de problemas para esta semana, tanto por defecto e edición de hackers iguais, conectado neste cs50.net partir de agora. E vai ver que a primeira destas edicións, a edición estándar a cada semana, é acompañado por algo que chamar un paso a paso de código, unha sesión liderada por un dos compañeiros de curso de ensino para oriente-lo, proporcionar consellos sobre, e se por un camiño particular cando se trata para iniciar eses conxuntos de problemas. Así, con cada un destes conxuntos de problema, se está sempre querendo para si mesmo, onde eu comezo, comeza con estes orientacións. E, de feito, permitan-me presentar Zamyla Chan, este compañeiro de anos de ensino que estará levando cada unha desas orientacións. Zamyla? [Aplausos] ZAMYLA Chan: ¡Ah, ola, todos. O meu nome é Zamyla. Eu son un Júnior de enxeñería estudar na Winthrop House. Pero eu tentar encaixar como cursos de informática moitas ciencia como eu Pode, por iso que eu estou realmente animado para ser líder esta orientacións do ano. Paso a paso, para min, eran unha parte esencial da miña CS50 experiencia. Durante o paso a paso, para cada p-set, imos pasar por o conxunto de problemas xuntos, ollar sobre os problemas, tipo de dividídelos en mordidas gerenciáveis. Vou che dar consellos, técnicas, para obter a través de e comezando. Espero ver todos vostedes nas orientacións. Se non pode facelo en persoa, entón por favor, poñerse en sintonía liña. DAVID Malan: Excelente. Grazas, Zamyla. Entón entender que orientacións son, de feito, o venres tarde, pero este é deliberadamente por proxecto de xeito que mesmo se prefire non asistir ás clases o venres tarde, os vídeos serán todos ata o máis rapidamente sobre o fin de semana. Así, entender que cs50.net serán todos do Zamyla orientacións. E que non hai data e hora de hoxe, 3:00 PM, Harberd Hall, 104. E algúns dos compañeiros de ensino tamén teñen preparado algunhas observacións para ti en rebeldía a darlle un pouco de perspectiva sobre o que a súa experiencia que entra e saíndo do CS50 como era. Entón, se puidésemos reducir as luces por só un momento, eu darlle algúns dos funcionarios do CS50. Jackson Steinkamp: Eu levei CS50 o ano pasado como un calouro na caer, e é absolutamente estoupou miña mente. Eu nunca tomara clases de programación antes, e nunca entrou con calquera ciencia da computación experiencia. E, así, eu oín o zunido sobre a clase e decidiu levala. Julia MITELMAN: Foi moi divertido, moi envolvente. Eu aínda ata hoxe - Eu só vin recentemente eu teño o disco que David nos deu no noso primeiro día de clase. Eu tiña colgado na miña parede. Este é, probablemente, un pouco nerd, pero eu desliguei na miña parede durante a clase como un recordatorio de como foi legal. Travis Downs: É tan embaraçoso. Jackson Steinkamp: Ciencia da Computación é algo que que tentar mesmo se non é un para as ciencias tradicionais. É a súa propia experiencia, e CS50 vai asegurarse de que vostede é soportado ben con ela co seu verdadeiro exército de TFS. ALI Nahm: Tomei isto como un calouro, e entón eu fixen unha morea de novos amigos. Eu tamén fun presentado a esta concentración toda e escola enteira de enxeñería, e por iso eu recomendo e a benvida á nosa familia CS50. Yaniv Yacoby: CS50 só ensina a usar ferramentas que son amplamente accesibles. Só precisa dun portátil, precisa dun navegador web, e Necesitamos aprender a escribir un código, e realmente pode construír cousas legais. Karen Xiao: É tan legal ser capaz de facer algo e as persoas usalo e as persoas velo, e iso é o que realmente adoro. Tim McLaughlin: - un sentido de comunidade, eu creo que, neste naturalmente máis do que calquera outro curso que fixen ata agora. Non está só tomando outro - non está enchendo outro requisito. Vostede non está indo só para conferencias e indo á sección. Pero está facendo toneladas de cousas que son todos sobre programación e todo sobre tecnoloxía, pero non realmente se sente como unha clase maior parte do tempo. Downs Travis: E o primeiro día, eles distribuíron bolo, e I foi inmediatamente vendido. Jacob PRITT: doces e pizza gratis. ZAMYLA Chan: - independentemente do seu nivel de interese, eu creo que que CS50, vai divertirse, e vai ser intelectualmente estimulada. MARK GROZEN-Smith: É sempre unha festa na aula, e é unha festa cada noite traballando no seu p-set. Jackson Steinkamp: Cada vez que termine un conxunto de problemas, Vai sentirse como rematar un proxecto. Melissa NIU: Foi o primeiro ano, e eu estaba feito compras. Eu tiña os meus catro clases listo, e eu estaba en Annenberg. E eu topar con un amigo, e el di: Ola, eu estou a mercar esta clase chamada CS50, e ten que vir comigo. Acabou levándoo a caída, e despois de que a clase, eu penso que quizais eu vou menor no CS. Pero aquí estou eu, tres anos despois, aínda estudando ordenador ciencia e realmente facelo como un gran, e eu amei cada momento da mesma. ROB BOWDEN: Eu non teño idea. ALI Nahm: Imos ver. Melissa NIU: loucura. COLUMNA 1: Eu sinto que eu quedaría moi clichê. Eu tiña acaba de dicir, como impresionante. Yaniv Yacoby: Accesibilidade. Jacob PRITT: doces e pizza gratis. Travis Downs: Non se pode desactivar unha clase que distribúe bolo. Tim McLaughlin: Enerxética. Vipul Shekhawat: esencial. ROB BOWDEN: Deixe-me pensar unha resposta. Eu creo que eu teño algo. Oh, Deus. Si, o meu nome é Rob Bowden, e este é o CS50. [Aplausos] DAVID Malan: Todo ben, entón imos comezar a pintar un cadro da dirección en que podemos ir, e imos introducir este concepto aquí coñecido como pseudocódigo. Así, non é un pseudocódigo programación linguaxe en si. Non é nada técnico, por si só, pero é só unha especie de xeito xeral de expresar con bastante precisión, algoritmicamente bastante, bastante processualmente, pero sen ter que se preocupar co idioma que está expresando dentro É un modelo de Inglés e linguaxes de programación con que ocorrer de estar familiar, para que poidamos comezar escribir este tipo de cousas, como imos nós. E, de feito, José, eu podería pedir-lle enriba do escenario para ser escriba aquí? Eu teño ido á fronte aquí con antelación e esquecido de poñer nalgunhas medias hoxe, e este vai ser entre os nosos máis exemplos ridículos. Agora, eu teño de ti aquí. Vou facer parte medias. Polo tanto, temos aquí un bloque de borrador pouco. Este é literalmente só TextEdit en un Mac Non estamos realmente indo para escribir un programa executable, pero Nós só estamos indo para comezar a esbozar baseada en pseudocódigo nalgúns dos consellos que fornecer para min aquí. Entón, aquí está a miña pila de medias en casa. Eu non teño medias cando espertar pola mañá, e agora Cómpre escribir un programa, un algoritmo do tipo, co cal para obter estas medias nos meus pés. E ao longo do camiño, imos ver se a xente tropezar, ou atopar, algunhas das ideas que vai ter que comezar a pensar moito máis en serio cando a programación para que os seus programas non se comportan así como desexado. Entón eu sentir aquí. Eu teño a miña pila de medias. Cal é a primeira cousa que un ser humano racional faría facer cando o obxectivo é poñer un par de medias? Alguén me dea un paso, e só un paso. Si? Audiencia: Dobre abaixo. DAVID Malan: Dobre abaixo, todo ben. Paso dous. Paso dous. Audiencia: Tome a súa media. DAVID Malan: Tome a súa media. Ok, ambigüidade tan leve aquí, e este é un dos primeiros pedras de tropezo que estamos supostos deliberadamente atopar aquí. É un pouco ambigua, entón tome a súa media. Todo ben, vou levar un regalo, pero un ordenador, entender en só un pouco, non vai ter este tipo de instinto humano só escoller o máis próximo. Nós imos ter que empezar, en pouco tempo, expresando nos máis precisamente. Todo ben, entón o segundo paso é obter o seu pé de media. Imos leva-lo. Etapa tres. Na parte de atrás. Audiencia: Atopar un par correspondente. DAVID Malan: Atopar parella. Ok, entón iso é bo. Eu tiña que escoller esa media. Así, o obxectivo é atopar unha media correspondencia, agora, pero o que que significa isto? Un ser humano razoable estar, así como o mércores, cando eu só sabía como atopar Mike Smith, un libro de teléfono, só unha especie de foi co seu instinto. Pero aquí, é, obviamente, esta media aquí, pero un ordenador Non vai ser tan instintivo. Un ordenador vai ter un conxunto de bits, coma nós discutido o mércores, e eses son organizada de algunha maneira na memoria. Pero o punto é que un computador ten só a capacidade de mirar para as cousas dunha vez, e de feito, aínda que humanos - aínda que se sente como eu olhei para abaixo e unha división segundo despois sei onde o troco, meu cerebro e os ollos presuntamente fixo un rápido roçar deses medias, e despois pechada para o que está en cuestión. Entón, se imos ser aínda máis deliberada agora como un ordenador, como fago para atopar ese par de correspondencia? Ben, temos que só. Temos que quizais loop sobre esta confusión de medias en piso en que eu digo algo para cada media, procura-lo Se, e se a mesma forma e tamaño como o outro, entón punto, punto, punto, imos continuar a historia. Así, para cada media, así que eu incorporarse un regalo. Eu comprobar que é igual a este. Non é, por iso eu coloque de lado lado. Entón eu iterar novo. É este un igual? Non, non é, entón eu poñelas de lado. É este? Non Ese? N, e así por diante. E entón, finalmente, espero, vou atopar ese media aquí. Entón, se é o mesmo, tamaño, tome. E agora, cal sería o noso seguinte paso aquí? Si? Audiencia: Identificar a dereita da esquerda. DAVID Malan: Ok, identificar dereita e esquerda, de modo Afortunadamente, este tipo de obras. Un pouco simétrica, ou eu só canso desa forma. Todo ben, entón eu identifiquei o dereito. E agora, antes de proseguir, deixe-me apuntar que José facendo aquí como unha especie de programador verso. Entón, de novo, non hai unha forma de facelo, pero ademais de só numeración das liñas, Joseph xa comezou a facer iso especie de retirada. En realidade, esta é unha convención moi común na programación, polo que, cando fai algo iterativo, looping estilo, como estamos implicando coa frase Inglés "para cada Media, "a convención en pseudocódigo e, como veremos, linguaxes de programación normal, é só guión. Prema a barra de espazo, algunhas veces, prema a tecla Tab ou similar, para que aninhada debaixo "para cada media" é o anaco de cousas que cómpre facer, como resultado dese loop. Entón, iso é todo o que está transmitindo semanticamente. Agora, con todo, o "Si é a mesma forma e tamaño," o feito de que "Take it" é recuado aínda significa só esa é a única cousa que ten que facer esa condición, se ese sector, que bifurcación na estrada, é de feito realidade. Entón, agora aquí, estamos en catro etapas, identificar dereita e esquerda. Eu identifiquei dereita. Me dea o paso cinco. E, tecnicamente, é realmente chamar para cada cousa - vostede probabelmente debería numerar tódalas liñas imos facelo. José: [inaudível] DAVID Malan: [inaudível]? Ok, todo ben, todo ben, imos facer do seu xeito. Todo ben, entón paso cinco, como é que imos facer a media dereita? Como debemos proceder seguinte visita? Si? Audiencia: Levante a perna dereita. DAVID Malan: Levante a perna dereita, todo ben. Paso seis? Rapidamente. Si Audiencia: Buscar unha extrema aberta do media. DAVID Malan: Ok, atopar a extrema aberta do media. Tan bo. Entón, aquí, honesta, un instinto moi común sería só poñer media dereita, pero que tamén é bastante ambigua. A menos que o ordenador ou humano sabe exactamente o que iso significa, non vai ser para executar esta, por iso aquí, eu teño atopou a apertura do stock. Paso sete? Audiencia: Preme os dedos dos pés. DAVID Malan: dedos Touch. Ok, entón agora nós imos - Todo ben, eu vou tomar algunhas liberdades aquí. Grazas. Paso oito? Engade media. Ok, entón agora eu creo que estamos preto o suficiente para clasificarse para tomar iso na casa. Todo ben, entón este sobe. Vou tomar algunhas liberdades coa que significa, en realidade. Pon a media en. Todo ben, agora o paso nove? Audiencia: Coloca o pé. DAVID Malan: Grazas. Paso nove, puxo o pé para abaixo, e agora podemos repetir. Así, presuntamente, agora podemos ir ao paso 10 e dicir identificar deixou media, pero iso é probablemente xa feito. E entón, podo clasificar de repetir estes pasos. Pero este tipo de petición de principio. Antes, a última vez que quería repetir algo, nós fixo iso de forma iterativa, de novo e de novo, un FOR Cada loop por así dicir. Será que ten sentido usar un circuíto para tratar cos dous á esquerda e á media non? Porque parece que estas operacións son moi idénticas, excepto polo feito de que un comeza aquí e un comeza aquí? Nós loop, ou imos só manter as medidas de escritura 10 e 11 e 12? Audiencia: Bucle. DAVID Malan: Ok, entón loop. En realidade, eu podería dicir só continuar. Entón, por que é este o caso? Ben, este é realmente o primeiro da nosa non obvio decisións de proxecto e, de feito, unha das métricas coas que imos comezar a avaliar, para nós e para ti, o calidade dun programa é o quão ben deseñado que é. Xa fixo a cantidade mínima de traballo necesario para facer o traballo o máis axiña, tanto en termos de o seu tempo ou en termos de tempo de funcionamento do ordenador? Cantas operacións que hai que para facer? Entón, sen dúbida, esta é unha oportunidade para un loop porque así que eu comezar a copiar e pegar, como Joseph efectivamente ía comezar a facer nun momento, está perdendo o seu tipo de tempo, e está sendo dobremente significativo. Pero, ao mesmo tempo, trátase realmente só dous especial casos, á esquerda e á dereita. E que, antes, eu podería ter 10 ou 20 ou máis medias en unha pila, el definitivamente non ten sentido ter 50 liñas de código dicindo comprobar esta media, así que a próxima, entón a próxima. Aquí, é un pouco menos evidente, e quere propoñer que podería ir de calquera maneira. Podiamos ter ese ciclo, aínda que só lazos dúas veces, ou podemos simplemente copiar e pegar un pouco aquí, a fin de comezar o traballo feito. Pero este programa é buggy, por así dicir. Pode ter algúns erros, erros, ou casos de canto, para falar, que realmente non prevista. Nada deu mal desta vez, pero o que podería ter dado mal durante a execución deste programa? Audiencia: Non ten ningún medias. DAVID Malan: Entón non pode haber medias hai ningunha. Entón, imos considerar que no caso de canto. Entón, se nós podería rolar para atrás ata o primeiro paso, entón o primeiro paso foi combar-se para que o check-out. Paso dous, incorporarse súa media, pero a continuación, atopar medias combinando, identificar dereito. Nós medio que fixo unha morea de casos, e dicir, francamente, porque o programa ás veces falla. Se o desenvolvedor, fixeron certos presupostos, como certamente non vai ser medias ou, certamente, alí vai para ser deixado en memoria do ordenador, certamente non vai ser espazo libre en disco no disco duro - Ben, se fai esas premisas, e que non é, En realidade, a realidade, quen sabe ás veces o que o equipo de vai facer? E ás veces, cando comeza a bola de praia fiación ou O Windows conxelado ou similar, que é precisamente porque algúns programador non adiantou os casos chamados de canto. O que máis podería ter dado mal neste programa? Si? Audiencia: Non ten unha perna dereita e un na perna esquerda. DAVID Malan: Ok, pode non ter tanto perna dun dereito e un perna esquerda, e por iso este programa pode non ser universalmente aplicable. Outros? Audiencia: Pode ter pego unha media orfo. DAVID Malan: Eu podería ter pego unha media orfo, xa que logo, un de non-casamento media que só non ten irmáns, porque eu teño perdeu, está rasgado, é na lavado aínda, ou algo semellante. De xeito que, tamén, non foi tratado. Si? Audiencia: Vostede xa debe ter medias. DAVID Malan: Eu xa podería medias. Eu realmente non verificar. Se non ten medias, a continuación, proceder para facer liña de un e dous. E iso podería acontecer. Durmir con medias e similares, así que, tamén, un caso de esquina moi razoable. E quizais outro? Audiencia: A media é de dentro para fóra. DAVID Malan: Entón, a media é de dentro para fóra, por iso fixemos ningún erro comprobar, en definitiva. Non comprobar o estado do mundo é como esperamos. Non comprobar se realmente atopamos o que está a procurar. E aínda que esta é unha especie de exemplo ridículo envolvendo medias, ao final do día, é dicir exactamente o tipo de mentalidade que precisa ter ao escribir programas, mesmo en cero, así como en C, en JavaScript, en PHP, porque se non, os seus programas exhiben a equivalente que bola de praia fiación ou só producir resultados imprecisos. Grazas tantos aquí para o noso escriba de Joseph. [Aplausos] DAVID Malan: Todo ben, entón o que é, en feito, un programa de ordenador? Ben, imos dar unha rápida ollo a unha un representante aquí. Polo tanto, este é un programa escrito nunha linguaxe chamada C. C é bastante antigas estes días, pero moitas novas linguaxes son construídas enriba dela. En realidade, PHP, unha das linguaxes de web-centric imos empregar para finais do prazo, ela ten o que se chama intérprete, un programa que está escrito en C, pero máis sobre iso en moitas semanas a partir de agora. Pero este programa, e iso é o que significa escribir un programa, aínda que moi simple. Temos algunha sintaxe críptica aquí, pero pode probablemente creo que, mesmo se nunca programou antes, o que este programa fai. En realidade, eu non sei o que printf é, pero certamente imprimir evoca a idea de imprimir algo. E entón si, este programa vai finalmente para imprimir as palabras "Ola, mundo". Agora, se ten un Mac ou PC ou un ordenador con Linux, as probabilidades son, polo menos, se baixou algún libremente software dispoñible, podería ter sido escrita de programas en seu propio ordenador portátil por un bo tempo agora. Mac OS, por exemplo, hai un programa chamado Terminal que ven con un Mac, que normalmente é a súa Utilidades da carpeta, e que, xeralmente abre un negro e branca ou unha ventá en branco e negro en que ten un ventá na que podes escribir ordes. Polo tanto, esta é realmente unha reminiscencia do que os ordenadores adoitaba ser antes gráfica de usuario interfaces, as interfaces gráficas, veu xunto. Agora, en Windows, ten un mecanismo semellante na forma do ventá de consola. Pero o que eu vou facer aquí é abrirse, digamos, TextEdit de novo, entón o mesmo programa que estaba usando para Nun momento pseudocódigo atrás, e eu estou indo a ir adiante e escribir o meu primeiro programa. Engadir stdio.h, o que iso significa, int main baleiro, o que iso significa, e despois no medio aquí, printf ("Ola, mundo".). E entón cita preto, pechar parénteses, punto e coma. Agora eu estou indo a ir adiante e bateu Command-S. Vou para ir adiante e salva este como hello.c, para a convención en no mundo da programación C é o nome do ficheiro de punto c. Vou só poñer no directorio John Harvard Casa, aquí, faga clic en Gardar, e agora eu estou indo a ir a esta ventá de terminal, que de novo é o poder branco e negro onde eu poida executar comandos. Podo realizar programas, escribindo o seu nome, e non por dobre clic iconas no sentido usual. Pero a cousa é o C é que unha lingua como o primeiro C vén desta forma, algo chamado código fonte. Algo que parece un pouco como o inglés, pero é definitivamente menos como o inglés que un pseudocódigo José momento atrás. É un pouco máis escuro. Parece seguir algúns patróns ou normas. O feito de eu ter chaves, comas, multimedia, claves ángulo, se sente como un ordenador veu con esa tipo de linguaxe. Pero se eu for, agora, para esta xanela de terminal, que pode executar un de mando que vai converter ese código fonte é algo chamado de código obxecto. Isto vai converterse Inglés sintaxe semellante a ceros e uns, os mesmos tipos de ceros e uns, nós falou sobre mércores. Agora, eu estou indo a executar un comando chamado Clang. Máis sobre iso nas próximas semanas, pero é un programa con que podo converter hello.c nun monte de ceros e uns. Agora, eu executar este comando. Xa corrín Clang, e entón eu dixen-se en facer este ficheiro chamado hello.c, que eu creei un momento atrás, e nada parece ocorrer. Pero, en realidade, se eu coloque arredor do meu directorio home, quere ver que este programa a.out estupidamente chamado agora existe. Este é só o nome estándar para un programa ao escribir en C. Podemos substituír este, eventualmente, pero é o a.out nome do programa que eu só convertidos en ceros e uns. E agora que está ceros e uns, o meu Mac, neste caso, ou PC con Windows, pode entenderse os bits, os ceros e uns. E entón cando presione Enter, eu vexo "Ola, mundo!" Pero é un pouco buggy. Eu non sabía ben dicir "Ola, mundo: aire: -! Jharvard". O aire é o nome do meu ordenador. Jharvard é o nome da conta, entón o que eu claramente omitir do programa? Algún tipo de salto de liña. Eu non bati o equivalente a intro ou o retorno de coche, e isto é, de novo, proba do feito de que ordenadores pode só facer o que lles din que facer. E o feito de eu non dicir ao ordenador mover o cursor á seguinte liña - Ben, iso certamente non vai só facelo presunçosamente para min. Entón, se eu volver para o meu programa, e digo \ n - Entón, \ n, como veremos en breve, é o camiño da representando cousas estrañas como novos carácteres de liña, cousas que doutra forma sería o resultado da preme a tecla Enter. Pero, polo de agora, só sei que bater a tecla Intro se só facer o noso código parecer estraño, para que o mundo decidiu, vostede sabe o que, para manter as cousas máis bonitas, para mantelo en liña, imos só dicir \ n representa unha nova liña. Deixe-me volver a gardar o meu arquivo, volva para a xanela do terminal, e re-executar a.out, Intro. Aínda buggy, pero por que? Audiencia: [inaudível] DAVID Malan: Si, por iso eu teño recopila-lo. Entón, para compilar un programa só significa convertelo lo de fonte código para código obxecto do código fonte, para ceros e uns. Agora, o simple feito de eu acertar Aforrar neste TextEdit non tendo sobre os ceros e uns, porque eu teño primeiro diga Clang hey, eu mudei as liñas de código, o código fonte. Debe rexenerar a.out. Nada parece acontecer, pero en un ordenador, na liña de comandos, por así dicir, cando nada pasa, que normalmente significa que está todo ben. Cando algo pasa, iso significa vostede romper todo, en xeral. Entón, imos agora ir a.out, e de feito agora, eu teño "Ola, mundo ". E agora, o que pasa con eses ceros e uns? Onde, de feito, son os? Ben, eu non podo realmente só tipo de fuçar moi eficazmente. Deixe-me abrir o editor de texto. Aquí está a.out. Deixe-me ir adiante e abrir isto, e este é, aparentemente, o que o meu programa parece. Entón, eu abrín, non hello.c, pero a.out. Pero este non é realmente o que o meu programa realmente é. Claramente, este é un tipo de carácteres alfabéticos. Eu non vexo ningún ceros e uns, pero este é porque a.out é un programa. Ceros e uns - pero TextEdit, como o nome suxire, é así como o bloque de notas de Windows, é só un editor de texto, polo que é confundindo todos estes ceros e uns como se fosen, o que? Caracteres ASCII. Entón, recordo o mércores, só veu con esa cartografía arbitrario de números, ou bits, para letras do alfabeto e signos de puntuación e afíns. Entón TextEdit, que é un editor de texto e interpretar mal Estes estándares de ceros e uns que son supostos ser palabras de impresión como "Ola Mundo". É exhibídelos como ASCII, e é por iso que parece un pouco confuso. Agora, hai algúns consellos de corrección aquí. Teña en conta destacar, hai unha pitada de verdade "Ola, mundo ", en algún lugar en que o programa é a frase que escribiu. Pero imos adiante e ver agora con un programa diferente. Este non é que imos usar, que moitas veces, pero tamén ven con un Mac e vai estar dentro do aparello CS50. Deixe-me ir adiante e abrir un programa chamado XXD. Volver o día, a maioría dos programas foron nomeados bastante enigmaticamente, e así a tendencia continúa. Pero B significa cuspir fóra este programa como binario. Non executa-lo. Amosar-me como ceros e uns, e este é o C programa que acaba de escribir. Agora, eu, como un ser humano aquí, eu sinceramente non teño idea do que Estes varios patróns de ceros e uns representan. Volver o día, eu, cos meus tarxetas perfurados ou similares, sería realmente ten que buscar o que estes varios patróns de 01111000, realmente representan. Ou peor, eu tería que facer a perforación ou a creación destes patróns de ceros e uns. Pero, por agora, asumir a fe que unha CPU, Intel Inside, así para falar, dentro de todos os nosos ordenadores estes días, sabe como interpretar estes ceros e uns. E algúns ceros e uns significan impresión. Algúns ceros e uns significa reproducir un son. Algúns ceros e uns significa tomar a entrada do usuario a partir dun teclado. Hai todo tipo de patróns diferentes, pero, afortunadamente, como seres humanos, en xeral, só precisa se preocupar coa programación en este nivel moi elevado. E noutras clases CS pode mergullar máis fondo e ollar en cousas como os ceros e uns, ou outras cousas aínda. Entón agora imos converter este. Imos pasar moi rapidamente para lonxe de C e pasar algo un pouco máis cómodo, un pouco máis emocionante, en que podemos volver nosas animacións e sons e afíns que claramente escapar nós neste Interface moi primitiva. Polo tanto, este mesmo programa en C pode ser representada, xa neste linguaxe de programación chamada Scratch deste xeito. Isto é o equivalente a este programa Ola Mundo escrito este enigma linguaxe de estilo peza chamada scratch. Entón deixe-me ir adiante e abrir este programa moito. É de novo chamado Scratch. El está dispoñible gratuitamente, e esta é a mesma cousa que comezou hoxe en. Entón, iso aquí é cero, e está dividido en algúns pezas diferentes. Na dereita arriba, temos unha chamada fase, e de feito, que é onde os cookies realizado só un pouco atrás. E en que estadio están as cousas chamadas de sprites, caracteres ou obxectos ou entidades. Isto realmente non importa como vostede pensa deles, pero eles son programables, cousas mobles e, neste caso, a programa que o noso alumnado escribiu ten unha parella de gingerbread galletas, un par de galletas circulares, todo un conxunto de corazóns, unha morea de lentes. Debido a iso, el ou ela é capaz de programar cada un destes caracteres individuais por separado. Agora, o que iso supón para programar estes personaxes? Ben, deixe-me ir adiante e prema en este cookie man esquerda e vaia á esquerda arriba aquí. Na esquina superior esquerda da pantalla do meu agora é o así chamada área de scripts. Esta é unha especie de lousa en branco, inicialmente, sobre o cal podo arrastrar e soltar pezas do puzzle que, francamente, facer exactamente o que eles din. Arriba desta pila de pezas de puzzle é a palabra Cando premendo Bandeira Verde, e se non entendeu antes, do xeito que eu comece a música premendo cookie foi, literalmente, unha bandeira verde. De modo que parte do enigma na esquina superior esquerda hai significa que cando o click humanos a bandeira verde, pasou a formar as seguintes cousas. Agora, o que biscoito continuar a facer? Eu realmente non sei como interpretar isto aínda, pero o biscoito aparentemente definir a súa ranura para cero, entón esperou tres segundos, a continuación, cambiou o seu grupo a un, entón esperou un segundo, a continuación, cambiou o seu suco de volta a un. E entón, que realmente parece un pouco de un erro, non debe ten que cambiar a súa rutina e outra vez a menos que sexa sendo substituida noutro lugar, pero esta serie de pasos é o que está ditando a conduta deste cookie particular. Entón, imos realmente rolar cara atrás e non mirar para algo tan complexa aínda. Deixe-me ir adiante e vai File, New, e ter unha ficha limpa. Entón, agora, realmente ter unha área de script baleiro, un escenario baleiro, co noso Scratch Sprite estándar, e na parte superior esquerda na miña pantalla que eu teño a paleta de todos os seus dispoñibles pezas do puzzle. E non vai pasar case que moitas destas cousas hoxe, porque, unha vez máis, a maioría son auto-explicativo, pero imos tentar categoriza-los e apuntar as semellanzas con estas linguas futuras que imos mergullar. E na parte superior esquerda aquí é a primeira bandeira verde cando premendo, entón deixe-me arrastrar esta aquí, ampliar un pouco. E se eu premer na bandeira verde, nada realmente acontece porque Eu non anexo calquera lóxica, calquera declaración por así dicir, a que a bandeira verde, entón deixe-me ir ata a Categorías máis aquí. Actualmente estou na categoría de control. Estou en vez de ir a descender para a categoría parecer, e Hai unha morea de cousas aquí que dicir Diga, Debería, cambio de cor do traxe Switch,. Así, pode facer cousas tolas con traxes e sons e outros semellantes. Deixe-me ir adiante e dicir Diga, e agora entender como eu arrastrar e soltar esta peza de puzzle, vai querer bloquear na forma correspondente. Entón, cando eu ir adiante e deixar de ir a miña rato, eles traban xuntos, e agora eu fose ata aquí e prema na bandeira verde, o gato, de feito dicir Ola, porque iso é o que está dentro desta caixa branca. Veremos en breve que esta caixa branca é o que se denomina argumento, ou un parámetro. É un xeito de cambiar o comportamento, neste caso, unha enigma, pero quero dicir exactamente o que eu dixen antes, dicir Hola, mundo, agora podo volver aquí, Xoga e "Ola, mundo" é o que se di. Entón, nós estamos literalmente a programación agora. Non é todo o que convincente dun programa, pero polo menos é un pouco de algo máis convincente do que parece, a A primeira vista, coma este. E podemos moi rapidamente obter aínda máis expresiva porque en cero, como en outras linguas, hai todo tipo de declaracións, non só dicir algo ou impresión, pero podes facer cousas como esperar, como acabamos de ver coa o cookie, un determinado número de segundos. Vostede pode reproducir sons no ámbito do scratch só como pode nun partido normal de son programa de ordenador. Podes comprobar o que son chamados de expresións booleanas. Entón, agora, imos comezar a engadir ao noso kit de ferramentas algunha terminoloxía que, en realidade, refírese ao exemplo que José e eu fixen aquí coas medias. Entón declaracións son só declaracións de feitos. Facelo. Unha directiva para o sprite, ou eu humano a, para facer algo. Unha expresión booleana é algo que ten un valor, unha chamado valor de verdade, que é tanto un cero ou un, falso ou certo ou desactivar, si ou non. Isto realmente non importa como vostede pensa sobre iso, pero é un estado binario. Como Nate discutido en vídeo de mércores, dous cousas distintas. Así, en scratch, expresións booleanas ocorrer a ollar como eses obxectos azuis aquí, e neste caso, a cuestión marca implica que está facendo unha pregunta. É o gato ou o sprite, tocando o punteiro do rato? Polo tanto, este é só un exemplo dun bloque Scratch que está a suceder que nos permitan comprobar si ou non, é o rato tocando o Sprite na pantalla? E iso pode ser útil se o quere facer as cousas co rato. Ademais de expresións booleanas, temos cousas como é o rato para abaixo, de xeito que pode detectar o tipo de cuestionar tamén. Podemos facer matemáticas, se realmente quere, e non hai usos realmente máis atractivas para este que só pura aritmética, como imos ver. Pseudo aleatoriedade e facer o seu programa parecen pensar ou comportarse de forma diferente en base a uns valores aparentemente aleatorios, e entón temos cousas como expresións booleanas como AND. Entón, se realmente quere revisar dous valores, veremos Raspe que podemos realmente comprobar se este é certo e iso é verdade. Por exemplo, no caso das medias, que podería ter a moi final a pregunta se é na media esquerda e dereita zócolo é sobre, saia. Está todo feito para o día, de xeito que sería unha oportunidade para iso. Entón, imos adiante e tratar de remendos algúns destes xuntos e ir a un par de exemplos máis convincente do que este. Entón deixe-me ir adiante aquí e abrir algúns dos exemplos que sempre estará na páxina web do curso, así como, e abrir hello2. Así, en hello2 aquí temos un programa que está facendo algúns as cousas, pero non está facendo iso de forma tan eficaz como poderiamos. Entón, aquí di "Ola, mundo" por un segundo e entón espera por un segundo. E despois fai iso de novo, e despois fai iso de novo. Entón, se eu premer na bandeira verde, Scratch di "Ola, mundo. Ola, mundo. Ola, mundo ". E este é, obviamente, candidato agora mellora. Cal é a mellora marxinal, Esperanza, podemos agora facer scratch se apoia o concepto de? Algún tipo de lazo. Algún tipo de repetición, agora sería bo, entón deixe-me realmente tentar iso. Deixe-me realmente ir e pasar iso. Entón aviso pode separar bloques tan facilmente como pode engadir ao anexo-los. Deixe-me ir baixo control, desprácese aquí, e de feito, hai esa peza do puzzle aquí Repeat, e sempre e Para sempre. Polo tanto, hai unha serie de formas de expresar construcións de iteração en scratch. O que eu probablemente quere aquí non é para sempre, porque eu só quere que isto ocorre tres veces, pero, probablemente, repetir. Entón deixe-me arrastrar Repita aquí, arrastre e solte-o, e agora, en vez de dicir "Ola, mundo" tres veces, déixenme arrastrar esta parte do enigma aquí. E aínda que non parece encaixar, o programa é intelixente o suficiente para entender que vai medrar para cubrir, por iso é o formas materia que, non o tamaño absoluto. Deixe-me cambiar a repetición para tres, e agora déixeme ir adiante e arrastrar agarde un segundo de alí tamén. Vai sacar en tan ben, e agora eu estou indo a arrastrar estes faces por aquí e simplemente xoga-los fora, porque eu non precisamos máis deles. Deixe-me o zoom e prema na bandeira verde agora, e temos mesmo programa, pero, como eu Prevín antes, mellor concibida, xa podes imaxinar o quão malo este programa sería, certamente, esteticamente, se tivese que comezar a copiar e pegar, copiar e pegar, ou arrastrando e soltando as mesmas cousas danado de novo e de novo. Agora, simplemente dicindo cousas na pantalla, imprimindo o pantalla realmente non todo o que emocionante, entón imos abrir unha varianza terceiro aquí. E agora, como podes ver, iso vai rapidamente tornar-se irritante - [Meow] DAVID Malan: - pero é tamén unha especie de bonito. [Meow] DAVID Malan: Ok, entón mellor, e nós certamente pode usar isto mesma transición chunking isto nun looping estrutura, pero imos facelo máis interesante aínda. Deixe-me ir á fronte e abrir unha variación cuarto aquí, onde levar as cousas un paso adiante. Así, de acordo con este, parvo que esta é a primeira relance, o que é este programa vai facer? Vai Meow unha vez. Por que? Ben, se é, tanto como sei, sempre menos que dous. Non hai noción de aleatoriedade aquí. Teño literalmente hard-Coded un e dous, pero esta é unha exemplo, agora realmente usar unha expresión booleana. Moi parecido como fixo José no seu pseudocódigo, o descenso SE atopar medias combinando entón faga o seguinte, temos aquí unha expresión un é menor que dous entón - e de feito temos ata un pouco de retirada, onde o vermello é lixeiramente recuado para a dereita - Entón está indo xogar o miado de son. Agora, neste caso, que un é sempre menor que dous, de xeito que este é unha especie de pérdida dunha condición. Pero nós imos ser capaces, como veremos, para conectar en outras cousas estes espazos reservados, onde un e dous son agora. Entón, imos agora avanzar exemplo cinco destes varios Olas e ollar para o que este programa vai facer. Entón, agora, nunha frase Inglés, como que programa comportarse? Audiencia: Meows metade do tempo. DAVID Malan: a metade do Meow do tempo, polo que esta é unha forma de transmitir unha idea moi simple. Aínda que aconteza estar usando algunhas desigualdades aquí nalgúns números, isto é realmente só un programática Así, de forma precisa, de dicir se a moeda der cara, ir adiante e Miau. Ou, inversamente, a aproveitar coroa, non Meow. E, neste caso, como é que imos expresar isto? Imos escoller un número aleatorio de 1 a 10, e iso número é menor que 6, vai adiante e Miau. E como este aquí? Ben, de novo, observar só o arrastrar e soltar e cousas encaixe. Entón, agora imos ver se esta aleatoriedade funciona. Deixe-me ir adiante e prema na bandeira verde. [Meow] DAVID Malan: Okay. [Meow] DAVID Malan: Okay. Ok, bo, entón temos cabezas, as cabezas, colas de forma eficaz. Colas. [Meow] DAVID Malan: Heads. [Meow] DAVID Malan: Excelente. É sempre difícil cando comeza só estatisticamente malo correr, e todos os xefes, e o programa realmente non funcionar como sería de esperar. Pero esta vez, funcionou, e parece que temos, se nós isto, un número infinito de veces, a probabilidade do 50%. Agora, de novo, non tan interesante, só facendo gatos Miau, entón imos ver se non podemos avanzar este un pouco máis aquí na versión seis. Entón, agora temos a versión realmente irritante - [Miados cada poucos segundos] DAVID Malan: - e isto é o que se coñece, en xeral, como un loop infinito. Lazo tan infinita neste caso se sente mal. É definitivamente vai comezar a soar mal, e aínda infinita loops non son sempre malas. Podes pensar en contexto de programas de ordenador onde realmente quere un loop infinito? Si? Audiencia: Cando quere comprobar unha condición. DAVID Malan: Ok, cando quere manter a verificación de unha condición? Como o que? Audiencia: [inaudível] DAVID Malan: Ok, bo, entón se tiña algún programa, algúns tipo de cousas de automatización residencial, onde pretende constantemente monitor é algo que o caso. Son as luces? Son as luces, porque se cadra ten un axustado dunha decena, e quere que eles para saír, quizais sexa necesario facer algo novo e de novo. E, de feito, fala de temporizadores, calquera de vostedes que reloxos no seu ordenador ou reloxos dixitais, que é unha loop infinito. El segue a actualizar a hora, porque é constantemente comprobación e control e verificación ten o tempo cambiou, e si, oh, meu deus. O reloxo é finalmente alterada. Precisa amosar que o valor para ti. Así, mentres a maioría dos lazos de tempo infinitos son un erro, ou polo menos unha decisión de deseño pobre, ás veces eles fan teñen o seu valor. Ben, imos avanzar aínda máis aquí para hello7. Polo tanto, agora o programa vai ser un pouco máis interactivo. Deixe-me achegar aquí, e de novo, iso é o que é bo sobre o scratch. E nós imos usalo para ser claro, scratch, só hoxe e en problema da próxima semana definido. Pero o luns, nós mergullo en C. Este programa aquí, fai, para sempre, a continuación. Se tocar o punteiro do rato - agora, quen é o contexto aquí? Ben, previo aviso e que quen está seleccionado para abaixo aquí no fondo dereito é o gato, Sprite un, así que estes scripts, este programa, aplícase especificamente a el. Entón, se o gato está tocando o punteiro do rato, a continuación, que vai para xogar este e esperar dous segundos, e Repita ad nauseum. Entón, imos adiante e bateu xogo. Nada acontece, pero se eu queira o pet gato agora, podo simplemente. [Meow] DAVID Malan: encantador. [Meow] DAVID Malan: Ok, menos chat, pero tamén está molestar, entón imos seguir adiante e ver se non podemos inxectar unha lóxica pouco máis. Ese foi o exemplo sete. Aquí no exemplo oito, imos introducir unha condición else. Así como un garfo literal na estrada, en que pode ir cara á esquerda ou pode ir á dereita, unha condición nunha programación linguaxe como scratch, ou, como veremos C, pode permitir que ir nunha dirección ou outra a través dun IF else construír. Entón, literalmente, se tocar punteiro do rato, esta vai xogar algún son, senón que vai xogar este outro Meow, son. Agora, se pode deducir o nome deses sons, pode adiviñar o que este programa está destinado a conxurar a idea de. Este gato é miando feliz. [Meow] DAVID Malan: Afortunadamente, pero non fai moi gusta de ser tocado. [Ruge] DAVID Malan: Entón agora temos un gato que vai berrar con vostede. Todo ben, ben, un último exemplo cos gatos aquí, e Imos versión aberta nove deste aquí. Entón, agora temos o seguinte son máis irritante que eu podería atopar, por iso temos unha morsa ou un león mariño aquí quen vai faga o seguinte. [Casca selo] DAVID Malan: Ok, entón iso vai continuar ata que descubrir como este programa. Entón, esta vez, este animal ten dous scripts, eo que é interesante aquí é que estes scripts están indo para executar en paralelo. Entón, porque eles comezan ambos cunha bandeira verde premendo, é como ir como este, e ambos os programas comezan a funcionar-lo Unha vez máis, mesmo se eles están looping para sempre. Así, no guión arriba, eu teño un pouco de lóxica. Que recursos que proporcionan ata alí? [Casca selo] Audiencia: [inaudível] DAVID Malan: Si é o que? [Casca selo] Audiencia: Se mudo a cero, vai continuar xogando o soar. [Casca selo] DAVID Malan: Ok, moi bo. Entón, se silenciado, o que é iso, esa cousa laranxa é cero, ENTÓN reproducir o son do león de mar e pensar "Oh, ola, "por dous segundos. Agora, eu non sei o que é silenciado, pero cero evoca a idea de teito ou apagado. Entón, se silenciado é falsa, polo que, se non silenciado, seguir xogando o son. Todo ben, ben, como é que imos desactivar esta cousa? Ben, imos ollar para o segundo guión alí. O segundo guión di silenciado definir a cero. Obsérvese tamén é laranxa, entón o que fai é arañazos cores bloques da mesma cor, se é unha especie de relacionados loxicamente. Así como a top se silenciado era laranxa, entón é silenciado aquí mencionado no bloque de laranxa. Pero este é un asignacións de variables, así como en álxebra, ten X e Y e Z, en programación que ten variables, pero son xeralmente - Imos facer unha pausa por un momento e figura como para deter este latidos. Como podo facer iso? [Casca selo] DAVID Malan: Okay. El parou. Okay. Así como na álxebra ten variables x, y, e z, pero en programación, tendo variables como x, y, e z é xeralmente desaprovado porque non está en todos os expresivo. Eles non teñen ningún significado semántico calquera, por iso a maioría en linguaxes de programación, as variables poden ter plena nomes verdadeiros ou palabras ou frases, como mudo, para dicir o que eles fan. Polo tanto, este segundo guión tamén estaba escoitando sempre, e el dixo a clave, o espazo tecla do teclado, é presionado, punto de interrogación. Polo tanto, hai unha condición cunha expresión booleana que é vai responder a unha pregunta ou a verdade ou falso, entón eu teño dentro do que se a tecla de espazo é presionada e Se está silenciado é cero, establecer silenciado a un, Else definir silenciado a cero. Entón garfo este outro na estrada, e observe como eu teño aniñados os dous, se as condicións, é unha forma de comprobar se o Bar de espazo presionada porque se é así, ou eu quero ir a ese ou aquel camiño. E como fago para inverter o valor do cambio? Eu teño que comprobar é cero? Se é así, facelo unha, senón facelo, polo tanto, cero a cambiar seus dous estados. Todo ben, entón temos, entón algúns deles fundamentais construtos. Temos expresións booleanas, e entender, tamén, estes son non todos os que non familiares. En realidade, aquí está unha imaxe rápida de Harvard curso CS50 ferramenta de compras, e calquera sitio aí fóra que ten caixas e caída baixos realmente, todo ese tempo, está a usar Expresións booleanas. Neste caso aquí, se fai clic no cadro ao lado curso maior ou igual a 4,5, ou mesmo a carón facultade, está especificando unha expresión booleana. B-me cursos para os que esta expresión é verdadeira. Ou á dereita, non entra en conflito con cursos que eu son tomar, se está marcada, entón si, quere comprobar esta condición, máis quere ignorar. Expresións tan booleanas son unha especie de todos os lados, pero cando nós poñer-los en condicións, se as condicións, se Elses, ou podemos mesmo simular máis profundo niveis, IF Else IF else - de xeito que é unha especie de estado ternário. Pode ir por este camiño ou esta forma ou este camiño. Podemos manter as cousas de nidificación para ir en direccións diferentes. Entón Scratch ten eses lazos, como sempre. El ten esas características como Repeat 10, algúns número finito de veces. Temos a posibilidade agora para definir variables, polo tanto, neste caso Eu xa declarou, por exemplo, unha variable chamada medias. Eu inicializar a 0, e iso é aínda outra dirección que podería levar ata aquí con Joseph, en que talvez só manter o control de tantas medias eu teño en e pechar o programa cando o valor desa variable é 2. Iso sería unha outra forma de tipo de xeneralización que problema e facer algo de novo e de novo. Ben, imos adiante e agora introducir algunhas cousas novas. Entón, aqueles de vostedes coa experiencia de programación previa vontade sei que unha morea de linguas teñen matrices ou vectores ou listas, e, de feito, Scratch ten algo como isto, tamén. Entón imos ver se non podemos levar as cousas para o seguinte nivel aquí. Se eu tivera a posibilidade, agora, con estas pezas do puzzle para engadir algo, como unha palabra ou un número, a unha variable, podo comezar a acumular cousas. E esta é, en realidade, a propósito bonitas para cousas como xogos, role-playing games onde é o tipo de sendeirismo arredor un mundo de fantasía coleccionar cousas, incorporarse cousas, gañando puntos, ou similar. Pode querer manter o control de calquera tipo de inventario, e de feito, iso é o que un dos nosos ex-alumnos aquí fixo algo chamado Fruitcraft RPG. Entón deixe-me ir adiante e abrir esta cousa aquí, e en Fruitcraft, temos ese mundo enriba. Entón deixe-me ir adiante e prema na bandeira verde. Aviso na esquina superior esquerda é unha especie de inventario. Que é aplicado en scratch como o que nós imos chamar unha matriz ou unha lista, e agora temos esta pequena animación. Así como nós comezamos máis cedo, con esta historia de amor cookie, e, entón, avanzou para gatos e leóns mariños, agora podemos ter cousas que son aínda máis interactivo. E ese cara azul, podo comezar a moverse en torno a súa pequena casa aquí. Polo tanto, parece que ten unha saída aquí, entón eu estou usando as teclas de frechas para arriba, para abaixo, de esquerda a dereita. E agora eu estou fóra, entón imos o que eu teño aquí. Parece que unha laranxa, e de feito, así que eu Preme na laranxa, el está se estatelou no meu inventario. Se eu pasar por aquí para as cereixas, agora eu teño algo outra cousa no meu inventario. E iso é todo bo e bonito, pero pensar en como agora este é aplicado. Ben, nós temos esa noción da lista, e que é, aparentemente, un peza do puzzle que acaba de dicir o que quere engadir a el, engade laranxa, engade cereixas. Agora, o que é ese cara azul facendo? Ben, el é un sprite. E, presuntamente, a laranxa e as cereixas - eles mesmos eran sprites separados. E usando condicións en expresións booleanas, os estudante foi, probablemente, capaz de expresar cara azul é cereixas tocando a continuación, engade as cereixas palabra ao seu inventario, e despois tamén ocultar o sprite cereixa. Entón, debaixo do capó, hai probablemente aínda é unha cereixa Sprite alí. Nós só dixo que se fai efectivamente invisible. Agora, se eu continuar a andar por aquí, tamén podemos facelo cousa proximal, onde podo ir e ler a tarxeta. Entón, cara azul tocando sinal, podemos ter este bloque Say así como o gato nos falou en palabras, Ola, antes, "Got algunhas froitas? Trae-o para o lugar de froitas. "Todo ben, agora, ao parecer, Eu teño as miñas indicacións. Eu podo ir ata aquí para o lugar de froitas, aliñar-me se coa porta. Agora, eu estou aquí. Eu podo ir ata o home no balcón. Detecta que estou preto del, por iso non ten que ser bastante idéntica tocar, e eu gañei o partido. Polo tanto, temos Fruitcraft RPG. Así, podemos facer cousas aínda máis avanzados do que iso. Podemos engadir sons. Podemos engadir aleatoriedade pseudo. Podemos engadir complexidade. Deixe-me ir á fronte aquí, e en vez de facelo só, deixe-me amosar-lle unha das propostas máis sofisticadas Temos o ano pasado a partir dun certo alguén chamado Blake. Podemos ter un voluntario que é cómodo aparecendo en cámara e para xogar un partido? Que tal alí? Imos cara arriba. Todo ben, entón o partido que ten só inconsciente se ofreceu para xogar - [Aplausos] DAVID Malan: - é algo do pasado chamado "Frogger". Cal é o seu nome? Encaixe: Encaixe. DAVID Malan: Redna? Encaixe: É como Brenda cun b. DAVID Malan: Ok, renda. David. Pracer de coñece lo. Entón, aquí en "Frogger", e se puidésemos aumentar o volume só un pouco, é esta pequena ra verde na parte inferior. Podes utilizar a esquerda, dereita, arriba e abaixo, eo seu obxectivo é atravesar a rúa, cruzar o río, e tocar as almofadas de lírio na parte superior. Aw. Un máis t - refacer, todo ben? Imos deixar de éxito. Ninguén viu iso. [Aplausos] [Aplausos] DAVID Malan: Yeah. Moi ben feito. Excelente, grazas. Así que houbo Frogger. Agora que sabe o que ten quedou-se en un voluntario máis para un diferente xogo presentado por outro alumno. Queres vir enriba? Cal é o seu nome? Richard: Richard. DAVID Malan: Richard. Todo ben, Richard, veña. [Aplausos] DAVID Malan: Ten algo que vai soar familiarizados en breve, polo que aquí están as súas instrucións. Entón, nun momento, algunhas pezas de puzzle vai rolar para arriba a partir da pantalla que parecen ou deixou ou dereita cara arriba ou cara abaixo. Vai ter que bater as teclas de frechas de tal forma que corresponde a estas pezas do puzzle se aliñados con os espazos reservados na parte superior. Entón, cando ve unha frecha cara á esquerda, e que sexa aliñado coa esquerda frecha, preme a frecha esquerda. Pode comezar. [Música - "máis forte" Kayne West] DAVID Malan: Todos todo, dereito de palmas para Richard. [Aplausos] DAVID Malan: Moi ben feito. Grazas. [Aplausos] DAVID Malan: diversión Entón e, aparentemente, unha especie de intimidador como podería ser a de implementar algo aparentemente texto coma este, entendemos que o alumno non existe e só escribir todo isto dunha vez. En vez diso, pode romper un problema aparentemente tan complexo como esta en anacos moi pequenos, e iso tamén é vai ser un tema. A peor cousa que pode facer por escrito un programa en máis calquera linguaxe é sentir, ser moi animado, escribir o maldita cousa toda, e despois só espero que funciona pola Cando termine de escribir. En vez diso, o proceso de programación debe, xeralmente, ser moi criterioso, moi interactivo, no que só definir pasos moi pequenos para si mesmos, anacos pequenos quere morder, e para que teña estes sanidade cheques, Marcos pouco que pode coñecer. E entón construír enriba da xente para crear máis cousas sofisticadas aínda. Así, por exemplo, como poderiamos ir sobre implementación dun partido como este? Ben, francamente, eu certamente comezar só apoiando unha tecla de cada vez. Nós só implementar o soporte para a frecha esquerda. Así, o alumno tiña de algunha maneira crear en Photoshop, ou en Rascar a usar o editor de pouco gráfica, unha clave de frecha que se parece o un na parte superior á esquerda, só o espazo reservado gris. A continuación, o alumno tiña que descubrir o que x, y coordinar a puxo, onde poñelas na ventá. 0, 0 está aquí enriba, entón tes que descubrir o número de píxeles ou puntos para compensar a frecha de a parte superior da pantalla. E entón, xa que é no lugar, o programa non fai realmente facer nada aínda, entón tes que entón dun sprite segundo, para exemplo, unha frecha verde que tamén é apuntar cara á esquerda, e entón precisa comezar a escribir algúns guións para iso. E entender, se cadra, que isto comezaron a chegar en velocidades distintas, e as cores estaban en diferentes locais, e iso é porque o estudante usou un pouco de aleatoriedade pseudo. E por casualidade pseudo, eu só quero dicir escoller un número entre algo e algo, porque pode iniciar a cousas do mapa, como se o número é entre un e cinco, así, imos facer a cousa verde. Se está entre 6 e 10, imos facer a peza do puzzle vermello. Mentres ten unha forma de xerar algún tipo de aleatoriedade, entón podes tomar decisións en base a que aleatoriedade. E eu sigo dicindo pseudo chou, porque hai unha pequeno segredo porco. Ordenadores non pode vir ata con números aleatorios. Eles só poden facer o que lles está dito, porque son feitos polo home dispositivos. Eles non poden simplemente creo que un número como nós, seres humanos sinto que podemos. Un ordenador ten que facer algo matemático para conxurar o ilusión número matemático, ás veces utilizando o día actual de tempo como unha entrada para descubrir o que número de volver, pero máis sobre iso noutro momento. Por agora, só sei que podemos xerar aleatoriedade pseudo. Polo tanto, unha vez que teño a capacidade para a frecha para a esquerda para comezar aparecendo en distintos momentos e en diferentes velocidades, a continuación, Podo volver e engadir algúns deles, se as condicións. Se este sprite está tocando o outro, ea frecha esquerda tecla foi presionada - así tres condicións nese caso. Podo usar isto e bloquear, se cadra, nese caso - Entón eu quero ir adiante e incrementar o panel. E na parte superior, temos unha puntuación, temos Awesome, Cool, Bo, e Boo. Polo tanto, non hai, ao parecer, cinco variables que este alumno usado para manter o control desas varias métricas. Así, en breve, o resultado final é incrible. É divertido, é divertido de xogar, é envolvente, pero iso non é onde o alumno comezou. El ou ela comezou nun conxunto menor de etapas. Entón, cales son algúns outros bloques de construción que podemos tecer a estes programas? Ben, hai outro concepto na maioría das linguas, Raspe entre eles, coñecidos como fíos. Así, un ordenador non pode realmente moi facer varias cousas nun tempo, polo menos, xeralmente non. En vez diso, un ordenador xeralmente só ten unha CPU, e aínda Aínda que os computadores son super rápido e pode, polo tanto, crear a ilusión de facer varias cousas ao mesmo tempo - comprobar o seu e-mail, recibindo un instante mensaxe, a impresión dun documento - realmente, un ordenador é só ir de impresión para IMing de correo-e para atrás e para atrás e para adiante e cara atrás tan rápido que lentas humanos witted simplemente non entender que é realmente execución destes programas un pouco de cada vez. Agora, este un pouco de un branco mentir estes días, porque hoxe en día, moitos dos nosos ordenadores son o que son chamados de multi-core, así ten unha CPU, pero varios núcleos, que é como ter múltiples procesadores. E así, ás veces, os computadores poden realmente facer moitas cousas de cada vez, pero, xeralmente, no marco dun programa, programas contar con estas cousas chamadas threads. Polo tanto, un debate é como unha especie de programa en miniatura, que pode coexistir con outro programa en miniatura e pode ser executado en paralelo, ou polo menos pode ser executado baixo a ilusión de que eles están executando simultaneamente. Entón arañazos soporta esas cousas chamadas threads. Pode ter varios scripts de execución dunha vez, así como nós fixo o león mariño, e iso nos permite realmente entón interaccións entre eses sprites. Deixe-me ir adiante aquí e tirar para arriba, imos dicir, temas e xogar este como segue. Temos dous sprites, cada un dos cales veremos ten só un guión. E en conta que parece haber algunha intelixencia no gato en un regalo, porque está quedando máis preto - [Ruge] DAVID Malan: - e máis preto do paxariño. Entón, como é o funcionamento paxaro? Ben, imos dar un ollo no primeiro paxaro. O guión paxaro dixo cando a bandeira verde é premendo, vai para o x é igual a 115 negativo e y é igual a 150. Entón, eu só descubrir un lugar ao chou onde eu quería que o paxaro para comezar, e eu só xogou el alí por defecto. Entón, para sempre se non tocar gato, entón este é un diferente tipo de construción de loop, pero a idea aínda, facelo de novo e novo e de novo. Sempre que non está tocando o gato, mover tres etapas, e se está na beira do salto, onde é unha especie de reflexión no sentido de billar. Entón é así que o ave está movendo en torno a tipo de aparentemente de forma aleatoria, pero é só porque está saltando as paredes, neste caso. Agora o gato, pola súa banda, é unha especie de trampa. O gato, cando a bandeira verde é premendo, si, comeza en algún lugar, un lugar ao chou - polo menos en parte, de acordo coa elección bloque verde chou alí - e sempre tocando o paxaro, reproducir o son do león, e, a continuación, deixar o script. Entón, cando dixo que rematar, ou saír antes, hai un puzzle peza en scratch que só vai matar o programa que punto, porque é unha especie de lóxica feito. Pero se non, aquí, entender o que vai ocorrer. Punto para o movemento de aves e un paso. Polo tanto, este punto para ave é unha especie de vantaxe o gato ten en que é lucrando co paxaro en movemento, e podemos agora facer este programa aínda máis interesante. En vez de mover un paso de cada vez por ciclo de CPU, por folga toque das campás, por así dicir, deixe-me ir adiante e mover, digamos, cinco chanzos de cada vez, como o gato. Faga clic en Executar, e agora realmente atopa-lo rapidamente. Se dobrar este máis de 10 pasos, especie de pasa axeitado para el. Agora, podemos dar o paxaro, quizais, un pouco de vantaxe. Imos para o paxaro e dicir en vez de avanzar tres pasos, imos pasar-lle 30 pasos. Pero aínda foi pego no final. Entón, aquí, temos dous segmentos. É detido en scratch con dous guións e dous sprites, pero a idea noutros idiomas é que pode escribir, esencialmente, moitos programas coma este e ter Los funcionar de verdade, ou imaginariamente, en paralelo. Agora, hai tamén este concepto na programación coñecida como eventos, e iso é algo que non vai ver o C, os lingua coñecida como C. Veremos isto en dirección ao fin do semestre en programación web, cando introducimos o JavaScript eo noción de páxinas web de construción que son dinámicos e interactuar cos usuarios. Polo tanto, neste caso, temos un exemplo moi sinxelo de dous sprites, neno e nena, cada un dos cales coas súas respectivas temas, pero de algunha maneira eses dous están inter-comunicación de forma de algo chamado eventos. Entón deixe-me ir adiante aquí e zoom e guión do neno, que se parece con isto. Cando premendo bandeira verde, para sempre facer o seguinte. Se o espazo de clave, ou a barra de espazo, é presionado, din Marco por dous segundos, que é puramente estético na pantalla, un globo de fala pouco, pero despois transmitir. Entón transmisión é outra peza Scratch que é representativo dunha clase de función de programación que permite que programas diferentes, liñas diferentes, Para comunicarse entre, dalgunha forma, enviar mensaxes, un para o outro. Pasando un anaco de papel na aula é unha especie de baixa tecnoloxía equivalente. Entón transmisión de evento. Podo enviar esta mensaxe, eo evento palabra é totalmente arbitraria. Cero ás veces ten esas caída baixos, entón eu só veu con unha palabra aleatoria como evento, porque agora, o que o neno fai cando premer a clave é que transmite este evento. E se eu ollar agora no guión da nena, o seu guión é super sinxelo, porque todo o que ela precisa facer é non actuar cando a bandeira verde é premendo. Ela e deseñados para a acción cando recibe pecha comiñas, "Evento", e nese punto, se está escoitando, por tanto, para o evento chamado de novo e de novo. Así que recibe este evento, vai berrar Polo por dous segundos. E así pode talvez deducir exactamente o que o preto resultado vai ser. Deixe-me faga clic na bandeira verde. Nada acontece porque eu teño que facer o que? Audiencia: barra de espazo. DAVID Malan: barra de espazo. Neno di Marco, rapaza di Polo. Pero isto non é codificado por si só. Isto é inter-comunicación entre os scripts, entón agora nós teñen a capacidade de facer programas máis complexos, onde estes dous son de algunha maneira inter-comunicación. Así, en que dirección podemos levar isto? Ben, o conxunto de problemas 0, realmente, o obxectivo é divírtete co scratch. Para a edición de hacker, vai divertirse en vez cun máis versión sofisticada do scratch chamado BYOB, build Seus propios bloques, pero a idea é a mesma. Vai ser capaz - Si, iso foi deliberado. Ela veu de Berkeley. BYOB é a versión pirata edición desta, pero ambos demografía, Standard Edition e edición de hacker que logo, o obxectivo en mans para a próxima semana é realmente só a mergullo en profunda, ensuciar as mans coa programación, e facer algo interesante, facer algo interactivo, faga algo artístico, facer algo divertido para realmente demostrar, de xeito que ata o final da semana, ten un proxecto, non só para o seu pset CS50 primeiro, pero vai ter un pouco algo que pode amosar na Annenberg para amigos ou incluso a familia por medio de carga para o sitio web do MIT. E como eu dixo o mércores, esperamos que o 90% da clase, xeralmente, para facer as edicións estándar. Entenda que hai tamén esta saída para os que poderían atopa-se un pouco aburrido co básico e realmente quere mergullo e crear unha visión que xa ten con fondo antes neste máis agradable ambiente. Entón deixe-me tirar para arriba outro exemplo que un dos nosos ex- alumnos aquí fixo e dicir algo a través da música. Que do mesmo xeito, como este xoga, pense sobre como ir sobre implementación deste programa usando precisamente estes mesmos bloques de construción, un pouco de aleatoriedade, e un pseudo pouco de canción familiar. Se puidésemos aumentar o volume un pouco? [Música - "Está chovendo homes" The Weather Girls] DAVID Malan: Isto é todo para CS50. Vemos que o luns. [Aplausos]