[LECTURE VIDÉO] [CAR refermant la porte] [CAR DEMARRAGE] [Jouer de la musique] -Moving Droite le long de la recherche de bons moments et de bonnes nouvelles. Avec de bons amis que vous ne pouvez pas perdre. -Ce Pourrait devenir une habitude. Coups -Opportunity Allons juste atteindre et attraper. -Ouais! -Together Nous NAB il. -We'll Randonnée d'attelage, bus ou taxi jaune il. -Dammit. -On Vont bon train. -Footloose Et de fantaisie. Cette obtention est la moitié du plaisir. Venez partager avec moi. -On Vont bon train. -Nous Sommes vais partager la charge. -Nous Ne pas besoin d'un plan pour obtenir ce spectacle sur la route. -Hé Fozzy, je veux que vous tournez à gauche si vous arrivez à un embranchement sur la route. -Oui monsieur. Tourner à gauche à l'embranchement de la route. Tourner à gauche. -Je Ne crois pas. -Cruising Droite le long nous avons trouvé les lumières sur l'autoroute. -Et Votre chemin ou de mon chemin. -Alors Confiance ma navigation. -Movie Étoiles avec des voitures de luxe et la vie avec le haut vers le bas. -Nous Sommes assaut les grandes collines. -Ouais, Tempête est droite. Faut-il neigeait? Non, je ne le pense pas. -Moving Droite le long. -Footloose Et de fantaisie. -Vous Êtes prêt pour le grand moment. -Est-Il prêt pour moi? -Moving Droite le long. Déplacement à droite le long. Déplacement à droite le long. Déplacement à droite le long. -Je Pense que tu ferais mieux de tirer plus. -Oui monsieur. [FIN LECTURE] [Applaudissements] DAVID J. Malan: Ceci est CS50. Et ceci est la fin de la Semaine 0, mais le début d'une belle amitié. Nous sommes très heureux d'être ici à l'Université Yale pour la première fois avec notre Scaz ami, Jason et Andy. Tous les 40 du TF de les de CS50 et CA est ici à Yale. Et vous tous. Et en fait, il est probablement temps to-- [Applaudissements] Donc, même si la plupart des conférences sera en effet à Cambridge cette année, la réalité est que de par leur conception, et très délibérément CS50, Je ne pense que nous nous approchons le point technologique et pédagogique, où il peut être une éducation supérieure expérience pour s'engager avec une certaine du matériel en ligne de cours. En effet, le reality-- et si je crois ce philosophically-- est que les conférences ne sont pas un particulier moyens efficaces de donner informations assez complexe. Certes, sur l'heure ainsi que de longues périodes de temps. Et en effet, tous les quelques minutes-- Je me souviens moi-même dans college-- vous changez de zone pour un moment, vous manquez un sujet complexe, et vous êtes allé à peu près pour les 45 prochaines minutes. Et la réalité est que si vous êtes ici à New Haven ou Cambridge ou au-delà, la simplicité d'avoir la capacité de faire une pause et avance rapide, rembobiner, lien hypertexte vers connexes les ressources, les relevés de notes de recherche de texte intégral et autres est une opportunité qui Je ose dire pour nos étudiants en ligne bien au-delà de New Haven, leur offre une occasion à saisir vraiment la matériel conceptuel que nous introduire dans des conférences d'autant mieux. Mais en fin de compte CS50, est l'expérience des étudiants est caractérisé tellement, tellement plus par les ensembles de problèmes du cours, ou des projets de programmation hebdomadaire, le Les sections de cours dirigés par l'enseignement boursiers, les heures de bureau nocturnes menés par les assistants de cours et l'enseignement boursiers, et en effet, tels événements comme CS50 Puzzle Jour, Hack-a-thon de CS50, CS50 la Fair, déjeuners hebdomadaires, et bien plus encore. Et si vous êtes ici, à New Haven, ou l'accord dans de loin, aujourd'hui à Cambridge, et nous vous reverrons bientôt, la réalité est que ce est une seule et même classe. Et nous sommes très heureux de être ici tous ensemble aujourd'hui. Et donc à la fin du semestre, que ce soit ici ou de loin, bien vous portez fièrement espérons, heureusement, et peut-être avec un peu de soulagement, la chemise qui témoigne de vous avoir pris CS50. Alors, où sommes-nous restés mercredi? Nous avons pris un coup d'oeil la pensée informatique. Et qui est distillé vers ce que nous informatique jusqu'à, au moins pour l'instant. Mais nous avons distillés peu plus loin dans au moins trois éléments de composants. Entrées, alors quelle est la problème que nous essayons de résoudre? Sorties, quelle est la réponse que nous espérons obtenir? Et la représentation de là. Et nous ne nous attarderons pas ici sur après le binaire, ou même ASCII, et comme beaucoup, mais plutôt tenir pour acquis que nous pouvons représenter cette information, parce que les pièces beaucoup plus intéressant de ces problèmes ne sont pas seulement la entrées et sorties, mais les algorithmes qui entrent dans la résolution de ces problèmes. Et vous souvenez peut-être de l'autre jour que nous a pris une assez traditionnelle concept de regarder quelqu'un dans un assez grand livre de téléphone, ou plus généralement numériquement ces jours, juste un très grand ensemble de données. Une liste de contacts vraiment grand, avec beaucoup de noms triés par ordre alphabétique. Et nous avons réalisé que pendant que je pourrait aborder ce problème tout simplement l'aide d'un linéaire Page approach-- par page ou même deux de un à time-- nous avons réalisé que la plus intuitive algorithm-- juste sorte de diviser et conquérir le problème, encore et encore, et again-- réduire de moitié à chaque temps, nous a donné ce résultat vert. Et il est tellement plat parce qu'elle suggère que même si ce problème devient de plus en plus grande, comme dans le cas de nos jours avec les données ensembles et reality-- Facebook et Google résultats de la recherche et de la like-- ce que notre algorithme effectuer tout aussi efficacement avec les plus grandes piqûres comme il l'a fait, même avec les plus petites bouchées. Maintenant, on peut se poser la question, ce qui pouvons-nous réellement résoudre similaire avec ce genre d'intuition? Ce genre de division et de conquête? Eh bien, nous pourrions faire quelque chose comme cela aujourd'hui ici. Nous pourrions prendre les présences. Alors peut-être comme 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- ne va pas être tout ce qui efficace. Donc attendre, l'école primaire. 2, 4, 6, 8, 10, 12, 14, 16, 18 et ainsi de suite. Mais pourrions-nous faire un peu mieux? Je suis sûr que je ne peux pas le faire par moi-même. Donc, si vous nous l'humour pour seulement un moment, nous avons apporté avec nous un algorithme qui est juste obtenu trois étapes, mais il ne exiger: si vous ne mind-- pas tous de nous lever, si vous voulez bien. Donc, avec nous tous maintenant debout, étape une de cet algorithme est le suivant. Levez-vous et assigner vous le numéro 1. Donc, à ce moment, littéralement tout le monde dans cette salle espérons-est de penser à eux-mêmes, Toutefois maladroitement, le numéro 1. Maintenant, la deuxième étape de cet algorithme est va impliquer la suivante. Deuxième étape, appareiller avec quelqu'un debout, ajouter vos numéros ensemble, et adopter la somme que votre nouveau numéro. Sanity check rapide. Quel numéro est tout le monde pense maintenant? Donc 2, sauf peut-être pour un, maladroit, personne solitaire. Si nous avons un nombre impair des gens dans la salle. Donc, une personne peut être encore le numéro 1, qui est très bien. Mais l'étape trois ici, on vous devriez vous asseoir. L'autre devrait revenir à l'étape deux, et répéter, si vous le voulez. Donc, si encore debout, vous devriez être parmi ceux remontant à la deuxième étape. Continue. Quelques personnes encore debout. Donc, si encore debout, jumeler avec quelqu'un. Tout droit, la diminution des bas. Quelques personnes encore debout. Je vais vous aider en cas de besoin. Rappelez-vous la livraison clé ici, est de savoir comment beaucoup plus rapide que moi cela est comptant. Voyons donc. Je peux aider. Donc ce nombre sont vous encore penser? AUDIENCE: Je suis à 44. DAVID J. Malan: 44, de sorte vous allez de l'avant et vous asseyez. Quel numéro pensez-vous? AUDIENCE: 74. DAVID J. Malan: 74. Très bien, allez-y et asseyez-vous. Qui d'autre est encore debout? 86. Et quiconque est encore debout? Quel numéro? Je entendu 67. Et puis en haut? 32. Quelqu'un d'autre encore debout et la pensée d'un certain nombre? Oh salut. Pardon. Je reviens tout de suite. 42. Quelqu'un d'autre? AUDIENCE: 47. DAVID J. Malan: 47. Quelqu'un d'autre est toujours debout qui n'a pas été compté? Ainsi, le nombre définitif de personnes dans une chambre qui a 497 sièges est-- qui tous sont filled-- est 390. Donc, ce qui est excellent. Nous allons bientôt discuter de la notion d'un bogue dans un programme informatique. Mais nous reviendrons à cette avant longtemps. Mais en théorie, ce qui pourrait ont passé tout à l'heure? Ainsi, même si il y avait trois grands étapes de cet algorithme, chacun de ces était juste un peu d'une grande opération. Et il y avait cette cyclicité à elle en ce que si vous étiez encore debout, Vous avez gardé allant de l'étape trois à deux, étape trois à deux, l'étape trois à deux. Mais ce qui a gardé passe à chaque itération? Chaque cycle de cette boucle? Qu'est-ce qui s'est passé ailleurs dans la salle? Non seulement la même chose, mais ce qui qui se passait à la moitié d'entre vous? S'asseoir. Et donc il dans le mensonge cette idée, un peu comme l'exemple du livre de téléphone, en ce que si la moitié d'entre vous sont assis à chaque fois, le problème commence avec peut-être 400 personnes, puis de 200 personnes, de 100 personnes, puis 50 personnes, et ainsi de suite. Et donc nous rogner dans la théorie à une seule personne, penser de la valeur totale de tout le monde. Maintenant, la réalité, certaines dynamiques sociales, et quelques erreurs arithmétiques pourraient contribuer à ce bug ultime. Mais en théorie, alors que je était toujours compter là, prenant plusieurs dizaines étapes, ou des centaines de marches de vous compter, compter une salle remplie de 500 personnes aurait pris beaucoup moins d'étapes, parce que vous ne pouvez diviser 500 et 1/2 tant de fois. Et donc, tout comme avec le téléphone réserver exemple, l'autre jour, avons-nous avons quelque chose logarithmique pour ainsi dire, laquelle, si nous étions tous fonctionnant à l'unisson, et en ignorant le les erreurs d'addition, aurions-nous ont obtenu exactement ce genre de temps d'exécution? Maintenant, pour être équitable, sorte de triché, en que je mobilisés autre ressource. Considérant qu'il est juste un de moi, Je Leveraged centaines d'entre vous. Mais cela pourrait être considéré comme un exemple de traitement parallèle, ou d'un état de l'art très en vogue où les ordinateurs de nos jours ont plusieurs processeurs, ou plus techniquement, plus plusieurs cœurs, et peut vraiment faire multiples choses à la fois, un peu comme vous tout ce que nous faisons là-bas, en parallèle. Mais rappeler que ce que nous a également fait le mercredi a essayer de capturer cette intuition et de formaliser dans le code. Quelque chose comme pseudo-code. Et en fait, et je espérons que vous pardonne, il est comme 80 degrés ici. Je vais donc profiter de cette off pour juste un peu. Ce que je pensais que nous ferions est la transition à un moment de sorte que l'application nous nous engageons à nouveau le public, mais écrire un programme en anglais comme la syntaxe, avec lequel résoudre ce problème ici. [LECTURE VIDÉO] Beurre d'arachide le temps de gelée de -Il. C'est l'heure du beurre de cacahuètes et de la confiture. C'est l'heure du beurre de cacahuètes et de la confiture. Way Ya! Way Ya! Way Ya! Way Ya! Maintenant, là vous allez! Et voilà! Et voilà! Et voilà! Peanut Butter Jelly! Peanut Butter Jelly! Peanut Butter Jelly! Peanut Butter Jelly! Arachide, beurre d'arachide gelée! Peanut Butter Jelly! Peanut Butter Jelly avec une batte de baseball. [FIN LECTURE] DAVID J. Malan: --Que vidéo, mais elle est un peu addictif, si pas un peu ennuyeux. Mais pour ce faire, je pensais que ce que nous avions faire est d'essayer d'écrire un programme ensemble, pour lesquels nous avons besoin de trois bénévoles. Avoir à être à l'aise à la caméra et Internet. Sam, allez vers le haut. Chemise mauve, ici, venez sur place. Et de plus ici, laissez-moi aller un peu plus loin en arrière. Crimson et chemises bleues, viennent sur place. Parfait. Viens maintenant. Allez-toi, viens sur place. Et quel est ton nom? Erica. David, ravi de vous rencontrer. Si vous souhaitez prendre ce siège ici. Ceci est Sam. Comment t'appelles tu? Antonio. Antonio, agréable de vous rencontrer. Erica et Sam, si vous aviez tiens à avoir un siège ici. Ce que nous venons préparé avec, que ces gars-là découvrent, est les ingrédients avec lesquels faire un sandwich au beurre de cacahuète et à la confiture. Maintenant, cela peut être quelque chose qui vous prenez beaucoup pour acquis. Mais nous avons donné à chacune des de nos trois volontaires ici-- deux bénévoles et Sam ici, un miche de pain chaque, une assiette, un couteau, un pot de gelée ou de confiture, et un pot de beurre d'arachide. Et l'objectif à portée de main est maintenant va être pour ces trois pour faire un beurre d'arachide et un sandwich de gelée. Mais ce que nous allons faire est attendre l'audience-- puisque tous vous sûrement connaître comment faire si bien dans reality-- vont nous fournir les instructions étape par étape. Le pseudo-code, si vous voulez. Donc, je vais jouer le rôle de scribe ici. Et je dois une petite liste de choses à faire, et de façon que chacun de vous, une à la fois, demande un potentiel pédagogique, je vais écrire, répéter au besoin. Et puis vous les gars vont faire un sandwich au beurre de cacahuète et à la confiture seulement en faisant ce que vous avez dit. Alors, pensez-vous que les ordinateurs. Vous ne pouvez faire ce que vous avez dit. Aucune hypothèse, pas de questions. Vous avez juste besoin de le faire. Alors, qui voudrait risquer la première instruction pour faire un sandwich de PBJ? Sur le balcon il. AUDIENCE: Ouvrez le sac de pain. DAVID J. Malan: Ouvrez le sac de pain, si vous voulez. Voyons donc. Disons itérer, et obtenir un peu plus précis. Bonne façon de commencer si. Deuxième étape, quelqu'un d'autre. Maintenant, personne ne veut faire du bénévolat. Etape deux, à l'avant. AUDIENCE: Ouvrez le intérieure sac de pain ainsi. DAVID J. Malan: Ouvrez le poche intérieure de pain ainsi. Grande, nous apprentissage. Un peu plus précise. Finissons travail. Oui, en chemise verte. AUDIENCE: [inaudible] DAVID J. Malan: tranches de pain. Retirez délicatement deux tranches de pain. C'est bien. La quatrième étape, quelqu'un d'autre? Par ici, oui? AUDIENCE: [inaudible] DAVID J. Malan: Placer le pain sur une assiette. Cinquième étape? Cinquième étape, ouais? AUDIENCE: [inaudible] DAVID J. Malan: En plus de-- oh, main. Placez la main sur le dessus de beurre d'arachide. Est-ce que je la tête? AUDIENCE: Ouais, et dévisser. DAVID J. Malan: et-- dire encore une fois. AUDIENCE: [inaudible] DAVID J. Malan: et de mettre les couvercle à côté du beurre d'arachide. Placer légèrement la main sur haut de beurre d'arachide, et dévisser, et mettre le couvercle à côté du beurre d'arachide. OK, l'étape six. Étape six, quelqu'un d'autre. Ouais? AUDIENCE: [inaudible] DAVID J. Malan: Dites-le à nouveau. AUDIENCE: Répétez l'étape cinq fois. DAVID J. Malan: Et répéter l'étape cinq fois, qui va créer un peu d'un problème Maintenant, si nous faisons cette étape par étape. Alors maintenant, nous revenons à l'étape cinq. Placer légèrement main sur le dessus de beurre d'arachide et de dévisser et de mettre le couvercle à côté du beurre d'arachide. Saisissez ensuite le beurre d'arachide et répétez l'étape cinq fois. Donc, nous allons l'emporter sur celle boucle infinie, si vous voulez. Septième étape, quelqu'un d'autre. Ouais, dans le dos. AUDIENCE: [inaudible] DAVID J. Malan: top --Le d'autres. AUDIENCE: [inaudible] DAVID J. Malan: D' d'autre part sur l'autre sommet. Voulez-vous venir juste ici? Comment puis-je terminer l'instruction? Quel est le reste de l'instruction? AUDIENCE: Ignorant cette partie. DAVID J. Malan: Ignorant cette partie. Recommençons. Septième étape. AUDIENCE: [inaudible] DAVID J. Malan: GRASP hand-- opposer ce qui est bon. Ceci est réellement bon. AUDIENCE: [inaudible] DAVID J. Malan: Et plastique jar-- AUDIENCE: [inaudible] DAVID J. Malan: Et twist-- AUDIENCE: [inaudible] DAVID J. Malan: Pour deux secondes. Il suffit d'ouvrir le pot de beurre d'arachide. Je espère que vous me pardonnerez. Supposons donc que nous y sommes arrivés. Ouvrez le pot de beurre d'arachide. [Applaudissements] DAVID J. Malan: Etape huit, allons-y. Étape huit, oui, dans le dos. AUDIENCE: [inaudible] DAVID J. Malan: Bon. Étape neuf, oui? AUDIENCE: [inaudible] DAVID J. Malan: --out de le pot de beurre d'arachide. Et-- et quoi? AUDIENCE: [inaudible] DAVID J. Malan: Et mettre couteau Retour en beurre d'arachide. Dixième étape. Dixième étape. AUDIENCE: [inaudible] DAVID J. Malan: Mettez le couteau hors, puis retirer le joint. Agréable. Off le beurre d'arachide. Tout droit, l'étape 11. AUDIENCE: [inaudible] DAVID J. Malan: OK, ordinateur gris suivez ordinateur bleu ou rouge. Bien. [Applaudissements] DAVID J. Malan: Apportez-nous la maison. Couple plusieurs étapes. Et après? Les étapes 12. Étape 12. Ouais? AUDIENCE: Mettez l'une des tranches de pain doucement sur l'une de vos mains. DAVID J. Malan: Un de vos mains. Et puis, l'étape 13. Ouais? AUDIENCE: [inaudible] DAVID J. Malan: --Le tranche de pain. Bien. Très bien. Etape 14, ouais. Audience: Nouvelle étape 13. DAVID J. Malan: Nouvelle étape 13. Passons à la gelée. Il est un programme de 100 étapes, mais nous étions à l'étape 15. Ouais. AUDIENCE: [inaudible] DAVID J. Malan: 7 à 13 à l'aide la gelée, parce que ceux allé si bien. Répétez les étapes 7 à 13, en utilisant la gelée. Donc saisir la moitié inférieure de la pot de gelée avec une main sur le dessus. D'un autre côté de la autre sommet, en ignorant cette partie, saisir avec les mains opposées, le couvercle et le pot en plastique en bas, et tordre pendant deux secondes. Ensuite, ouvrez le pot de gelée. Et enfin, nous allons essayer de nous donner quelque chose de comestible. Étape 16. Alors, pourquoi ne nous laissons pas là. Merci beaucoup à nos trois bénévoles. [Applaudissements] Nous avons une petite CS50 balle anti-stress pour vous. Il allait être un sandwich au mais-- si ce a été le point, au-delà ayant une peu de plaisir avec l'algorithme? Mais la réalité est que, même lorsque vous programmez un ordinateur, vous devez être super précis. Aussi complexe ou intimidant comme votre propre ordinateur pourrait très bien être à vous, au moins quand quelque chose va mal, la réalité est qu'il est un assez stupide dispositif qui a été inventé par nous, les humains, et ne peut faire un sous-ensemble de ce que nous do-- parfois certainement faster-- mais il ne sait pas comment à faire des hypothèses. Il ne sait pas comment être sur la même longueur d'onde que vous. Il ne le fera précisément ce que vous lui dites. Et vous serez frappé, peut-être, que nous commençons l'écriture de code réelle avec le premières séries de problèmes et au-delà, à quel point il est facile de faire une hypothèse qu'un être humain, et ne prévois pas que je dois gérer ce cas, ou ce cas de coin, pour ainsi dire, qui pourrait très bien survenir si, par exemple, Sam avait la seule bocal compressible de gelée, alors que tout le monde avait des bocaux de verre comme bien. Donc, avant de nous tournons notre attention à certains code réel, permettez-moi de vous présenter le les têtes des cours ici à Yale. Nos amis Scaz, Andy, et Jason à venir et dire bonjour. [Applaudissements] SCAZ: Nous avons perdu Jason temporairement. Salut à nouveau, tout le monde. Mon nom est Scaz. Je enseigne à Yale depuis 2001. Et quand je ne suis pas enseigné, ma recherche est en robotique et l'intelligence artificielle. Et l'annonce que je dois aujourd'hui est que le démarrage dans quelques semaines, nous allons être apporter quelque matériel complémentaire pour CS50 pour parler sur les logiciels d'intelligence. Nous allons parler de la façon endroits comme Netflix et Hulu peut vous recommander des films qui vous pourriez vouloir regarder. Où nous allons parler de la façon dont voitures sans conducteur fonctionnent réellement. Et nous serons en mesure de terre ces choses dans les concepts que vous êtes d'apprentissage dans cette classe aujourd'hui. Parce que toutes ces choses sont construit sur le même fondement. Et qui est ce que ce série explorera. Donc, je suis vraiment à la recherche hâte de voir plusieurs d'entre vous tout, et vous allez obtenir à Voir plus de nous tous très bientôt. Permettez-moi donc de vous présenter Jason. JASON: Salut tout le monde. Mon nom est Jason. Je suis malheureusement Harvard comme un étudiant de premier cycle. Cela va se couper sur le flux réel. Et maintenant, je suis ici en tant que conférencier dans le département d'informatique. Et je vais aider courir cours avec Scaz, David et Andy. ANDY: Hé les gars. Andy de mon nom. Je suis en fait la seule Yale étudiant sur la scène en ce moment. [Applaudissements] Je suis à Berkeley College, originaire de Solon, Ohio. Et je faisais partie de ces enfants où, quand je suis venu à Yale, Je pensais vraiment que je ne avoir à regarder un certain nombre jamais. Et puis je me rendis compte que vous aviez besoin la science et QR crédits pour obtenir leur diplôme. Et donc mon ressort de première année, je pris une classe, un CS, CS classe Intro ici à Yale. Je me suis dit, cela ressemble en fait assez cool. Et tandis que je effectivement fini par déclarer que les affaires mondiales un majeur, les compétences Je appris dans CS et de la programmation sont donc applicables à tout domaine vous choisissez de faire. Et le personnel ici à Yale, nous avons été si dur au travail de préparer pour vous les gars. Et nous sommes impatients de voir tous dans la section et les heures de bureau. Donc voilà. [Applaudissements] DAVID J. Malan: Je vous remercie. Donc, juste avant le début du cours, nous avons eu l'occasion à marcher autour du campus avec un téléphone portable et de prendre certains selfies sous forme de vidéo vraiment ma première tournée du campus de Yale ici. Et donc nous avons pensé partager un rude coupe de exactement ce que Scaz et Andy et Jason m'a pris autour du campus. [LECTURE VIDÉO] [SIRÈNES] -David. -Welcome À Yale. -Content de te voir. -Ravi de vous voir. -Peut-On faire un tour? -LET De faire un tour. Visite -Road. -Ce Signe a été là pendant un certain temps. -Whah, CS50. -Hurry! Aller aller aller aller. Vous devriez [inaudible] Harkness Tower. -Et Nous avons vu que quelques fois. [Applaudissements] -Look Pour le vélo! Ahh! Salut Frank. -Quoi de neuf les gars? -Comment allez-vous? -Content de te voir. -Welcome À la vidéo. Ne pas agir trop excité. -I Aiment Silliman. Ahh! -Il Ya eu environ trois heures depuis Jason avait la crème glacée et du Nutella. Donc, nous devons arrêter de retour à Silliman pour un peu. -C'est Même pas [inaudible] encore, juste le fait qu'ils ont ici est tellement incroyable. Mec, il ya Nutella à chaque repas. -Il Était l'année dernière aussi. -Ouais. -Dis beaucoup sur Yale jusqu'ici. Mais je ne maintenant que TD là-bas. Et ce qui est considéré comme hors campus. -Voici Nous avons l'architecture gothique. Mondialement célèbre. Nous avons une certaine architecture plus gothique. Et la construction et architecture plus gothique. Salut. Voilà où nous allons avoir des heures de bureau Du mardi au jeudi de Poudlard, comme [inaudible]. -Bien. Voilà pour la tournée. Nous sommes à l'Université de Yale Law School, où la conférence d'aujourd'hui est sur le point d'avoir lieu. Disons tête dans. [FIN LECTURE] DAVID J. Malan: Et Ce qui nous amène ici aujourd'hui. Donc, jusqu'à présent, nous avons été concentrant sur pseudocode, ce qui est la syntaxe anglaise comme. Il n'a pas de cahier des charges prescrit. Il est juste que vous utilisez certains langue intuitive si vous vouloir expliquer ce que vous voulez faire. Mais commençons maintenant à la transition au code, comme la plupart des gens diraient. Mais plus précisément, quelque chose connu sous le nom de code source. Ceci est la langue que les humains écrivent que les ordinateurs ultimately-- éventuellement après un certain nombre de steps-- comprend finalement de façon à savoir comment faire quelque chose. Ce que vous avez vu un aperçu de ce peut-être le mercredi. Ceci est un exemple qui incroyablement, décevante lorsqu'il est exécuté dit simplement "Bonjour tout le monde." Et il est écrit dans un langage appelé C, qui est syntaxiquement très similaire à beaucoup d'autres langues que vous pourriez ne pas savoir, mais aurait entendu parler de comme Java, et C ++ et Python, et Ruby, et analogues, et en effet, nous allons dépenser beaucoup du semestre en utilisant C, et puis, vers la fin de la semestre, la construction sur elle, et introduire de certain nombre d'autres langues. Parmi eux, PHP et JavaScript, un langage de base de données appelé SQL. Mais avec C, ce que nous aurons cette compréhension de bas en haut exactement comment fonctionne un ordinateur, ce que vous pouvez faire avec eux, et comment vous pouvez résoudre les problèmes d'autant plus efficacement par ce superposition que nous avons discuté le mercredi, et debout sur les épaules des autres. Mais plus sur celui à venir. Aujourd'hui, nous regardons un environnement simple, mais fondamentalement identiques environnement connu comme Scratch par nos amis de MIT Media Lab. Ceci est un graphique langage de programmation, Scratch, par lequel vous pouvez faire glisser et déposer des choses qui ressemblent à des morceaux de puzzle qui seulement verrouillage si elle fait sens logique ou programmatique pour le faire. Mais ça va nous permettre de avoir une conversation au sujet de tout de la même programmation fondamentaux que certains d'entre vous pourrait déjà connaître, que beaucoup d'entre vous peut-être pas savoir quelque chose de sans avoir enliser franchement, dans le plan intellectuel syntaxe inintéressante du point-virgule, et entre parenthèses, et cite, et similaires. Tout cela, au début de de suite, sont une distraction sont intéressants à ce que et des idées réellement utiles. Donc, nous allons jeter un rapide coup d'œil sur l'environnement ici, afin que vous sachiez ce qui l'attend. Et en fait, parmi les jeux que nous peut jouer sont quelques programmes écrits par ses propres anciens étudiants de CS50. L'un d'eux, moi-même, je serai celui- écrite à l'école d'études supérieures pour moi. Si je pouvais prendre un bénévole qui est prêt à jouer un jeu pour la première fois. Bien sûr. Allez vers le haut. Comment t'appelles tu? AUDIENCE: Angela. DAVID J. Malan: Angela, venez sur place. Donc Scratch a été pendant quelques années. Et quand je suis à l'école d'études supérieures, Je étais croix enregistrés au MIT, prenant professeur Mitchel Resnick de cours sur les technologies éducatives. Et nous étions parmi les premiers étudiants dans le monde à fait beta Scratch de test. Et mon projet était ce qu'Angela a maintenant gracieusement portés volontaires Pour jouer appelé Oscartime. Donc, je vais aller de l'avant et double-cliquez sur l'icône ici. Il va ouvrir une programmation environnement que nous allons bientôt plonger dans. Je vais en plein écran pour Angela, ici. Je vais frapper le vert drapeau dans un instant. Et puis un tas d'ordures va tomber du ciel. Et vous allez utiliser la souris ici pour effectivement faire glisser et déposer la poubelle dans les poubelles d'Oscar. Donc, si vous voulez aller de l'avant et cliquez sur le drapeau vert, le jeu commence. [Jouer de la musique] Oh, je l'aime poubelle. Tout sale ou terne ou poussiéreux. Tout en guenilles ou pourris, ou rouillé. Oui, je l'aime poubelle. Si vous voulez vraiment voir quelque chose de trash, regardez cette. Je dois ici une chaussure qui est en lambeaux et usés. Tout est plein de trous cales et les lacets sont déchirés. Un cadeau de ma mère le jour où je suis né. Je l'aime parce it's-- DAVID J. Malan: --green ces jours seulement être tout jeter à la poubelle. Et donc ce que l'un des Did-- propre du personnel de CS50 Jordan, qui vous pourriez répondre today-- a fait cette mise à jour pour les temps d'aujourd'hui. Et permettez-moi d'ouvrir un remix place pour Angela. Et nous jouerons cette place pour quelques moments où vous êtes maintenant allez avoir à décider entre se de jeter quelque chose à la poubelle, ou le recycler ou composter. Donc, il ya un peu de pression sur vous pour obtenir ce droit en face de votre 392 à 497 camarades de classe ici dans la salle, si vous voulez bien. [LECTURE VIDÉO] [Jouer de la musique] Oh I love poubelle. Tout sale ou terne ou poussiéreux. Tout en guenilles ou pourris ou rouillé. Oui, je l'aime poubelle. Si vous voulez vraiment voir quelque chose de trash, regardez cette. Je dois ici une chaussure qui est en lambeaux et usés. Tout est plein de trous et les lacets sont déchirés. Un cadeau de ma mère le jour où je suis né. Je l'aime parce qu'il est poubelle. Oh, je l'aime poubelle. Tout sale ou terne, ou poussiéreux. Tout en guenilles ou pourris ou rouillé. Oui, je l'aime poubelle. Voici quelques trucs plus pourri. Je dois ici quelques-unes newspaper-- [FIN LECTURE] DAVID J. Malan: --existe en fait compostables. Mais merci à notre bénévole, Angela. Nous avons une balle anti-stress pour vous ici. Alors merci. Alors celui-ci a été écrit par moi. Mais maintenant, l'un par un ancien étudiant réelle qui mis en place ce qui est un jeu. Tout dans cette langue appelée Scratch, que nous allons bientôt peler les couches de. Mais si nous avions like-- comment d'un autre bénévole? Droit. Allez vers le haut. Comment t'appelles tu? Regards? Lance. Lance, venu sur place. Enchanté de faire votre connaissance. Venez sur cette voie. Alors celui-ci pourrait avoir un thème familier à certains d'entre vous. Mais vous verrez aussi que il peut y avoir l'interactivité, par lequel vous pourriez effectivement être le rôle du personnage à se déplacer. Enchanté de faire votre connaissance. David. Je vous donne, Pikachu. Instructions voulez à propos à venir sur l'écran. Mais en bref, vous allez vouloir attraper les trucs savoureux, et éviter les bombes et d'autres choses. Avec les curseurs entièrement. Donc, frapper la barre d'espace. -Pikachu. DAVID J. Malan: Catch les trucs sur la gauche, ne pas attraper les trucs sur la droite. [Jouer de la musique] Alors une dernière personne ici. Si nous pouvions avoir un plus bénévole ici. Nous avons pensé que nous recréons quelque chose de-- dans le shirt-- jaune à partir de mercredi. Quel est votre nom? Mary, viens jusqu'à Mary. Et rappelons le mercredi, nous avons introduit la notion de binaire, et les ampoules binaires. Ceci est en fait désormais une la mise en oeuvre de cette même interface que nous avons eu sur l'iPad avec la lumière ampoules, mais ici, numériquement rendus. Et plutôt que de faire un effort ball-- agréable de vous rencontrer, David. Nous avons apporté quelques-uns de lumière ampoules de Cambridge. Si vous le pouvez, en cliquant sur les ampoules pour les allumer et éteindre, venir avec le binaire représentation de dire 256. Et vous verrez dans le milieu, le décompte actuel. Alors que l'on est sur. Ainsi, le bit de gauche est sur. MARY: Ouais, [inaudible] DAVID J. Malan: Eh bien, nous avons donc just-- oh. Donc ceci est la colonne 128. Donc, nous sommes jusqu'à 128. Nous sommes arrivés à obtenir 256. Et vous pouvez bricoler sur et en dehors, pas une grosse affaire. Ou vous pouvez frapper que 128 plusieurs fois si vous voulez. Très bien, bon. 24. Ouais, se rapproche. Closer! Oh, quel est le problème alors? Alors, quelle est la question? Alors, que devons-nous résoudre ce problème? Nous avons donc besoin d'un autre bit. Et cela est parfaitement raisonnable en réalité, non? Si vous voulez compter le nombre de 1 pour 2 pour 3 à 4 à 5, 6, 7, 8, 9 au fait rouler à 10, vous êtes allez avoir besoin d'un bit supplémentaire. Donc, nous allons effectivement rembobiner ici, et arriver avec-- qui était évidemment censé être une mise en place. Vous ne pouvez pas faire 256 avec juste une ampoule. Alors que diriez simplement le numéro 50? Nombre 50. Excellente. Une salve d'applaudissements pour Marie et le sien aussi. Merci. Donc, ce topic-- intentionnelle que était-- sera effectivement se reproduire. La plus grande valeur que vous pouvez représenter avec huit bits, ou un octet, est en effet 256. Mais pas si vous commencez comptant à partir de 0, comme nous semblent continuer à le faire en ayant tous ces bits off. Mais maintenant, nous allons plonger dans le sous-jacent la mise en œuvre de cet environnement, et démêler certaines de ces idées. Donc, en un instant, nous sommes sur le point de voir un quelques différents concepts de programmation. Le premier dont nous appellerons déclaration. Trier des verbes, si vous voulez. Actions. Les choses qui devraient être faites. Et dans un moment vous verrez blocs qui ressemblent à ceci. Dites "Bonjour tout le monde», par exemple. Ou attendre une seconde. Ou jouer son miaulement. Et en effet, l'environnement dans que nous allons faire cela est appelé Scratch. Et si je tire sans Scratch préchargement tout code réelle, nous allons jeter un coup d'œil à cette interface utilisateur, pour ainsi dire. Les contrôles avec lesquels nous interagissons. En haut à gauche de l'ici écran, les menus ci-dessous, nous avons la scène, pour ainsi dire. Donc Scratch est ce que nous appellerons Sprite. Il est un personnage. Et il peut être contrôlé par l'écriture de programmes contre lui. Et il sera capable de se déplacer de haut en bas et gauche et à droite dans cet environnement, pas seulement en déplaçant le souris, mais par programmation. Je peux lui dire marcher droit, pied gauche, haut, bas ou similaire. Et je peux introduire d'autres sprites ou des caractères ainsi. En effet, sur le fond voici où vous verrez votre liste de sprites. Pour le moment, je dois juste un, mais je ne peux en créer davantage, et ils vont apparaître exactement là-bas. Donc, si vous rembobinez un instant, comme Oscartime-- par exemple, Oscar, sur la gauche, la poubelle peut, était un sprite. Et la chose dans le milieu, le bac de recyclage, était un autre sprite. Et le bac à compost était un autre sprite. Et chaque morceau de ordures et des matières recyclables qui tombait du ciel est aussi une image-objet, chacun de ces a été programmé individuellement. Comment peut-on programmer? Eh bien, ici sur la droite côté est de la zone de scripts. Et c'est là où nous le pouvons faire glisser et déposer les pièces du puzzle. Dans une semaine, il va être où nous écrivons équivalente Code avec plus d'un clavier, mais pour aujourd'hui ça va être glisser-déposer des pièces de puzzle, le palettes pour lesquels peuvent tous se trouve ici en plein milieu. En effet, dans le milieu Ici, il ya tout un tas des catégories de casse-tête morceaux ou de blocs. Celui-ci est lié au mouvement, regarder, sonore, un stylo monter et descendre, données, d'événements contrôlent. Pas tout à fait encore sûr ce que tout cela signifie, mais vous verrez qu'ils ont été bien classés. Et à écrire un programme Scratch, nous allons faire exactement cela. Je vais commencer en vertu Événements, et faites glisser celui-là. Lorsque le drapeau vert cliqué. Maintenant, pourquoi celui-là? Eh bien rappeler que nos bénévoles venu, la première chose que je ou qu'ils ont fait était cliquez sur ce vert drapeau dans le coin en haut à droite. Et cela signifie simplement lancer le programme. Donc, lorsque cet événement se produit, qu'est-ce que je veux faire? Je vais passer sous Looks, et je vais faire "dire bonjour." Et je vais changer cette situation et dire quelque chose comme "bonjour Yale." Et maintenant, je vais pour agrandir out, cliquez sur le drapeau vert, et voila, je l'ai écrit un programme. Il est pas tout à fait passionnante pour l'instant, mais cette est exactement où chaque de ceux auteur a commencé, à la fois avec Pikachu, et le ampoules binaires, et Oscartime, et tant d'autres exemples. Vous commencez super simple, et alors vous commencez à la couche, et d'ajouter sur les caractéristiques et la fonctionnalité. Alors, quelles sont ces couches va consister? Eh bien, au-delà des déclarations, nous allons aussi avoir des choses qui sont un peu plus fancily appelé expressions booléennes, après que quelqu'un nommé Bool. Et une expression booléenne est tout simplement une expression qui est vrai ou faux, oui ou non, 1 ou 0. Tous les pôles opposés comme ça. Il est vrai ou pas. Mais nous allons aussi voir ceux qui pourraient ressembler à ceci. Ainsi, par exemple, est la souris vers le bas? Ils sont genre de questions, si vous voulez. La souris est soit vers le bas, vrai ou il ne l'est fausse. 1 ou 0, si vous voulez, a tendance à être la cartographie. Vrai est 1, faux est 0. Eh bien que dire moins que cela? Ou alors, est-ce moins que cela? Voilà une question de toutes sortes. Et si vous mettez deux chiffres là-dedans, soit x va être à moins de y ou égal à y, ou supérieur à y, mais ce bloc nous le verrons, est juste va répondre à la question, est-ce moins que cela? Nous pourrions aussi voir quelque chose comme ça. Pointeurs de souris toucher. Donc dans Scratch, vous pouvez demander la question, est le Sprite toucher le pointeur de la souris? Autrement dit, est le vol stationnaire du curseur sur le bouchon, ou l'équivalent? Nous voyons les choses de Anding ensemble. Vous pouvez poser deux questions, et assurez-vous que tous les deux vous donner oui ou véritables réponses avant de prendre une décision de faire quelque chose. Mais alors comment voulez-vous prendre des décisions? Eh bien, nous avons ces conditions. Et nous avons vu cela dans notre exemple de l'annuaire téléphonique. Regardant vers la gauche ou droit pour Mike Smith. Et dans l'état, vous faire quelque chose de potentiellement, Si une expression booléenne est vraie. Et en effet, remarquer les formes aujourd'hui. Il ya cette espace réservé dès maintenant sur le rétroprojecteur où nous pouvons fit-- si je recule d'une slide-- cette forme. Il est pas tout à fait la même taille. Et en effet, vous verrez que Scratch redimensionne les choses dynamiquement à agencer des pièces de puzzle, mais le forme est ce qui est important. Cette chose ressemble que, et en effet il est à peu près la même forme qui devrait répondre là-dedans. Et si nous voulons faire quelque chose de cette façon ou de cette façon, si ou bien, nous avons ce puzzle pièce dans Scratch ainsi. Supposons maintenant que vous vouliez faire si, d'autre si, ou autre. En d'autres termes, un fourche à trois voies de la route. Eh bien ce que pouvez-vous faire juste en regardant ce? Je peux prendre cette pièce de puzzle, et il ne semble pas correspondre, mais encore une fois, Scratch va redimensionner bien pour nous. Je pourrais commencer à la couche ces choses ensemble. Alors maintenant, je dois une à trois voies fourche si cela est vrai, faire cela. Sinon, si cette autre chose est vrai, aller de cette façon, sinon passer cette autre façon. Et dans Le Muppet Movie, la bifurcation de la route, pour ainsi dire, ou entre Yale Stanford, était exactement cela, seulement deux conditions. Soit aller dans cette voie, sinon aller dans ce sens. Eh bien, il existe des boucles aussi dans la programmation. Et nous avons utilisé ces déjà en classe et dans le code de pseudo-code, et sûrement dans celles Programmes pour toujours de zéro. Scratch a cette pièce de puzzle qui va simplement vous laisser faire quelque chose pour toujours. Et parfois vous voulez faire toujours quelque chose. Il est pas nécessairement un bug, il est parce que vous voulez une horloge pour continuer, ou un jeu de continuer à jouer. Ou vous pouvez spécifier un nombre fini de étapes, comme ce bloc de répéter ici, qui sera répéter quelque chose 10 fois. Nous pouvons définir des variables, nous le verrons bientôt. Et avec des variables, dans le même esprit à l'algèbre, comme x ou y, ou z. Il est quelque chose de symbolique qui peut stocker une certaine valeur, un morceau de l'information, que vous voudrez peut- se souvenir pour plus tard. Meilleur exemple de cela pourrait être un jeu où vous avez un score, comme dans Pikachu. Combien de morceaux de gâteau et ainsi de suite avez-vous attraper? Eh bien, cela pourrait être une variable appelé score qui commence à 0. Et puis à chaque fois nous avons pris un morceau de gâteau ou des bonbons, ou similaire, il obtient incrémenté. Il est ajouté à une à la fois. Et les magasins de sorte une variable A élément d'information de ce genre. Ensuite, il ya des tableaux, et nous viendrons Retour à ceux-ci dans une semaine ou deux fois, mais un tableau est un peu comme un inventaire ou une sacoche, à l'intérieur dont vous pouvez mettre les choses virtuelles. Il vous permet de stocker plus d'un élément d'information. Et qui pourrait être utile si dans le jeu, vous êtes sorte de se promener ramasser des objets. Et peut-être vous voulez garder tous ces morceaux de gâteau autour, et pas seulement manger les uns après les autres. Et puis il ya une construction amateur nous allons venir appelées fonctions ou procédures. Et bien que nous allons plus rapide ici, nous allons voir que ce sont une très solution naturelle aux problèmes que nous sommes rencontre aller. Comme nos programmes commencent grossit nous allons commencer à remarquer des modèles dans le code que nous écrivons, les pièces du puzzle que nous sommes glisser-déposer. Et dès que vous remarquez-vous faire quelque chose encore et encore, ou pire encore copier et coller la programmation Code que vous avez écrit, qui est probablement une possibilité de factoriser tout ce que vous gardez la copie et coller, et de le mettre dans ce qu'on appelle une «fonction». Mais plus sur ceux de beaucoup plus en détail avant longtemps. Et puis il ya fonctionnalités encore plus fantaisistes. Pour ceux d'entre vous plus à l'aise, ou de prendre APCS ou équivalent, Scratch soutient effectivement les choses comme des fils et des événements et plus encore. Donc réaliser qu'il a un plafond assez élevé, même si elle est également très largement accessible pour les gens qui n'a jamais programmé auparavant. Donc, en effet, nous allons jeter un coup d'oeil à un programme simple ou deux. Nous avons déjà examiné la façon dont nous pourrait dire bonjour avec Scratch. Permettez-moi aller de l'avant et d'ouvrir un petit programme plus intéressant que je l'ai écrit à l'avance. Et celui-ci est appelé Pet the Cat. Tous ces programmes seront disponible sur le site Web de CS50. En effet, déjà là. Ainsi, vous pouvez télécharger eux, et jouent avec eux, et problème Set 0, ce qui est également sur le site Web de la formation, vous êtes encouragés à marcher à travers ceux-ci. Et d'ailleurs, nous avons une Nombre de vidéos de plain-pied dans en ligne dans lequel I et L'équipe de CS50 marche vraiment à travers chacun de ces exemples à un bien rythme plus lent, un forwardable très rapide, ou le rythme rembobinable, de sorte que vous pouvez marcher à travers ces ainsi à votre guise. Alors, voici Scratch sur la gauche. Voici un programme à la droite que je l'ai déjà pré-faites. Alors permettez-moi Zoomer sur cette. Et quelqu'un pourrait en anglais, sachant ce que vous savez, juste à partir de maintenant que à la façon dont les travaux de gratter, de sorte disent dans une phrase en anglais ou une phrase, qu'est-ce que ce programme semble faire? Ouais, en chemise orange. AUDIENCE: [inaudible] DAVID J. Malan: Ouais, si votre curseur est sur le chat Scratch, jouer un son miauler. Mais remarquez comment nous exprimons cela. Il ya apparemment un boucle là, toujours. Et puis il ya une état, l'expression if. Et collectivement, qu'est-ce que ceux qui veut dire? Cela signifie ce programme est juste toujours en cours d'exécution, et il est juste toujours en attente et regardant et en écoutant pour moi de bouger ma souris sur le chat. Parce que chaque fois que je fais ce que, comme vous proposez, ça va le faire. Permettez-moi de commencer le programme. Rien ne semble être passe, mais remarquez comment il est souligné aujourd'hui dans une ligne jaune. Cela signifie simplement qu'il est en cours d'exécution. Et parce qu'il ya une éternité boucle, il est toujours en cours d'exécution. Alors permettez-moi de passer mon curseur sur Scratch. [MEOW] [MEOW] Et si je déménage au loin, [MEOW] maintenant il arrête, mais le programme de cours toujours. [MEOW] Et donc, adorable. [MEOW] Donc Ouvrons légèrement plus avancée exemple appelé Ne pas caresser le chat. Et maintenant nous allons voir ce que qui se passe ici. [MEOW] Meowing. Il est donc un peu sur pilote automatique, si vous voulez. --pet le chat. Je me demande pourquoi. [RAAR] [MEOW] Alors, comment ce travail? Eh bien, vous pouvez genre de raison à travers elle intuitivement, peut-être. Mais regardons le code réel. Encore une fois, lorsque le drapeau vert est cliqué, le faire toujours. Que voulez-vous faire pour toujours? Eh bien, si la souris touchante pointeur, puis jouer un son qui est apparemment appelé Lion 5, qui est à l'intérieur de ce projet, d'autre jouer miaulement sonore, et puis attendez deux secondes, de sorte que ça ne miaule sans cesse. En fait, vous pouvez très rapidement commencer à vous-même et vos colocataires ennuyer. Enlevons ce bloc. Et remarquez ce qui est agréable à propos de Scratch. Les choses sont juste des types de glissement et déposer et verrouillage. Encore une fois, il pousse à remplissez ce que vous voulez. Mais si je retire cela, et ensuite pièce à succès, [ORDINATEUR BLIP SOUND] --il est une sorte de trébucher sur lui-même, car il est littéralement faire ce que je veux dire. Il est dit jamais jouer ce son, mais Je ne lui donnant pas une chance de finir. Et alors ce serait un bug. Et voilà pourquoi nous avions cette chose ici maintenant. Donc, nous allons effectivement commencer à partir scratch-- sorte de jeu de mots légèrement intended-- dans lequel nous avons maintenant le mouvement de chat. Donc, je vais le faire à la volée. Je vais agrandir ici, à me lancez pas sur les événements. Et drapeau vert cliqué. Et il ya d'autres façons pour lancer les scripts. Nous allons garder les choses simples ici. Et maintenant, je vais aller de l'avant et passer sous contrôle. Et encore une fois, si vous oubliez où les choses sont, il suffit de cliquer autour, et finalement vous les trouverez à nouveau. Donc, je veux faire ce que jamais? Je veux utiliser le bloc de mouvement que je sais existe, déplacer 10 étapes. Voyons donc ce qui se passe ici si je joue à ce jeu. Heureusement il ne va pas trop loin. Je peux encore sorte de l'attraper par la queue et le tirer en arrière. Mais le programme est toujours en cours d'exécution, donc il est une sorte de me battre. Mais ce serait plutôt sympa si je fixer cette condition dans le code. Parce que cela est pas-- effectivement ce qui est vraiment pas un jeu amusant pour toute personne de tout âge. Donc, nous allons essayer de résoudre ce problème en avoir une sorte de conditions. Je vais donc passer sous Contrôle, et puis si. Je aime cette idée. Donc, après le déplacement de 10 étapes, si-- permettez-moi de sens là où je suis. Je vais passer sous Sensing, puis il semble que je peux aller ici. ramer pour les matches de forme. La taille ne fait pas, mais il est va croître à combler. Et maintenant cela est un petit menu. Et maintenant la souris pointer-- Je ne sais pas veulent la souris, je veux le bord. Donc Scratch est assez intelligent pour savoir quand un sprite est de toucher le bord. Ce que je veux lui faire réellement? Laissez-moi aller de l'avant et changer le mouvement. Tu sais quoi? Je vais devoir lui tourner autour. Donc, à 15 degrés est pas va vraiment me aider. Je veux lui faire demi-tour et aller dans l'autre sens. Voyons donc ce qui se passe ici, si je frappe Jouez maintenant. OK, un peu stupide à la recherche, mais qu'il fait exactement ce que je disais. Et il est en rotation l'ensemble sprite. Maintenant, il se trouve que je peux résoudre ce problème. Et je ne sais pas comment pour résoudre ce problème au premier abord. Je sorte devais futz autour et voir la meilleure façon de le faire. Mais si je vais to-- voyons, le mouvement. Oh, je trouvais cela. En fait, Set Rotation style. Gauche, droite, ou de ne pas faire pivoter, ou tout autour. Et il se trouve que ce que je veux. Et je vais mettre ce est pas mon boucle, parce que je ne dois pas mettre le style de rotation plusieurs fois. Je vais le mettre au sommet de ce programme afin qu'il soit fixé une fois, et se souvient de l'époque. Et maintenant, je vais essayer encore une fois. Permettez-moi arrêter le programme. Et maintenant que fixé ce bogue. Donc, je suis itérative amélioration sur ce point. Le programme est d'obtenir un peu plus complexe et plus, mais je vais prendre des mesures de bébé pour ainsi dire, et de petites bouchées sur le problème pour obtenir de mieux en mieux. Mais cela aussi, est une sorte de lame. Tu sais quoi? Serait de demander à quelqu'un avec un vraiment bon, voix affreuse aiment à venir? Quelqu'un avec une voix. Euh, ouais. Allez vers le haut. Dans la chemise verte. Donc, il se trouve qu'il ya une autre fun les choses, de l'esthétique et des sons semblables. Voici le miaulement. Je clique sur l'onglet Sons. [MEOW] Il est le miaou. [MIAOU MIAOU] [MEOW] --actually fiche chose de notre propre ici. Donc, nous allons faire exactement cela. Au lieu d'utiliser ce son chat, nous allons aller de l'avant ici, et quel est votre nom? Nick, agréable de vous rencontrer. Il est David. Donc, en un instant, je vais de frapper le bouton Enregistrer. Et si vous pouvez juste crier dans l'ordinateur portable, "aïe", comme si vous vient d'entrer dans le mur, qui sera très appréciée. 1, 2. NICK: Aïe! DAVID J. Malan: Awesome. Et maintenant, peut faire un peu de montage ici. Aller à se débarrasser des parties calmes. Et je pense que ce qui est bon. Merci beaucoup. NICK: Pleasure. DAVID J. Malan: Je l'ai simplement rebaptisé "aïe" mais maintenant je vais revenir à mes scripts. Et remarquez, il est en effet son ici. Et je vais aller de l'avant et de jouer le ouch sonore, et je vais le faire que si il est de toucher les bords. Et puis je vais ont tourner autour. Voyons donc ce qui se passe ici. Allons plein écran. [LECTURE VIDÉO] -Ouch! Aïe! Aïe! Aïe! Aïe! Aïe! Aïe! Aïe! [FIN LECTURE] DAVID J. Malan: Donc, vous vous rendez compte que nous obtenons un peu de chance. Je vais l'avoir déménagement comme 100 marches à la fois. L'effet de ce qui maintenant va à être-- [problème informatique SOUND] Donc, dans des limites raisonnables. Donc, l'occasion d'affiner ce que plus loin si nous voulons vraiment. Alors maintenant, nous allons introduire un autre concept. Pour me laisser aller dans l'un appelé Counting Sheep et l'utilisation quelque chose une variable appelée. Ceci est un petit mouton adorable, et Je l'ai changé son costume pour ainsi dire. Donc même si le défaut est un chat, vous pouvez télécharger, vous pouvez dessiner, vous pouvez faire un certain nombre de les personnages de votre sprite. Voici un programme qui est va faire quoi en anglais? Basé nouveau sur tout ce que vous savez maintenant. Quel est ce programme faire? Ouais, ça va compter. Un seul numéro à la fois. Nous avons apparemment avoir cet ensemble comptoir. Je ne sais pas ce qui est, mais peut-être il est une variable. Il est juste un conteneur, x ou y. Mais le compteur de mots est plus descriptif que le x ou y de mathématicien. Donc, nous pouvons utiliser des mots anglais pour des choses. Toujours, signifie simplement continuer à faire cela. Dites comptoir. Maintenant, où cela vient-il? Eh bien, il se trouve que est une variable compteur. Donc, il est juste un autre casse-tête morceau que je créé à l'avance. Et même si cela arrive ne pas être la même forme ici, normalement vous diriez quelque chose comme bonjour ici. Vous pouvez également faire glisser une variable de sorte que ce qui est dit-y. Puis je l'attends une seconde, je changer le compteur d'une unité, incrémenter en ajoutant un. De sorte que l'effet net est Ce comptage adorable mouton. Bien qu'il ait lui-même compter. Maintenant, il est très rapidement va devenir ennuyeux parce qu'il va faire vraiment jamais, mais qui est exactement ce que le la conception de programme prescrit. Permet maintenant essayer un autre exemple qui exploite une variable. Celui-ci a appelé Salut Salut Salut, que ne obtenir rapidement ennuyeux. Maintenant celui-ci dispose de deux scripts. Et là encore, nous prenons des mesures pour bébés. Nous avons commencé avec quelque chose de super petit, ajouté à cela, ajouté. Maintenant, je veux faire quelque chose encore plus dynamique, donc je veux être à l'écoute des deux choses différentes à la fois. Ainsi, sur la gauche, lorsque drapeau vert est cliqué, Je définir une variable que je l'ai écrit à l'avance appelé Muted. Et je arbitrairement fixée à 0. Donc Scratch n'a pas vrai et faux, mais il a 0 et 1. Donc, je peux rapprocher cette même idée. Et puis toujours, si la barre d'espace est pressé, puis définissez la variable à 0. Ou désolé. Si l'espace est pressé, et si en sourdine, la variable, est de 0, puis définissez sourdine à 1, d'autre mis en sourdine à 0. Cela semble un peu comme nous sommes juste faire et défaire le travail. Mais ce qui est l'effet? Chaque fois que je frappe la barre d'espace, ce qui arrive à ma variable appelé en sourdine, logiquement? Trier du obtient renversé. Il passe de 0 à 1, ou 1-0. Donc, il a fallu quelques blocs pour exprimer cela, mais tous Je fais est de basculer l'état de cette variable à 0 ou 1, ou 0 ou 1 chaque fois que je frappe la barre d'espace. Maintenant, ici, qu'est-ce que cela fait? Toujours, si sourdine est 0, donc si sourdine est fausse. Donc, si il est pas mis en sourdine, est le la sémantique là, jouent mer son lion, et penser Salut Salut Salut pour deux secondes, attendez deux secondes. Donc remarquerez maintenant ces scripts sont effectivement va courir en parallèle de sorte que l'on peut être à l'écoute pour une action, l'autre pour prendre une décision sur la base de cette action. Et il peut le faire pour toujours. [Sea Lion BARKING] [Sea Lion BARKING] Il va le faire pour toujours et [Sea Lion BARKING] que je viens de faire. Et maintenant, il est toujours en cours d'exécution mais je l'ai "coupé" le jeu. [Sea Lion BARKING] Et voilà Tout ce gars fait maintenant trop. Ouvrons un autre exemple ici. Laissez-moi aller dans Événements, et maintenant cet adorable aussi. Mais remarquez qu'il a deux sprites. Ainsi, non seulement avec deux scripts un sprite, mais deux sprites. Et si je clique sur le gars bleu comme je déjà, je il voir comme un programme ici qui dit littéralement juste cela, lorsque je reçois un événement, dire "Polo" pour deux secondes. Donc, si vous avez déjà joué dans une piscine, le jeu de Marco Polo, si le script orange mec est aucune indication, apparemment chaque fois que je frappe la barre d'espace, ce qui est le gars d'orange va faire? Il va dire "Marco". Et alors ceci est un nouveau bloc. Nous ne l'avons pas vu cela avant, mais de diffuser un événement. Et je pourrais appeler événement ce que nous voulons. Nous reviendrons à cette peut-être avant longtemps. Mais la diffusion d'un événement est une façon pour un sprite de parler à un autre par essentiellement passer un message. Il est pas un message que vous voyez. Il est pas quelque chose de visuel. Il est une sorte de message d'ordinateur que l'autre gars est à l'écoute pour. Car en effet, le gars bleu, rappel ne pas avoir quand drapeau vert cliqué. Il a à la place, quand je reçois un événement. Quand il est remis cette note dans la classe, pour ainsi dire, il devrait dire "Polo". Et si l'effet net est que quand je a frappé le drapeau vert, rien ne se passe. Mais quand je frappe la barre d'espace, dit-il "Marco", il répond avec "Polo". Mais le seul sprite je suis interagissant avec le orange. Donc, cela est une manière de type de passer des messages entre les sprites et ayant à communiquer avec une autre. Maintenant regardons une dernière un ici appelés threads. Et remarquez ce en le jouant. Donc, ce sont deux sprites. L'oiseau est une sorte de vole autour. Il rebondit. Il n'y a pas "aïe", mais même idée. Mais le chat semble assez intelligent. Quel est le chat apparemment fait? Et attendre. Quel est le chat apparemment fait? Il ne suffit pas de rebondir. Il suit l'oiseau. Et apparemment, il ya un moyen avec une combinaison de blocs ici-- et regardons le chat très vite. Toujours, si touchant oiseau, puis jouer le son Lion 4, quelle qu'elle soit. Nous avons entendu une fois. Sinon, pointer vers oiseau, et déplacer une seule étape. Le fait qu'il est maintenant l'un étape est ce qui donne à l'oiseau un peu d'un avantage au départ, mais si nous place faire de ce 10, par exemple, de sorte que chaque itération de la boucle, il est 10 déplaçant pas de temps. Donc, plus d'espace. Voyons ce qui se passe ensuite. [Lion Roar] Pas tellement mieux. Alors maintenant, nous allons essayer d'améliorer sur celles-ci un peu de manière itérative, et de revenir à ce que notion de fonction. Et en effet, l'un de la fondamentale plats à emporter de la conception de classe. Non seulement l'écriture de programmes qui fonctionnent et qui sont correctes, mais sont bien conçu. Et la conception est beaucoup plus subjective, et vous aurez de mieux en mieux au fil du temps. Mais prenons quelques mesures de bébé vers à commencer par un programme qui fonctionne, absolument, mais il est pas très bon. Il est pas très bien écrit. Alors, voici un programme qui fait cela. Toux, toux, toux. Qu'est-ce que le programme ressemble? Semble correct pour moi. Il est disant canapé pour une seconde, puis il attend. Ensuite, il dit de nouveau, puis il attend. Ensuite, il dit de nouveau, puis il attend. Et puis le programme implicitement se termine, car il n'y a pas de boucle. Mais pourquoi est-ce un programme mal écrit? Même si vous ne l'avez jamais programmé avant? Comme, ce qui frotte le mauvaise façon, peut-être ici? Ouais? AUDIENCE: [inaudible] DAVID J. Malan: Exactement. Vous répétant vous encore et encore. Et littéralement, je copié et collé deux de ces blocs encore et encore. Et cela est exactement le genre de la santé mentale vérifiez que vous devriez faire. Attendez une minute. Dois-je vraiment faire cela? Alors, quel est ce quelle est la solution évidente peut-être? Avoir une sorte de boucle. Et je ne fais pas assez de rappel ce que la pièce du puzzle est, mais si je regarde le prochaine itération ici, en effet, il n'y a pas juste la boucle pour toujours, il ya un certain nombre de répéter fois. Et donc je l'ai précisé trois. Et maintenant remarquez comment beaucoup plus serré, comment beaucoup plus succincte ce programme est. Et dans un sens, comment beaucoup plus maintenable. Si je veux changer le mot de la toux à autre chose, comme achoo, comme il a éternué. Puis-je changer dans un lieu, et non trois. Donc, cela se sent déjà comme légèrement meilleure conception. Permettez-moi de la toux à la place ouverte 2, notre troisième exemple. Remarquez comme un chercheur en informatique, Je commence à compter à 0, généralement. Maintenant, cela ressemble un peu effrayant au en premier lieu, mais l'effet est le même. Toux, toux, toux. Mais ce qui semble être fondamentalement nouvelle dans la partie supérieure du programme? Je l'ai enlevé le dire. Je l'ai enlevé l'attente. Et qu'ai-je à la place branché? Une fonction. Un bloc de la toux. Je veux dire, franchement, il me semble genre d'un idiot si je ne viens pas de commencer par le bloc que ça apparemment appelé «toux," si cela est tout ce que je veux lui faire. Mais cela ne existe pas dans Scratch. Au contraire, je suis allé à un dans le palette appelé plusieurs blocs ici, et je traîne cette grande chose violet ici qui me permet de définir une fonction. Il me permet essentiellement créer mon propre puzzle pièce qui peut être appelé tout ce que je voulez, que peut faire ce que je veux, mais il lui donne un nom. Il me donne une nouvelle pièce du puzzle pourpre cela fait maintenant tout ce que je lui dis de faire. Donc, cette pièce violette ici correspond à celui-là. Et que fait-il? Il dit la toux pour un seconde, puis il attend. Et maintenant, je suis en quelque sorte créé mon propre morceau de puzzle personnalisé, de sorte qu'il se comporte exactement de la même façon. Donc, je peux continuer à faire ça. Et en effet, il va y avoir de plus en plus de possibilités pour la modularisation, et pour la superposition, la complexité au-dessus de l'autre. Mais cette idée de base, En effet, dans ledit problème 0. Qu'est-ce que vous allez être contestée à faire est pour télécharger Scratch, ou simplement l'utiliser sur le web, et juste avoir du plaisir avec elle. Nous allons vous donner un ensemble de besoins, ayant un son, et certains nombre de pièces du puzzle. Mais vous allez faire exactement cela. Et vous vous rendrez compte que vous allez vouloir prendre des mesures de bébé d'abord, jusqu'à ce que votre programme obtient de plus en plus complexe. Mais est-ce le considérant meilleure façon que je pouvais faire cela? Puis-je éviter cet instinct peut-être, de copier et coller? Mais avant problème Set 0, avant de lever la séance, pensé que nous prenons un bénévoles et plus si nous le pouvions, pour un programme final qui est peut-être le plus raccord du tout, compte tenu de la salle d'aujourd'hui. Venez faire un tour. Ouais. Oui. Comment t'appelles tu? Uh-oh. C'est bon. Tous deux viennent vers le bas. Et je l'ai va traiter ce en quelque sorte Au sein de celle prochaines dix secondes. Alors, venez sur le bas. Venez faire un tour. Permettez-moi de le ici. Allons. Bien. Voyons ici. Donc remarquerez très vite ici, si vous voulez venir sur place. Nous ferons deux tours de cette. Et quel est ton nom? SABRINA: Sabrina. DAVID J. Malan: Sabrina et? YING GEE: Ying Gee. DAVID J. Malan: Ying Gee. Ravi de vous rencontrer à la fois. David. Donc, notre dernier exemple est ici appelé Hardest Game Ivy. Et pourquoi ne pas nous avons vous Niveau 1, et vous font Niveau 2. Et nous verrons dans quelle mesure au-delà de ce que nous allons effectivement. Écrit par un étudiant l'an dernier, remixé par moi de sorte que ce serait aller plus de bien à New Haven. Et je vous donne un jeu qui va impliquer déplaçant les flèches haut et bas, et d'obtenir de Yale à la ligne d'arrivée. Et c'est parti. [LECTURE VIDÉO] [MUSIQUE - NFL sur Fox Theme Song] [MUSIQUE - MC Hammer, "U ne peut pas toucher  CE"] -U Ne peut pas toucher cela. U ne peut pas toucher cela. Vous ne pouvez pas toucher à ce. Mon, mon, ma, ma musique me frappe si dur, qui me fait dire, oh, mon seigneur. Merci de me bénir avec un l'esprit à la rime et deux pieds hype. Voilà bien quand vous savez que vous êtes en bas. Un dopant homeboy ultra de la Oaktown. Et je suis connu en tant que telle et cela un battement euh, vous ne pouvez pas toucher. Je vous ai dit Homeboy U ne peut pas toucher cela. Ouais, voilà comment nous vivons et vous savez U ne peut pas toucher cela. Regardez dans mes yeux, l'homme. U ne peut pas toucher cela. Yo, permettez-moi de le buste les paroles géniales. U ne peut pas toucher cela. Nouveaux coups de pied et des pantalons frais. Vous avez comme ça et vous savez que vous wanna dance. Donc, sortir de votre siège et d'obtenir une fille voler et attraper ce rythme. Alors qu'il roule emprise sur pomper un peu peu et leur faire savoir ce qui se passe. Comme ça. Comme ça. Froide sur une mission pour tirer sur le dos. Faites-leur savoir que vous êtes trop et cela est un mouvement euh vous ne pouvez pas toucher. Yo, je vous ai dit U ne peut pas toucher cela. Pourquoi vous debout homme? U ne peut pas toucher cela. Yo, sonnera le dans de l'école de la cloche, le meunier. U ne peut pas toucher cela. Donnez-moi une chanson, un rythme qui les rend sueur qui est ce que je leur donne maintenant. Ils savent quand vous parlez du Marteau vous parlez d'un spectacle qui est hype. Et les chanteurs sont serrés transpiration afin de leur passer un micro. Ou une bande d'apprendre ce que il va prendre et maintenant il va brûler les cartes. Soit le travail dur ou Legit vous pourriez aussi bien arrêter de fumer. Parce que vous savez U ne peut pas toucher cela. U ne peut pas toucher cela. Décomposer. Arrêtez. Temps de marteau. Aller avec le courant en vrille si vous ne pouvez pas vous déplacer à cet alors vous êtes probablement morts. Alors agitez vos mains l'air [inaudible] Ceci est pour une danse de gagnant cela et vous allez mincir. Déplacez glisser votre croupe juste pour une minute Faisons tous la bosse. Ouais. U ne peut pas toucher cela. U ne peut pas toucher cela. Tu ferais mieux de hype garçon U ne peut pas toucher cela. Sonnez le dos de l'école de cloche. Décomposer. Arrêtez. Temps de marteau DAVID J. Malan: Voilà pour CS50! Merci beaucoup pour nous rejoindre! Rendez-vous à l'extérieur. [FIN LECTURE] [LECTURE VIDÉO] [MUSIQUE - "Seinfeld" chanson thème] -Hé David. -Hé, David. Comment ça va? -Bonne Travail, aujourd'hui. -Alors Avez-vous pensé à ce que vous allez faire pour les blagues sur? Non, je me suis rien. -Qu'est Ce que si-- si tel est le blague? -Comme, Chariots déballage? -Euh-Huh. Vous savez, il est pour rien. -sO Voulez, pas d'histoire, pas de conflit, aucune résolution. Je ne comprends pas. A quoi ça alors? -Rien. -Alors Nous avons à plaisanterie est d'environ rien, et nous ont pas d'acteurs. Qui va être dans tout cela? -Non non Non. Je veux dire, je serai en elle. -You 'Ll être en elle? -Ouais! Les gens sont toujours disent moi, je suis un personnage. -Eh Bien, je veux dire, il est vrai. Mais qui d'autre va être en elle? Il ne peut pas être juste vous. Vous ne serez en elle, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, tout le monde. -Alors Il est pour rien, et tout le monde est en elle? -Absolument rien. -C'est ridicule.