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