[MÚSICA] Això és CS50-- Harvard La introducció de la Universitat a l'intel·lectual empreses de ciències de la computació i la tècnica de la programació. I el meu nom és David Malan, i Estava pensant aquest matí, que ha estat sorprenentment 20 anys avui des de l'última vegada vaig asseure al que vostès fan ara. Era el 1996. Jo era un estudiant de segon any, i jo estava prenent CS50 per primera vegada. I ni tan sols m'havia reunit el valor prendre jo mateix el primer any, en part a causa del temps. la informàtica per a mi Era una mica com, meh. Jo era una mica d'un geek de creixement dalt, però no ho vaig fer de veritat tenir cap intel·lectual interès en el que semblava ser només un munt de la gent tot el temps de programació. I jo tenia por de ser honest. El curs i la informàtica més generalment tingut i en certa mesura, encara té aquesta reputació d'un camp de vés amb compte, si més no perquè molts de nosaltres no estan familiaritzats amb ella i no està segur d'això. I realment no va ser fins que busquessis aquesta classe de segon any que fall-- i fins i tot llavors, només vaig matricular perquè el professor-- un dels meus primers mentors, Brian Kernighan ara en Princeton-- em va permetre prendre la passada de classe falli. I, de fet, és per això Avui ens permeti i animi estudiants per prendre aquesta classe van seure / unsat. I només llavors, per la final del semestre No m'adonava com, wow, això No era un camp tan poc familiar. De fet, aquesta va ser una molt enriquidor camp, i més emocionant, especialment més endavant, mentre prenia cursos de Art Dramàtic i Amèrica 101 A i després, eventualment l'arqueologia de postgrau, ¿Realment començar a veure el interseccions d'aquest camp, ordinador la ciència, amb les humanitats, ciències naturals, les arts, la medicina, i similars. I això és el que és tan plau de la informàtica en última instància, com esperem que primer veure-- és la seva aplicabilitat a aquests altres camps, i com es pot prendre alguna cosa d'avui i el semestre de idees i habilitats pràctiques de nou al seu propi domini, i, de fet explorar aquesta intersecció de les arts liberals i les ciències. Així el 73% que, si l'última any és una indicació, mai han pres un curs de CS abans. Així que si, com jo, ets sentint una mica por, o francament no estàs entenem per què estàs fins i tot en aquest cas. Potser només alguns seguit amics a través de Sanders ara mateix. Això és totalment bé. L'objectiu aquí és per enganxar vostè i assegurar-los que si mires a l'esquerra i a la dreta, vas a veure amb els companys de classe tan poc o molta experiència que vostè mateix pugui tenir. I, de fet, anem a compartir algunes estadístiques més tard avui pel que fa al de la demografia la classe tenen l'aparença típica. I com afegeix reassurance-- i això ens Vol dir des que vaig prendre durant el curs alguns anys ago-- a programa del curs és això- que el que en última instància matèria en aquest curs no és tant on acaben amunt en relació amb els seus companys de classe, però on en setmana 11, al final de la semestre, acaben amb relació a si mateix en la setmana 0, el que és on som avui aquí. I això és el que em vaig adonar fa tots aquests anys. I sé que un munt de classes diuen això, però és especialment cert en la informàtica. Al final de la dia, aquest camp és desconeguda, ja que era per a mi i podria ser per a vostè, és realment només de la resolució de problemes. I, com a tal, té això aplicabilitat a aconseguir altres camps. I de fet, si ho intentem per destil·lar el que això significa, aquesta és la resolució de problemes en la seva essència, m'atreviria a dir. Hi ha input-- així que el que es és que estem tractant de resoldre. No hi ha sortida, que és d'esperar la solució a aquest problema. I llavors, com ho faríem dir en informàtica, hi ha aquest quadre negre en el mitjana que no necessàriament han de preocupar per la forma en què funciona. Vostè mateix podria eventualment posar en pràctica el que hi ha dins d'aquesta caixa. No obstant això, per als propòsits de l'actualitat i més en general, en la vida, tot el que importa és que aquests problemes es resolen. I el que és aquest curs en última instància, sobre el qual s'explora la intersecció de aquestes entrades i sortides, i aquests anomenats algoritmes, com aviat veurem, que implementen el que és sota hi ha, el capó. Però aquestes entrades i aquests outputs-- el que significa realment? Bé, al final del dia, necessitem alguna manera de representar la informació. Això és especialment cert en un ordinador, la qual és tan elegant i complex, ja que podria semblar, és un dispositiu bastant ximple. Es necessita electricity-- ja sigui de un cable o una bateria com input-- i llavors es produeix alguna respostes preprogramats a la pantalla. Però, com podem obtenir a partir de principi a fi allà? Doncs bé, què és un problema a resoldre? Bé, potser podríem, per la qual l'inici d'un semestre, tractar de prendre l'assistència en una habitació com aquesta. Pel que podria fer com una, dues, tres. O potser, si ho fes al tipus de seguiment myself-- de fer un seguiment de les coses-- Podria córrer ràpidament dels dits. Així que jo podria fer hash d'una marks-- persona, dues, tres, quatre, cinc, sis, set, vuit. I tots nosaltres tenim probablement fet això, ja sigui a les seves mans o en un tros de paper. I això és en realitat cosa que es diu notation-- unari on si només té una lletra en el seu alfabet, un o haixix marca en aquest cas, per a cada d'entrada que desitja comptar, que necessita per acabar amb un d'aquests letters-- d'aquestes marques. Tot bé. Això és tot bé i bo i no tan complicat. Però els ordinadors no són tots que molt més complicat. De fet, la majoria de vostès probablement saber fins i tot si no tens realment considera el que això significa, que ordinadors només entenen zeros i ones-- l'anomenat sistema binari. Els éssers humans, per contra, són tan molt més sofisticat en la mesura tal com l'entenem zeros a través de nous. Però fins i tot si binari és, en primera vista, no tot el que coneix, Resulta que és igual que els sistemes i les idees que ja coneixen. Així, per exemple, consideri això. Això és només una seqüència de símbols. I tots vostès, quan mirant a aquesta, normalment pensar en res 123-- realment interessant allà. Però per què és aquest número, 123? Aquests són només glifos en la screen-- només patrons que algú podria haver dibuixat o escrit. Però si vostè és com jo, Probablement recordi des de l'escola primària que hi ha una mena de columnes o llocs aquí. Hi ha lloc i el de la el lloc de deu i el lloc dels cent. I la raó per la qual això és 123 i no només un patró de tres símbols és perquè, és clar, si tenir un un al lloc de les centenes, es fan els comptes de 100 vegades un, i després dos en lloc de les desenes. Així que això és 10 vegades 2, i després tres a lloc de les unitats i això es 1 Temps març. I quan s'agrega a tots els de dalt, de Per descomptat, s'obté el 100 més 20 més de 3. Així que vam començar amb només un patró symbols-- d'un alphabet-- però després hem mapejat en sentit que per mitjà d'aquestes columnes. Doncs bé, resulta que els ordinadors no són realment tan diferent de tu i de mi. Però en lloc d'utilitzar potències de 10, així speak-- 1, 10, 100, 1000, 10,000 lloc i així forth-- que realment només ha d'utilitzar els poders de 2-- pel que un, 2, 4, i després si posem més dígits, 8, 16, 32, 64, 128, i així successivament. I així és com un ordinador representaria el nombre 0, de la mateixa manera que els humans. 0, 0, 0-- i que és fàcil endevinar Què patró de zeros i uns, si només pot un ordinador 0 parlar o el 1-- patró es va a representar els números dels éssers humans coneixen com 1? Yeah-- 0, 0, 1. Tot bé. Pel que 0, 0, 1 és la forma en què representem 1, per la qual cosa podria estar inclinat a continuació, per representar el número 2, si vostè té el lloc dels quatre i el lloc dels dos com un sol lloc, es podria dir, bé, si tinguéssim un 1 en lloc de les unitats, i ara volem comptar fins a 2, és possible que fer això i deixar que es tracta d'un zero. Però per descomptat això no és com el sistema decimal funciona bé. Si poses un dígit en tant d'aquestes columnes, vostè ha de fer l'aritmètica. Llavors, quin nombre em va fer accidentalment acaba de representar? Així que és 3, ja que 2 vegades 1 més 1 1 vegades, és clar, ens dona tres. Així que això seria dues. El bit espècie de llança, per així dir-ho, com 0 es converteix en un ésser, igual que un nen de 9 papers més i es converteix en un 0 quan transport a la 1. Això llavors seria de tres per descomptat. Four-- altra cosa interessant succeeix, on els roden sobre i transporta la 1, per així dir-ho. Així que això, per descomptat, és 4. Però si l'avanç ràpid ara, Quin és el nombre més gran que va sent que un ordinador pot representar? Així que és només set en aquest cas, oi? A causa que té un un en el quatre, un dels dos, un u en un. Així que això és 4 més 2 més 1. Així que li dóna 7. I, en efecte, que el faria semblar a primera vista que els ordinadors poden comptar no més que això. Però això per descomptat no és cert. Què fan els humans quan volem comptar més enllà de com 999? Només portar a la una i acaba afegir un quart dígit a l'esquerra. I així, de fet, hem pogut. Podríem tenir un vuit de lloc i el lloc de la 16a, i el lloc d'una de 32, 64, i 128-- simplement pot seguir endavant fins a l'infinit. Pel que aquests zeros i ones-- l'anomenat system-- binari són el que ho faria un científic de la computació en general, trucar a un bit o dígit binari. Però ara, com aconseguir que des del concepte o els gràfics d'aquestes coses a un equip real? Sembla que estem saltar-se un pas aquí. Bé, l'única entrada al final del dia, al meu ordinador portàtil aquí És aquest flux d'electricitat. Fins i tot si ha passat un llarg temps des que has pensat o mai pensat Com funciona l'electricitat, no hi ha electrons que flueixen en o cap a fora, i això és el meu tipus d'entrada. Així que si això és tot el que som rebent com a entrada aquí, ¿Què podem fer amb aquesta informació? Bé, podríem pensar en un zero com només una absència d'electricitat. Res és flowinw, res és en moviment, no passa res. Això és només el valor per defecte Estat-- zero. Però si no hi ha electricitat que flueix, per què no acabem de forma arbitrària, sinó a nivell mundial consistentment, truqui que un u. Per tant, simplement per tenir cap poder, tenim, sí potència d'un zero, tenim una, si el poder un-- cap poder. I d'aquesta forma, l'ús d'alguna cosa més físic o electrònic vam començar a posar en pràctica aquesta noció de cosa que és ja sigui un o un zero. De fet, podríem fer-ho aquí. No aquí, tinc tres, però vuit focus de llum, cada un dels quals té el seu propi interruptor. I pel que si volia representar el número set aquí, Jo podria activar aquestes tres bombetes. I, en efecte, a l'interior de el meu equip és de milions, milers de milions de coses que són simplement menor que, anomenats transistors, interruptors, que acaba d'encendre i apagar. Així que aquests són relativament big-- interruptors big-- dins del meu laptop-- són molts, molts, molts, molts més interruptors. Però l'únic que fan és exactament això-- convertir una cosa en, convertir una cosa fora. I, com a tal, un ordinador pot representar, amb aquests milions o bilions de transistors, lots i un munt de zeros i uns. I hi ha altres equips que encara li permet emmagatzemar informació a llarg termini, de manera que quan es tiri de la endoll, que no es perdi. Però aquesta és una història per a un altre dia. Llavors, què podem fer amb aquests bits? Podríem només per prendre la pressió de me-- és que algú pot voler venir aquí i oferir una demostració? Vaig veure per primera vegada aquest costat. Com et dius? Madai: Madai. DAVID Malan: Madai, anem a dalt. Encantat de conèixer-te. Madai: Gust a conèixer-te. DAVID Malan: Vine aquesta manera. No vaig a tenir a l'llavi cap amunt. Tot bé. Així que aquí tenim, notice-- un, dos-- editarem que out-- un, dos, quatre, 08:00, 16, 32, 64, 128. Això és deliberat. Hi ha vuit bits aquí-- binari de zeros i uns digits--. I una mica és una unitat útil de measure-- no és tan útil una unitat de mesura sobre si mateixa. En general, vostè vol almenys vuit d'aquestes coses, també anomenat un byte. Així que tenim un byte de bits aquí. Així que si volíem que desafiar amb, per exemple, explicant, en binari, aquest valor aquí-- 42. Vols prendre una punyalada en això? Madai: [inaudible]. DAVID Malan: Sí, només empènyer el petits interruptors blancs davant. I vol lletrejar cap de 42 anys, i en joc És aquesta tensió CS50 bola si vostè aconsegueix això. Tot bé. Pel que té 32. Necessitarem 42. Així que és un vuit, així que això és 40. I excelente-- molt ben fet. Gràcies. [Aplaudiments] Tot bé. Així que tenim una bola de la tensió més. Anem a fer això un cop més si pot. Un altre voluntari? La bola lliure d'estrès, bola de la tensió lliure. D'ACORD. Aquí al mig, ¿Vols baixar? Tot bé. Ho sé. Allà anem. Així que els números aquí-- anem cap avall. Com et dius? Davey: Davey. DAVID Malan: Davey. D'ACORD. Anem a dalt, Davey. Encantat de conèixer-te. I el que anem a haver de spell-- si pogués quedar-s'hi per només una moment-- és el número 50. Però, però, però, però, però, aquests són imants de l'escola primària per una raó. Ha fet una mica més difícil, ¿d'acord? Encara hi ha vuit. Tot bé. Llavors, què tenim allà? Tenim 32. Niça. 32 més el 16 ens dóna 48-- tan a prop. I meravellosa. Felicitacions a Davey també. [Aplaudiments] Tot bé. Pel que podem fer això tot el dia, i que no rep tot el que molt més interessant i més difícil. Però això és realment el point-- és la forma relativament simple que és, al final del dia, el que és una ordinador fa per emmagatzemar informació, per emmagatzemar entrades i en última instància emmagatzemar o representar aquestes sortides. Però els números per si sols no són tan interessant. Així que els éssers humans, fa uns anys, decidit, saps què? Seria bo si els ordinadors no eren només calculadores per l'aritmètica operacions, però en realitat es podria fer coses com processament de textos, o correu electrònic, o encarnacions més moderns d'aquest tipus de tecnologies. I així el món va decidir arbitràriament, sinó universalment, que si es desitja emmagatzemar la capital lletra A en un ordinador, saps què? Anem a tots d'acord per emmagatzemar un patró de zeros i ones-- bits-- que en última instància representa el nombre decimal 65. Només haurem de tots estem d'acord en això. 66 representaria B, 67 representaria C, i hi ha munts d'altres patrons de zeros i uns, o números subjacents, que representaria altres cartes fixes. Així que si vostè tipus de mental absorbir això per un moment, Deliberadament posar un mitjà I, on H a 72 i és 73. Si un equip a continuació, en el context de un processador de text o un correu electrònic, revelar sota de la campana tenir aquests patrons de patró bits-- de bits que representen 72, a continuació 73, a continuació, 33-- el que això podria significar en aquest programa? Així hola, i després alguna cosa. Nosaltres no necessàriament sabem, però de fet 33-- no en el gràfic abans els he parlat era simplement un signe d'exclamació. Així va ser 72 H, 73 és I, 33 succeeix ser un punt d'exclamació encara. Però això és tot bé i bo, i, de fet, avui en dia, en lloc de només ha d'utilitzar set o vuit bits, gràcies a alguna cosa anomenat Unicode en oposició a ASCII tornada al dia, en realitat podem representar encara més personatges interessants que només aquests Anglès originals esbiaixada lletres. Però també podem representar fins i tot coses més ordenades com els colors. Si alguna vegada has escoltat l'acrònim RGB, vermell, verd, blau, que només significa que un ordinador normalment utilitza tres conjunts de bits-- cert nombre de bits que representen un nombre per la quantitat de vermell que desitgi, un altre conjunt de bits per la quantitat de verd que desitgi, i un altre grup de nombre la quantitat de blau que desitja. Pel que un gran nombre significa un munt de , Nombre petit de color vermell vol dir que no hi ha vermell. I pel que aquests són una espècie dels valors mitjans aquí. Així que em fa una mica de vermell, dóna'm una mica verd, i em fa una mica de blau. I si es barregen els tres tons del color junts, en aquest cas, s'obté aquesta ombra tèrbola de color groc o marró. Però aquest model de vuit més 08:00 més eight-- de manera 24 bits-- d'esquerra a dreta, és com un ordinador representaria aquest color en particular. Ara bé, això és només un punt en una pantalla. Si es mira molt de prop a la seva TV de la seva ordinador, veurà punts o píxels. I si vostè té tota una xarxa de píxels, horitzontal i verticalment, Té imatges. I a continuació, si es pren una imatge i després rentar a si mateix mostrar una altra imatge, una altra imatge, una altra imatge, una altra imatge, molt ràpid, que per descomptat té pel·lícules. I així notar al punt de partida. Vam començar amb aquests zeros i uns. Es va treballar a partir d'aquí a decimal nombres, la forma en que ells representen. Ara tenim lletres de l'alfabet. Però en altres contextos esperen, podem utilitzar uns quants més bits i representar colors. Tan aviat com vostè té la capacitat per representar els colors, vostè té la capacitat de representar fotografies i gifs animats i altres tals personatges a la pantalla. I quan vostè té un munt de imatges que volen per l'ésser humà alhora, sembla que les imatges en moviment, i perquè pugui obtenir vídeos també. Així, utilitzant aquests mateixos primitives simples que fan tenir la forma de representar en última instància, totes aquestes formes de mitjans de comunicació. I hem van resumir nou i una altra vegada i una altra, fins que arribar des del nivell més baix a aquest nivell més alt. El que ens dóna aquest idea general de l'abstracció. Però comencem aquí. Aquí ara, podríem representar en un ordinador les nostres entrades amb zeros i uns, les nostres sortides en zeros i uns, però el que passa dins de la caixa? Aquí és on l'ordinador la ciència es posa interessant. Això és on realment portar la seva pròpia ment a carregar per resoldre problemes. Ara podem estipular, per la resta del semestre, si. Sé com funciona binaris. Recordo com ASCII o Unicode-- l'assignació a letters-- obres. I sens dubte es destaca la raó que ens podria representar vermell i verd i blau, i representen multimèdia també. Però aquesta és la matèria interessant. Això és el que fa que algú capaç de resoldre els problemes. I un d'aquests problemes ens agrada fer, de fet, s'està portant a l'assistència, o fent això algorítmicament. I de nou, podria fer això. Jo podria fer una, dues, tres, quatre cinc, sis, set, vuit i nou. I vaig poder escriure- cap avall per fer un seguiment de la mateixa. Però això és només la forma en què ho faria representar la informació. O podria fer això faster-- dos, quatre, 6, vuit, deu, 12, 14, 16, 18, 20, 22-- se sent com dues vegades tan ràpid però segueix sent va a prendre un munt de temps. Però resulta que, però, si aprofitem resource-- altres ordinadors i, de fet en aquests dies tenen diverses CPU o el cervell. Resulta que els ordinadors poden fer moltes coses alhora, i de fet, en aquesta sala, podria representar exactament això. Així que és una mica de vista social maldestre, però si ho faria amb el meu humor per només un procés de tres passos, i molt Em pregunto a cada un en el seu lloc allà només de posar-se dempeus per un moment. Aixeca't. Així pensa a si mateix, el nombre de un-- perquè tots en aquesta sala, excepte la gent que no ho van fer oblige, estan pensant en el número u. De manera que sigui el seu nombre en aquest moment. Aquesta és la primera etapa, o com una científic de la computació o un programador normalment ho faria, anem per començar a comptar des de zero. Si el nombre més petit que puguem representar amb aquestes bombetes és zero, per la qual cosa els deixa sol fos poc, pot ser que també acaba començarà a comptar a partir zero és lloc d'un. I el que és el Els informàtics. Així que pas a zero, posar-se dempeus i pensar en el número u. El següent pas és això- parell amb algú de peu i afegir els seus números. Meravellosa. Així que en aquest moment en el temps, literalment, tots els participants està pensant en el nombre 2, excepte per a una persona estranya si tenim un nombre imparell de persones a l'habitació. I ara el tercer pas aquí va a això- ser un de vosaltres ha de seure. Un de vosaltres ha de seure, i si vostè està encara en peu, tornar al pas un. Tot bé. Tot bé. Pel que cada vegada més persones ha d'estar assegut sota. Observi que això ha induït 1 loop-- algun tipus de cicle. Alguns de vostès ha d'haver pegat amb poca traça, anant i venint entre el pas un i dos, un i dos, un-dos. Està bé. El nostre primer error. Ens ocuparem d'això. Tot bé. Vaig a tractar d'impulsar les coses. En teoria, només una persona està de peu com tothom segueix aparellar-se. Però permetin-me accelerar les coses amb la gent que segueix en peu. Quin nombre està pensant? 46. D'ACORD. Vagi per davant i seure. Vostès es mantenen en peu. Que encara està dempeus? Quin nombre està pensant? D'ACORD. Així que anem a tornar a vostè. Al darrera? Què és això? 22. Acceptar a algú més top-- si? 34. D'ACORD. Per aquí al meu dreta- aquí dalt? 132, molt agradable. 22? D'ACORD. I que encara està dempeus? Per aquí? 46, molt agradable. 72. No puc aturar molt més temps. Sí? 30, agradable. Per aquí? 23? 23. I crec que això és tot el món excepte vostès, no hi ha pressió. Oh, espera. 28? Només vuit. D'ACORD. Només vuit. Aquí sota? 30. 23. 24. 18. Aquest és el pitjor execució d'aquest algoritme mai. D'ACORD. Així que qualsevol altra persona? Algú més? D'ACORD. Un més. 16? D'ACORD. 16. Tot bé. Així que si no m'he perdut a ningú en la resplendor aquí, quan pols Intro, anem a veure, de forma algorítmica, el nombre total de persones en Sanders. Perquè, de nou, és com si tothom com seies, passat el seu nombre fos a una altra persona, una altra persona, a una altra persona, de manera que, en teoria, Al final, només una incòmoda persona ha de deixar-se de peu. Però això està bé. Accelerem les coses manualment. És especialment difícil de veure en aquest espai particular. I el nombre total de persones creiem que hi ha aquí és 546. El nombre total em van lliurar pels becaris d'ensenyament, qui ho va fer el vell de manera lenta l'escola, era de 820. [El] [Aplaudiments] Està bé. Pel que segurament llavors, hi ha aquests insectes. I això està bé. I pel que pensar de nou en aquest la primera vegada que alguna cosa s'escriu no necessàriament ha de funcionar. Això m'ha passat aquí també. Però ara considerarem com podria aplicar aquesta mateixa idea a alguna cosa que podria haver vist abans, la qual cosa és aquesta vella tecnologia de l'escola aquí-- una llibreta de telèfons molt gran. I suposem que aquesta llibreta de telèfons té 1.000 pàgines i 1.000 noms i els números alfabèticament dins d'ella. Bé, podríem tipus d'aplicar un similars idea per a aquest problema molt físic, simplement usant mi. Jo només tipus de trampa mitjançant l'aprofitament de tots vostès amb munts i munts de diferents CPU o cervells executar algun algoritme. Però si és només poc vell jo, encara puc aprofitar aquesta mateixa essència d'una idea de dividir i conquerir aquest problema cop i un altre, de manera que la meitat de vostès, la meitat de vostès, la meitat de vostès, la meitat de vostès, teòricament mantenir-se assegut, fins que ens vam anar, en teoria, amb una sola persona. Així que en aquesta vella escola la tecnologia, com no ho fem necessita aquesta map-- aquest La tecnologia de la vella escola, podríem començar a buscar algú com Mike Smith, una pàgina alhora. I veig que no, Mike no és aquí. Encara estic a la secció A. Amb el temps, em sembla a mi mateix en la secció B. I això és un algorithm-- pas a pas la instrucció. Comenceu a la pàgina d'inici i un alhora, buscar Mike Smith. És aquesta correct-- aquest algoritme o mètode? Sí, és correcte. Si Mike és aquí, amb el temps Vaig a arribar-hi. Però no és eficient. És obvi que és molt lent. Així que es pot aprofitar la twosies mateixes s'aproximen. Puc fer una mena de dos, quatre, sis, vuit, 10, 12. És dues vegades més ràpid. Vaig a arribar a Mike més ràpid si està allà. És correcte? Sí, però no vaig sentir un poc--. Ara vaig sentir un no. Sí. Hi ha un insecte potencialment. Potser Mike aconsegueix simplement per accident intercalada entre dues pàgines, perquè jo estic volant a través aquesta dos alhora. Així, almenys, ens cal una mica de tipus de solució condicional. Necessito dir, hey, si colpeig a algú la nom comença amb una T en lloc d'una S, Serà millor doble volta almenys una pàgina. Així que amb errors al principi, però pot arreglar. Però cap de nosaltres va a buscar Mike Smith a través d'un telèfon de 1.000 pàgines reservar una pàgina alhora. Què és una persona normal va a fer? Vas a anar a la dècada de S, si sabia on era el del S. Vostè pot anar més o menys a la meitat o lleugerament esbiaixat cap al final. I miro aquí i Sóc a la secció M. Però ¿què és el que saps sobre aquest problema ara, que no necessàriament saber abans amb tots nosaltres simplement explicant a nosaltres mateixos equivalentment? Bé, Mike va clarament estar en aquesta part del llibre si aquí en absolut perquè està ordenada. I pel que pot molt dramatically-- [Amb fatiga] Ho sé. [Aplaudiments] En realitat és molt fàcil si ho fa en l'espina dorsal allà. Però a continuació, pot tirar la meitat del problema de distància. Ara, em quedo amb el mateix problema-- Mike Smith a trobar un telèfon book-- però ara la guia telefònica comença a M i va a la Z, però és la meitat de gran. Però això és el que és impressionant. Igual que en la teoria, nois, quan que tots es van asseure només la meitat a la vegada, el problema té la meitat de la grandària, la meitat de gran, una i altra vegada. Per tant s'ha convertit en el problema de la mateix problema, però la meitat de gran. Ara es tracta d'un problema de 250 pàgines. Tan aviat com em vaig adonar, oh, estic en la secció T accidentalment. He anat massa lluny. Puc llençar que la meitat de la guia telefònica de distància. Ara, estic a baix a una trimestre del problema. I es pot repetir, repetir, repetir fins que, en teoria, estàs l'esquerra amb una sola pàgina. I si Mike és en aquesta pàgina, Ara puc resoldre aquest problema. Però la rapidesa amb la qual soluciono? En el primer cas, em va prendre com potser 1.000 passos per trobar Mike Smith. Podria haver pres me-- Vaig agafar la guia telefònica i vaig començar a buscar una pàgina a la vegada, i Mike podria ser de 1.000 pàgines més endavant. Segon enfocament potser em porta 500 passos, perquè jo estic volant a través de dos en dos. I el tercer enfocament, però, és especialment potent. Però considerarem el que en realitat va fer amb aquest tercer enfocament. Vaig a tenir el que anomenaré només aquests declaracions aquí, un a la vegada. Recollir una guia de telèfons. Obrir a la meitat de la guia telefònica. Mira noms. I llavors les coses es posen una mica intel·lectualment més interessant, si segueix senzilla. Si Smith es troba entre la noms en aquesta pàgina actual, a continuació, fer una mica de forma condicional. És com una forquilla a la carretera. Truqui a Mike. Si Mike és un dels noms en aquesta pàgina, anomenat Mike. Però només ho fan si la línia línia de quatre arbre, si es vol, és cert. La resposta a aquesta pregunta és si. Perquè si Smith és més d'hora en el book-- en altres paraules, si estic a la secció H i estic buscant algú per l'esquerra, a continuació, el que ha de fer és una cosa molt semblant. Llavors hauria d'obrir a la meitat de la meitat esquerra del llibre. Així que anar a l'esquerra, i després torni al pas dos. Miri els noms allà. Així, en altres paraules, fer el mateix, però en un problema que s'ha reduït a la meitat. Saps què més? Si Smith és tard en el llibre sobre la base de la pàgina que estic mirant, obert a la meitat de la la meitat dreta del llibre i després tornar de nou al pas 2, else-- hi ha una quarta possibilitat aquí. Mike ja sigui aquí o cap a l'esquerra o cap a la dreta o no. I aquí és millor que considerem això. I de fet, si vostè ha tingut alguna vegada l'equip acaba d'estavellar a vostè, que és de vegades, però no sempre, el resultat de només un programador humà no adonar-se, oh disparar, hi ha En realitat aquest quart escenari. I si vostè no escriu codi per gestionar aquest escenari, de vegades no se sap el que l'equip pot fer. I de fet un programa podria bloquejar-se. Però en aquest cas, vaig pensar sobre ell, i li vaig dir, en cas contrari deixar de fumar, perquè aquesta és la quarta escenari lògica possible. Ara, anem a afegir una mica de vocabulari, així que pot començar a girar al voltant dels termes que són d'altra banda bastant intuïtiva. Totes les coses que acabem de ressaltat en groc aquí, Només vaig a la funcions o procediments. Són només tipus d'accions. Així que recollir, obert a, mira a, trucar, oberta, oberta, quit-- aquests són només les accions, o el cridar-los de manera més formal, funcions. Mentrestant, ara en groc, He destacat coses que- començarem a cridar ells condicions o branques. Aquests són els punts de decisió on vostè pot anar per aquest camí, d'aquesta manera, o alguna altra direcció encara. Així que els hi haurà condicions. I ara aquest és una mica més elegant. Anem a trucar a aquestes preguntes Les expressions booleanes, després que algú amb un cognom Bool. I una expressió booleana és només una cosa això és veritable o fals, sí o no. Pel que és la pregunta la resposta es preocupar-se, de manera que en una condició fer una volta en decisió aconseguir una resposta, i després anar a l'esquerra oa la dreta, o alguna cosa més en conjunt. I a continuació, finalment, aquests línies aquí-- es remunten al pas 2, tornar al pas que podria dos-- posar en pràctica aquesta idea de diferents maneres. I a continuació, els que tingueu experiència en programació podria haver fet o es pot imaginar fent això de manera diferent. No obstant això, per als propòsits de l'actualitat, és només la idea que importa. Aquesta és la inducció del que que anomenarem general 1 loop-- algun tipus de cicle, perquè m'està fent fer alguna cosa nova. Així que ara, considerarem el bo que aquest algoritme és. És correcte. Si Mike està en el llibre, que és una de els quatre scenarios-- cop i un altre i una altra, el trobarem. Però el millor és? Bé, no tenim ser massa formal aquí. Però anem a traçar alguna cosa, X i Y, per aconseguir un sentit de la forma d'aquest problema. A l'eix x és aquí la mida del meu problema. I un eix I aquí serà el moment de resoldre. Així que potser aquest és el nombre de pàgines. Potser això és qüestió de segons o La pàgina d'turns-- el que sigui. No obstant això desitja comptar és el que aquesta imatge representarà. I aquest primer algoritme, vaig per descriure simplement com una línia recta. Si hi ha n pàgines en la guia telefònica, llavors Em podria prendre fins com n passos per trobar Mike. Si Verizon o la companyia telefònica afegeix una pàgina més el proper any, em podria prendre una més step-- una unitat més de temps per trobar Mike. Així que no només aquesta relació un a un. És un pendent recta. Mentrestant, aquest segon algorithm-- si estic anar de dos en dos en dos temps--, quatre, sis, vuit, o double-- passant per les pàgines dues vegades a la vegada, de dos en dos, tot i així és la línia recta. Ara hi ha d'un a dos relació, però una mica més baix. Així que si hi ha aquesta quantitat de pàgines a la taula d'aquí en groc, que em podria aprofitar aquesta molts passos o segons, en cas contrari, em va a prendre el doble que a la línia vermella. Però la línia verda és el menjar per emportar real. Això és el que generalment trucar a un registre de logorithm-- de n, on n és el nombre de pàgines. Però és la forma el que importa avui en dia, perquè no tenim per pensar en el traçat de punts. Penseu en un escenari extrem. Suposem Verizon duplica el matí nombre de pàgines d'aquest directori, de 1.000 a 2.000. En el primer algoritme, I podria perdre un extra de 1.000 passos a la recerca de Mike, només perquè Verizon va duplicar la mida del llibre. El segon algorithm-- que podria portar un extra de 500 passos. 1.000 pàgines més, que van de dos en dos temps-- 500 passos més per trobar Mike. Però això tercera algoritme és una espècie de màgic. Verizon duplica el nombre de pàgines de 1.000 a 2.000, Però, quants més passos fa que em porten a buscar a Mike? És només un, perquè només puc esquinçar el directori telefònic un cop més d'un problema de 2000 pàgina a un 1.000 problema de la pàgina, i llest. M'he pres un mos massiva fora d'ell. I si vas realment extrem, suposar que la guia telefònica companyia tenia alguna cosa boig com un directori telefònic de 4 mil millons pàgina. Així la quantitat de passos que pot prendre per trobar Mike Smith en un 4000000000 La pàgina de la guia telefònica? És un nombre gran, però només 4 milions de dòlars per 2000000000-1000000000 a la 500 milions, 250 milions-- encara sona com a grans nombres, però sóc molt ràpidament arribar a valors més petits. I de fet, si no faig la matemàtiques dret, només puc dividir 4000000000 per aproximadament 32 vegades abans Em poso a només un. Així que si aquest llibre de telèfon eren 4 milers de milions de pàgines, no és gran cosa. Al cap d'uns segons, potser 32 segon, que podrien dividir per la meitat i, finalment, trobar o Mike la conclusió que ell no hi és. I aquesta és l'essència d'una algorithm-- una bona algoritme. I això és una de les objectius d'una classe com aquesta, està tractant d'esbrinar com puc resoldre el problema no només correctament, com sempre vaig saber com fer-ho un pàgina a la temps-- però correctament i bé. Com disseny bona solucions als problemes? Així que prenguem un moment aquí i donar-li un sentit ara de CS50 el curs itself-- introduir membres del personal d'alguns de golf. Just abans de les 02:00, anem a prendre un breu descans de manera que aquells de vostès que es pot anar de compres ànec i prendre una mirar a alguna altra classe i veure la resta d'aquesta línia. Però per ara, presentaré CS50, la mateixa classe, i sobretot el que és nou. Pel que la primavera passada, ens passat una mica de temps-- El personal del curs i jo-- pensar sobre què és el que volem que sigui CS50, i tornar a la primera principis, per així dir-ho, considerar què és el que volem aquest curs perquè sembli i sigui de la mateixa manera que per als seus estudiants. I pel que veurà en el problema establir un nivell zero, una invitació per fer una ullada a aquesta URL que resumeix algunes de les motivacions darrere de la seguint les característiques de caiguda de 2016. Així com pot haver recollit Del TL: DR fullet, el programa d'avui, així com de el catàleg de cursos, aquest any en CS50, només s'espera que assisteixin avui-- pel treball ben done-- i l'última conferència el 21 de novembre. I de res, però no s'espera que assistir a les conferències en el medi, perquè el que estem fent aquest any, està disparant en temps real el material del curs. Així que tot es quedarà actual i incorporat el millor que can-- esdeveniments actuals i converses que la gent podria estar tenint en la indústria de la món, però fer que el material disponible, com a resultat, fins i tot abans els vaig parlar complet amb les transcripcions de text complet i capacitat de recerca i enllaços a altres recursos. I, de fet, hem estat reclamant algun temps i que fem ara creiem això, que podem crear, digitalment, una major immersió, una més convincent experiència educativa, en contraposició per reunir aquí unes 23 vegades en persona, escoltar a algú com jo parlar simplement de la informàtica, en oposició a participar més activament. Pel que veurà en el curs del pla d'estudis 01:00 esbós del semestre aquí, juntament amb conferències quan es ser filmat, a la que estàs benvinguts, però no s'espera, i quan es ser llançat el lloc web del curs. I el que farem aquí a Els dimecres a partir la setmana que ve, és molt més íntimament, amb l'única aquelles persones que vulguin participar, és una crida a peu a través, on jo i caps del curs en realitat fer les coses una mica més íntim aquí baix, en l'orquestra secció, encara té una mica de tecnologia i caminar a través de la conjunt de problemes de la setmana en curs, i li ofereixen principalment: si entre els menys comfortable-- tant més orientació que és possible que vulgueu o necessitarà per al desafiament de la setmana. I de la mateixa manera, per als que no poden assistir als de la persona, no és gran cosa. No seran conduïts de manera similar per un dels alts funcionaris de l'assignatura, Zamalya, la mateixa oportunitat incrustat en el problema configura a si mateixos. Problema estableix aquest any serà llançat el divendres i ja no ho fan set dies més tard, però 10 dies tard-- deliberadament superposició amb cada problema establir, a fi d'acomodar millor, esperem, flux i reflux en horaris dels estudiants, especialment quan els exàmens parcials o atletisme o acadèmics o extracurriculars tendeixen a aparèixer i desaparèixer especialment de meitat de semestre. Això et donarà una mica més discreció quant a si vostè davant carregar la seva setmana amb CS50 o la càrrega de nou que en el cap de setmana següent al seu lloc. Així que mira al programa del curs aquí per la programació del mateix. I s'adonarà també entre els canvis aquest any, per a aquells més familiaritzats amb programació en el passat, anem a començar el semestre com ho farem avui en Scratch, centrar-se especialment en la llengua anomenada C, i després no la transició a PHP, sinó a un llenguatge anomenat Python cap al final del semestre en el context de la programació web, juntament amb SQL i JavaScript, HTML, CSS, i encara més. I en resposta a una pregunta més freqüent, és de fet el cas que el CS no és tan temible com un cop va pensar que era, però és tanta feina ja que havia sentit que podria ser. Però aquest és l'exemple que aquí estan alguns estadístiques de la caiguda 2015 alumnat, de manera que les línies blaves horitzontals representar el nombre mitjà d'hores reportat. I veurà una mitjana de sis a 10 a 12-- potser 16 o així, i així successivament, però amb alta variància per ser clars. I així es dóna compte que no només hi ha estudiants més còmode i menys còmode en el curs, però un suport corresponent estructura per aconseguir aquests estudiants fins al semestre amb èxit. En efecte, en resposta a una pregunta més freqüent, ha de CS50 es pren com a primer any? Absolutament. I, de fet, em penedeixo no haver trobat el camí o trobat un nou camp aquest primer any també. I s'ha de prendre amb CS50 altres cursos, com sens dubte bé-- i els consells generals que podríem donar als estudiants, que és probablement CS50 no el tipus de classe o classe d'introducció que vostè ha de prendre amb tres una altra o altres quatre classes de p-set. Però si vostè està prenent altres dos p-setembre classes, una mica més, i CS50, absolutament manejable. He tingut molts estudiants en el passat fet amb força èxit. I per arribar cap a aquest la línia de meta amb èxit, ¿El curs té les Categorías-- diferents pistes per als estudiants menys còmode, més còmode, i en algun lloc en el medi, pel que en el curs de Conjunt primer problema, se li demanarà que descrius. I si vostè està entre els menys còmoda, que és el tipus de cosa que acaba bé sap. I, de fet, que ha estat el creixement demogràfic en CS50 des de fa uns anys. Des de l'última caiguda de exemple, el 58% de la classe es descriu a si mateixos com entre els que menys còmode, amb un 9% entre els més còmoda, i després els altres estudiants allà a vermell descriuen a si mateixos com en algun punt intermedi. I veurà aquí els temes en general i l'horari de les seccions, totes les quals s'ofereixen en persona, en en temps real, amb el curs de increïble personal de becaris d'ensenyament i els assistents del curs, alguns dels quals va a coincidir en un moment. Seccions si mateixos, com es veurà, la voluntat serà els dilluns i dimarts i dimecres, a fi de permetre a bussejar després de participar en, si així ho triar, en el curs de donar una conferència a principis d'aquesta setmana. I després d'hores d'oficina, els quals Certament, amb cada any que passa, no han estat menys d'una lluitar pel curs. I aquest any, no estem planejant Només en el càrrec un hores-- en un oportunitats d'ajuda per estudiants els dimecres els dijous i els diumenges, l'últim dels estar a la tarda pel disseny per reduir una mica de la tensió que es invariablement sorgeix amb la nit p-settting amb un termini looming-- sinó que també s'oferiran hores d'oficina els dilluns i dimarts i Els dimecres i els divendres i dissabtes, Gràcies als nostres amics de HSA. CS50 té ara el seu propi espai per a estudiants i personal CS50, 67 a la part alta carrer Mount Auburn, allà mateix, a Harvard Square. La visió dels quals és que CS50 de TFS i les CA durant tota la setmana, més o menys en la major part dies, estaran allà per acompanyar-lo. Així que si vostè té un cert pregunta en un p-setembre o et sents una mica bloquejada o una mica confós, i diables, tens una hora o mitja hora entre les classes, especialment en el square-- pot vostè entrar i fer a aquesta pregunta va respondre de tenir aquesta confusió clarified-- molt en l'esperit, vostè està familiaritzat, de la matemàtiques propi centre de les preguntes de matemàtiques del departament, però gairebé tot el dia per [? Gcal?] Que anem a publicar en línia. Tutoria també està disponible per a aquells estudiants, lliurement des del curs de personal propi si ho desitja més íntim d'un a un, o únicament dos o tres companys de classe, treballant amb un dels membres del personal del curs. I, de fet, aquests aquí són només alguns dels membres del personal del curs, alguns dels quals podràs reunir-se en un moment. De fet, la mateixa CS50 company de l'ensenyament cap, i el curs del cap ajudant, i el preceptor, podria arribar a un màxim, permetre ells dir hola. [Aplaudiments] ALTAVEU 1: [inaudible]. [Aplaudiments] ALTAVEU 2: [inaudible]. [Aplaudiments] ALTAVEU 3: [inaudible]. [Aplaudiments] DAVID Malan: I ens permeten portar a bord dos CS50 de la majoria el personal directiu, Rob i Zamayla també. [Aplaudiments] De fet, tant Rob i Zamayla han estat amb nosaltres durant tant de temps, que jo era capaç per entrar en els arxius de l'CS50 i trobar aquest mateix SD metratge d'ells participant en si mateixos escenaris fa alguns anys. ROB: [inaudible]. [Aplaudiments] ZAMAYLA: [inaudible] [Aplaudiments] DAVID Malan: Gràcies. Així que a més d'aquests els membres de l'equip aquí, CS50 compta amb un equip de gairebé 100 tots els membres del personal, dels quals estarà disponible per a les seccions i les hores d'oficina i molt més. I com diu Rob també, això és la reforma més significativa de CS50 en els 10 anys que He estat en [inaudible]. [Inaudible] centrat especialment en la provisió d'una estructura de suport, la retallada de distància una gran quantitat de el gruix que ha estat acumulat en 10 anys desenvolupaments de iteratius en els butlletins de problemes del curs. Així que aquest any, no només a classe, però també en la forma del problema del curs conjunts, que han de descobrir propostes ser més àgil, condensador d'ajust, tant més manejable que en els últims anys, a mesura que llançar una mica de l'equipatge que és desenvolupat per naturalesa d'any en evolució rere any i la iteració. Pel que el nou i millorat comença avui. Et trobaràs amb una mica més de la El personal del curs al [inaudible] a les 2:30, on se serveix, com una tradició, la coca. Hi ha una mica més de la coca que això, però vostè Erin es reuneixen i Tobias i altres encara. I et vaig a donar un recorregut abans de sentir d'alguns dels altres membres del personal a la classe, del que espera també. De fet, sempre comencem de CS50 semestre dissabte que ve, amb el que es diu CS50 Trencaclosques dia. No té res a veure amb ciències de la computació per se, però amb aproximadament problema resoldre de manera més general. I si així ho desitja participar, per algunes de les invitacions, que podria haver vist porta caigut oa l'escenari aquí, que és una oportunitat en equips de dos o tres o quatre, per participar pels trencaclosques i pizzes i els premis i més-- aquest dissabte, Estiguin atents per més. Trobarà també que cada Divendres, a foc i gel, porta una CS50 Gran quantitat dels estudiants per dinar, per fer un gran la classe se senti més íntim, i, en general reunirà exalumnes i amics de la indústria per parlar del que han estat fent des que es va graduar. De la mateixa manera, aquest any, se'ns inaugurar el primer CS50 50 contest-- codificació d'una meitat de semestre oportunitat perquè tots en una opció a la base, per tenir una desafiament d'enginy contra els seus companys de classe, de nou en equips de dos o tres o 4, utilitzant només que la programació coneixedors que, a continuació tens sota el cinturó després de només sis o set setmanes de la classe, i participar en aquest tipus de competència online-- si desitja perfeccionar la seva pròpia habilitats encara més en aquest desafiament. Al final del semestre és l'anomenat CS50 Hackathon-- una oportunitat que comença a les 7:00 PM acaba a les 7:00 del matí, i en el camí Són 12 hores de la nit en què a bussejar en projecte- final del curs l'oportunitat de dissenyar i aplicar la major part de res d'interès a vostè amb el seu ensenyament la guia del company. Al voltant de les 9:00 AM de que normalment serveixen pizza, la 1:00 AM, Philippe, i els pocs de nosaltres que encara estan desperts a les 5:00 del matí, són de transport, va ordenar el trasllat per la camí a IHOP per esmorzar. I després uns dies més tard és l'anomenat CS50 fare-- un cap de semestre a l'exposició celebració de com de lluny tants CS50 d'estudiants han vingut de la setmana zero fins al final a la setmana, i tenint en compte que el 73% de les persones companys i la seva aquest any han Mai pres una classe de CS abans. De fet, per emfatitzar tant, aquí és una poques cares més del personal de l'CS50. ALTAVEU 4: [inaudible]. ALTAVEU 5: [inaudible]. ALTAVEU 6: [inaudible]. ALTAVEU 7: [inaudible]. ALTAVEU 8: [inaudible] ALTAVEU 9: [inaudible]. ALTAVEU 4: [inaudible]. ALTAVEU 10: [inaudible]. ALTAVEU 11: [inaudible]. ALTAVEU 12: [inaudible]. L'altaveu 13: [inaudible] ALTAVEU 14: [inaudible]. L'altaveu 13: [inaudible]. ALTAVEU 15: [inaudible] ALTAVEU 16: [inaudible]. ALTAVEU 11: [inaudible] ALTAVEU 5: [inaudible]. DAVID Malan: Alguns l'equip són ells mateixos fent compres classes. Però si els membres CS50 del personal són aquí, podria arribar a un màxim d'un moment. TFS del CS50 i AC i [? el personal?] membres aquí-- aquests són només alguns del faces-- un dels quals acaba serra, i uns pocs altre-- i alguns altres encara. Per què no anem endavant i permetem vostès un descans de cinc minuts. Si necessita ànec a classes de taller, això està bé. I en cinc minuts, anem a reprendre, fer una ullada a la primera Scratch-- del nostre llenguatge de programació, conèixer el personal del curs aquí una mica més, i se centren en última instància, el problema plantejat zero. Així que estarem de tornada en cinc minuts. [Aplaudiments] Tot bé. Així que estem de tornada. I en el nostre restant temps d'avui en dia, l'objectiu és per anivellar el camp de joc pel que fa a la terminologia, en termes d'algunes idees. A causa que de fet, com per algunes de les taules anteriors, no hi haurà un seguit de nivells d'experiència a la classe, alguns dels alumnes han pres una mica de programació abans, alguns dels quals no tenen. I així, amb aquest primer problema establir i amb aquesta primera llengua tenim l'oportunitat de començar a donar per fet després d'avui una mica de vocabulari i la idea comuna. I ho farem a través de Les Llengües primera del curs a més de C i Python i JavaScript i SQL i HTML i CSS, ens centrarem inicialment i només per un problema assigna el valor zero en aquest llenguatge gràfic, anomenat Scratch, desenvolupat pel MIT Media Lab pel camí, per ajudar estudiants i nens, especialment expressar-algorithmically-- d'una forma més consistent amb el que que podríem anomenar el pensament computacional. I és una llengua útil perquè molt ràpidament la propera setmana a la setmana un, Per què fem la transició a una major llenguatge tradicional i arcà anomenat C, que és purament textual. Només s'utilitza en el seu teclat Per escriure instruccions com aquests a la pantalla. Però fins i tot si vostè mai ha vist un llenguatge de programació abans, en tan sols fer una ullada a això, tot sigui críptic, que és fàcil endevinar que Probablement imprimeix Hello World. Però hi ha una gran quantitat de sobrecàrrega sintàctica allà. No és estrany el hash símbol o etiqueta de hash sobre de la tapa. Hi ha els parèntesis angulars, alguns parèntesis, claudàtors, semi-colon-- només hi ha tant visual sintaxi que s'interposa en el camí. Comencem el curs amb De zero a fi d'obtenir passat tots els intel·lectualment distraccions, sense interès i centrar-se en les idees. De fet, això podria ser abans. Això, per això, la setmana serà després. Això, en aquesta gràfica Esgarrinxada de la llengua, és com es duria a terme aquest mateix program-- un programa que quan s'executa, Simplement diu hola món. I el que és bo d'Scratch és que és aquesta programació gràfica entorn que utilitza les peces del trencaclosques o blocs, que només s'acoblen per acoblament si té sentit lògic per fer-ho. I amb les ratllades es pot desenvolupar animacions i jocs interactius i l'art, i qualsevol nombre de coses que es pot imaginar en la seva pròpia ment, i posar-les en pràctica simplement arrossegar i deixar anar les peces del trencaclosques. I, de fet, tindrem la capacitat per expressar algunes de les mateixes idees que acabo d'esmentar un moment fa en el context de Mike Smith i buscant coses que un telèfon book-- que les funcions, només les accions, coses com bucles que fan coses una i altra vegada, variables, que és cosa que anem a introduir, però és coneguda potser de algebra-- només una mena de marcador de posició per emmagatzemar un valor que podria necessitarà expressions booleanes tarda-, on aquells que sí no o veritable falses preguntes d'abans. Les condicions són aquestes bifurcacions en el road-- aquelles branques per dir-ho. I després hi ha alguns més elegant característiques que veurem encara avui en dia, anomenats matrius i les discussions i esdeveniments, que a continuació Tornarem al llarg temps en diferents idiomes. Però les ratllades ens permet per explorar tots aquests. Així que aquí a Scratch, aquest porpra bloc és una funció del que és típicament va a semblar. Aquesta peça de trencaclosques de color porpra que té algun paraula com per exemple, que és l'acció, i llavors podria tenir una argument o una parameter-- alguna manera del tipus de personalització el que fa que el bloc pel que no està predeterminat per MIT el que diu aquest bloc de color porpra. De fet, es veurà en una moment en què sóc capaç d'escriure les paraules com hola món, o hola David, o hola Zamayla, o el que vulgui, en l'argument a aquest trencaclosques piece-- la caixa blanca allà. Mentrestant, si vull un bucle, anem a veure que hi ha peces d'un trencaclosques que mirar una mica de color taronja com aquest. I la seva forma tipus d'suggereix que cosa que succeeix una i altra vegada en un cicle. Així que si jo embolico un bloc saludar món amb un bloc per sempre en Scratch, que només seguirà dient hola món per sempre, literalment. Mentrestant, hi ha un altre tipus de bucle en Scratch que anem a veure-- una repetició block-- on, si es saber per endavant quantes vegades vol que el bucle per executar un nombre finit de vegades en què fact-- pot especificar que escrivint en una sèrie o fins i tot endollar en una variable, com X o I, com veurem. De fet, igual que les variables I en aquest cas, que és un nom comú per a una variable sencera que simplement emmagatzema una number-- un nombre sencer podria ser, utilitzar aquest bloc de taronja aquí per establir una variable igual a zero i. Heus aquí un exemple en el verd d'un expressió booleana en Scratch. Tot i que això sembla una matemàtiques fórmula, les desigualtats matemàtiques com aquest Realment són expressions booleanes. Això és veritable o fals. I és menys de 50. És un sí o un no o resposta veritable o falsa. I que anomenarem general aquestes expressions booleanes. I no té per què ser 50. Pot ser x menor que i, més gran que i, igual a I- qualsevol nombre d'una altra podrien fer preguntes. Ara, a primera vista, això pot semblar Tot d'una força audaç aquí, i ho és. Però el concepte racional, és bastant familiar d'abans. Si x és menor que i, que, per exemple com a molt. Perquè si x és més gran que i, a continuació, dir el mateix. Un altre dir de x és igual a i. Així que tenim un exemple no d'una tercera scenario-- l'única possibility-- tercera x és o bé major que, menor que, o igual a. Així que tenim una forquilla de tres vies a la carretera. I notar el que és esgarrinxada fresc aquí--, pel que sembla, té només un trencaclosques peça, en aquest cas, en si el bloc més. I no obstant això, això semblaria implicar que es pot només tenen una forquilla de dues vies a la carretera. Pot anar cap a l'esquerra o cap a la dreta, però ¿Què passa amb aquest tercer escenari? Què passa si x és igual a i? No és gran cosa. Prendre una peça del trencaclosques, ja una altra dins d'ella per crear l'equivalent semàntic de si, en cas contrari si, else-- i ara tenir la seva forquilla de tres vies a la carretera. I com veurem, la peces del trencaclosques de zero es pot estirar i créixer, per la qual com de ficar més coses en ells. Vostè no ha d'ajustar tot al seu mida per defecte. Això és una cosa que anem a aviat veurà que s'anomena una matriu. És com un pel·lícules-- alguna forma de l'emmagatzematge de diverses peces d'informació en una variable, no només un número. Aquests veurem un representant de cosa que es diu multi-threading. De fet, la totalitat del seu Mac i PC en aquests dies suport multi-threading, el que significa que pot, literalment, fer diverses coses alhora. Vostè pot tenir Microsoft Word al primer pla, treballant en algun assaig. És possible que tingui un navegador en l'obertura de fons G-mail o Facebook o similars. L'ordinador pot fer diverses coses avui en dia, ja que és multi-fil, i els programes que estan en en en particular també són multi-fil. Hi ha coses que es diuen esdeveniments com bé en el món de les ratllades, i després hi ha una manera també, per fer les nostres pròpies peces del trencaclosques a mida, si les coses en realitat no existeix per endavant. Així que anem a motivar això de la següent manera. Fa alguns anys, quan va descobrir per primera vegada Scratch, quan jo era en realitat una estudiant de doctorat en el MIT, ens nosaltres mateixos es van encarregar de fer els deures. I implemented-- el que, en retrospectiva, Va ser una decisió molt dolenta perquè és la cançó més irritant en el món per escoltar durant vuit hores mentre treballa en el seu homework-- però alguna cosa havia anomenat Oscar Temps, que és potser una cançó familiar. CS50s posseeixen Jordan Hayashi, una de nostre personal més alts, ha actualitzat per al 2015 i Ara l'any 2016, ja de tornada al dia, Tenia tot el que acaba d'anar en una galleda d'escombraries d'Oscar. Ara donem suport al reciclatge i el compostatge. No obstant això, per pintar el quadre del que podem fer aquí i per motivar alguns els exemples de nivell inferior, podríem aconseguir un altre voluntari que acaba d'arribar a un màxim i jugar la meva primera tasca mai? Anem amunt. Com et dius? HENRY: Henry. DAVID Malan: Henry, anem a dalt. Anem amunt. El cap de qualsevol manera, i es veurà en un moment, Vaig a seguir endavant i colpejar la bandera verda a la part superior dreta cantonada, el que significa anar. La icona de la mostra petita parada dirà prou, i això és quan s'inicia i aturar el programa. Encantat de conèixer-te. Tot bé. Així que anem a veure les instruccions a la pantalla en un moment. I només per jugar aquest joc per a uns pocs seconds-- confia en mi, no anem a voler jugar tot el camí a la end-- es vol tenir una idea del que fa el programa. I més que només se centren en Henry ser bo o dolent en aquest joc, l'enfocament i com s'implementa per mi inicialment i després per Jordan. En altres paraules, ¿on són les variables? On són els bucles? On són les funcions? I ja veurem si no veiem els que sota la campana. Només cal que feu clic i arrossegar les escombraries a la safata adequada. [MÚSICA] Tot bé. Això està molt bé. Per què no ens aturem aquí. Gràcies. Felicitacions a Henry. Gràcies. [Aplaudiments] Imagineu que la depuració del programa. Si hi ha un problema de dos al song-- però fins minuts el que està passant aquí realment? Tan complicat com podria començarà a semblar aconseguir a través del temps, de fet més i més coses van començar a caure, l'interessant de aquest tipus de exemple-- i veurem uns quants altres- és que si mirar més enllà de la complexitat o la sofisticació del joc, hi ha un edifici molt senzill blocs que play-- tots els quals, si els destil·lar a les blocs de construcció, són molt accessibles i aplicables en si mateixos. Per exemple, és passat algun temps, però estic bastant segur del que inicialment vaig fer quan fent d'aquest joc per primera vegada Jo estava completament com demorat. No em concentro en absolut en el la lògica o les peces del trencaclosques, Em vaig concentrar en els gràfics i la troballa el pal del carrer i el pot d'escombraries i tot això. Però aquests eren necessaris ingredients en un principi. I una vegada que he acabat de dilatar i traçar el marc general, Vaig decidir, em van deixar de fer-ne un tros d'escombraries caiguda del cel. I veurem les ratllades dóna suport coses trucades sprites-- caràcters que poden tenir diferents vestits en el que un aspecte diferent. I pel que posar una galleda d'escombraries vestuari en un d'aquests sprites. I jo només necessitava a caure del cel. I així resulta que, Scratch, com la majoria dels llenguatges de programació, utilitzant nombres aleatoris o nombres aleatoris tècnicament pseudocodi, de manera que arrossegant i deixant caure algunes peces d'un trencaclosques, Jo era capaç de tenir les escombraries vingut de l'esquerra en un primer moment. I llavors la propera vegada que va caure, des la dreta i després des de la meitat. I tot el joc no era només tenir les escombraries que cau del cel. No es podia apuntar a aquesta o faci clic. No es podia obrir el pot d'escombraries. No es podia fer res. Però va ser un pas de nadó cap a la meva última visió. I després d'això, en realitat implementat algun tipus de detecció de manera que si es va fer clic i arrossegament en la peça d'escombraries sobre la galleda de les escombraries, Oscar tapa seria obrir i tancar. No passaria res a les escombraries, però almenys la tapa seria obrir i tancar. Així que a continuació, comprovar, pas dos de dos. I això és el que va a ser clau tant problema assigna el valor zero i en la programació de manera més general, és prendre aquests petits passos molt deliberats. A causa de que no només se li permet sentir sincerament aconseguit molt més quickly-- és la El pitjor en el món per tractar de posar en pràctica totes Oscar Temps, a continuació, hores més tard va colpejar la bandera verda, i res funciona com s'esperava perquè on es pot fins i tot començar a depurar o de solucionar aquest programa? És simplement aclaparadora. I així, erigint-se en aquesta idea de prendre passos de nadó steps-- nou i la construcció d'una altra vegada-- cosa que és, al final, realment impressionant i complex, però al principi, no és tan és així. De fet, farem això. Déjame anar per davant i- gratar existeix en el web en Scratch.MIT.edu, i se li va dir que un altre tant en el problema establir zero, el plec de condicions de que ja està en el lloc web del CS50. Però això és el que és gratar-se. I no hi ha realment només tres àrees principals. A la part superior esquerra hi ha és l'etapa trucada. Es tracta d'Scratch. El vestit per defecte és un gat. I aquest és el món rectangular que es pot move-- amunt, avall, esquerra, dret i algunes altres coses. A mitjans aquí estan les nostres categories o els nostres palets de peces d'un trencaclosques, i colors diferents significar coses diferents. I si furgar, veurà coses com bucles i condicions i les variables i altres ingredients. I llavors aquí és l'àrea de scripts. Aquí és on pot arrossegar i deixar anar aquestes peces del trencaclosques per fer les coses. Així que anem a fer una cosa de tal. Déjame anar per davant i- i sé on està. Així que vaig a fer clic immediatament en on sé que les coses estan preparats per ser, però assenyalant i fent clic ai furgant són inevitables. Per això, quan fa clic a bandera verda, Què vull fer? Vaig a fer això. Vaig a arrossegar aquest trencaclosques de color porpra peça, saluda durant dos segons, i deixa que el zoom. I vaig a canviar aquesta a ser el que jo vull que ser-- hola món durant dos segons està molt bé. Ara, vaig a fer clic al bandera verda, o si realment vull, Puc pantalla completa i després tornar. S'acaba de mantenir tot en una sola finestra. hola món flag-- verd. Tot bé. No tot el que interessant. Així que permetin-me seguir endavant i fer això. Déjame intentar-altra. Quan la bandera verda clicked-- anem fer alguna cosa com un so. I notar que de la caixa de forma gratuïta s'obté un so de gat, com és el sprite predeterminat. Així que ara me n'aniré endavant i colpejar la bandera verda ara. [Meowing] Aw. Això és adorable. Estic programant. Llavors, què he fet? Aquest és l'equivalent d'un programa. És obvi que és super simple. En realitat no prendre tot el que molt esforç i el MIT van fer la major part de l'obra, però us he dit una funció. He utilitzat una funció. He fet una mica d'acció, utilitzant només que una peça del trencaclosques de color porpra. Bé, si jo vull fer miols tres en una fila? Déjame seguir endavant i fer dos i tres. I notar que quan es poseu a prop d'una peça del trencaclosques, apareix una petita línia blanca tipus de magnèticament, i s'encaixarà junts quan es deixa anar. Anem a veure el que passa aquí. [Meowing] Hi ha un insecte. Només sento un miol. Per què podria ser? Sí? Sí. En realitat, no sentir, a fi però això és una bona intuïció. Tots ells estan jugant al mateix temps. Per què? Doncs bé, l'ordinador és només va per fer el que digui que faci. Així que si vostè diu, el joc de so, reproduir so, so, però no li diu a jugar fins En acabar, el joc fins que hagi acabat, que va a bufar a través d' el programa molt ràpid i no només el que es digui que faci. Així que realment es necessita per arreglar això en un parell de maneres. Jo només podia fer això, desfer-se d'aquest. Permetin-me tractar aquest altre trencaclosques piece-- jugar miol so fins que estigui fet, a continuació, arrossegament tres aquests i feu clic a Reproduir. [Meowing] En realitat no és very-- gràcies usted-- molt natural. Així que per què no deixar que jo-- em vagi a controlar aquí. Niça. Espera un segon, i ara m'ho dius a mi tornar als sons, i el so de joc fins que estigui fet, i després vaig a buscar esperi un segon. I llavors m'ho dius a mi anar a buscar un més sòlida, i aquí anem. [Meowing] Una mica més natural, però això no és molt eficient. Com estava avorrint, ser tots en poques paraules, en fer clic anada i tornada i realment duplicar la meva treball-- més o menys copiar i enganxar. De fet, si jo controlo clic o es fa clic dret, Em podria haver copiat i pegat. Quin seria una millor construir utilitzar? Quina idea d'abans? Sí, de manera que un bucle. I de fet, si ens clavaven voltant, podríem trobar exactament això. Déjame anar a esdeveniments o millor dit control. Així que jo no repeat-- vull que sigui 10 vegades. Això va a ser molest ràpidament. Però repetiré tres vegades. Déjame tornar al so i reproduir el so fins que es fa. Déjame tornar al Control i només ha d'esperar un segon. I l'avís, és possible que crec que no encaixa, però de nou, si es deixa que magnèticament fermall de pressió en el seu lloc, que creixerà per omplir. Què es juga ara? [Meowing] D'ACORD. Niça. I això és el que s'anomenaria un programa que també és correcte. Es maulló tres vegades bastant naturalment, però és millor dissenyat. Estic usant menys redundància. No copiar i enganxar qualsevol cosa. Acabo d'utilitzar una idea millor. Ara, això encara no és tan interessant amb esgarrapades no fer res. Així que farem alguna cosa més al seu lloc. Anem a fer alguna cosa per sempre. I saps què? El moviment sembla interessant. Tinguem que es mogui 10 passos i prémer el botó Reproduir ara. D'ACORD. Així que podem tipus d'arrossegament portar-ho de tornada, i ell segueix sent córrer perquè ell està fent això per sempre. Així que el bucle està fent el que està dient que fer, però això no és tan interessant. Anem a fer-ho. Permetin-me afegir un bloc de control, i utilitzar una d'aquestes condicions per primera vegada. Pel que va a passar 10 steps-- 10 punts, 10 píxels a la screen-- a continuació, es va a fer aquesta pregunta. Si alguna cosa és cert, i després fer alguna cosa dins d'aquest bloc. Així que resulta de detecció té la seva totalitat manat de expressions-- booleana preguntes del sí no o veritable falsa form-- deixar-me fer això. Si touching-- i després hi aquest petit menú desplegable. Puc parametritzar ella. Si tocar la edge-- anem fer alguna cosa així. Així que si tocar edge-- deixeu-me tornar al moviment. ¿I per què no ens donar la volta 180 graus? Tot bé. Així que sempre, moure 10 passos. Si vostè està tocant el vora, un gir de 180 graus. I aquest no és el final del programa perquè estàs en un bloc per sempre, així que va a anar una vegada i una una i altra vegada i una altra. Així que anem a veure què passa. D'ACORD. Una mica amb errors, però una mica de fresc. I podem afegir a això algunes coses tontes que no són tot el que intel·lectualment interessant. Però si arribem a aquesta petita micròfon button-- ai. Déjame netejar això. Permetin-me com millorar aquest deien a la televisió. Netejar això, Desa i ara puja als guions. I ara, deixa anar a sonar. Deixin-me donar-los un nom. Vaig a trucar a aquest ai. I ara jugar ai so. Observi que apareix en el petit menú desplegable. Anem a veure. [AI] [El] Però podem canviar la seva samarreta sobre la marxa. Podem ser dues vegades tan molest. [AI] O si ho fem com 1.000 passos a la vegada-- D'ACORD. Així que anem a deixar que un de sol. Així que de nou, l'edifici I blocks-- començat amb una cosa molt simple, i després he afegit una característica, afegit una característica, una característica afegida. I ja no ha de preocupar per la forma en la primera d'aquestes característiques es va posar en pràctica a mesura que continuo coses a la capa a la part superior. Així que, de fet, em deixa fer una altra aquí. Déjame anar endavant i obrir un arxiu que Vestit per endavant, anomenat ovelles. Per tant, té una mica diferent personatge que s'assembla a això. I veurem si no puc fer alguna cosa utilitzant un comptador en aquest cas-- una variable anomenada. Vaig a seguir endavant i sota sigui el cas: vaig a buscar una bandera verda ha fet clic. Llavors me n'aniré a les dades, que sé des de simplement jugant abans, és on les variables són. I vaig a seguir endavant i arrossegar aquest. Així que una variable anomenada comptador, i Vaig a inicialitzar a zero. Puc dir-qualsevol cosa-- xo I o z-- però en la programació, trucar a alguna cosa en un semànticament forma útil, com comptador, que descriu el que és, es tracta d'una molt més fàcil de llegir el seu codi més tard. Déjame seguir endavant i aconseguir un bloc per sempre aquí. I em va deixar anar a les mirades pàgina i fer un bloc de Say. Però el millor de les variables és el no ha de només ha d'escriure alguna cosa com hola món, que ja hem fet, jo puc anar al seu lloc de Dades i arrossegament el meu variables, i fins i tot encara que la forma no prou semblar que s'ha d'ajustar, que creixerà per omplir. I només vaig a dir el comptador per a una spoiler-- second-- que va a explicar. Direm que durant un segon. A continuació, vaig a anar i faci-ho esperar durant un segon, per la qual cosa no compta massa ràpid. I a continuació, finalment, canviar comptador per un-- en altres paraules, incrementar el comptador per un un valor addicional i fer això per sempre. Així les ovelles també, com una programador, compta des de 0. I si esperem prou, que va a fer això per sempre. Però això no és del tot cert, perquè de fet, com anem a descobrir en la setmana un, sencers i els ordinadors, més en general, tècnicament només tenen un finite-- així, més aviat, quan els ordinadors que representen nombres enters, només tenen un nombre finit de bits. Aquestes bombetes allà només pot comptar tan alt abans que estigui fora de les bombetes. I un ordinador també, Només té tanta memòria, Només ha tants transistors, de manera que només pot comptar tan alt. Així resulta que les ovelles, Crec, compti fins 2000000000 o alguna cosa bastant gran. Pel que no anem a esperar que això passi. Però amb el temps alguns errors succeirà que pot tenir un món molt real ramificacions. Però més enllà de les ovelles, que simplement introdueix una variable. Seguirem endavant i obrir cosa que vaig fer amb antelació aquí es diu Pet el Cat-- Acariciar al gat per aquí. I noti aquí és uns pocs blocs, però quan la bandera verda es fa clic, sempre fent el següent. Si tocarà el ratolí pointer-- pel que el cursor a la pantalla, el joc arrow-- miol so i després esperar dos segons. I just fer això per sempre. Només ha d'esperar constantment per veure si el pointer-- si el gat està en contacte amb el punter. Així que prémer el botó Reproduir. No passa res. Però a mesura que moc el cursor sobre el gat, [Meowing] I si em mut a les escombraries, no acariciar el gat més. Així que una mica de lògica condicional niat dins d'un bucle. Què hi ha d'aquest exemple, deliberadament No es diu acariciar al gat? Què és això va a fer? [Meowing] Per què no acariciar al gat? [Meowing] D'ACORD. Així que aquest és un exemple d'un cas d'una altra cosa. És un punt de decisió i perquè està assegut al bucle, els dos estan sent marcada. És això cert? És això cert? És això cert? És això cert? I, finalment, una de els que es va a aplicar i el que s'escolta ja sigui el miol o el rugit del lleó en aquest cas. Bé, anem a fer una mica més d'un de luxe que vaig fer amb antelació demasiado-- fils. Així que un fil és només un cosa que un ordinador pot fer. Així, un programa multi-roscat és un programa que pot fer diverses coses alhora. I tots aquests exemples fins ara han tingut només un script, pel que speak-- un programa com aquest aquí. Però cal notar que aquest programa té 2 sprites, dos caràcters. Un d'ells és un ocell. Un d'ells és un gat. I adonar-se quan faig clic en aquestes baix esquerra, cadascun té les seves pròpies seqüències d'ordres o programes associats amb ells. I totes dues coses programes, avís, començament amb la bandera quan està verd clicked-- anem a veure el cat-- quan es fa clic a bandera verda. I així, de fet, quan em va colpejar el joc ara, dues coses van a succeir alhora. El gat i l'ocell són alhora funcionarà alhora per crear aquest efecte. I es pot imaginar el que està passant. Hi ha un llaç i l'ocell i el gat estan en un bucle. L'au s'acaba rebotant com Que era abans quan vaig dir ai. Però el gat té clarament un avantatge. Hi ha un altre bloc de detecció assenyala que el gat deliberadament l'ocell en aquest cas aquí. Així que podríem esmicolar, mirant a través d'aquests blocs, el que està succeint. Però l'ingredient clau aquí és un. L'ocell, de manera que aquest joc no és completament o boring-- aquest animation-- comença a una adreça aleatòria. I l'equip s'està recuperant un nombre entre 90 i 180 en essència, pel que és una mica animació diferent cada vegada. I després notar aquí, si el gat està en contacte amb l'au, a continuació, reproduir el lleó de quatre sound-- el rugit. Però mentrestant a l'au de paleta, tenim aquest. Per sempre, si no es toca el gat, simplement mantenir-se en moviment tres passos. I llavors aquí és una altra peça del trencaclosques. Si es troba a la vora, rebotar. Pel que l'au és només una mica ocupant-se del seu propi negoci, simplement volar al voltant i rebotant, i és realment el gat que tenia la lògica condicional per determinar si s'havia assolit l'au. Tot bé. Així que farem una altra aquí, aquest es diu hi hi hi. I aquesta d'aquí només fa això en un bucle infinit. Però notice-- Com aturem aquest programa molt molest? Prem la barra d'espai. Perquè si ho faig, program-- la mà esquerra notarà que està en constant listening-- és l'espai de premsa tecla. Si prem la barra d'espai, i si és així, què fer? Es fa una tècnica molt comuna. S'estableix una variable igual a algun valor. Però canvia aquest valor. [? Així aparença?] basat en el I shape-- tenir una variable que escriure amb antelació anomenada Silenciat, que es limita a dir sí o no. Es silencia el so o no? Cert o fals? I l'avís, el que dic això- si silenciat és zero, a continuació, canviar a un, un altre conjunt de silenci a zero. Així que només tapa el valor de zero a un. Podria haver de canviar done-- de dos a tres i 01:57 o quatre cinc o quatre a sis. Però no importa el que els números que faig servir, sempre que segueixo canviant-el contrari. I la majoria ho faria qualsevol programador només triar zero i un-- fals i vertader, apagat i en-- per representar a aquest. I això encara està en marxa. Si el colpeig la barra d'espai de nou [SEGELL SONS] El programa encara s'està executant. A causa de que hi ha aquest altre script que diu, sempre feu el següent. Si la variable és igual a silenciat zero-- pel que si vostè no està silenciat és la lògica-- si és falsa o no, a continuació, reproduir el so, perquè vostè no està silenciat. Vostè ha de reproduir el so i després pensar hi hi hi durant dos segons i després esperar, i fer-ho una i altra vegada i una altra. I així, d'aquesta manera tenim una forma de A-- persones per als programes per interactuar. I no han de ser com a data com d'altres. De fet, apuntant around-- sense joc de paraules intended-- algú gasta una enorme quantitat de temps a l'Internet implementació PokemonGo en Scratch. Fins i tot li geolocates en Cambridge o Allston aquí. Així que si vols veure el que la gent massa pot fer és això- menú molt elegant. Feu clic a aquí. Aquest sóc jo amb els meus tecles de fletxa ara. Vaig a anar després d'això. Feu clic. I ara fa clic al Pokeball. És a dir, jo crec que ets se suposa que feu clic al Pokeball. Tot bé. Així que ho vaig fer. Puc anar per aquí. I aquesta persona implementat alguns més Pokéballs més de tres aquí-- Pokéballs. Anem a publicar un enllaç a aquesta en línia perquè pugui jugar. Però notificació no és només alguns blocs de construcció bàsics. S'assembla molt més elegant, i ho és. Això és impressionant i més del que ho faria normalment esperar, sens dubte per a un problema d'ajust a zero. No tinc ni idea de quant temps aquesta persona va passar en línia. Però tot és només un bucle. Hi ha un joc de so. Hi ha una mena de bucle l'escolta de si estic colpejar la fletxa cap amunt o cap avall el fletxa oa l'esquerra ia la dreta, i després, si és així, s'està movent que cert nombre de píxels. I després, si faig clic a un altre element sprite, hi ha algun tipus de condició si existeix. Sí, això s'està posant massa intens. Anem a parar. És tots aquests blocs de construcció bàsics. No hi ha altres ingredients diferents que les que hem vist ja. I no obstant això, aquí, deixa fer un últim conjunt d'exemples que pinta un quadre massa del que es pot fer aquí. Heus aquí un programa molt simple que simplement fa això- la tos, la tos, la tos. Es basa exclusivament en el hem vist fins ara, On està l'òbvia oportunitat de millora. Aquest programa és correcte. Es tus tres vegades, que és el que pretenia. Però està ben aplicada. Està mal dissenyat. Per què? Sí. No és un bucle. I no és tant que no és un bucle, és que hi ha una gran quantitat de redundància. No es copia i es codi pegat, per dir-ho. I la solució probablement és de fet un bucle. Així que permetin-me anar per davant i millorar en aquest aspecte. I vaig a arrossegar aquests per aquí. Déjame seguir endavant i aconseguir una repetició bloc, canviï això a tres. Vaig a llençar a les escombraries alguns d'aquests blocs. I s'adonarà que és bastant intuïtiva. Vostè arrossegar i deixar anar i coses apareixen i desapareixen amb el temps. I jo només puc arrossegar això aquí, i ara tinc encara una versió més neta. Però saps què? Hi ha aquesta oportunitat ara per abstraction-- per començar a definir un nou vocabulari que el MIT no va anticipar. Hi ha esperar i repetir i sempre i si, però el que si vull introduir la paraula tos com un bloc? I si vull una peça del trencaclosques el propòsit a la vida és la tos? Bé, anem a veure aquesta versió aquí, el qual vaig fer com segueix. Per art de màgia, he creat aquesta peça del trencaclosques aquí, el qual les ratllades li permet fer. I, en efecte C i Python i JavaScript són va a permetre fer això també. Podeu crear la seva pròpia peces que crida amb el que vol. En aquest cas, la tos se sent com una definició raonable. I després, amb aquestes peces a baix aquí es pot definir el que significa. Em arrossegament o les caigudes de aquesta gamma de colors més aquí-- blocks-- aquesta gran porpra bloc, on he escrit en la tos com el nom de la meva nova peça del trencaclosques. I llavors jo estic dient cada vegada que un usuari crida a aquesta nova peça del trencaclosques de la tos, fer alguna cosa que dir i una espera. I així fins aquí al meu bloc de repetició, Jo només puc tossir tres vegades. I jo diria, sobretot Si ara s'oculta aquest detall. A qui li importa com s'implementa la tos? Tot el que importa com programador que pugui tossir. No m'importa com dir és implementat. Jo només importa que la gat pot dir alguna cosa. Que pugui abstreure aquest detall i només se centren en el que està a la pantalla aquí. Però puc portar això un pas més enllà. Recordeu que aquí, tinc implementat el bucle tres vegades. Però el que si enlloc agafo aquesta versió? ¿I si en comptes en aquesta versió aquí, Acabo de canviar la meva peça del trencaclosques per prendre un argument i l'entrada en si mateix? I que l'entrada pot ser igual nombre tres. Així que ara, si jo escric un programa i vull que el gat per a la tos, De fet, em puc dir el trencaclosques piece quantes vegades al tossir, perquè en el fons aquí, una columbòfil versió d'aquestes peces del trencaclosques d'encàrrec em permet especificar que ments presa realitat 1 input-- pren un argument com aquest. I saps què? Potser m'adono, espera un minut. La tos és el same-- és fonamentalment la mateixa idea que l'esternut. És només una diferent paraula a la pantalla. Que pugui abstreure i aplicant aquesta versió final d'un tos, que a primera vista és molt més complexa que mira. Però Recordeu el que he fet. Tinc ara generalized-- genericized realmente-- aquesta peça del trencaclosques a dir-dir paraula n vegades. I ara tinc dues noves peces del trencaclosques aquí baix definir la tos n vegades. I què fa la funció de la tos? Què fa el meu peça del trencaclosques d'encàrrec? Simplement truca al bloc diguem, passant per la paraula que vull dir, passant en el nombre de vegades que vull dir. Perquè ara puc posar en pràctica esternudar, simplement dient achoo, en aquest cas, un nombre de vegades. I, llavors, capes i capes. I de nou, la clau aquí no és la forma en què he implementat, però el fet que si jo només, literalment, moure fora de la pantalla, mira que si no simples bastant el meu programa ara es veu. Perquè fa el que diu, he abstret lluny del que és dins d'aquesta caixa negre. que passa a ser una caixa porpra aquí, però he obstruïda de distància que hi ha dins perquè no m'importa com funciona. Jo només importa ara que funciona. I, en efecte, en el problema assigna el valor zero, això és exactament el tipus d'estratificació de les idees aneu tenir l'oportunitat d'explorar. És exactament l'oportunitat de aplicar tècniques de resolució de problemes, al que és, probablement, una ambient desconegut. I si no s'ha programat abans o programada abans, trobareu que hi ha una mica d'alguna cosa en aquest entorn per a tothom. I amb conjunt de problemes un en el termini d'una setmana, realitzarem la transició de centrar en un llenguatge d'alt nivell anomenat C-- o més aviat una menor llenguatge d'alt nivell anomenat C-- això és encara més poderosa, tot i que és una mica més críptica a primera vista. I es donarà compte per TL d'avui: DR, que aquest problema té un set més curt finestra de temps que els futurs, simplement perquè hauria de buscar que sigui relativament accessibles. I no cal preocupar-se si afegir la classe de retard. Tractarem que en poc temps. I abans d'aixecar la sessió per a la coca, anem a acabar amb només una mirada de dos minuts al que li espera aquí a CS50. [MÚSICA] Tot bé. Això és tot per CS50. Ens veurem aviat. Coca ara se serveix. [MÚSICA] ALTAVEU 17: Ha sentit d'un any sabàtic, cap? ALTAVEU 18: Potser hi ha més sota el capó.