[Powered by Google Translate] [MÚSICA ROCK]
[MÚSICA - "Happy Together" LES TORTUGUES]
David Malan: Avui comencem la nostra exploració de la
fonaments de la ciència de la computació i la introducció,
Ara, a la tècnica de programació, dels quals és que
només un exemple.
Però en el mateix sentit de la resolució de problemes, saben que
Dia Puzzle tradicional CS50 és demà.
Si encara no has enviat un RSVP per a l'esdeveniment, vostè pot anar a
cs50.net/rsvp.
Vostè pot portar equips de dos o tres o quatre.
Vostè serà desafiat amb problemes com el que vesteix
allà al principi.
Tots els nous problemes aquest any si va participar l'any passat, i
tindrà l'oportunitat després de guanyar premis fabulosos.
Entre ells, un Wii i alguns certificats de regal i articles similars,
alhora de sortir amb CS50 estudiants i companys de classe
i la pizza i Facebook.
Així que més que el demà si vols.
>> Aquesta és, doncs, CS50, per a aquells de vostès unir-se a nosaltres per a la
primera vegada.
I sé que aquest curs està especialment decidit a aconseguir
a través d'aquest curs fins al seu terme final, moment en què
tindrà no només una comprensió d'aquests
fonaments de la informàtica, sinó que haurà de
aquesta habilitat molt pràctic conjunt que pot prendre de nou a
seu propi departament, si es tracta de ciències de l'enginyeria,
matemàtiques aplicades, les ciències físiques i naturals
ciència, o similars.
En efecte, què és tan emocionant de la informàtica aquests
dia és que és tan sols aplicable als
tot tipus de camps.
I encara que avui dia, només esgarrapar la superfície d'un
llenguatge de programació molt tradicional conegut com C, anem a
en lloc de mirar una cosa anomenada Scratch, alguna cosa amb
que aquesta història d'amor galeta va ser executat per un dels seus
predecessors en els últims anys, a explicar històries, crear jocs,
per crear art interactiu, i per realment començar a embolicar nostre
ment al voltant d'algunes de les construccions fonamentals que
subjacents en la programació, però en un context, com es veurà, és que
molt menys por, això és molt menys misteriós, del que es veu
en poc temps.
I adonar-se, també, per a aquells de vostès que ens acaba d'unir-se a aquest
semestre, les frases en què acabem conferència de dimecres,
no és tan important quan vostè acaba la seva relació amb
companys de classe en aquesta classe, però en el qual, pel final del semestre
a la setmana 11, acaben respecte a tu mateix en el dia d'avui.
>> Així que sense més preàmbuls, aquest és també digne de menció que
els menys còmode, aquells en algun punt intermedi, estan
també, pel seu disseny d'aquest curs, no a qualsevol desavantatge
vis-a-vis els més còmode
que entra en aquesta categoria.
Com veuràs en les setmanes per venir, tenim diferents
pistes de fons de nou dispars, seccions per als
menys còmode, més còmode, aquells en algun lloc
en el medi.
Com podrà veure aquest cap de setmana i la setmana que ve, dues versions de
la majoria dels conjunts de problemes, tant en edició estàndard i hacker per
que tothom pugui auto-selecciona pel camí amb el qual
se senti més còmode.
>> Així que avui, ens submergim en aquesta programació
llenguatge anomenat Scratch.
És un llenguatge de programació gràfica, i no obstant això té la
mateixes característiques d'alguns dels llenguatges d'alt nivell que anem a
explorar més endavant en el semestre, entre ells C i
JavaScript i PHP.
Però permetrà a nosaltres per evitar algunes de les distraccions
des del principi de la sintaxi, les coses com punts i comes, parèntesis,
i altres detalls arcans que, a primera vista, no són
en absolut intel · lectualment interessant i tendeixen a posar-se en
la forma d'una certa comprensió fonamental.
En termes de l'estructura de suport ara per davant, es va adonar d'això
eina, CS50 Discussió, que estarà vinculada a la del curs
lloc web el dia d'avui, és el fòrum de discussió en línia en
el que seràs capaç de fer preguntes als altres i
personal, i és també una eina, com veurem la setmana que,
que utilitzarem molt integradament en
les hores d'oficina també.
De fet, les hores d'oficina començarà el dilluns, i francament, el primer
setmana l'horari d'oficina és bastant baix clau.
>> No crec que trobareu tot el que Rasguño inaccessible.
És bastant explica per si mateix, com veurem, i què
el farem servir per avui és per extreure algunes de les
les idees fonamentals que, per tant, persisteixen al llarg de la
resta del semestre.
Però a partir de dilluns, a les 8:00 AM fins 23:00 serà
en hores d'oficina durant les vacances de Annenberg cervell.
Seccionament 02:00 començarà aquesta nit, així que en algun moment aquest
cap de setmana, anar a cs50.net/section, i et
se li demanarà una sèrie de preguntes.
Entre ells, com descriuria la seva
nivell de confort al dia d'avui?
No hi ha regla dura i ràpida pel que fa a qui està en què cubeta.
És just el tipus de cosa que vostè probablement sap si
estan entre els que el menys confortable o d'una altra manera.
>> I ara, tutorials.
L'especificació del conjunt de problemes per a aquesta setmana, tant estàndard
i l'edició pirata per igual, està en línia en cs50.net partir d'ara.
I veuràs que la primera d'aquestes edicions, la
edició estàndard de cada setmana, va acompanyat d'alguna cosa del que
trucar a un tutorial de codi, una sessió dirigida per un dels
becaris dels cursos d'ensenyament per guiar a través d', proporcionar
consells, i s'obté per un camí particular quan es tracta
per iniciar aquests butlletins de problemes.
Així, amb cada un d'aquests butlletins de problemes, si mai voler
per tu mateix per on començar, començar amb aquests
tutorials.
I de fet, permeteu-me presentar-Zamyla Chan, aquesta
any company docent que estarà al capdavant de tots i cadascun
un d'aquests tutorials.
Zamyla?
>> [Aplaudiments]
ZAMYLA Chandler: Oh, hola a tots.
El meu nom és Zamyla.
Sóc un jove estudiant enginyeria en Winthrop House.
Però crec que aquesta càpiga en tants cursos d'informàtica com jo
pot, pel que estic realment entusiasmat de liderar aquest
any tutorials.
Tutorials, per a mi, són una part essencial del meu CS50
experiència.
Durant el tutorial, per a tot p-set, anirem a través de
el conjunt de problemes junts, mirar per sobre dels problemes, el tipus de
dividir per dalt en trossets manejables.
Et vaig a donar consells, tècniques, per obtenir
a través de I INTRODUCCIÓ.
Espero veure'ls a tots en els tutorials.
Si no pots assistir en persona, llavors
si us plau sintonitzi en línia.
>> David Malan: Excel · lent.
Gràcies, Zamyla.
Així que adonar-se que els recorreguts són, de fet, un divendres
tard, però això és deliberadament per disseny perquè
tot i que prefereix no assistir a classe un divendres
tard, els vídeos estaran fins al més ràpidament sobre
el cap de setmana.
Així que adonar-se que cs50.net estaran tots els Zamyla
tutorials.
I que no és la data i hora d'avui, a les 3:00 PM,
Harberd Hall, 104.
I alguns dels companys docents també han preparat
algunes observacions perquè en absència de l'acusat per donar-li una mica de
perspectiva pel que fa a quina és la seva experiència que entra i
sortir de CS50 era.
Així que si podíem apagar els llums per un moment, jo et dono
part del personal del CS50.
>> JACKSON Steinkamp: Vaig prendre CS50 any passat com a estudiant de primer any a la
caure, i absolutament em va deixar al · lucinat.
Jo mai havia rebut classes de programació anterior,
i mai va entrar amb tota la informàtica
experimentar en absolut.
I així, he sentit els rumors sobre la classe i
decidir prendre.
>> JULIA Mitelman: Va ser molt divertit, molt atractiu.
Encara, a dia d'avui -
Fa poc vaig veure que tinc el disc que David ens va donar
en el nostre primer dia de classe.
L'havia penjat a la meva paret.
Això és probablement una mica nerd, però em vaig quedar a al meu
paret durant la classe com un recordatori del bo que era.
>> TRAVIS DOWNS: És tan vergonyós.
>> JACKSON Steinkamp: La informàtica és una cosa que
de tractar encara que no és un
les ciències tradicionals.
És la seva pròpia experiència, i CS50 s'assegurarà que vostè és
bé donat suport a través d'ella amb el seu veritable exèrcit de TFS.
>> ALI Nahm: El vaig prendre com un estudiant de primer any, i així ho va fer molt
de nous amics.
També m'he presentat a aquesta concentració tot
tota l'escola d'enginyeria, per la qual cosa recomano encaridament
i li donem la benvinguda a la nostra família CS50.
>> Yaniv Yacoby: CS50 només t'ensenya com utilitzar les eines
que són molt accessibles.
Només es necessita un ordinador portàtil, es necessita un navegador web, i vostè
Necessitem aprendre a escriure una mica de codi, i vostè pot construir realment
coses interessants.
>> KAREN XIAO: És tan bo ser capaç de fer alguna cosa
i que la gent el faci servir i que la gent ho veu, i això és
el que realment m'agrada d'ella.
>> Tim McLaughlin: - un sentit de comunitat, crec que, en aquest
per descomptat, més que qualsevol altre curs que he pres fins ara.
No només estàs prenent un altre -
vostè no està omplint altre requisit.
No només anem a conferències i anar a la secció.
Però estàs fent un munt de coses que són tots sobre
programació i tot sobre la tecnologia, però no és així
Realment et sents com una classe més de les vegades.
>> TRAVIS DOWNS: I el primer dia, van repartir coca, i
Em van vendre a l'instant.
>> JACOB Pritt: caramels gratis i pizza.
>> ZAMYLA CHAN: - sense importar el seu nivell d'interès, crec que
que CS50, et divertiràs i podràs intel · lectualment
estimulat.
>> MARK GROZEN-SMITH: Sempre és una festa a la classe, i és un
festa cada nit treballant en el seu p-set.
>> JACKSON Steinkamp: Cada vegada que s'acabi un butlletí de problemes,
es sentirà com vostè ha acabat un projecte.
>> MELISSA NIU: Va ser el primer any, i es va fer la compra.
Jo tenia els meus quatre classes llest, i jo estava en Annenberg.
I em trobo amb un amic, i ell diu, hey, vaig de compres
aquesta classe anomenada CS50, i vostè ha de venir amb mi.
Vaig acabar havent de aquesta tardor, i després d'aquesta classe, que
vaig pensar que potser vaig a menors en CS.
Però aquí estic, tres anys després, encara està estudiant ordinador
la ciència i de fet ho està fent com un major, i em va encantar cada
moment d'ella.
>> ROB Bowden: No tinc ni idea.
>> ALI Nahm: A veure.
>> MELISSA NIU: bogeria.
>> Ponència 1: Sento que seria molt clixé.
Que acabava de dir, com, impressionant.
>> Yaniv Yacoby: Accessibilitat.
>> JACOB Pritt: caramels gratis i pizza.
>> TRAVIS DOWNS: No es pot baixar una classe que es reparteix la coca.
>> Tim McLaughlin: Energètica.
>> VIPUL Shekhawat: Essential.
>> ROB Bowden: Deixa pensar en una resposta.
Crec que tinc alguna cosa.
Oh, déu.
Sí, em dic Rob Bowden, i això és CS50.
>> [Aplaudiments]
David Malan: Molt bé, així que començarem a pintar un quadre
de la direcció en la qual podem anar, i introduirem
aquest concepte aquí conegut com pseudocodi.
Així que no és un pseudocodi de programació
llenguatge en si mateix.
No és gens tècnic per se, però és només una espècie de
forma general d'expressar amb força precisió,
bastant algorísmica, processalment justa, però sense
haver de preocupar-se per l'idioma que vostè està expressant
vostè mateix polz
És cert model d'Anglès i llenguatges de programació amb
que vostè sigui familiar, perquè puguem començar
escriure aquest tipus de coses sobre la marxa.
I de fet, Joseph, podria vostè demanar prestat a l'escenari per ser
escrigui aquí?
He seguit endavant aquí amb anticipació i oblidat de posar
uns mitjons d'avui, i això serà un dels nostres més
exemples ridículs.
>> Ara, et necessito aquí.
Vaig a fer la part de mitjons.
Així que aquí tenim un petit bloc de notes.
Això és, literalment, només TextEdit en Mac
No estem realment va a escriure un programa executable, però
només començarem a esbossar pseudocodi basat en
en alguns dels consells que proporcioneu a mi aquí.
Així que aquí està la meva pila de mitjons a casa.
No tinc mitjons quan em desperto al matí, i ara estem
d'escriure un programa, un algoritme de classes, amb el qual
per obtenir aquests mitjons als peus.
I en el camí, veurem si podem ensopegar, o trobada,
algunes de les idees que vostè va a haver de començar
pensar molt més seriosament en la programació
no sigui que els seus programes no es comporten bé com s'esperava.
>> Així que seu aquí.
Tinc la meva pila de mitjons.
Què és el primer que un ésser humà raonable seria
fer quan l'objectiu és posar en un parell de mitjons?
Que algú em faci un pas, i només el primer pas.
Sí?
AUDIÈNCIA: Doblega cap avall.
David Malan: Inclina't, està bé.
Segon pas.
AUDIÈNCIA: tens el teu mitjó.
David Malan: tens el teu mitjó.
Val, ambigüitat tan lleu aquí, i aquest és un dels primers
obstacles que que se suposa que deliberadament
Trobem aquí.
És una mica ambigu, així que pren el teu mitjó.
Està bé, em quedo amb aquest, però un ordinador, realitzar en un
poc, no tindrà aquest tipus d'instint humà de només
escollir el més proper.
Haurem de començar, en poc temps, expressant
nosaltres mateixos amb major precisió.
>> D'acord, llavors el segon pas és aixecar el mitjó.
Anem a prendre.
Tercer pas.
A la part posterior.
AUDIÈNCIA: Troba una parella.
David Malan: Trobi parell coincident.
Bé, això és bo.
Vaig haver triar aquest mitjó.
Així que l'objectiu és trobar una coincidència de mitjó, ara, però el
Què vol dir això?
Un ésser humà és raonable, igual que dimecres, quan em
va saber trobar Mike Smith en una guia telefònica, només una mica de
va ser amb el seu instint.
Però aquí, és, òbviament, aquest mitjó aquí, però d'un ordinador
no serà tan instintiu.
Un equip que tindrà una col · lecció de bits, com hem
discutir el dimecres, i són els
organitzat d'alguna manera en la memòria.
Però el punt és que un equip només té la capacitat de
a mirar les coses d'una en una, i de fet, fins i tot es
els éssers humans - tot i que se sent com que mirar cap avall ia la ruptura
segon després jo sé on és el mitjó, el meu cervell i els meus ulls
presumiblement va tenir un ràpid descremada dels mitjons, i enganxat a continuació
a la que ens ocupa.
>> Així que si podem ser encara més deliberat ara com un ordinador,
Com puc trobar aquest parell a joc?
Bé, hem de iterar.
Hem de potser llaç sobre aquest embolic dels mitjons al
pis per qui em diu alguna cosa com PER CADA mitjó, recollir
, I si la mateixa forma i mida que l'altre, llavors
punt, punt, punt, continuarem la història.
Així, per cada mitjó, així de recollir això.
Reviso és aquest igual a aquesta.
No és, per tant deixar de banda lateral.
Llavors iterar de nou.
És aquesta una igual?
No, no ho és, així que ho vaig posar a un costat.
És aquest?
No
Aquest?
No, i així successivament.
I, finalment, amb sort, vaig a trobar aquest mitjó aquí.
Així que si es tracta de la mateixa forma, mida, pren-lo.
>> I ara, ¿quin seria el següent pas en aquesta llista?
Sí?
AUDIÈNCIA: Identificar dreta de l'esquerra.
David Malan: Està bé, identificar dreta i esquerra, de manera que
Afortunadament, aquest tipus d'obres.
Una mica simètric, o m'he gastat només ells d'aquesta manera.
Molt bé, així que m'he identificat la dreta.
I ara, abans de continuar, permetin-me assenyalar el que José
estat fent aquí com una mena de programador versat.
Així que de nou, no hi ha una sola manera de fer això, però més enllà de
numeració de les línies, Joseph ja ha començat a fer això
espècie de sangria.
De fet, aquesta és una convenció molt comú en la programació,
de manera que quan es fa alguna cosa repetitiu, bucles estil,
estem donant a entendre amb la frase en anglès "PER CADA
mitjó, "la convenció en pseudocodi i, com veurem,
llenguatges de programació habituals, és just guió.
Prem la barra espaiadora diverses vegades, premeu la tecla Tab o similar,
perquè niat sota "PER CADA mitjó" és el tros de
coses que ha de fer com a resultat d'aquest bucle.
Així que això és tot el que està transmetent semànticament.
Ara, mentrestant, el "Si es tracta de la mateixa forma i mida," la
fet que "Take it" una sagnia addicional només significa
això és l'únic que ha de fer si aquesta condició,
si aquesta branca, que forquilla a la carretera, és de fet veritat.
>> Així que ara aquí, estem en el quart pas, identificar la dreta ia l'esquerra.
He identificat dreta.
Give em passo cinc.
I tècnicament, realment podríem anomenar
el per a cada cosa -
probablement hauria numerar totes les línies si
farem això.
JOSEPH: [inaudible]
David Malan: [inaudible]?
Bé, està bé, està bé, anem a fer-ho a la teva manera.
D'acord, llavors el pas cinc, com podem fer el mitjó dret?
Com procedim proper, aquí?
Sí?
AUDIÈNCIA: Aixequeu la cama dreta.
David Malan: Aixequeu la cama dreta, està bé.
Pas sis?
Ràpidament.
Si.
AUDIÈNCIA: Trobi un extrem obert del mitjó.
David Malan: Està bé, trobar l'extrem obert del mitjó.
Tan bo.
Així que aquí, de veritat, un instint molt comú només seria
posar en mitjó dret, però això també és bastant ambigua.
Llevat que l'ordinador o humà sap exactament el que vol dir,
no serà per executar això, així que aquí, no tinc
trobar l'obertura de l'estoc.
Pas set?
AUDIÈNCIA: Toca't els dits dels peus.
David Malan: dits dels peus Touch.
Bé, ara anem -
Està bé, em vaig a prendre algunes llibertats aquí.
Gràcies.
Pas vuit?
Poseu-vos mitjons.
Està bé, així que ara, crec que estem prou a prop a una espècie de presa
aquesta un a casa.
Molt bé, així que això va cap amunt.
Vaig a prendre algunes llibertats amb el que significa, en realitat.
Col · loqui el mitjó a.
Molt bé, ara pas nou?
AUDIÈNCIA: Col · locar el peu cap avall.
David Malan: Gràcies.
Pas nou, posar peu a terra, i ara, repetim pot.
Així que probablement, ara podem entrar en el pas 10 i dir identificar
va deixar mitjó, però això és probablement ja està fet.
>> I llavors, puc ordenar de repetir aquests passos.
Però aquest tipus de petició de principi.
Abans, l'última vegada que volíem repetir alguna cosa,
va fer iterativament, una i altra vegada, una PER
Cada bucle per dir-ho.
Tindria sentit utilitzar un bucle per tal de manejar tant
l'esquerra i la mitjana dreta?
Perquè se sent com si aquestes operacions són més o menys
idèntics, excepte pel fet que un comença aquí i un
comença aquí?
Tenim bucle, o simplement seguir els passos d'escriptura
10 i 11 i 12?
AUDIÈNCIA: Loop.
>> David Malan: Molt bé, així bucle.
De fet, em podria haver dit simplement seguir endavant.
Per què és aquest el cas?
Bé, això és en realitat el primer de la nostra no-obvi
decisions de disseny i, de fet, un dels indicadors amb els quals
començarem a avaluar, per a nosaltres i per a vostè, el
qualitat d'un programa és el bé dissenyat que és.
Ha fet la mínima quantitat de treball necessari per
fer la feina el més ràpidament, ja sigui en termes de
seu temps o en termes de temps de funcionament de l'ordinador?
Quantes operacions fa que es necessita per executar?
Així que podria dir-se que aquesta és una oportunitat per a un bucle perquè
tan bon punt comenci a copiar i enganxar, com José eficaçment
seria començar a fer en un moment, vostè està perdent el tipus de
temps, i que està sent doblement expressiu.
>> Però al mateix temps, aquests són en realitat dos especials
casos, esquerra i dreta.
I mentre que abans, podria tenir 10 o 20 o més mitjanes en
una pila, que sens dubte no té sentit tenir 50 línies de
codi dient mira això mitjó, després el següent,
llavors el següent.
Aquí, és una mica menys obvi, i em va proposar que
que podíem anar en qualsevol direcció.
O bé podria tenir aquest llaç, encara que només els bucles
dues vegades, o podem simplement copiar i enganxar una mica
aquí amb la finalitat de fer la feina.
Però aquest programa està lliure d'errors, per dir-ho.
És possible que tingui alguns errors, errors o casos de cantonada, així
Parlaré, doncs, que en realitat no anticipar.
Res va sortir malament aquest cop, però el que va poder haver sortit malament
durant l'execució d'aquest programa?
AUDIÈNCIA: No té cap mitjons.
>> David Malan: Així que no pot haver mitges hi ha alguna.
Així que considerarem aquest cas cantonada.
Així que si poguéssim retrocedir fins al pas un, pas un era tan
doblegar cap avall, de manera que concorda.
El segon pas, pren la mitjó, però després trobar mitjons a joc,
identificar la dreta.
És com que va fer un munt de suposicions, i això és,
francament, per què de vegades el programa bloquegi.
Si, el programador, han fet certes suposicions, com
segurament no serà mitjons o segurament no va
a ser memòria disponible a l'ordinador, segurament no
ser espai en el disc en el disc dur -
Bé, si vostè fa aquests supòsits, i que no ho és,
de fet, la realitat, qui sap el que de vegades l'ordinador
farem?
I de vegades, quan rep la pilota de platja giratori o el
congelat Windows o similars, això és precisament pel fet que alguns
programador no va preveure aquests casos extrems anomenats.
Quina altra cosa podria haver anat malament en aquest programa?
Sí?
>> AUDIÈNCIA: No té la cama dreta i la cama esquerra.
David Malan: Bé, potser no tingui tant una cama dreta i un
la cama esquerra, de manera que aquest programa pot no ser universalment
aplicable.
Altres?
AUDIÈNCIA: Vostè podria haver recollit un mitjó orfe.
David Malan: Podria haver agafat un mitjó orfe, de manera que un
no corresponent mitjó que només no té germans perquè he
el va perdre, es trenca, és en el rentat encara, o similars.
Així que, també, en realitat no ha estat manipulat.
Sí?
PÚBLIC: És possible que ja tingui mitjons.
David Malan: Si tingués mitjons.
Jo en realitat no check.
SI vostè no té els mitjons, i després procedir a fer
la línia un i dos.
I això podria succeir.
Et quedes dormit amb els mitjons i similars, així
això, també, un cas cantonada molt raonable.
I potser un altre?
AUDIÈNCIA: El mitjó està ben girat.
David Malan: Així que el mitjó està al revés, així que vam fer cap error
comprovar, en definitiva.
No comprovar si l'estat del món és com esperem.
No comprovar si en realitat trobem el que estem buscant.
>> I tot i que això és una espècie d'un exemple ridícul
la participació de mitjons, al final de la dia, això és exactament la
tipus de mentalitat cal tenir en escriure programes,
fins i tot en Scratch, així com en C, en JavaScript, en PHP,
perquè en cas contrari, els programes es presenten el
equivalent d'aquesta pilota de platja o simplement donar voltes
resultats inexactes.
Així que moltes gràcies aquí al nostre escrivà Josep.
[Aplaudiments]
>> David Malan: Molt bé, i què és, en
fet, un programa d'ordinador?
Bé, anem a fer una ullada ràpida a un
representant d'un aquí.
Així que aquest és un programa escrit en un llenguatge anomenat C. C és
nous llenguatges molt antics en aquests dies, però molts es construeixen
a la part superior de la mateixa.
De fet, PHP, un dels llenguatges web centrades anem a
utilitzar cap al final del termini, es té el que es diu un
intèrpret, un programa que està escrit en C, però més d'això
en moltes setmanes a partir d'ara.
Però aquest programa, i això és el que significa escriure un
programa, si bé de manera molt simple.
Tenim una sintaxi força críptic aquí, però es pot
probablement endevinar, fins i tot si mai has programat abans, el que
que fa el programa.
De fet, jo no sé el que printf és, però certament imprimir
evoca la idea d'imprimir alguna cosa.
I sí, aquest programa és en última instància d'imprimir
les paraules "Hola, món".
>> Ara, si vostè té un Mac o un PC o un ordinador amb Linux, el més probable
són, si més no si descarregueu algun lliurement
programari disponible, que podria haver estat escrivint programes en
seu propi ordinador portàtil des de fa força temps.
En Mac OS, per exemple, hi ha un programa anomenat
Terminal que ve amb un Mac, que és en general en el seu
Carpeta Utilitats, i en general s'obre un negre i
blanc o una finestra en blanc i negre en què apareix un
indicatiu en el qual pot escriure ordres.
Així que això és realment una reminiscència del que les computadores
solia ser abans gràfica d'usuari
interfícies, interfícies d'usuari, va arribar.
Ara, en Windows, té un mecanisme similar en la forma
del indicatiu.
>> Però, què vaig a fer és obrir, diguem,
TextEdit altra vegada, de manera que el mateix programa que utilitzàvem per
pseudocodi fa un moment, i jo vaig a seguir endavant i
escriure el meu primer programa.
Incloure stdio.h, sigui el que sigui, int main
buit, sigui el que sigui, i després en el medi aquí,
printf ("hola, món."). I després cita estreta,
tancar parèntesi, punt i coma.
Ara vaig a seguir endavant i acaba de colpejar Cmd-S. Vaig
seguir endavant i guardar això com hello.c, de manera que la convenció en
el món de la programació C és el nom de l'arxiu del punt c.
Vaig a posar just al directori d'inici John Harvard,
aquí, feu clic a Desa, i ara em vaig a anar a aquest
finestra de terminal, que de nou és aquest indicador en blanc i negre
on puc executar ordres.
>> Puc executar programes escrivint el seu nom, no per
doble clic a les icones en el sentit habitual.
Però la cosa es tracta de C és que un llenguatge com C 1
ve en aquesta forma, una cosa que es diu codi font.
Una cosa que s'assembla una mica com l'anglès, però és
definitivament menys com l'anglès d'un pseudocodi de José
moment abans.
És una mica més arcà.
Sembla que seguir les pautes o regles.
El fet que tinc les claus, punt i coma, cometes,
suports en angle, se sent com un equip se li va ocórrer aquesta
tipus de llenguatge.
Però si em vaig, ara, a aquesta finestra de terminal, puc córrer un
ordre que es convertirà aquest codi font és
una cosa que es diu codi objecte.
Això va a convertir Anglès-com sintaxi a zeros
i uns, els mateixos tipus de zeros i uns que nosaltres
va parlar el dimecres.
Ara, em vaig a córrer una ordre anomenat Clang.
Més sobre això en les pròximes setmanes, però és un programa amb
que puc convertir hello.c en un munt
de zeros i uns.
>> Ara, m'he trobat aquesta comanda.
He corregut Clang, i després em va dir que córrer a tu mateix a l'arxiu
anomenat hello.c, que he creat fa un moment, i
res sembla succeir.
Però en realitat, si em va ficar en el meu directori personal, m'agradaria veure
que aquest programa estúpidament anomenat a.out ara existeix.
Això és només el nom predeterminat per a un programa quan s'escriu en
C. Podem canviar aquest temps, però és la a.out
nom del programa que acaba de convertir en zeros i uns.
I ara que ell és zeros i uns, el meu Mac, en aquest cas, o
el PC amb Windows, pot entendre els bits, els
zeros i uns.
I així, quan jo premeu Enter, veig "hola, món!"
>> Però és una mica buggy.
Jo no acabava de dir "hola, món: l'aire: - jharvard". L'aire és
el nom del meu equip.
Jharvard és el nom del compte, així que ho vaig fer amb claredat
ometre al programa?
Una espècie de salt de línia.
No li vaig pegar l'equivalent a Enter o el retorn de carro,
i això és, de nou, testimoni del fet que els ordinadors poden
només fer el que els diuen que facin.
I el fet que jo no li va dir en moure l'ordinador
cursor a la línia següent -
així, no és segur que farà només el
presumptuosament per a mi.
Així que si torno a anar al meu programa, i dic \ n -
Llavors, \ n, com aviat veurem, és la forma de
representar les coses estranyes com caràcters de nova línia, coses
que d'una altra manera seria el resultat de
prement la tecla Enter.
Però, per ara, només sé que prement la tecla Enter es
acaba de fer el nostre codi semblar estrany, de manera que el món van decidir, ja saps
el que, per mantenir les coses més boniques, per mantenir-lo en una línia, anem a
acaba de dir \ n representa una nova línia.
Permetin-me tornar a guardar el meu arxiu, torneu a la finestra de terminal, i
torni a executar a.out, Intro.
Encara amb errors, però per què?
>> AUDIÈNCIA: [inaudible]
David Malan: Sí, així que he de tornar a compilar.
Així que per compilar un programa només significa convertir el de la font
codi per el codi objecte del codi font, en zeros i uns.
Ara bé, el simple fet de que vaig arribar a guardar en aquesta edició de textos no
tenint en aquests zeros i uns, perquè primer ha de
tell Clang hey, he canviat d'aquestes línies de codi, el
codi font.
Cal regenerar a.out.
Res sembla haver passat, però en un ordinador,
en una línia d'ordres, per dir-ho, quan no passa res,
que en general significa que tot està bé.
Quan alguna cosa passa, significa
vostè en mal estat, en general.
>> Així que anirem ara a a.out, i de fet ara tinc "hola,
món ".
I ara, què passa amb aquests zeros i uns?
On, de fet, són els?
Bé, no puc realment només una mica de furgar molt
eficaçment.
Permetin-me obrir TextEdit.
Això és a.out.
Deixin-me seguir endavant i obrir això, i això és pel que sembla el que el meu
programa sembla.
Així que he obert, hello.c no, però a.out.
Però això no és realment el que el meu programa és en realitat.
És evident que això és algun tipus de caràcters alfabètics.
Veig que no hi ha zeros i uns, però això és
perquè a.out és un programa.
Zeros i uns - però TextEdit, com el seu nom indica, és
igual que el Bloc de notes de Windows, és un editor de text, de manera que és
confonent tots aquests zeros i uns com
encara que ho fossin, què?
Caràcters ASCII.
>> Així que recorda el dimecres, només se li va ocórrer aquesta
assignació arbitrària de nombres, o bits, a les lletres del
alfabet i els símbols de puntuació i similars.
Així TextEdit, que és un editor de text es malinterpretant
aquests patrons de zeros i uns que se suposa que són
paraules d'impressió, com "hola, món". Els està mostrant
com ASCII, i per això es veu una mica desordenat.
Ara, hi ha alguns indicis de correcció d'aquí.
Observi si destaco, hi ha un indici de realitat "hola,
món, "així que en algun lloc d'aquest programa és
la frase que vaig escriure.
Però seguirem endavant i ara veig amb un programa diferent.
Això no és un usarem sovint, però també ve amb
un Mac i estarà dins de l'aparell CS50.
Deixin-me seguir endavant i obrir amb un programa anomenat XXD.
>> De tornada en el dia, la majoria dels programes van ser nomenats bastant críptica,
i pel que la tendència continua.
Però-b significa escopir a terme aquest programa en forma binària.
No ho executi.
Mostra a mi com zeros i uns, i aquesta és la C
programa que acabo d'escriure.
Ara bé, jo, com a ésser humà aquí, sincerament, no tenen idea del que
aquests diversos patrons de zeros i uns representen.
De tornada en el dia, jo, amb les meves targetes perforades o similars, ho faria
en realitat cal buscar el que aquests diversos patrons de
01111000, en realitat representen.
O pitjor encara, que hauria de fer la perforació o la creació
d'aquests patrons de zeros i uns.
Però per ara, tenir fe en què una CPU, Intel Inside, així
dir-ho, dins de totes les nostres ordinadors en aquests dies, sap
com interpretar aquests zeros i uns.
I alguns zeros i uns significar impressió.
Alguns zeros i uns significa reproduir un so.
Alguns zeros i uns significar prendre la entrada de l'usuari des d'un teclat.
Hi ha tot tipus de diferents models, però per sort,
com a éssers humans, en general, només ha de preocupar sobre la programació en
aquest nivell bastant alt.
I en altres classes CS pot aprofundir més profundament i buscar
les coses com aquests zeros i uns, o encara
altres coses fixes.
>> Així que ara anem a convertir això.
Anem a passar molt ràpidament de C i passar a una cosa una
poc més reconfortant, una mica més emocionant, en què
podem tornar nostres animacions i sons i similars, que
clarament ens han escapat a aquesta
interfície bastant primitiu.
Així que aquest mateix programa en C pot ser representada ara en aquest
llenguatge de programació anomenat rascada de la següent manera.
Aquest és l'equivalent d'aquest programa hola món escrit en
aquesta peça del trencaclosques estil llenguatge anomenat Scratch.
Així que permetin-me seguir endavant i obrir el programa mateix.
Es va tornar a demanar Scratch.
És de lliure disposició, i això és el mateix que
Comenceu avui mateix a.
>> Així que aquí és Scratch, i està dividida en uns pocs
diferents peces.
A la part superior dreta, tenim l'anomenada fase, i
de fet, aquí és on les galetes
realitzar només una mica enrere.
I en aquesta etapa són coses anomenades sprites, caràcters o
objectes o entitats.
Realment no importa el que pensa d'ells, però
coses són programables, mòbils, i en aquest cas, això,
programa que el nostre estudiant va escriure té un parell de pa de gingebre
galetes, un parell de galetes circulars, una gran quantitat de
cors, un munt d'ulleres.
A causa d'això, ell o ella és capaç de programar cada un dels
caràcters individuals per separat.
>> Ara bé, què significa per a programar aquests personatges?
Bé, deixa seguir endavant i fer clic en aquesta galeta mà esquerra
i desplaceu-vos fins a la part superior esquerra aquí.
A la part superior esquerra de la pantalla ara és el
l'anomenada àrea de scripts.
Aquesta és una espècie de pissarra en blanc, en un principi, sobre el qual puc
arrossegar i deixar anar les peces del trencaclosques que, francament, fer
exactament el que diuen.
A la part superior de la pila de trossos del trencaclosques és la paraula
En fer clic sobre Bandera Verda, i si no et vas adonar abans,
la manera com va començar aquesta cançó galeta va ser fer clic, literalment,
una bandera verda.
Així que aquesta peça del trencaclosques en la part superior esquerra hi ha vol dir que quan el
clics humans de la bandera verda, va procedir a fer
les següents coses.
>> Ara bé, què van fer galeta procedir a fer?
No se sap molt bé com interpretar això encara, però la
galeta aparentment estableixi la seva ranura a zero, llavors s'esperava
tres segons, després va canviar de grup a un, llavors
Va esperar un segon, i després va canviar la seva
ranura de nou a un.
I després aquesta realitat s'assembla una mica a un error, no ha
ha de canviar la seva ranura i una altra si no és
es canvia en un altre lloc, però aquesta sèrie de mesures és el que està
dictant el comportament d'aquesta galeta en particular.
Així que en realitat no desplaçar-se cap enrere i mirar una mica
tan complex encara.
Deixin-me seguir endavant i anar a Arxiu, Nou,
i obtenir un creu i ratlla.
>> Així que ara, en efecte tenir una àrea buida guió, un escenari buit,
amb el nostre follet ratllat defecte, i en la part superior esquerra
a la meva pantalla tinc la paleta de la totalitat del seu
peces disponibles trencaclosques.
I no anem a passar gairebé que moltes d'aquestes coses
avui, perquè, un cop més, la majoria s'expliquen per si, però ho farem
tractar de categoritzar i destacar les similituds
amb aquests llenguatges futurs als que anem a bussejar.
I aquí dalt a l'esquerra és la primera Bandera Verda Quan Seguit,
així que vaig a arrossegar això aquí, allunyar una mica.
I si faig clic a la bandera verda, res passa perquè
No he inclòs cap lògica, qualsevol declaració per dir-ho, a
aquesta bandera verda, així que permetin-me anar fins al
categories aquí.
Actualment estic en la categoria de control.
Estic en comptes d'anar a baixar a la categoria Aparença, i
hi ha un munt de coses aquí que diguis Di,
Pensa, canvi de color, vestuari Switch.
>> Així que vostè pot fer coses tontes amb els vestits i
sons i similars.
Deixin-me seguir endavant i dir Say i ara noti com em arrossegament
i col · locar aquesta peça del trencaclosques, voldrà aferrar
en la forma corresponent.
Així que quan em vagi a continuació i deixar anar el ratolí, es bloqueja
junts, i ara si em vaig d'aquí i feu clic a la bandera verda,
el gat és de fet saludar perquè això és el que hi ha dins
d'aquesta caixa blanca.
Aviat veurem que aquesta caixa blanca és el que s'anomena una
argument, o un paràmetre.
És una forma de canviar el comportament de, en aquest cas, una
peça del trencaclosques, però si vull dir exactament el que vaig dir
abans, dir hola, món, ara puc tornar per aquí,
Feu clic a Reproduir i "hola, món" és el que es diu.
>> Així que literalment estem programant ara.
No és tot el que obliga d'un programa, però almenys
que és una mica d'alguna cosa més convincent que sembla que, en
A primer cop d'ull, així.
I podem obtenir molt ràpidament tant més expressiva
perquè en Scratch, com en altres idiomes, no és tot
tipus de declaracions no, acaba de dir o imprimir alguna cosa, però
vostè pot fer coses com espera, com acabem de veure amb
la galeta, un cert nombre de segons.
Pot reproduir sons en l'entorn de Scratch només
com es fa en una reproducció de so d'ordinador normal del programa.
Vostè pot comprovar el que es diuen expressions booleanes.
Així que ara, començarem a afegir a la nostra caixa d'eines una mica de terminologia
que en realitat es refereix a l'exemple que Josep i jo
aquí amb els mitjons.
Així que les declaracions són declaracions de fets.
Feu això.
Una directiva per al sprite, o m'ho humà, per fer alguna cosa.
Una expressió booleana és una cosa que té un valor, un
anomenat valor de veritat, això és un zero o un, falsa o
cert, apagat o encès, no o sí.
Realment no importa el que pensis sobre això, però és un
binari Estat.
Com Nate discutit en vídeo de dimecres, dos
coses diferents.
>> Així que en Scratch, booleana passar a buscar
com aquests objectes blau aquí, i en aquest cas, la qüestió
marca implica que vostè està fent una pregunta.
Està el gat, o el follet, tocant el punter del ratolí?
Així que això és només un exemple d'un bloc de Scratch que està passant
que ens permeti comprovar si o no, és el ratolí toca el
sprite a la pantalla?
I això pot ser útil si vostè realment vol fer les coses
amb el ratolí.
A més de les expressions booleanes, tenim coses
com és el ratolí cap avall, perquè pugui detectar aquest tipus de
qüestionar també.
Podem fer les matemàtiques si vostè vol realment, i hi ha
usos realitat més convincents perquè aquest només pura de
aritmètica, com ja veurem.
Pseudo aleatori i fer que el seu programa semblen pensar
o es comporten de manera diferent sobre la base d'uns valors aparentment a l'atzar,
i després tenim coses com símbols booleans AND.
Així que si vostè realment vol comprovar dos valors, anem a veure en
Raspi que realment podem provar si això és
cert i això és cert.
Per exemple, en el cas dels meus mitjons, que podria haver al
molt extrem preguntat si mitjó esquerre està encès i mitjó dret
està encès, deixi de fer-ho.
Està tot fet per al dia, així que seria una
oportunitat perquè.
>> Així que seguirem endavant i tractar de reconstruir algunes d'elles juntament
i entrar en un parell d'exemples més
convincent que aquesta.
Així que permetin-me anar davant aquí i obrir alguns dels exemples
que sempre estarà a la pàgina web de l'assignatura, així, i
obrir hello2.
Així que en hello2 aquí, tenim un programa que s'està fent una mica
coses, però no ho fa tan eficaçment com ho faríem.
Així que aquí es diu "hola, món" durant un segon i després espera
per un segon.
I ho fa de nou, i després ho fa de nou.
Així que si faig clic a la bandera verda, Scratch diu: "Hola, món.
Hola, món.
Hola, món. "I aquesta és, òbviament, ara candidat per
millora.
>> Quina és la millora marginal, amb sort, podem
ara si fer scratch dóna suport al concepte?
Una espècie de bucle.
Una espècie de repetició, ara, estaria bé, així que permetin-me
realment intentar-ho.
Permetin-me realment anar i seguir això.
Així que avís es pot desprendre blocs tan fàcilment com vostè pot afegir a
adjuntar-los.
Deixa anar sota control, desplaceu-vos fins aquí, i de fet,
hi ha aquesta peça del trencaclosques aquí, repetida i sempre i
Sempre If.
Així que hi ha un nombre de maneres d'expressar construccions de bucles
en Scratch.
La que probablement vol aquí no és per sempre, perquè només
desitja que això passi tres vegades, però Repetiu probablement.
Així que em arrossega Repetiu fins aquí, arrossegar i deixar anar, i
ara en lloc de dir "Hola, món" en tres ocasions separades,
m'ho dius a mi arrossegar aquesta peça del trencaclosques aquí.
I tot i que no sembla encaixar, el programa és intel · ligent
prou com per adonar-se que creixerà per omplir, així que és el
formes que la matèria i no la mida absolut.
Canviarem la repetició a tres, i ara em deixa anar
endavant i arrossegar espereu uns instants en allà també.
Va a trencar endins també, i per això ara em vaig a arrossegar
aquests nois d'aquí i simplement llençar a les escombraries perquè
no els necessita més.
Permetin-me allunyar la imatge i feu clic a la bandera verda ara, i tenim
el mateix programa, però, com jo vaig predir abans, millor
dissenyat perquè es pot imaginar el mal que aquest programa
tindria, sens dubte estèticament, si ha de
començar a copiar i enganxar, copiar i enganxar, o
arrossegar i deixar anar les coses donaran mateixos una i altra vegada.
>> Ara, simplement dient coses a la pantalla, la impressió al
pantalla, en realitat no és tan emocionant, així que anem a obrir un
variància 3 aquí.
I ara, com es veurà, aquest dóna gust ser molest -
[MEOW]
David Malan: - però també és una mica valent.
[MEOW]
David Malan: Bé, millor així, i sens dubte podem utilitzar aquesta
mateixa transició de fragmentació això en un bucle
estructura, però ho farem més interessant encara.
>> Deixin-me seguir endavant i obrir una variació 4 aquí, on
prendre les coses un pas més enllà.
Així que d'acord amb això, ximple encara que això és en primera
mirada, el que aquest programa farà?
Va a miolar una vegada.
Per què?
Bé, un és, fins on jo sé, sempre inferior a dos.
No hi ha noció d'aleatorietat aquí.
Literalment, he codificat ui dos, però aquest és un
exemple ara d'utilitzar realment una expressió booleana.
Igual com ho va fer José al seu pseudocodi, la sagnia SI
a trobar mitjons a joc, fes el següent, aquí tenim
una expressió si un és menor de dos THEN -
i, de fet, fins i tot tenim una mica de sangria,
on el morat és una mica sagnia a la dreta -
Llavors vostè jugarà el miol de so.
Ara, en aquest cas, que un és sempre inferior a dos, de manera que aquest
és una mena de pèrdua de la condició.
Però serem capaços, com veurem, per tapar altres coses en
aquests marcadors de posició on un i dos són ara.
Així que anem a avançar ara a l'exemple cinc d'aquests diversos
salutacions i mirada al que aquest programa farà.
>> Així que ara, en una sentència de Anglès, com funciona això
programa de comportar?
AUDIÈNCIA: Meows meitat del temps.
David Malan: la meitat de Meow part del temps, de manera que aquesta és una forma de
transmetre una idea molt simple.
Tot i que s'estigui utilitzant algunes desigualtats aquí
en alguns números, això és en realitat un programàtica
Així, de manera precisa, de dir si la moneda surt cara, vagi
endavant i miolar.
O al revés, si la moneda surt creu, no miau.
I en aquest cas, com expressar això?
Anem a escollir un nombre a l'atzar entre 1 i 10, i si això
nombre és inferior a 6, endavant, miau.
I com va arribar això aquí?
Bé, de nou, només el compte d'arrossegar i deixar anar i
coses encaix.
>> Així que ara anem a veure si aquesta aleatorietat funciona.
Deixin-me seguir endavant i feu clic a la bandera verda.
[MEOW]
David Malan: Molt bé.
[MEOW]
David Malan: Molt bé.
Bé, bé, així que ens van donar caps, caps, cues eficaç.
Tails.
[MEOW]
David Malan: Heads.
[MEOW]
David Malan: Excel · lent.
Sempre és difícil quan només estadísticament s'obté una mala
executar, i és tots els caps, i el programa en realitat no
treballar com era d'esperar.
Però aquesta vegada, va funcionar, i sembla que tenim, si ho féssim
aquest nombre infinit de vegades, les probabilitats del 50%.
Ara, de nou, no tot és tan interessant, just el que els gats
miau, així que anem a veure si podem avançar en això una mica més lluny
aquí a la sisena versió.
Així que ara, tenim versió realment molest -
[Miols cada pocs segons]
David Malan: - i això és el que es coneix, en general, com un
bucle infinit.
>> Així bucle infinit en aquest cas se sent malament.
És, definitivament, començarà a sonar malament, i no obstant això infinit
llaços no són sempre dolentes.
Pot pensar en el context de programes d'ordinador en què havia
en realitat volen un bucle infinit?
Sí?
AUDIÈNCIA: Si vostè vol comprovar una condició.
David Malan: Està bé, si esteu a un control d'una malaltia?
Com què?
AUDIÈNCIA: [inaudible]
David Malan: Bé, bé, així que si tens algun programa, algun
tipus de coses domòtica, en la qual desitja constantment
monitor és una cosa així.
Són els llums encesos?
Són els llums encesos perquè potser vostè té un temporitzador i
desitja que s'apaga, és possible que hagi de fer alguna cosa
una i altra vegada.
I de fet, parlant dels temporitzadors, qualsevol de vostès que han
rellotges al teu ordinador o rellotges digitals, és una
bucle infinit.
Es continua actualitzant el temps perquè és constantment
la comprovació i el control i la comprovació té el temps canviat,
i si és així, oh, el meu déu.
El rellotge finalment ha canviat.
Cal mostrar aquest valor per a vostè.
Així, mentre la majoria dels cicles infinits de temps són un error,
o almenys una decisió de disseny pobre, de vegades ho fan
tenen el seu valor.
>> Bé, seguirem avançant per hello7.
Així que ara el programa es posen una mica més interactiu.
Permetin-me fer un zoom aquí, de nou, això és el que és bo
sobre Scratch.
I anem a usar perquè quedi clar, Scratch, només avui i en
problema la setmana que ve configurat.
Però el dilluns, ens submergim en C. En aquest programa, ho fa,
sempre, el següent.
SI tocar el punter del ratolí - ara, qui és el
context aquí?
Bé, i s'adona que qui selecciona aquí baix, en el fons
dret és el gat, sprite, així que aquestes seqüències d'ordres, això
programa, s'aplica a ell específicament.
Així que si el gat està en contacte amb el punter del ratolí, llavors va
per jugar a aquest i esperar dos segons, i
repeteixi fins a la sacietat.
>> Així que seguirem endavant i arribar a jugar.
No passa res, però si vull acariciar el
gat ara, simplement podia.
[MEOW]
David Malan: Adorable.
[MEOW]
David Malan: Bé, menys molest, però també aconsegueix avorrit,
així que seguirem endavant i veure si no podem injectar
una lògica poc més.
Aquest va ser l'exemple de set.
>> Aquí a l'exemple vuit, anem a
introduir una condició ELSE.
Tant literal com una forquilla a la carretera, on es pot anar
cap a l'esquerra o vostè pot anar a la dreta, una condició en la programació
llenguatge com Scratch, o com veurem C, pot permetre
anar en una direcció o una altra a través d'un IF ELSE construir.
Així que, literalment, SI tocar punter del ratolí, aquest
es reproduirà un so, en cas contrari jugarà aquest altre
so, miau.
Ara, si vostè pot deduir del nom d'aquests sons, pot
probablement endevinar el que aquest programa està destinat a evocar
la idea de.
Aquest gat està miolant feliç.
[MEOW]
David Malan: Feliçment, però no
prou per ser tocat.
[ROARS]
David Malan: Així que ara tenim un gat que va a cridar a vostè.
>> Bé, bé, un últim exemple amb els gats aquí, i
anem versió oberta de nou d'això aquí.
Així que ara, tenim el següent so més molest que he pogut
trobar, així que tenim una morsa o lleó marí que aquí va a
faci el següent.
[Foca]
David Malan: Bé, això continuarà fins que esbrinar com
aquest programa funciona.
Així que aquesta vegada, aquest animal té dos guions, i és el que
interessant aquí és que aquests scripts es va a executar
en paral · lel.
Per tant, ja que ambdues comencen amb una bandera verda es fa clic,
és com anar d'aquesta manera, i tots dos programes s'inicien d'executar
un cop fins i tot si estan bucle per sempre.
Així que en l'script d'alt, tinc una mica de lògica.
Què funcionalitats que proporcionen fins allà?
[Foca]
AUDIÈNCIA: [inaudible]
David Malan: Si es tracta de què?
[Foca]
AUDIÈNCIA: Si silencia a zero, es seguirà jugant el
sonar. [Foca]
David Malan: Està bé, està bé.
Així que si silenciat, sigui el que sigui, aquesta cosa taronja és zero,
A continuació, reproduir el so de llops marins i pensar "Oh,
hola, "durant dos segons.
Ara, jo no sé el que és silenciat, però zero evoca la
idea de fals o apagat.
Així que si silenciada és fals, pel que si no està silenciat,
mantenir la reproducció del so.
D'acord, bé, com podem desactivar aquesta cosa?
>> Bé, donem una ullada a la segona seqüència de comandaments allà baix.
El segon guió diu establir silenciat a zero.
Observi també és taronja, així que el que fa és que les ratllades colors
blocs en el mateix to que si és una espècie
de lògicament relacionats.
Així com recarregar silenciat era de color taronja, de manera que es silencia aquí
esmentat en el bloc taronja.
Però això és una assignació de variables, de manera que igual que en
àlgebra, tens x i i i z, en la programació té
variables, però són generalment -
fem una pausa per un moment i figura com
per aturar aquesta lladrucs.
Com puc fer això?
[Foca]
David Malan: Molt bé.
Es va aturar. Bé.
>> Així com en l'àlgebra té variables x, i, z, però en
programació, que té variables com x, i, i z és generalment
mal vist, perquè no són del tot expressiu.
Ells no tenen cap significat semàntic algun, pel que en la majoria
llenguatges de programació, les variables poden tenir plena
noms de ple dret o paraules o frases similars en silenci, per dir
el que fan.
Així que aquest segon script també s'escolta sempre, i va dir que
si la tecla, l'espai tecla del teclat, és
pressionat, signe d'interrogació.
Així que hi ha una condició amb una expressió booleana que és
va a respondre a una pregunta sigui veritat o fals,
llavors tinc dins d'ella si la tecla d'espai es pressiona i
SI apagat és zero, ajust silenciat a un, ELSE establir silenciat a zero.
Així que aquest altre forquilla a la carretera, i observi com he
niar les dues condicions IF, és una manera de comprovar és la
Barra espaiadora pressionada perquè si és així, jo tampoc vull anar aquesta
o aquesta manera.
I com invertir el valor d'apagada?
He de comprovar és zero?
Si és així, el converteixen en un, del que sigui zero per alternar tant
seus dos estats.
>> Molt bé, així que tenim a continuació algunes d'aquestes fonamental
construccions.
Tenim expressions booleanes, i s'adonen, també, aquests són
no tot el que no familiar.
De fet, aquí hi ha una captura de pantalla ràpida del seu curs de Harvard CS50
eina de compres, i qualsevol lloc web per aquí que té caselles de verificació
i menús desplegables que realment, tot aquest temps, ha estat l'ús
Expressions booleanes.
En aquest cas aquí, si fa clic a la casella de verificació al costat
Per descomptat major que o igual a 4,5, o el següent al mateix
facultat, s'especifica una expressió booleana.
Muéstrame els cursos per als quals aquesta expressió és veritable.
O a la dreta, no entri en conflicte amb els cursos que estic
adoptar, si és que es comprova, llavors sí, vostè vol comprovar
aquesta condició, més que vulguis ignorar.
Així expressions booleanes són una espècie de tot, però quan
els posem en condicions, si les condicions de SI, SI
Vigilés, o fins i tot podem simular més profund
nivells, IF ELSE IF ELSE -
així que això és una mena d'estat ternari.
Vostè pot anar d'aquesta manera o d'aquesta manera o d'aquesta manera.
Podem mantenir les coses d'implantació per anar en direccions diferents.
>> Així scratch té aquests llaços, com sempre.
Té aquestes característiques com la repetició 10, alguns
nombre finit de vegades.
Tenim la capacitat actual per definir les variables, pel que en aquest cas
He assenyalat, per exemple, a mitges anomenats variables.
He inicialitzat a 0, i això és una altra direcció
que podríem haver pres aquí amb Josep, el qual potser
només un seguiment de quants mitjons que tinc a i acabar
el programa quan el valor d'aquesta variable és 2.
Això seria una altra manera d'una mena de generalització que
problema i fer alguna cosa una i altra vegada.
Bé, seguirem endavant i ara introduir un parell de coses noves.
Així que aquells de vostès que tenen experiència prèvia de programació es
Sabem que molts dels idiomes tenen matrius o vectors o
llistes i, de fet, Scratch té alguna cosa com això, també.
Així que anem a veure si no podem portar les coses al següent nivell aquí.
Si té la possibilitat, ara, amb aquestes peces del trencaclosques per
afegir alguna cosa, com una paraula o un nombre, una variable, no puc
comencen a acumular les coses.
I això és en realitat bastant a propòsit per a coses com jocs,
jocs de rol on ets una mica pels voltants
un món de fantasia recollint coses, recollir les coses,
guanyar punts, o similars.
És possible que vulgueu fer un seguiment d'algun tipus d'inventari, i
de fet, això és el que un dels nostres antics alumnes aquí va fer amb
una cosa que es diu Fruitcraft RPG.
>> Així que permetin-me seguir endavant i obrir aquesta cosa aquí, i en
Fruitcraft, tenim aquest món cap a la part superior.
Així que permetin-me seguir endavant i feu clic a la bandera verda.
Avís a la part superior esquerra és una espècie d'inventari.
Això és implementat en Scratch com el que anomenarem a una matriu o
una llista, i ara tenim aquesta petita animació.
Així que quan vam començar abans amb aquesta història d'amor galeta,
i després va avançar als gats i lleons marins, ara podem tenir
el que és encara més interactiu.
I aquest tipus blau poc, puc començar a moure per la seva
petita llar aquí.
Així que sembla que té una sortida d'aquí, així que estic fent servir
les tecles de fletxes, amunt, avall, esquerra, dreta.
I ara estic fora, així que és el que tenim aquí.
Sembla que una taronja, i, de fet, tan aviat com em toqui la
color taronja, es va deixar caure en el meu inventari.
Si em vaig d'aquí a les cireres, ara tinc una mica
més en el meu inventari.
I això és tot bonic i valent, però pensar en com, ara, en aquest
s'implementa.
Bé, tenim aquesta noció d'una llista, i això és pel que sembla un
peça del trencaclosques que vostè acaba de dir el que vol afegir a la mateixa, afegir
taronja, afegir les cireres.
Ara, què és aquest noi poc de blau fent?
Bé, ell és un sprite.
I és de suposar, la taronja i les cireres -
ells mateixos eren sprites separats.
I l'ús de les condicions en les expressions booleanes, les
estudiant era probablement capaç d'expressar si és home blau
cireres tocar a continuació, afegir les cireres de paraules per a la seva
inventari, i després també amagar el sprite cirera.
Així que sota el capó, que probablement encara és una cirera
Sprite allà.
Hem comptat a arribar a ser efectivament invisible.
>> Ara, si em segueixes caminant per aquí, també podem fer-ho
El proximal, on puc anar i llegir el cartell.
Així que si home blau tocant signe, podem tenir aquest bloc Say
igual que el gat ens va parlar en paraules, hola, abans, "Got
una mica de fruita?
Porteu al lloc fruit. "Bé, ara el que, segons sembla,
Tinc les meves instruccions.
Jo puc anar d'aquí fins al lloc de fruites, alinear mi mateix
amb la porta.
Ara, jo sóc aquí.
Puc anar fins a l'home al taulell.
Es detecta que estic prop seu, de manera que no ha de ser
absolutament idèntica tocar, i m'he guanyat el joc.
Així que tenim Fruitcraft RPG.
>> Així que podem fer les coses encara més avançats que això.
Podem afegir sons.
Podem afegir aleatorietat pseudo.
Podem afegir complexitat.
Deixa anar endavant aquí, i en comptes de fer això per mi mateix,
deixa que et ensenyi una de les presentacions més sofisticades
ens van donar l'any passat d'una persona que es deia Blake.
Podem tenir un voluntari que és còmode que apareix en
càmera i és per jugar un joc?
I d'aquí?
Anem amunt.
Molt bé, així que el joc que vostè acaba de saber-ho,
es va oferir per jugar -
[Aplaudiments]
David Malan: - és una cosa d'abans anomenat
"Frogger". Quin és el seu nom?
RENDA: Renda.
David Malan: REDNA?
RENDA: És com Brenda amb una b.
David Malan: Bé, Renda.
David.
Gust a conèixer-lo.
>> Així que aquí a "Frogger", i si podem augmentar el volum just
una mica, es troba aquesta petita
granota verda a la part inferior.
Podeu utilitzar l'esquerra, dreta, amunt i avall, i el seu objectiu és
creuar el carrer, travessi el riu, i tocar les fulles de lliri
a la part superior.
Aw.
Una t més -
refer, d'acord?
Anem a deixar de cop.
Ningú el va veure.
[Aplaudiments]
David Malan: Si.
Molt ben fet.
Excel · lent, gràcies.
>> Així que no havia Frogger. Ara que saps el que has
arribat a vosaltres mateixos, voluntari un més per un diferent
joc presentat per un altre estudiant.
Vols venir a dalt?
¿Et dius?
RICHARD: Richard.
David Malan: Richard.
Molt bé, Richard, anem a dalt.
[Aplaudiments]
David Malan: Té alguna cosa que va a sonar
familiaritzar aviat, així que aquí estan les seves instruccions.
Així que en cert moment, algunes peces del trencaclosques es desplaçaran cap amunt
a la pantalla que es veuen bé a l'esquerra
o la dreta amunt o cap avall.
Vas a haver de tocar les tecles de direcció, de manera
que correspon a les peces del trencaclosques que s'alineen amb
els marcadors de posició a la part superior.
Així que quan vostè veu una fletxa cap a l'esquerra, i les línies cap amunt amb l'esquerra
fletxa, premeu la fletxa de l'esquerra.
Vostè pot començar.
[MÚSICA - "Stronger" Kayne West]
David Malan: Tot correcte, gran aplaudiment per Richard.
[Aplaudiments]
David Malan: Molt bé fet.
Gràcies.
[Aplaudiments]
>> David Malan: Volant i, aparentment, una mena de
intimidant com podria ser la d'implementar alguna cosa com
aparentment sofisticat com aquest, s'adonen que l'estudiant
no partien i acaba d'escriure això d'una vegada.
Més aviat, es pot descompondre un problema aparentment tan complex
com aquesta en trossos molt més petits, i això, també, és
Serà un tema.
La pitjor cosa que pots fer per escrit un programa en la majoria de qualsevol
el llenguatge és per seure, posar-se realment emocionat, escriviu el
maleïda cosa, i llavors només espero que funcioni pel
vegada que hagi acabat d'escriure.
Més aviat, el procés de la programació general, hauria
ser molt deliberat, molt iteratiu, en el qual només
establir mesures molt petites per vostès mateixos, trossos petits
Què vols arrencar amb les dents, i així que vostè té aquests seny
xecs, fites petits que puguin complir.
I després construir a la part superior dels que creen més
coses sofisticades fixes.
>> Així, per exemple, com fem per
la implementació d'un joc com aquest?
Bé, sincerament, em tornaria a començar amb només
donar suport a una tecla alhora.
Anem a implementar el suport per a la fletxa esquerra.
De manera que l'estudiant va haver de crear d'alguna manera en Photoshop, o en
Raspi si mateix usant l'editor gràfic petit, un
tecla de fletxa que s'assembla a la de dalt a l'esquerra hi,
el marcador de posició grisos.
Llavors l'estudiant havia de esbrinar què x, coordenada i en
el va posar, on posar-lo en la finestra.
0, 0 és aquí, així que has de calcular el nombre de
píxels, o punts, per compensar aquesta fletxa de
la part superior de la pantalla.
I després, un cop estigui en funcionament, el programa en realitat no
fer res, de manera que aquest cas és necessari un sprite en segon lloc, per
exemple, una fletxa verda que apunta cap a l'esquerra també, i vostè
A continuació, ha de començar a escriure alguns scripts per fer-ho.
>> I t'adones, potser, que aquestes coses van començar a arribar a
velocitats diferents, i els colors van ser en diferent
llocs, i això és degut a que l'estudiant fa servir una mica de
aleatorietat pseudo.
I per casualitat pseudo, em refereixo només a recollir un nombre
entre una cosa i una mica perquè es pot
començar amb les coses del mapa, com si el nombre està entre un i
cinc, bé, farem la cosa verda.
Si és entre 6 i 10, farem la peça del trencaclosques
vermell al seu lloc.
Sempre que vostè té una manera de generar algun tipus de
aleatorietat, pot prendre decisions sobre la base que
aleatorietat.
I segueixo dient pseudo aleatòria, perquè hi ha un
petit i brut secret.
Els ordinadors no poden arribar a nombres aleatoris.
Ells només poden fer el que els diuen perquè
són dispositius creats per l'home.
No poden endevinar un nombre com nosaltres els humans
sentir com ens sigui possible.
Un equip ha de fer alguna cosa matemàtic per conjurar la
il · lusió del nombre matemàtic, utilitzant de vegades la
dia actual del temps com una entrada per esbrinar el que
nombre per tornar, però més d'això en un altre moment.
Per ara, només sé que podem generar aleatorietat pseudo.
>> Així que una vegada que tinc la capacitat per la fletxa esquerra per començar
que apareix en moments diferents ia velocitats diferents, llavors
Em pot tornar enrere i afegir una mica d'aquests si les condicions.
SI aquest element sprite està en contacte amb l'altre, i la fletxa esquerra
ha premut la tecla -
de manera que les tres condicions en aquest cas.
Puc utilitzar aquest bloc AND potser, en aquest cas -
Llavors vull seguir endavant i augmentar la puntuació.
I a la part superior, tenim un resultat, tenim Awesome,
Cool, bé, i Boo.
Així que hi ha cinc variables que pel que sembla aquest estudiant
utilitza per fer un seguiment d'aquests indicadors diferents.
Així que en resum, el resultat final és increïble.
És divertit, és divertit de jugar, és atractiu, però això no és
on l'estudiant va començar.
Ell o ella va començar a un conjunt molt més petit de passos.
>> Quins són alguns altres blocs de construcció que podem
teixir en aquests programes?
Bé, hi ha un concepte diferent de molts dels idiomes,
Ratllar entre ells, conegut com rosques.
Així que un equip no pot realment realment fer diverses coses a la
temps, almenys no en general.
Més aviat, un equip generalment té un sol CPU, i fins i tot
Encara que les computadores són súper ràpid i pot, per tant,
crear la il · lusió de fer diverses coses alhora -
revisar el seu correu, obtenir l'instant
missatge, la impressió d'un document -
en realitat, un ordinador és només saltar d'impressió per enviar missatges instantanis
per enviar correus electrònics, tornar i tornar i tornar i que endavant tan ràpid que
lents humans enginyosos no s'adonen que en realitat és
explotació d'aquests programes una mica alhora.
Ara, això una mica de blanc es troben en aquests dies, ja que, avui en dia,
molts dels nostres ordinadors són el que s'anomena multi-core, de manera que
té una CPU de múltiples nuclis, però, el que ve a ser com
tenir múltiples CPU.
>> I així, de vegades, les computadores poden realment fer diverses coses
alhora, però generalment dins d'un programa, els programes
confiar en aquestes coses anomenades rosques.
Així que un fil és com un programa en miniatura que pot
coexisteixen amb un altre programa en miniatura i pot córrer
en paral · lel, o si més no es pot executar sota la il · lusió que
s'estan executant al mateix temps.
Així esgarrapades dóna suport a aquestes coses anomenades rosques.
Vostè pot tenir diverses seqüències d'ordres d'execució al mateix temps, com nosaltres
va fer amb el lleó marí, i això ens permet en realitat
llavors tenen interaccions entre aquests sprites.
Deixa anar per davant aquí i tiri cap amunt, diguem, fils, i
jugar de la manera.
Tenim dos sprites, cadascun dels quals veurem
només té un guió.
I t'adones sembla que hi ha una mica d'intel · ligència al
gat en aquest perquè està cada vegada més a prop -
[ROARS]
David Malan: - cada vegada més al ocellet.
>> Llavors, com és el sistema operatiu ocell?
Bé, anem a fer una ullada a la primera au.
El guió ocell va dir quan la bandera verda es fa clic a, hagi de x
és igual a negatiu i és igual a 115 i 150.
Així que em vaig adonar d'una ubicació aleatòria on jo volia que el
au per començar, i que només el va deixar caure allà per defecte.
Llavors sempre si no tocant gat, així que això és diferent
tipus de construcció de bucle, però la mateixa idea, fer això una i altra
una i altra vegada.
Sempre que vostè no està tocant el gat, es mouen tres passos, i
si estàs a la vora, rebot, on és una espècie de
reflexió en el sentit de billar.
Així és com l'au es mou al voltant tipus de
aparentment a l'atzar, però és només perquè està rebotant
les parets en aquest cas.
>> Ara el gat, per la seva banda, és una mena de parany.
El gat, quan la bandera verda es fa clic a Sí, s'inicia en
alguna ubicació, un lloc a l'atzar -
si més no en part com per la selecció
de blocs a l'atzar verd allà -
i després per sempre si tocar a l'au, reproduir el so lleó,
i després deixar de guió.
Així que quan em va dir que cancel · lar o sortir abans, hi ha un trencaclosques
peça en Scratch que s'acaba de tancar el programa en aquest
punt perquè és una espècie de lògica per fer.
Però d'altra banda, aquí, fixa't en el que passarà.
Punt cap al ocell i avançar un pas.
Així que aquest punt cap al au és una espècie d'avantatge al gat
té en que és homing a l'au en moviment, i podem
ara que aquest programa sigui encara més interessant.
En lloc de moure un pas a la vegada per cada cicle de la CPU, per
vaga de peatge de la campana, per dir-ho així, deixa seguir endavant i
moure, diguem, cinc passos alhora com el gat.
Feu clic a Executar, i ara realment el troba ràpidament.
Si dupliquem això més de 10 passos, és com que va
adequada per a ell.
Ara, podem donar l'ocell,
potser, una mica d'avantatge.
Anirem a l'ocell i dir en lloc de moure tres passos,
ho passarem 30 passos.
Però encara va quedar atrapat al final.
>> Així que aquí tenim dos fils.
Està empresonat en Scratch amb dos guions i dos
sprites, però la idea en altres idiomes és que es pot
escriure, en essència, massa programes com aquest i tenir
córrer de veritat, o imaginàriament, en paral · lel.
>> Ara bé, també hi ha aquest concepte en programació conegut com
esdeveniments, i això és una cosa que no veurem en C, el
llenguatge conegut com a C. A veure cap al final del semestre
en la programació web, quan introduïm JavaScript i el
noció de construcció de pàgines web que són dinàmiques i interactuar
amb els usuaris.
Així, en aquest cas, tenim un exemple molt simple de dues
sprites, nen i nena, cadascun d'ells amb el seu respectiu
fils, però d'alguna manera aquests dos són intercomunicació mitjançant
d'alguna cosa que es diu els esdeveniments.
Així que permetin-me anar davant aquí i apropar guió del noi,
que són aquestes.
Quan fa clic a bandera verda, per sempre fer el següent.
Si l'espai clau, o la barra espaiadora, es prem, per exemple
Marc per dos segons, que és purament estètic al
pantalla, un entrepà petit, però després emetre.
>> Així difusió és una altra peça Scratch que és
representant d'una classe de funcionalitat en la programació
que permet als diferents programes, diferents fils,
a intercomunicació, per enviar alguna manera
missatges, un a un altre.
Passar un tros de paper a classe és una espècie de baixa tecnologia
equivalent.
Així esdeveniment transmès.
Puc enviar aquest missatge, i la paraula esdeveniment
és completament arbitrària.
Ratllat de vegades té aquestes llistes desplegables, així que es va acostar
amb una paraula a l'atzar com esdeveniment perquè ara, el que el nen fa
en pressionar la clau és que emet aquest esdeveniment.
I si miro ara en el guió de la nena, el seu guió és
super simple, perquè tot el que ha de fer és no actuar quan
la bandera verda es fa clic.
Està dissenyat per a l'acció quan rebi Ho van dir ells,
"Event", i en aquest moment, ella està escoltant, per tant,
l'esdeveniment anomenat una i altra vegada.
Així que es rebi aquest cas, ella va a cridar
Pol durant dos segons.
>> I pel que és una mica deduir d'això exactament el que el
resultat que ve serà.
Permetin-me clic a la bandera verda.
No passa res perquè he de fer què?
AUDIÈNCIA: barra d'espai.
David Malan: barra d'espai.
Boy diu Marc, noia diu Pol.
Però això no és de codificació fixa per se.
Aquesta és la intercomunicació entre les seqüències d'ordres, de manera que ara
tenen la capacitat de fer que els programes encara més complex en el qual
aquests dos són d'alguna manera intercomunicació.
>> Així doncs, en quina direcció podem prendre això?
Doncs bé, en conjunt problema 0, en realitat, l'objectiu és
divertir-se amb Scratch.
Per a l'edició pirata, en el seu lloc es divertirà amb més
versió sofisticada de Scratch anomenat BYOB, urbanitzat
Els seus propis blocs, però la idea és la mateixa.
Vostè serà capaç de -
Sí, això va ser deliberat.
Venia de Berkeley.
BYOB és la versió de l'edició pirata d'això, però al mateix temps
demografia, l'edició estàndard i edició pirata per igual, el
objectiu a la mà per a la setmana és en realitat per submergir-se en
profund, embrutar-se les mans amb la programació, i fer
alguna cosa interessant, fer alguna cosa interactiu, feu
alguna cosa artístic, fer alguna cosa divertit que en realitat
demostrar, de manera que a finals de setmana, tindrà un projecte,
no només per la seva primera CS50 conjunt de processadors, però tindràs un
poc d'una cosa que es pot mostrar en Annenberg per
amics o familiars, fins i tot per pujar-lo a la pàgina web del MIT.
I així, com vaig dir el dimecres, s'espera que el 90% de la classe,
en general, a fer les edicions estàndard.
Adonar-se que també hi ha aquesta sortida per a aquells de vostès que
en cas contrari pot ser que es trobi una mica avorrit amb el bàsic
i realment vol submergir i crear una visió que ja
tenim amb coneixements previs en aquest més amigable
ambient.
>> Així que em tiri un altre exemple que un dels nostres ex
estudiants aquí va fer i dir-los alguna cosa a través del cant.
Que de la mateixa manera, ja que això juga, pensi en com vostè va sobre la
l'aplicació d'aquest programa utilitzant precisament aquests mateixos
blocs de construcció, una mica d'aleatorietat, i un pseudo-
poc de cançó familiar.
Si poguéssim pujar el volum una mica?
[MÚSICA - "És Raining Men" The Weather Girls]
>> David Malan: Això és tot per CS50.
Ens veiem el dilluns.
[Aplaudiments]