[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.
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]
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]