[MUSIQUE LECTURE] -Alright! -C'est CS50. -C'est CS50. -C'est CS50. [MUSIQUE - Azalea Iggy, «fantaisie»] -Mon Meilleur souvenir de CS50 était quand je suis allé à Puzzle Day. -Probablement Juste le temps passé à travailler sur des ensembles de problèmes avec mes amis et les gens qui Wold éventuellement devenir mes blockmates. -Mon Meilleur souvenir de CS50 est le Hackathon. -Le CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -Le Hackathon -ROB Bowden. Juste tout autour de lui. [MUSIQUE - Azalea Iggy, «fantaisie»] -Mon Meilleur souvenir, c'est quand je suis sur stade et j'ai joué le rôle prestigieux un noeud de [? dans le Lié?] [? Liste. ?] -Lorsque Nous avons tous eu l'espace libre Dropbox et David était comme, regardez sous vos sièges. Et c'était comme, l'espace pour tout le monde! [MUSIQUE - Azalea Iggy, «fantaisie»] -Mon Conseils pour toute étudiant entrant serait être vraiment travailler sur P-ensembles avec des amis. Heures -Bureaux est beaucoup votre ami. -Assurez Le maximum de votre expérience et rencontrer autant de personnes que vous le pouvez. -Ne Avoir peur de demander de l'aide. -Démarrez Les P-ensembles au début de la semaine. -Je Pense que la chose la plus importante est de profiter de toutes les ressources qui a CS50. -Allez Les heures de bureau au début de la semaine. Regarder -Definitely les shorts. -Ne Tergiverser sur vos P-ensembles. -Assurez Que vous trouverez un grand groupe de personnes pour travailler sur P-ensembles avec. Vous pouvez avoir beaucoup de plaisir et faire le travail ensemble. -Ne Peur de vous pousser. Optez pour l'édition de pirate parfois. -Ecrivez Choses sur papier avant vous touchez jamais votre ordinateur. -CS50 Est vraiment très bien à fournir des moyens pour obtenir de l'aide. -Mon Un conseil, c'est le sommeil. Quelqu'un at-il dit cela? Le sommeil, c'est sûr. Il est facile de ne pas le faire, mais vous avez à faire, je pense. -I Dirait vraiment être préparé mentalement parce que vous allez l'aimer. [MUSIQUE - Azalea Iggy, «fantaisie»] -C'est CS50. -C'est CS50. -C'est CS50. [MUSIQUE - Azalea Iggy, «fantaisie»] -C'est CS50. [Applaudissements] DAVID J. Malan: C'est donc CS50 et c'est la fin de la semaine 0. Et ce n'était que quelques-uns du personnel de CS50 qui vous attendent non seulement dans les sections et les heures de bureau, mais, aussi, ce week-end à CS50 Puzzle Day. Qui, encore une fois, n'est pas tout sur la programmation. En effet, il est prévu que vous n'auront pas à programmer quoi, mais plutôt de résoudre les problèmes à l'aide intelligence et amis à vos côtés. Nous serons rejoints par certains de nos amis de Facebook-- si vous vous inscrivez ici-- qui depuis plusieurs années, ont été effectivement écrit ces défis avec nous. Et donc, ils seront les en fin de compte en cours d'exécution Jour de puzzle. Et oui, vous serez mis au défi avec exactement le genre de choses et les problèmes que les gens de Facebook aiment à penser. Donc, c'est demain. Inscrivez-vous à cs50.harvard.edu/register. Maintenant un mot sur un couple du personnel en particulier. Ce ici est Ansel Duff, qui est en fait un des co-auteurs de ces binaire ampoules que nous avons vu mercredi, en plus de son propre Dan Bradley CS50. Ansel Duff était également un ancien freshman advisee de la mine il ya 3 ans et il a même fait construit ce pupitre. Il est parti à faire sciences de l'ingénieur et plus encore. Maintenant, son image ici est en fait Ansel il ya 3 ans à la CS50 Hackathon quand il a emprunté l'un de nos ballons, collés à son ordinateur portable, et, pour la prochaine 12 quelque étrange heures, concentré sur son projet final, prendre des pauses que pour ouvrir sacs de bonbons au Hackathon. Mais il est allé sur, plus récemment, à passer cet été passé avec nous, depuis CS50 pour son personnel, et Maintenant, les étudiants ce semestre, a sa propre imprimante 3D. Et en un mot un imprimantes 3D est un dispositif qui ressemble tout à fait comme ça. Vous remplissez avec une bobine de plastique qui est fondu par le dispositif et vous construire des choses littéralement de rien. Tout comme une imprimante à jet d'encre, vous commencez cracher petits points de plastique qui forment ensemble à former des objets entiers. Et si Ansel, par exemple, plus tôt cet été, a un iPhone 5 et a décidé qu'il voulait vraiment pour le soutenir sur son bureau. Mais il ne voulait pas sortir et d'acheter quelque chose sur l'Apple Store ou similaires, de sorte qu'il assis et a commencé à dessiner quelque chose. Il a pris quelques mesures quant à l'épaisseur et la largeur de son iPhone était, il a dessiné cette image ici, il a décidé qu'il voulait d'avoir une inclinaison de 75 degrés comme il fixait lui sur son bureau il. Il se tourna ensuite ce, à l'aide logiciels, dans un modèle CAO 3D qui avait l'air un peu quelque chose comme ça. Et puis il a procédé, en fin de compte, pour réellement créer. Donc, en fait, si quelqu'un d'entre vous ici, peut-être de suite que je peux jeter à, ont an-- nous avons là des gens avec iPhone 5, et ici nous avons deux autres. Maintenant, ne pas être en reste, CS50 propre Cheng Gong a également mis cet été de construire un certain nombre de choses et, en fait, pour des raisons qui sont encore claire, a été lentement l'impression d'une armée d'éléphants avec bras articulés et les troncs. Un couple qui sont en fait ici si n'importe qui maintenant like-- un éléphant. Bien,. mais ce que Cheng a également fait pour nous, c'est très gentiment qu'il a mis en place une caméra parce que l'éléphant, croyez-le ou pas, prend un peu de deux ans et heures et demie à imprimer. Même le stand iPhone a pris une heure et demie à imprimer. Et ce que Cheng allé de l'avant et a fait a été mis en place un bel appareil photo à l'avant de cette imprimante 3D, filmé pendant une heure et demi que la conception d'Ansel imprimé. Nous avons ajouté un peu sexy à musique dans l'ordre pour vous donner ce à regarder comment fonctionne l'impression 3D. Et même si ce est fait en matière plastique, réaliser que si c'est un domaine de vous intéresser académique, il ya des gens, parmi Jennifer Lewis eux ici à l'École de Ingénierie, qui sont en fait à travailler sur l'impression 3D objets de plastique. Mais même, de plus en plus, les matières biologiques à résoudre problèmes physiologiques sur les humains. Mais voici un petit quelque chose de CS50. [LOUD MÉCANIQUE BRUITS] DAVID J. Malan: Il ne semble pas quelque chose comme ça dans la réalité, mais c'est bien plus cool à regarder à cette vitesse, et de ce son. Maintenant, le mercredi, comment avons-nous d'abord ici? Nous avons commencé à parler de l'ordinateur demandé la science et nous de quoi il s'agissait. Et il s'agit d'un certain nombre de choses, et il ya tellement de directions différentes dans lequel vous pouvez vous diriger après un parcours comme CS50. En fait, si vous avez pris un de ces guides non officiels CS extérieur, le livret nous avons fourni, que vous soyez envisagez de prendre juste CS50, ou peut-être faire un secondaire, ou peut-être même concentration dans CS, ne parcourir que. Et vous verrez un diagramme vers l'extrémité que vous montre les différentes directions CS que vous pouvez partir en. Mais pour aujourd'hui, nous allons nous concentrer, à nouveau, sur vraiment l'un des points de vue fondamentaux, peut-être, où vous avez entrées aux problèmes, vous avez sorties problèmes, et vous avez algorithmes avec lesquels créer les sorties de ces entrées. Et un exemple, était de Bien sûr, ce livre de téléphone ici. Et nous avons utilisé comme exemple pour aller par un algorithme qui était correct. Et puis un autre a été correct, mais un peu plus vite. Et puis un autre qui était un peu plus dramatique, mais fondamentalement plus rapide. Droite, ce téléphone livre nous selon comptait environ 1000 pages. Et combien de fois ai-je eu déchirer le livre de téléphone dans la moitié de trouver quelqu'un comme Mike Smith, au maximum, en 1000 pages livre? Ainsi, 10 donner ou prendre. Et une fois que j'ai déchiré cette chose dans la moitié, ou tout simplement, avec plus de maturité, divisé en deux, c'est seulement 10 pages sur 1000. Et si on extrapole, un peu irréaliste pour un livre de téléphone, mais si ce livre de téléphone avait quelque 4 milliard de pages en elle, si bien lourd physiquement, combien de fois ne vous divisez un 4 milliards page de livre de téléphone dans la moitié? Il s'agit donc d'32, donner ou prendre. Et donc 32 fois seulement, sur de 4 milliards de pages, peut vous trouvez quelqu'un comme Mike Smith. Et c'est l'efficacité. C'est un bon algorithme, disons-le. Mais alors que nous sommes passés d' pour essayer de formaliser. Et j'ai proposé ce code pseudo. Code Pseudocode n'est pas quelque chose formelle. Ce n'est pas quelque chose que vous mémoriser. C'est juste quelque chose que vous exprimez assez intuitivement en utilisant l'anglais, ou toute autre langue vraiment, transmet vos idées de façon succincte. Mais ce qui est essentiel sur code de pseudo-code qui est vous essayer d'anticiper tous les cas possibles qui pourraient se produire. Et en effet, dans ce pseudo- code, il y avait en réalité trois cas chaque fois que je divise le livre de téléphone. Mike pourrait être à la gauche. Mike peut-être vers la droite. Ou il pourrait être à droite sur la page, je suis sur. Ou un quatrième cas de coin, pour ainsi dire. Un mauvais scénario pourrait être un desquelles: ce qui se passe? Mike n'est tout simplement pas dans le livre de téléphone du tout. Et lorsque les programmes crash-- quand Mac et logiciel PC qui vous les gars vous l'exécutez sur vos ordinateurs, parfois pend ou ferme de façon inattendue, Cela signifie généralement que quelques programmeur, certains humain comme vous bientôt, juste foiré et a fait une erreur. N'a peut-être pas s'attendre à ce que peut-être il n'est pas Mike Smith dans l'annuaire téléphonique. Et si vous ne pas écrire code pour gérer ce genre de situations, généralement imprévisibles choses peuvent se produire. Votre appareil peut geler. Il peut redémarrer. Le programme peut cesser de fumer. Et si tous ces stupidités que vous pouvez ont rencontré dans votre effectif vie simplement en utilisant les ordinateurs, sera de plus juste explicables par cette intuition et cette compréhension de ce qui est passe réellement sous le capot. Maintenant, nous allons essayer de prendre un coup d'oeil à un problème plus général. Plutôt que de prendre présence dans un endroit comme ce qui serait assez lent en faire un, deux, trois, quatre. Ou peut-être deux, quatre, six, huit. Concentrons-nous plutôt sur comment nous pourrions officialiser l'algorithme du procédé par que nous pourrions prendre les présences. Et le long du chemin, nous allons commencer d'appliquer une certaine nomenclature que nous utilisons aujourd'hui, alors que nous avons effectivement commencer à programmer dans un langage. Je vous donne maintenant, une vidéo de quatre minutes que nous mettons ensemble avec nos amis de TED, l'organisation. Lequel nous avons fourni un script et ils ont apporté leurs animateurs à supporter, et effectivement créé une 2D animation de ce qu'est un algorithme est. Si nous pouvions éteindre les lumières. [MUSIQUE LECTURE] Narrateur: Qu'est-ce qu'un algorithme? En informatique, un algorithme est un ensemble des instructions résoudre certains pas-à-pas de problème. En général, les algorithmes sont exécuté par les ordinateurs, mais nous les humains avons algorithmes ainsi. Par exemple, comment vous allez sur le décompte des le nombre de personnes dans une chambre? Eh bien, si vous êtes comme moi, vous auriez probablement pointer à chaque personne une à la fois et à compter à partir de zéro. Un, deux, trois, quatre, et ainsi de suite. Eh bien, c'est un algorithme. En fait, nous allons essayer de l'exprimer une peu plus formellement dans le code de pseudo-code. Syntaxe anglaise comme ça ressemble à un langage de programmation. Soit n égal à 0. Pour chaque personne dans la chambre, mettre n égal à n + 1. Comment interpréter le pseudo? Eh bien une ligne déclare, pour ainsi dire, une variable appelé n et initialise sa valeur à 0 Cette juste signifie que le à partir de notre algorithme, la chose avec laquelle nous sommes le comptage a une valeur de 0. Après tout, avant que nous commençons à compter nous n'avons pas encore compté rien. Appeler cette variable n n'est qu'une convention. J'aurais pu appeler le plus de rien. Maintenant aligner deux demarks le début d'une boucle, une séquence d'étapes qui seront répéter un nombre de fois. Ainsi, dans notre exemple, l'étape que nous sommes prise est compter les gens dans la salle. Sous la deuxième ligne est la ligne qui décrit trois exactement comment nous allons compter sur. L'indentation implique que c'est la troisième ligne qui se répétera. Donc, avec le code de pseudo-code est dicton est que, après à partir de 0 pour chaque personne dans le chambre que nous allons augmenter n par 1 Maintenant, est-ce correct algorithme? Eh bien nous allons taper sur un peu. Ne fonctionne s'il existe des deux personnes dans la salle? Voyons. Dans une ligne on initialise n à 0. Pour chacun de ces deux personnes, on incrémente alors n par 1. Ainsi, dans le premier voyage à travers le boucle, on met à jour n de 0 à 1. Sur le deuxième voyage à travers cette même boucle, nous mettons à jour n de 1 à 2. Et donc, par cet algorithme de Finalement, n est égal à 2, qui en effet correspond au numéro de personnes dans la salle. Jusqu'ici, tout va bien. Comment parler d'un cas de coin bien? Supposons qu'il existe 0 personnes dans le room-- à côté de moi, qui est faire le comptage. Dans une ligne, on initialise à nouveau n à 0. Cette fois, cependant, la ligne trois n'exécute pas du tout comme il n'y a pas une personne dans la pièce. Et si n reste à 0, ce qui correspond en effet le nombre de personnes dans la salle. Assez simple, non? Mais compter les gens un par un est assez inefficace, trop, non? Nous pouvons certainement faire mieux. Pourquoi ne pas compter deux personnes à la fois, au lieu de compter un, deux, trois, quatre, cinq, six, sept, huit, et ainsi de suite. Pourquoi ne pas compter deux, quatre, six, huit, et ainsi de suite? Il semble encore plus rapide. Et ce n'est sûrement. Exprimons cette optimisation dans le code de pseudo-code. Soit n égal à 0. Pour chaque paire de personnes, salle, mettre n égal à n + 2. Assez simple changement, non? Plutôt que de compter les gens un à la fois, on place compter les deux à la fois. Cet algorithme de, donc, deux fois plus rapide que la précédente. Mais est-il exact? Voyons. Ne fonctionne s'il existe des deux personnes dans la salle? Dans une ligne, on initialise n à 0. Pour cela une paire de personnes, on incrémente alors n par 2. Et si par cet algorithme de fin n est 2, qui en effet correspond au numéro de personnes dans la salle. Supposons ensuite que il ya zéro personnes dans la salle. Dans une ligne on initialise n à 0. Comme précédemment, la ligne de trois n'exécute pas tout car il n'y a pas de paires de personnes dans la salle, et si n reste 0. Ce qui correspond en effet la nombre de personnes dans la salle. Mais que faire si il ya trois personnes dans la salle? Comment cet algorithme tarif? Voyons, dans une ligne, on initialise n à 0. Pour une paire de ces personnes, on incrémente alors n par 2. Mais alors quoi? Il n'y a pas un autre plein paire de personnes dans la salle, si la deuxième ligne ne s'applique plus. Et si à la fin de cet algorithme, n est encore 2 qui n'est pas correct. En effet cet algorithme dit de buggy parce qu'elle a une erreur. Passons en réparation avec une certaine nouveau code de pseudo-code. Soit n égal à 0. Pour chaque paire de personnes, salle, mis N égal à n + 2. Si une personne reste non apparié, définir N égal à n + 1. Pour résoudre ce problème particulier, nous avons introduit dans la quatrième ligne une condition, autrement connu comme un succursales, qui n'exécute si il ya une personne que nous ne pouvait pas associer avec un autre. Et maintenant, si il ya un, ou trois, ou tout nombre impair de personnes dans la salle, cet algorithme va maintenant les compter. Pouvons-nous faire mieux? Eh bien, nous avons pu compter trois, ou quatre, ou même cinq ans et des dizaines, mais au-delà, il va y avoir un peu difficile à point. A la fin de la journée, si exécuté par des ordinateurs ou des êtres humains, algorithmes sont juste un ensemble d'instructions qui pour résoudre les problèmes. Ce sont seulement trois. Que voulez-vous problème résoudre avec un algorithme? DAVID J. Malan: Donc, délibérément, un programme très simple, un algorithme très simple, pour réaliser quelque chose très simple, en comptant le nombre de personnes dans la salle. Mais nous allons démêler représentant une partie de l' dispose ici qui sont en fait va être utile, même quand la mise en oeuvre de la plupart complexe de logiciel. Ainsi, par exemple, dans cette première ligne, nous avons ce que nous appelons la variable, et de l'algèbre, vous êtes généralement familier avec x et y et z parfois, et ainsi de suite. Mais dans la programmation, les variables sont encore, à la fin de la journée, très similaire à celui. Mais c'est peut-être plus simple de penser d'une variable comme un récipient. Et, de fait, c'est un certain nombre de bits mis en place en quelque sorte dans votre disque dur ou dans la mémoire de votre ordinateur, mais plus que dans l'avenir. C'est juste un conteneur. Et si vous dites quelque chose comme laisser n égal à 0, Eh bien c'est comme appeler ce verre bol ici n, juste un nom arbitraire, et ne mettant rien en elle d'abord. Ainsi, la valeur de cette bol en ce moment est nul. Et bien sûr, si vous percevez dans une ligne suivante, réellement augmenter certains de ligne code, comme dans cette troisième ligne ici, par 1, c'est à dire ce qui est le la valeur actuelle de n, il est à 0, plus 1, mettre quelque chose comme un balle de ping pong ici. Maintenant, la valeur de cette variables est tout simplement 1. Et vous pourriez très vite extrapoler, mais maintenant c'est 2, maintenant c'est 3, et ainsi de suite. Donc, c'est tout une variable est. C'est une pièce de stockage à effectivement stocker des données. Pour l'instant c'est une balle de ping-pong. Là, il s'agit d'un nombre. Mais il pourrait être les mots d'une dictionnaire, comme le correcteur orthographique J'ai fait allusion à mercredi pour l'un des ensembles de problèmes de l'an dernier. Maintenant, une autre idée clé, que, de même est assez intuitif je prétendre, est celle d'une boucle. Et la boucle dans le processus de compter tout le monde est, bien sûr, faire la même chose chose de nouveau et soit une again-- à la fois ou deux à la fois. Et vous pouvez l'exprimer en anglais, ou code de pseudo-code, dans un certain nombre de façons, mais en utilisant cette préposition "pour" est un moyen très courant de le faire. Pour chaque personne dans la salle, le faire. Encore et encore. Et le fait que c'est retrait, la troisième ligne, signifie simplement que ce vous êtes censé faire est la substance qui est en retrait en dessous du seuil de deux lui-même. Juste une convention humaine, mais une commune comme nous le verrons dans plus réelle langages de programmation de niveau. Maintenant un peu plus intéressant est quand vous arrivez dans une affaire de coin. Par exemple, un coin cas, c'est quand il étaient trois personnes, ou cinq, ou sept, ou tout nombre impair de personnes dans la salle, parce que faire que par deux freins éventuellement parce que vous allez manquer quelqu'un, soit à la très début ou à la fin selon la façon dont vous le faites. Et si, maintenant, j'ai cette branche, ou état, si une personne reste, alors allez-y et gérer qu'un personne solitaire qui n'a pas obtenu jumelé avec quelqu'un d'autre. C'est ce que nous appellerions un état, ou une branche. Par code pseudo plus généralement peut être écrit pour résoudre un certain nombre de problèmes. Et ce que je pensais que nous serions faire ici, c'est de prendre un moment d'inviter dirons-nous CS50 de posséder Rob Bowden sur scène d'être rejoint par deux bénévoles, qui n'ont aucune idée ce qui attend. Une main descendit dès que j'ai dit ça. Que diriez-vous sur le terminer ici, venez sur place. Et que diriez-vous de plus loin, que diriez-vous de façon à l'arrière. Rangée arrière, de venir sur place avec vos mains. Bon, et quel est votre nom? ANITA: Anita. DAVID J. Malan: Anita. Ok, nice to meet you. Permettez-moi de vous présenter à Rob Bowden. C'est Anita. Et quel est votre nom? Kiersten: Kiersten DAVID J. Malan: Kiersten. Kiersten, venez sur place et rencontrer Rob Bowden et Anita. Ravi de vous rencontrer. Kiersten: Ravi de vous rencontrer. DAVID J. Malan: Très bien, Rob. ROB BOWDEN: Ravi de vous rencontrer. DAVID J. Malan: Anita. Kiersten: Salut Anita. DAVID J. Malan: Et votre plusieurs centaines de camarades de classe. Donc, maintenant laissez-moi aller de l'avant et tire juste un programme simple ici sur Mac OS que vous me laissez effectivement noter quelques notes en bas. Et si vous voulez les gars à prendre chacun un position à l'une de ces écoles là-bas, laissez-moi aller de l'avant et commence une liste code pseudo, si vous voulez. Et ce que je veux faire ici, en fin de compte est de type pour vous des instructions que notre les membres du public sont en fait aller à réciter pour nous. Permettez-moi d'aller de l'avant et juste changer pour une liste numérotée pour correspondre à ce que nous faisions là. Et ce que je vais faire avec votre aide, est d'écrire un programme en pseudo-code, avec lequel ces gars-là vont mettre en oeuvre une cacahuète beurre et sandwich gelée. Donc, c'est peut-être à propos de montrer une chose que certains d'entre vous peut-être vu sur internet pour seulement un bref moment ennuyeux. [MUSIQUE BUCKEWHEAT BOYS, "BEURRE D'ARACHIDE  Jelly Time "] DAVID J. Malan: OK. C'est assez. Voici donc en attendant, j'ai une paire de lunettes de Google qui nous allons mettre sur le propre Rob Bowden CS50 pour voir le monde à travers ses yeux. Et nous ferons de notre mieux en post production à tisser fait les images de ce que Rob voit maintenant, dans cette conférence réel vidéo avec nos deux volontaires à côté de lui. Donc ce que je vais faire est, je serai la dactylo. Nous avons pour but ici de en train d'écrire un programme avec qui faire, en fin de compte, un beurre d'arachide et sandwich à gelée, mais ces trois vont se comporter comme s'ils étaient des ordinateurs. Et ordinateurs, à la fin de la journée, sont en fait des dispositifs assez stupides. Ils sont super rapide, mais ils ne peuvent faire, littéralement, ce qu'on leur dit. Vous ne pouvez pas dire juste faire une cacahuète beurre et sandwich gelée. Vous devez les programmer pour le faire. Vous devez leur dire avec précision ce qu'il faut faire, moins les choses vont horriblement et, espérons-le, drôlement mal. Donc, avec cela dit, nous avons besoin un appel à partir de l'audience pour ce qui devrait renforcer un être, si l'objectif ici est de faire une cacahuète beurre et sandwich gelée. Oui? PUBLIC: [inaudible] le sac de pain. DAVID J. Malan: Ouvrez le sac de pain. Donc, si les trois candidats serait voulez poursuivre à faire littéralement. Ouvrez le sac de pain. [PUBLIC rire] DAVID J. Malan: Donc, nous allons travailler là-dessus. Bien. Donc, la deuxième étape, how-- Prenons cet autre. Oui, à l'avant. PUBLIC: [inaudible] le pain. DAVID J. Malan: Qu'est-ce que c'est? PUBLIC: Retirer le pain. DAVID J. Malan: retirer le pain. De même succinct. Merci. [Applaudissements] DAVID J. Malan: C'est tout? OK, donc la deuxième étape va être retirer le pain. Bon, quelqu'un veut nous écrire une phrase plus? Quelqu'un d'autre? Un peu plus de [inaudible]. Non, plus rien. Oui? PUBLIC: Placez deux tranches à côté de l'autre. DAVID J. Malan: Placez deux tranches à côté de l'autre. [PUBLIC rire] DAVID J. Malan: Placez deux tranches à côté de l'autre. Étape quatre. Oui? PUBLIC: Prenez votre main et mis à la légère sur le dessus du couvercle de beurre d'arachide. [PUBLIC rire] PUBLIC: [inaudible] à côté du beurre d'arachide. DAVID J. Malan: Quoi? Le dire. PUBLIC: Dévissez le couvercle et mettre doucement à côté du beurre d'arachide. DAVID J. Malan: Mettez doucement à côté du beurre d'arachide. OK, le progrès. Cinquième étape. Excellente. Oui? Pick-up couteau. DAVID J. Malan: Pick up couteau. OK, l'étape six. Ouais? PUBLIC: Tenez couteau par le manche. DAVID J. Malan: Maintenez couteau par le manche. Maintenir couteau par le manche. Étape sept. Oui? PUBLIC: couteau [inaudible] à l'arachide beurre et aussi peu sur [inaudible]. DAVID J. Malan: Mettez couteau in-- je entendu "Placez la lame dans du beurre d'arachide et prendre aussi peu comme possible. " Par ailleurs, retirez d'abord le papier. Très bien, l'étape neuf. Étape neuf. Étape neuf. Nous n'avons pas encore réellement fait un sandwich. Oui? PUBLIC: aide d'un couteau à beurre d'arachide, appliquer du beurre d'arachide sur ledit pain. DAVID J. Malan: aide d'un couteau à beurre d'arachide, beurre d'arachide s'applique sur ledit pain. [PUBLIC rire] DAVID J. Malan: Très bien l'étape 10. Étape 10. Oui? PUBLIC: Goût arachide beurre pour assurer la qualité. [PUBLIC rire] DAVID J. Malan: Étape 11. Étape 11. Étape 11. Allons. Ouais? Là. PUBLIC: Prenez soigneusement gelée. DAVID J. Malan: Prenez soigneusement gelée. OK, et puis un autre levé la main. Juste derrière vous. Ouais, en bleu. PUBLIC: Très bien, retirez couvercle de [inaudible], oui, retirer le couvercle de la gelée. [PUBLIC rire] DAVID J. Malan: De la gelée. Ha ha. [PUBLIC rire] DAVID J. Malan: Et? PUBLIC: Et à peine balayer toute [inaudible]. [PUBLIC rire] PUBLIC: Bien sûr, avant de [inaudible], retirez le papier de la gelée. DAVID J. Malan: Retirez le papier gelée. Étape 14. Nous y sommes presque. Oui? PUBLIC: bouteille de gelée Inverser avant tout y passe. DAVID J. Malan: Inverser gelée bouteille avant la gelée tombe. Étape 15. PUBLIC: Remettre le bouchon. DAVID J. Malan: Remettre le bouchon. Étape 16. Ouais? PUBLIC: [inaudible] DAVID J. Malan: le dire. PUBLIC: Prenez capuchon de votre gelée. DAVID J. Malan: Off votre gelée. Donc really-- Oops. Allons. Remettre le bouchon. Mettez cap-- Vous avez dit retirer le capuchon de la gelée. Sentez-vous comme nous sommes dans une sorte de boucle. Étape 17. Oui? PUBLIC: [inaudible] DAVID J. Malan: le dire. PUBLIC: [inaudible] DAVID J. Malan: Retour à step-- PUBLIC: [inaudible] DAVID J. Malan: Retirer bouchon de beurre d'arachide. Oui? PUBLIC: Supprimez toutes les gelée sur le pain. DAVID J. Malan: Supprimez tous la gelée sur le pain. DAVID J. Malan: Nous y sommes presque. Étape 19. PUBLIC: Enlever l'excès de gelée. DAVID J. Malan: Haha, la gelée. [Applaudissements] DAVID J. Malan: Pourquoi ne pas nous-- Un pas de plus pour prendre cette maison. Un pas de plus et alors nous servons des sandwiches. Oui? PUBLIC: [inaudible] DAVID J. Malan: Alors que les sandwichs Le tiret let remains-- this-- manger. [Rires du public] DAVID J. Malan: Très bien, merci vous à nos bénévoles ici. [Applaudissements} DAVID J. Malan: Nous avons une belle séparation des cadeaux pour chacun de vous. Votre propre beurre d'arachide, gelée, et le pain à ramener à la maison en arrière. Merci. Kiersten: Je vous remercie. DAVID J. Malan: [inaudible] accueillir. [Applaudissements] DAVID J. Malan: Donc, c'est, de Bien sûr, un exemple ridicule. Droite? Mais il ne révèle type de la façon dont nous les humains prennent juste la clarté pour acquis. Et le fait j'ai été parler à un autre être humain, il ou elle sait exactement ce que vous voulez dire. Ordinateurs ne vont pas de savoir ce que vous entendez, même en utilisant, en tant que nous sommes sur le point de faire aujourd'hui, quelque chose dans la programmation Scratch, un frein et la chute, la langue de style de pièce de puzzle. Même conçu pour les jeunes enfants, vous avez être si explicite et si littéral ce que vous voulez que votre programme à faire. Maintenant, en fin de compte, nous sommes va être la programmation pas dans le code de pseudo-code, Anglais comme syntaxe, mais le code ou, plus correctement, le code source. Le code source est simplement la manière de fantaisie pour décrire le code que vous avez réellement écrire avec un clavier qui est pas en anglais en soi. C'est en C ou en Java ou C ++ ou quelque chose comme ça, comme nous le verrons bientôt. Et en fait, juste pour effrayer un quelques-uns d'entre vous, à première vue, il s'agit d'un programme écrit dans un langage appelé C. Mais non effrayer quelques-uns d'entre vous, vous voulez complètement comprendre ce qui se passe sur venir lundi prochain quand il vient à quelque chose comme ça. Franchement, c'est une langue plus. Il est assez mystérieux, mais il est représentatif d'un grand nombre de langues de nos jours que avoir beaucoup de parenthèses et bouclés accolades et guillemets et virgules. Et beaucoup de ce trucs syntaxique qui n'est pas du tout intellectuellement intéressant. En effet, c'est une distraction totale des idées très simples qui nous pend au nez. Ce programme, comme vous pourriez le deviner, gravures à écran d'ordinateur de quelqu'un d' les mots «Bonjour virgule monde." C'est tout. Il apparaît donc clairement, il ya beaucoup de choses qui est de prendre le chemin de une certaine évidence là, mais ça va glisser très rapidement loin et être totalement intuitive. En effet, ce que nous allons faire aujourd'hui distiller ce assez complexe programme à la recherche, qui encore une fois vous arriverez de comprendre rapidement, mais à quelque chose beaucoup plus simple. Disons simplement que ce que nous entendons. Tirons une image de ce que nous entendons, par le biais de ces pièces de puzzle ici. C'est donc une programmation langue connue comme Scratch. Il a été développé par le Media Lab du MIT. Et ce que vous verrez dans le problème réglé à zéro, qui sera publié plus tard ce soir, nous aurons vous allez à cet URL ici scratch.mit.edu. Et ils ont une web interface via laquelle vous allez écrire votre premier programme. Ou ceux d'entre vous avant expérience, votre deuxième programme, mais dans un environnement qui est sans doute un peu mal et qui vous pousser à créer quelque chose de utilisant cet environnement très visuel. Maintenant, ce que je vais faire ici est d'ouvrir le programme lui-même. Il existe non seulement en tant que navigateur Web, mais aussi comme un programme téléchargeable de sorte que vous pouvez réellement utiliser si vous n'avez pas accès à Internet. Et je vais le faire ici, dans Sanders, juste dans le cas où le Wi-Fi n'est pas coopérer super bien passé. Et ce que je vais faire est le point sur quelques caractéristiques de ce programme. Donc, pour être clair, je dois vous suffit de double cliqué sur l'icône sur mon bureau, ou de façon équivalente allé scratch.mit.edu, et il est tiré vers le haut de cette fenêtre. Il s'agit d'un environnement de programmation. C'est un morceau de logiciel qui certains de nos amis du MIT a écrit que nous allons nous et vous écrivez programmes dans un langage appelé Scratch. Maintenant, ce qui se passe pour être un chat qui a également été nommé Scratch et c'est son monde dans lequel il vit. C'est à ce stade, pour ainsi dire, que rectangle dans le coin supérieur gauche. Et il n'a pas à ressembler à un chat. Vous pouvez le faire paraître comme rien et vous peut avoir beaucoup de ces sprites, caractères, ou d'un programme. Pendant ce temps, ici à l'extrême droite, est une grande ardoise vierge. Et c'est là que, dans un moment, nous allons commencer la programmation par glisser-déposer ces casse-tête graphique pièces qui sont à droite ici, au milieu. Et il ya beaucoup plus d'eux que nous passons du temps ici en classe parce que vous verrez que ils sont tous assez intuitive. Encore une fois, il est conçu pour les enfants, mais nous l'utiliser pour démêler certains de ceux idées fondamentales de variables, boucles, conditions, et, bientôt, les choses comme des fonctions et des événements et fils et d'autres choses de fantaisie nous obtenir à peu de temps pour créer réellement quelque chose à partir de zéro. Jeu de mots. Maintenant, ce que je vais faire ici est cliquez sur pas le mouvement, mais le contrôle. Et ce n'est qu'un catégorisation des ici-- et je vois un autre jeu de couleurs de blocs. Mais remarquez quelques mots familiers. «Si» et «else if» et «répétition». Et vous pouvez probablement le deviner c'est penser de la branche, ou les conditions que nous avons vu, et même la construction de boucle. Nous avons donc des blocs similaires ici. Mais le plus intéressant on est celui-là. Quand ce drapeau vert est cliqué, ce, pour les personnes ayant programmation préalable l'expérience, est équivalent à une fonction principale. Mais pour ceux qui ne connaissent, c'est la pièce de puzzle qui va relancer l'ensemble de notre programme. Il signifie littéralement quand je vais, dans ce programme, et cliquez sur un flag-- vert que vous pouvez voir ici, dans la coin supérieur gauche de l'interface utilisateur, donc voir le drapeau vert à côté du panneau d'arrêt rouge? Lorsque je clique sur que mon programme va fonctionner. Maintenant, je vais faire quelque chose super simple avec Scratch. Je vais aller de l'avant et allez dans le panneau de regards ici, où j'ai un tas de pièces de puzzle pourpre, et je vais aller de l'avant et faire quelque chose de super simple, comme, par exemple. Et remarquez alors-- ce texte dans la case blanche est editable-- je vais dire "Bonjour tout le monde," tiens juste nous fait dans ce texte Version il ya un instant. Et maintenant, si je vais et cliquez sur ce drapeau vert, j'ai maintenant programmé. Ce n'est pas un particulier programme intéressant, mais j'ai fait l'ordinateur de faire quelque chose. J'ai commencé un programme et il fait ce que j'ai dit de faire. Maintenant, je peux continuer à faire glisser et déposer de plus en plus de ces pièces de puzzle et ils vont verrouiller, mais nous allons claque la terminologie ici que nous verrons récurrents tout au long du parcours, et vraiment tout au long de l'informatique et la programmation en général. Cette "dire" bloc, en violet, nous allons juste commencer à appeler un communiqué. C'est comme un état de fait. Pour ce faire. Donc, c'est une catégorie de instructions que vous pourraient alimenter un ordinateur dans le cadre d'un programme ou un algorithme. Et pour être clair, vous avez probablement pris pour acquis que vous avez des programmes sur votre ordinateur. Et ils sont un genre d'algorithmes, mais un programme est vraiment un tas d'algorithmes que certains humains ont écrit. Ils emballés vers le haut et ils les vendent pour vous, ou ils ont affiché sur un site Web que vous pouvez télécharger. Ainsi, un programme est juste un tas ensemble de zéros et de uns que, en quelque sorte, l'homme créé. Et ces modèles de zéros et ceux représentent des choses, en fin de compte, comme ou "play" dire bonjour monde " cette musique "ou" lire cette vidéo " ou "envoyer un e-mail." Mais nous y reviendrons dans façon plus détaillée ce que un programme, c'est quand vous, vous-même, les écrire. Voici un autre déclarer: "Attendez une seconde." Je n'ai pas utilisé encore, mais si je veux mon programme pour faire une pause pendant un moment de faire quelque chose, je peux dire que de le faire. Attendez une seconde. Maintenant, un autre pourrait être "des sons." Donc, ce qui est unique à gratter, il a la capacité de jouer des sons. Ainsi, une déclaration que je pourrais utilisation est, ici, "jouer son." Pendant ce temps, l'expression booléenne, si c'est un mot amateur nommé après seulement un gars nommé M. Bool, et tout cela est à propos d'une question. Vrai ou false-- est la souris vers le bas? Une expression booléenne est juste une expression en anglais c'est vrai ou faux. ON ou OFF. L'un ou zéro. Vous pouvez penser que c'est dans un certain nombre de façons, mais c'est vrai ou ce faux, en fin de compte. Ainsi, "la souris enfoncé point d'interrogation», ce serait une expression booléenne. Et vous pouvez en trouver d'autres, peut-être. Par exemple, "est le nombre de gauche de moins que le bon numéro? " Cela aussi serait une expression booléenne. «Moins de» est une expression booléenne. Celui-ci, aussi, «pointeur de la souris se toucher." Je ne sais pas pourquoi ils appelé pointeur de la souris. Cela signifie simplement, est le curseur, c'est le la flèche sur l'écran, toucher le chat, par exemple. Ou un autre aspect de l'écran. Et c'est une question, encore une fois, et qui représente une expression booléenne. Quelque chose que vous pourriez souhaitez utiliser dans un état. Donc, nous allons y venir dans un instant. Vous pouvez "et" des choses ensemble. Donc, si vous voulez vérifier si ce C'est le cas, et c'est le cas, vous pouvez utiliser un "et" bloc comme ça. Et voici cette condition. Remarquez la forme de la petite ouverture dans le haut de cette pièce du puzzle jaune, c'est qui rappelle la forme que nous venons de le voir, il ya un moment. Chacune de ces expressions booléennes que ces bords pointus sur la gauche et la droite. Et c'est parce que les gens du MIT ont décidé que par les formes de transport visuellement, vous pouvez sorte de aider les gens, les étudiants et les enfants, de sorte de remplir les blancs littéralement. Maintenant que puzzle-- que ouverture est un peu petite, et comme nous le verrons dans le programme, Scratch, il va grandir pour s'adapter. Il conserve sa forme, en fin de compte. Donc, une condition nous allons vous décidez "Dois-je faire quelque chose ou pas?" Une expression booléenne est la question réelle que vous utilisez pour décider ce que je vais à la gauche ou dois-je aller à droite quand je rencontre ce soi-disant bifurcation de la route? Vous pouvez avoir deux branches. Si quelque chose est vrai, faire ce, sinon aller de cette façon, ou vous pouvez simplement ne rien faire tout, comme ce bloc implicite. De même, nous pouvons nid ces choses. Donc, si vous voulez tripler fourchette dans la route, soit faire ceci ou ceci ou cela, il vous suffit de nid ces choses ensemble. Et il commence à faire un peu de laid, éventuellement, à coup sûr, mais la logique est toujours la même. Vous pouvez littéralement lire ce haut en bas et il dit ce qu'il désigne: si ce est vrai, faire cela, sinon si d'autre. Une boucle ne peut pas faire plus simple dans Scratch. Toujours faire ce qui suit. Maintenant, vous pourriez pensez-vous pas peut faire beaucoup parce qu'il n'y a pas l'espace entre le haut et le bas de l'ouverture de pièce de puzzle. Mais vous verrez Scratch va développer pour s'adapter à autant de pièces de puzzle que vous voulez entasser là. Une autre boucle peut être exprimé avec des répétitions. Si vous savez à l'avance ", je vouloir faire quelque chose 10 fois, " vous pouvez juste dire Scratch de faire quelque chose 10 fois. Et, en attendant, nous pouvons avoir des variables. Alors, voici un arbitraire, c'est orange dans ce cas, et il s'agit d'une visite éclair. Encore une fois, vous trouverez ce très accessible une fois que vous commencer à pointer et cliquer. J'ai nommé ma variable n, mais je aurait nommé il quelque chose que je veux, et je suis le mettre ici, dans cet exemple arbitraire, à zéro. Maintenant voir un programme comme bonjour monde n'est pas tout ce que convaincante, nous allons donc ouvrir effectivement quelque chose qu'un ancien étudiant fait. Permettez-moi aller de l'avant et d'ouvrir, par exemple, celui-là, pour lesquels j'aimerais d'avoir un bénévole. Très bien, comment about-- allons-y plus loin. Oui, venez sur place. Quel est votre nom? Abby: Abby. DAVID J. Malan: Abby, venez sur place. Donc, avez-vous déjà joué ce jeu avant? ABBY: Non DAVID J. Malan: Très bien. David, ravi de vous rencontrer. Come on over. Et quel est votre programmation arrière-plan, le cas échéant. ABBY: j'ai appris un certain C ++. DAVID J. Malan: Vous avez appris quelque C ++. Et quel est votre jeu jouer arrière-plan? ABBY: Pas beaucoup. DAVID J. Malan: OK, si nous en prenons. Alors, voici comment le jeu va travailler. Je vais aller de l'avant et cliquez sur le drapeau vert, qui est ici en haut à droite. Maintenant, votre prédécesseur dans la classe vous a donné quelques instructions ici. Et dans un moment, il dit "espace pour commencer." Alors allez-y et appuyez sur la barre d'espace. JEU INFORMATIQUE: Pikachu. DAVID J. Malan: Et le but est de attraper la nourriture, comme le montre, il sur la gauche. Et pour [inaudible] [JEU MUSIQUE LECTURE] DAVID J. Malan: Aww, ainsi, merci pour la lecture. Nous avons ici un peu séparer cadeau pour vous. Nous avons CS50 balle anti-stress, si vous souhaitez choisir. Très bien, bon de vous rencontrer. Merci d'être venu et de contester. Donc, nous avons plus de balles anti-stress, de sorte Faisons un exemple de plus à motiver. Un volontaire? Très bien, que diriez-vous ici en face. Quel est votre nom? PHILLIP: Phillip. DAVID J. Malan: Phillip. Venez sur place, Phillip. Donc, Phillip va être exposés à un autre jeu que l'un de vos prédécesseurs écrit dans le cadre du problème mis à zéro, appelé Hardest Game Ivy. Et nous verrons en seulement instant ce qui voulait dire par là. Phillip, nice to meet you. Quel est votre parcours? PHILLIP: Fait beaucoup de codage. Fait un peu de jeu, aussi. DAVID J. Malan: OK. Vous avez beaucoup de jeu, trop. Et avez-vous joué à ce jeu avant? PHILLIP: Non DAVID J. Malan: Tous droite, alors allons-y. Je vais aller de l'avant et cliquez sur le drapeau vert. [GAME MUSIC] [MUSIQUE MC HAMMER, "U NE PEUT PAS TOUCHER CE"] PHILLIP: [inaudible] DAVID J. Malan: [inaudible] PHILLIP: [inaudible] [Rire] [MUSIQUE MC HAMMER, "U NE PEUT PAS TOUCHER CE"] DAVID J. Malan: [inaudible] Labourer à travers elle. PHILLIP: [inaudible] DAVID J. Malan: Allez-y. [MUSIQUE MC HAMMER, "U NE PEUT PAS TOUCHER CE"] DAVID J. Malan: Très bien. Félicitations. [Applaudissements] DAVID J. Malan: Nous allons après que plus tard en ligne afin que vous pouvez remettre à plus tard avec elle ainsi. Princeton est à côté, après que. Alors maintenant, nous allons effectivement procéder à partir de zéro, pour ainsi dire, et fait construire jusqu'à nous pouvons démêler certaines de ces idées et arriver à quelque chose d'encore plus complexe par la fin. Je vais aller ici et je vais à aller de l'avant et créer un nouveau fichier. Encore une fois, le jeu de problème marcher vous à travers certaines de ces étapes. Mais, je n'ai fait feu dans le menu Fichier et je dit «nouveau», tant comme Microsoft Word, ou tout autre programme de ce genre. Et nous allons aller de l'avant et nous maintenant-- mis en œuvre "Bonjour tout le monde" Il ya un moment, mais nous allons faire quelque chose d'un peu plus mignon. Je vais aller à des événements. Et je vais faire "quand drapeau vert cliqué ". Et puis je vais utiliser, dirons-nous, une branche. Donc, je vais utiliser un "si" état. Et remarquez comment dès que je m'approche lui, il veut s'emboîtent. Donc, je laisse aller et qu'il se mette ensemble. Et maintenant, je peux faire quelque chose d'intéressant. Si je faire défiler ici, je vais de voir tout un tas de blocs. Si je vais à des «données» - laissez-moi un zoom in-- il ya quelque chose à propos des variables. Si je vais à "mouvement", vous pouvez apparemment changer les choses. Si je vais à des «opérateurs» - oh, ce qui est intéressant, Je peux choisir un nombre aléatoire. Permettez-moi de faire quelque chose avec seulement une certaine probabilité, juste parce que. Je vais aller de l'avant et glisser ce morceau de puzzle, ce qui est inférieur à bloc, donc c'est juste "Est ce nombre inférieur à celui-là?" Mais je ne veux pas coder en dur un certain nombre parce que ce serait assez inutile. Je vais donc faire glisser cette pièce ici, et remarquez comment il s'enclenche, et maintenant laissez-moi aller de l'avant et de dire «si le nombre qui est choisi au hasard est inférieur à six, procédez comme suit. " Maintenant, pourquoi moins de six ans? Qu'est-ce que la probabilité est ce efficace va me donner, juste intuitivement? Environ 50%, non? Si le nombre que peut deviner au hasard entre 1 et 10 est inférieur à six, clairement que c'est un, deux, trois, quatre, ou cinq. Et si cela va me donner un 50% de probabilité de ce qui se passe? Eh bien nous allons faire quelque chose comme ce, "jouer son miaulement." Et remarquez, encore une fois, la pièce du puzzle se développe pour s'adapter, tant que les formes correspondent. C'est ce qui est important. Permettez-moi de passer à rayures ici et cliquez sur «jouer». Rien ne se passe. Est-ce un bug? Non, pas nécessaire. Il pourrait juste être qu'un plus grand nombre a été choisi. Alors faisons-le à nouveau. Rien. [Miaou] DAVID J. Malan: Il est là. [Miaou] DAVID J. Malan: Encore une fois. Non. [Miauler] DAVID J. Malan: Donc, si vous avez jamais joué à un jeu, bien sûr, où des choses se passe au hasard, comme les méchants sont à venir ou pas venir à l'écran, ou les choses sont en baisse ou ne relevant pas, c'est juste parce que quelque chose de super simple comme ce qui se passe. Choisissez un nombre aléatoire, et si c'est moins à une certaine valeur, peut-être le faire ou peut-être le faire. Nous pouvons intégrer que dans un état. Faisons quelque chose de différent. Permettez-moi de jeter l'enlever. Vous pouvez vous débarrasser de choses par juste glisser vers la gauche et le lâcher prise. Permettez-moi d'aller de l'avant et faire un bloc pour toujours et faire très vite quelque chose de gênant. Permettez-moi d'aller de l'avant et dire «jouer son miaulement." Mais je ne veux pas que ce soit trop ennuyeux, alors laissez-moi prendre ce bloc, "Attendre une seconde,» et avis il n'y a plus de place pour elle. Mais si vous allez assez proche, il veut y aller. Donc, je laisse aller et il va grandir pour remplir le bloc. Alors maintenant, il s'agit d'une boucle. [Miauler] DAVID J. Malan: Je suis faire littéralement ce pour toujours. Encore et encore. Ce n'est tout simplement pas son naturel. Permettez-moi d'aller de l'avant et changer ce à pas une seconde, deux secondes et appuyez sur Entrée. Et ce qui est bien sur Scratch est que vous pouvez programmer de manière interactive. Faire un changement, peut-être appuyez sur Entrée ou Lecture encore une fois, et il va juste continuer. Eh bien, maintenant, pourquoi faisons-nous pas quelque chose d'un peu plus mignon? Plutôt que de tout faire à partir de zéro, laissez-moi aller de l'avant et d'ouvrir une avance fait un, que je pré-cuit, appelé "Pet Cat." Et nous afficherons tous ces fichiers en ligne, et problème réglé zéro, vous dira comment y accéder et de les ouvrir. Et remarquez, c'est assez simple. Mais au préalable, il me semble avoir saisi un bloc "pour toujours", si j'ai une boucle. Et puis j'ai un "si" état. J'ai une expression booléenne. Donc, en anglais, tout en regardant ce, surtout si vous n'avez jamais programmé, juste intuitivement, ce qui est ce que cela va faire, ce programme? [PUBLIC CHATTER] DAVID J. Malan: Si vous caressez le chat, le chat va miauler, non? Parce que «décochant toujours» est le pointeur de la souris de toucher le chat. Donc, pour être clair, et je n'ai pas dit cela avant, tous ces casse-tête pièces et que le script nous les avons regroupées en, pour ainsi dire, un script est synonyme de programme, vraiment, appartient à ce chat. Et la raison is-- parce avis comment ce même chat ici est mis en évidence, ici vous pouvez créer un deuxième chat ou un chien ou vraiment tout ce que vous voulez graphiquement. Vous pouvez importer quelque chose à partir de Photoshop, ou similaire, et d'intégrer quelque chose si vous vouloir en faire un projet. Et ce que vous trouverez, en fin de compte, c'est que vous peut ajouter des scripts, ajouter casse-tête pièces, à des caractères individuels. Voilà donc tous appartenir à ce chat en particulier. Alors maintenant, si je vais de l'avant et de jouer ce programme, rien ne se passe. Mais il est en marche. Le programme est dans cette boucle pour toujours, genre d'attendre ce que se produise? [PUBLIC CHATTER] DAVID J. Malan: Pet chat. Donc, si je déplace ma souris vers him-- [Miauler] DAVID J. Malan: Alors maintenant, Je caresser le chat. Pendant ce temps, nous pouvons avoir une double branche. Permettez-moi d'aller de l'avant et ouvrir jusqu'à ne pas caresser le chat. Nous publierons cette ligne aussi bien. C'est un peu plus complexe, mais sans dire vous pouvez le deviner peut-être qu'est-ce qui va se passer. [Miauler] DAVID J. Malan: Cat est miauler, grand vieux temps. Mais ce programme est bien sûr appelé "Ne pas caresser le chat," si clairement, je veux caresser le chat. [ROARING] DAVID J. Malan: Ne pas caresser le chat. Maintenant, nous allons jeter un coup d'oeil un autre exemple ici. Celui-ci sera appelé "Salut, Salut, Salut," pour des raisons ce sera clair, parce que dès que je lance ce chose-- [SCEAU BARKING] DAVID J. Malan: Très facile à écrire des programmes à gratter ennuyeux. [SCEAU BARKING] DAVID J. Malan: Maintenant, nous n'irons pas dans le détail de tout cela, mais il faut noter qu'il ya une quelques nouvelles fonctionnalités ici. Il ya une variable, appelé «coupé» et puis il ya un tas de conditions. Et pour l'instant, permettez-moi juste te taquiner en disant que si ce gars est trop ennuyeux, Je peux frapper la barre d'espace et il s'arrête. Parce que le rôle joué par ces deux scénarios se présente comme suit. L'un d'eux est en train de faire la aboyer toutes les quelques secondes. L'autre attend juste pour moi de frapper la barre d'espace. Et si je le fais frapper la barre d'espace, il va changer l'état de la variable, la valeur de cette variable, c'est apparemment appelé «coupé," Je n'ai pas appelé il quelque chose d'ennuyeux comme n, Je l'ai appelé un mot anglais, «en sourdine». De 1 à 0 ou de 0 à 1. De true à false ou false à true. Et si vous pouvez réellement voir maintenant, que vous pourrait avoir deux scripts, deux programmes en cours d'exécution simultanément, et deux d'entre eux pourraient être assis dans une boucle de faire quelque chose. En attente de l'être humain à faire quelque chose comme frapper la barre d'espace. [SCEAU BARKING] DAVID J. Malan: Et maintenant il est sur son chemin. [SCEAU BARKING] DAVID J. Malan: Alors quoi d'autre pourrions-nous faire avec ces exemples? Eh bien, allons-y et faire un exemple avec de compter les moutons. Nous allons continuer ce long des lignes ici de-- Ouvrons l'exemple de moutons. Et remarquez, tout comme avant, celui-ci, heureusement, est un peu moins ennuyeux. Une fois que j'ai touché jouer ici-- Oh non, ce n'est ennuyeux. Il va baa avec une certaine probabilité. Jouons ce message. [MOUTON BLEETING] DAVID J. Malan: La seule différence est nous avons changé le costume, pour ainsi dire, et nous réduire de moitié et dire que ce nombre réel est. Eh bien nous allons aller de l'avant et prendre un peu plus loin. Et laissez-moi vous taquine avec une autre caractéristique ici. Allons de l'avant et d'ouvrir un programme appelé Threads. Tant et si bien que vous pouvez avoir un sprite, ayant plusieurs scripts, vous pouvez avoir deux sprites, un oiseau dans un chat, chacun ayant son propre script. Et chacun d'entre eux peut fonctionner simultanément. Si vous avez déjà entendu l' mot «multithreading» un ordinateur est le moyen "multithread" il peut faire plusieurs choses à la fois, et, en effet, ne peut donc Scratch. Et maintenant, remarquez l'oiseau est un peu idiot. C'est juste faire les choses au hasard, rebondissant sur l'écran. Il est clair que le chat a été programmé d'avoir genre de capacités qui cherchent à la maison dans l'oiseau parce il a toujours le pointant du doigt. Jusqu'à ce que finalement, il attrape l'oiseau réel. Donc, je ne m'attarderai pas sur les détails ici, mais vous pouvez sorte de entrevoir les mêmes formes, certains "Si" les conditions, certaines variables, peut-être quelques boucles, sont en fin de compte faire la même chose. Maintenant, laissez-moi aller de l'avant et ouvrir jusqu'à tout autre chose, pour taquiner certains d'entre vous, en particulier ceux qui sont plus à l'aise, ce que vous pouvez réellement faire avec cela. Je vais aller de l'avant et ouvrir Bouton ici. Et c'est super programme simple en apparence, mais attention ce qui se passe quand I-- regarder ce qui se passe quand j'ouvre cette version de celui-ci, ici dans le navigateur, scratch.mit.edu. Et quand je clique sur ce grand rouge bouton, notez ce qui se passe. Alors qu'est-ce qui se passe ici? Il ya effectivement beaucoup plus de complexité passe sous le capot, même si j'ai mis en œuvre ce, ou franchement, Dan Bradley a mis en place ce si simple. Il a conçu un puzzle personnalisé Scratch pièce, connue comme une extension de Scratch, il l'a appelé à bascule. Et ce Basculer fait est qu'il envoie un message sur Internet. Et ce message se semble un peu obscur. Mais cela aussi, vous aurez comprendre à la fin de terme. Le message qu'il a fait envoyer regarde un petit quelque chose de ce genre. C'est juste le texte. Cryptic. Vous l'aurez compris par le temps nous obtenons le problème réglé sept. C'est juste l'envoi d'un message textuel sur Internet à un serveur. Et ce serveur est, en définitive, parler à cette ampoule, qui a l'une de ces ampoules fantaisie en ce que, lui-même, parle à la connexion Wi-Fi dans le réseau ici, où un dispositif local vers le bas ici-- et, finalement, c'est fait tournant que la lumière sur et en dehors. Mais nous pouvons faire plus choses intéressantes encore. Remarquez ce que Dan a également fait pour nous. Il a fait plusieurs sprites, chacun des qui a un script en attente d'un clic. Et si je clique rouge, il passe au rouge. Si je reçois bleu, il va bleuâtre. Vert, jaune, orange. Et tout cela se passe par va sortir sur l'Internet, reculer ici pour le ampoule, sur et en dehors. Et si vous pouvez it-- croyez et ce n'est peut-être l'un des plus complexes Scratch projets quelqu'un a implemented-- il l'a fait, en toute équité, en un jour. Et c'est le défi que nous avons jeté bas Dan quand nous avons vu que les ampoules binaires, nous avons Scratch, comment pouvons-nous les combiner? Et, en effet, ce qui est absolument quelque chose de quelqu'un dans cette salle pourrait faire par la end-- de semestre Est-il ampoules binaires réimplémentées l'aide la même interface qui était sur notre iPad mercredi. Alors que maintenant, si je fait cliquez sur le signe plus ici, nous avons une, deux, trois. Je peux frapper la 16 et tourner celle-là sur. 128, et ainsi de suite. Maintenant, si cela a seul et soufflé votre esprit, vous pouvez faire des choses beaucoup plus accessible, n'impliquant pas certainement tout matériel. Des choses sur l'écran lui-même. Et, en effet, ce que la plupart des étudiants finir par faire une sorte de jeu, un morceau de travail artistique, ou une sorte d'animation interactive. Et je vais vous dire une de notre favoris a été celui-ci. Et j'ai pensé que si nous pourrait éteindre les lumières, nous allons jeter un coup d'œil à cette finale projet Scratch en conclusion. Mais ce que vous devez garder à l'esprit, comme Je peux vous taquiner avec un dernier détail, sectionnement commencera la semaine prochaine. Heures d'ouverture commencera la semaine prochaine. Problème réglé zéro sera affiché CS50.harvard.edu plus tard aujourd'hui. Et vous serez accueillis en problème posé zéro à son propre Zamyla Chan CS50, qui La plupart des guides de notre soluces. Ce sont des vidéos intégrées dans les ensembles de problèmes qui tiendra votre main à travers un grand nombre de la configuration initiale et à travers de nombreux des décisions de conception possibles. Donc, si vous avez déjà eu cette émotion quand ramasser un devoir et je me demandais, où dois-je commencer? Elle aura cette réponse pour vous. Et maintenant, un programme définitif d'un de vos prédécesseurs en réponse à la question "Que dit le renard?" [MUSIQUE YLVIS, "QU'EST-CE QUE LE RENARD SAY?] YLVIS: (CHANT) Dog va trame. Chat va miauler. Oiseau va tweet et la souris va grincer. Vache va moo. Frog va crever. Et l'éléphant va siffler. Canards disent charlatan et les poissons vont blub. Et le joint va ow ow ow, mais il ya un son que personne ne sait, que dit le renard? Et DAVID J. Malan: C'est tout pour CS50. Nous allons vous voir à Puzzle Day et le lundi. [Applaudissements] [MUSIQUE YLVIS, "QUOI LE FOX dire?"] Narrateur: Et maintenant profonde pensées, par Daven Farnham. Aujourd'hui j'ai été touché dans le face avec un annuaire téléphonique. Confondre, comme je suis à la maison à regarder en ligne.