Président: Je suis [inaudible]. Et je suis une personne âgée à Leverett House. J'étudie l'informatique, et je suis un TF pour CS50. Comme un étudiant de première année, je n'ai même pas eu un ordinateur portable ou un smartphone. Je n'avais aucune expérience en programmation. CS50 était le cours le plus mémorable que J'ai pris à Harvard parce qu'il était une lutte, mais c'était vraiment un amusant lutte en même temps. Et j'ai fait beaucoup d'étonnant, permanent amis, et j'ai appris beaucoup de vraiment compétences applicables. Je suis tellement content que je n'ai pas laissé mon manque de fond être une excuse pour moi pas prendre CS50. Je suis [inaudible]. Je suis une personne âgée à Leverett Maison, classe de 2014. Et j'ai pris CS50. DAVID MALAN: Donc, c'est CS50. C'est la fin de la semaine zéro. Et se rappeler où nous avons commencé la dernière fois, était avec ces lampes, qui étaient si populaire que nous sommes allés et acheté un peu plus aujourd'hui. Donc, je pense que ce sera notre chose cette année - lampes de bureau si vous venez de monter sur scène, au moins jusqu'à ce que nous manquons. Mais nous avons utilisé ces rappel, d'introduire les bases de la représentation des données. Nous avions besoin de façon à commencer à représenter informations à l'intérieur d'un ordinateur. Et la façon la plus simple de le faire était avec une substance, de l'électricité. Et la chose la plus simple que vous pouvez faire avec l'électricité est l'allumer et l'enlever. Laissez le flux d'électrons ou non. Et l'utilisation de ces deux états de base, hors et le ou faux et vrai, ou zéro et un, nous avons commencé à voir que nous pouvions construire vers le haut, dans ce cas, à la lumière ampoules, plus nombreux que les juste zéro et un. Nous avons compté plus élevé que sept, par exemple, la dernière fois. Mais tout ce que nous avons à faire est de garder jeter de plus en plus ampoules à cette problème et, vraiment, nous pouvons représenter n'importe quel nombre que nous pourraient éventuellement vouloir. Eh bien, nous sommes passés rapidement puis sur Mercredi à cet octet de bénévoles. 8 bits est ce que nous appelons généralement un octet, Donc nous avions huit bénévoles le mercredi qui, collectivement, étaient qui représente huit bits. Et quand leurs mains se , ils étaient un un. Et quand leurs mains étaient vers le bas, il y avait un zéro. Et nous avons eu ces gens venir sur les raisons de scène? Ce que nous pouvons faire avec cette séquence de bits? Pour créer un alphabet. Nous avons réussi à construire au-dessus de cette leçon précédente appris et fait commencer à faire de plus intéressant l'information qui est au moins plus familier à nous les humains. Et cela va être un thème récurrent thème tout au long de 50 ans, mais aussi l'ordinateur la science en général, cette idée d' superposition, où, à la fin de l' jour, si vous avez vraiment commencé le l'essentiel avec un ordinateur, oui, c'est zéros et de uns. Et sous ce que c'est juste électricité. Mais nous avons très vite commencer à prendre les détails de bas niveau pour acquis et commencer à couche au-dessus de passé travaillé fait que nous, en fin de compte, par la fin du semestre et, vraiment, plus généralement comme des informaticiens et les programmeurs peuvent faire un peu de vraiment des choses puissantes en misant sur le travail que nous nous avons fait et aussi debout sur les épaules des autres. Maintenant, nous avons rapidement transitioned mercredi à partir de seulement besoin d' représenter l'information de vouloir de faire quelque chose avec elle. Alors qu'avons-nous définissons un algorithme comme? Une série d'instructions. Il s'agit donc d'une série d'instructions, un nombre d'étapes que vous, un homme, ou un ordinateur, plus généralement, serait exécuter l'un après l'autre dans l'ordre pour atteindre un objectif. Et nous avons eu quelques buts dernière fois, dont l'un était de dénombrer personnes dans la salle. Et un autre exemple était de trouver Mike Smith dans un annuaire téléphonique. Donc, vous vous souviendrez que j'ai déchiré un téléphone livre de moitié à cette fin jusqu'à trouver Mike Smith. Le but de ce visuel était de démontrons, encore une fois, que nous étions déchirer littéralement ce problème en la moitié, en deux, en deux, et très aller rapidement à partir de 1000 comme pages à juste une page unique. Ceux d'entre vous qui ont manqué ce sur Mercredi, je pensais que nous jouions retour quelques images de ce que vous avez manqué. Prenons un coup d'oeil. [LECTURE VIDEO] -Il nous allons. 1500 pages, belle ligne propre, lacrymogène légitime. [FIN LECTURE VIDÉO] DAVID MALAN: Donc, c'était mercredi. Nous transition, cependant, le mercredi maintenant à vouloir représenter algorithmes d'une certaine façon quelque peu standard, pas seulement les décrire verbalement, mais essayer de les exprimer par écrit, ou un écran d'ordinateur afin que nous puissions commencer à améliorer et modifier , et, finalement, en fait analyser à quel point correcte ou à quelle vitesse ils se trouvaient. Donc, nous avons introduit cette notion de pseudo-code, qui, en termes simples, c'est quoi? OK, les mots. Allons un peu plus loin que cela. Anglais, bien sûr, ne sont que vers quel but? Mots pour créer ou pour représenter les algorithmes. Donc, il n'y a pas une langue connue comme pseudo dans le monde. C'est juste que vous, en anglais, ou quelle que soit la langue parlée est, utiliser une sorte de notation rapide à transmettre une idée très succincte. Mais nous verrons que, certainement avec un Pseudo-anglais, et il s'avère la plupart des langages de programmation eux-mêmes sont dérivé de l'anglais lui-même, nous trouverons qu'il ya une norme façons de représenter pseudo et programmation aussi code. Alors que vous commencez à voir même le plus simple exemples aujourd'hui, de réaliser ces mêmes schémas se reproduiront semaine prochaine. Donc pseudo était une sorte du langage ressemblant un langage de programmation. Et le premier exemple, nous avons vu visuellement écrit était celui-ci. C'était seulement un programme en trois étapes, la objectif était de compter le nombre des personnes dans une chambre dortoir pour que la vidéo mercredi. Mais il y avait quelques aspects intéressants de ce programme simple. Et ce sera thèmes récurrents. Donc, pour ceux qui ne connaissent pas ceci, un, nous avons introduit une variable. Et sans doute tout le monde dans cette salle est familiariser avec une variable dans le contexte de l'algèbre. Mais ici, dans la programmation, les variables sont, l'un, peut être appelé tout ce que nous voulons. Nous utilisons n comme un compteur. Mais nous pourrions utiliser le compteur de mots, ou, comme vous le verrez, plus aucune phrase qui vous pourriez aimer tant qu'il est descriptive, mais c'est vraiment juste une Récipient de stockage. C'est un morceau de mémoire, un nombre de bits, et il varie par ordinateur, comment nombre de bits y sont que composer cette variable. Mais nous pouvons mettre des valeurs en elle. Jusqu'à présent, nous avons seulement mettre des chiffres. Mais nous pouvons mettre des mots réels. Nous pouvons mettre paragraphes. Nous pouvons mettre des images - n'importe quoi, vraiment, nous pouvons représenter avec zéros et de uns, nous pouvons mettre en cette notion de niveau supérieur d'une variable. Donc assez simple il transmettre. Et c'est une ligne. Mais nous avons très vite passés de une ligne à faire réellement quelque chose avec cette variable. Et à la troisième ligne, nous avons actualisé N. Nous incrémenté N. Et nous pourrions écrire ce un certain nombre de façons. Mais peut-être la plus évidente est juste pour dire, réglez n égal à quel que soit N est plus 1. C'était donc notre minimum. Pendant ce temps, il y avait une boucle. Et celui-ci, aussi, est probablement assez intuitive. Une boucle est juste quelque chose dans un programme ce qui se passe encore et encore, certains type de cycle. Et cette expression clé ici, pour chacun, est en fait très commun dans la plupart langages de programmation, y compris ceux que nous verrons dans le cours. Chaque fois que vous voyez le mot, il achemine généralement l'idée qu'un boucle, quelque chose de cyclique, est sur le point d'arriver. Mais il est intéressant de noter une autre détail syntaxique. Le fait que la troisième ligne il ya effectivement en retrait par avoir frappé l' barre d'espace plusieurs fois est délibéré. Parce convention humaine est telle que, quand vous faites quelque chose de nouveau et de plus, dans une boucle, aussi commencé sur la ligne deux, vous mettre en retrait tout ce qui appartenait pour que la boucle juste à préciser que c'est la troisième ligne et non pas, par exemple, ligne quatre ou cinq ans, s'il y avait lignes pour ou cinq, qui sont Une partie de cette boucle. Donc ce simple indentation transmet cette idée de base. Donc, nous avons appliqué cet algorithme, maintenant, à quelques exemples. Et cela, aussi, exemple simple dans le monde réel. Mais ça va être représentatif de comment vous y prendriez pour tester votre propres programmes de plus en plus complexes. Vous essayez quelques scénarios, certains entrées de représentants, et de voir si vous obtenir les résultats souhaités. Ainsi cet exemple avait deux personnes assis dans la salle de dortoir. Sur la gauche, c'est que même code pseudo. Et c'est une capture d'écran de la très dernière étape de l'application de cette algorithme à ces entrées, où avait deux personnes dans la salle et, rappeler, comme nous entrons dans une des lignes, et deux, trois, deux et et trois et fait - à la fin de cet algorithme, nous avons eu en effet compté les deux lascars qui sont dans la chambre. Alors, nous avons essayé un autre exemple. Et nous avons dit que s'il ya zéro personnes dans la salle? Est-ce toujours le code correct? Et en effet il était. Il se trouve que la deuxième ligne et, par conséquent, la ligne trois ou ne va pas à exécuter. Ils ne vont pas se produire du tout parce qu'ils sont tout simplement pas applicable si il ya zéro personnes dans la salle. Mais ce n'est pas une grosse affaire. Line One N initialisé à zéro, de sorte même si une seule ligne de cette programme se termine effectivement par être utile, il donne toujours la bonne réponse, comme indiquée par l'orange zéro à la partie inférieure. Mais ensuite, nous avons décidé que c'était type d'algorithme stupide. Il était assez lent. Certes, je peux faire deux, quatre, six, huit, dix, lorsque comptage de personnes dans une chambre. Nous avons donc modifié les algorithmes, l' pseudo, pour dire, maintenant dans la deuxième ligne, pour chaque paire de personnes dans la salle, procéder à l', à la troisième ligne, incrément en par deux à chaque itération. Alors qui aurait travaillé ici pendant cette paire de personnes dans la pièce. Mais alors, si vous commencez à penser à cela, et il ne faut pas longtemps pour réaliser, attendez une minute c'est va se casser, il rompt à ce cas simple? S'il ya trois personnes dans la salle ou, Plus généralement, quand il ya une nombre impair de personnes dans le chambre, dont un. Nous manquerions que personne ici parce que il n'y a pas de telles paires. Donc, nous avons rapidement abordé par la place ce que l'introduction supplémentaire constructions de programmation à l'aide du code pseudo. Donc une condition, que nous appelions , ou une branche. Et il est censé véhiculer, visuellement, l' idée de branche, une bifurcation de la route où vous pouvez soit le faire ou, peut-être, quelque chose d'autre. Et en effet, nous abordons ce problème en ajoutant la ligne 4, en disant, vraiment, à la fin, si une personne reste, puis aller de l'avant et de les compter spécial. Donc vous triez des cas spécial eux, donc de parler, de sorte que maintenant nous pouvons traiter à la fois un nombre pair de personnes et un nombre impair de personnes. Maintenant, il ya un certain nombre de façons nous aurions pu exprimer cela. Et franchement, j'aurais pu être encore plus nit pointilleux quand il est venu à mon choix de Anglais pour le pseudo. Mais au moins, l'esprit de l'idée est véhiculée. Si vous avez remis ce code à un ami qui n'est pas dans CS, ou n'a jamais pris CS, les chances sont qu'ils ne pouvaient comprendre, donné trois personnes dans la salle, comment compter ces personnes sur la base sur ces instructions. Et c'est tout ce que vraiment nous voulons atteindre avec un pseudo-code, en quelque sorte standardiser la façon dont nous allons sur représentant des idées afin que nous puissions commencer à faire plus compliqué chose encore. Donc, cela nous amène alors, aujourd'hui, à code réel. Nous commençons à programmer aujourd'hui, quoique dans un environnement convivial. Et puis nous passons très vite à une syntaxe plus mystérieux, mais qui vous verrez est fondamentalement la même que celle les idées vont voir se manifester avec cette autre langue aujourd'hui. Il va juste regarder un peu différent. Donc, plutôt que de simplement appeler ce code, je suis va être un peu plus précis et dire, désormais, lorsque vous rédigez un programme, vous écrivez le code source. C'est une sorte de pseudo-comme. Mais nous verrons ce n'est pas sorte de lâche quand il s'agit de choisir les mots que vous utilisez. Lors de la programmation dans une langue, vous avez d'utiliser les mots, les phrases, la syntaxe, que d'autres personnes ont décidé de représenter cette langue en particulier. Donc pseudo-codes est à vous. Un langage de programmation proprement dit comme C, comme nous allons le voir finalement, est standardisée par d'autres personnes. Alors, comment allons-nous écrire du code source? Eh bien, je vais aller l'avant et le faire. Je vais aller de l'avant et ouvrir une fenêtre ici. Plus sur la semaine prochaine. Mais il s'agit d'un dispositif appelé le CS50 appareil. Je fais tourner un morceau de logiciel sur mon Mac, si vous pouvez faire la même chose sur un ordinateur Windows, qui donne moi l'illusion exécution d'un autre système d'exploitation tout à fait à droite ici dans une fenêtre sur mon Mac. Je viens de plein projeté en sorte que vous n'avez pas réellement voir Mac OS dès maintenant. Il s'agit d'un système d'exploitation appelé Linux. Il est très populaire. Il est très rapide. C'est très libre, ce qui a rendu très convaincante, en particulier dans le monde commercial. Et plus sur que vers la fin de l' semestre lorsque nous utilisons Linux un peu Pour le web, programmation et l'hébergement de sites et des projets réels. Alors maintenant, il suffit de savoir que c'est un ordinateur de bureau qui est destiné à regarder vaguement familier à Windows et Mac OS. Il a juste quelques noms différents et icônes des choses. Mais c'est la soi-disant CS50 appareil, une machine virtuelle, dès la semaine prochaine, vous les gars exécuter à l'intérieur d'une fenêtre sur votre Mac ou PC. Pour aujourd'hui, je vais ouvrir le plus simple des programmes. C'est ce qu'on appelle gedit. Et ce n'est qu'un éditeur graphique. C'est un peu comme Microsoft Word, mais plus simple. C'est le genre de texte comme Modifier ou bloc-notes. C'est juste un programme très simple avec qui d'écrire des mots sur l'écran. Il vient donc ce qui se passe que si j'économise les fichiers que je crée quand ce programme dans une extension particulière comme. c, au lieu d'. doc ou. xls, ou quel que soit vous êtes familier avec, je ne peux réellement créer des programmes utilisant même cette simple éditeur de texte. Alors permettez-moi de le faire. Permettez-moi d'aller de l'avant et sauver ce déposer d'abord comme hello.c. Et encore, cette interface utilisateur devenu familier pour vous rapidement. Mais pour l'instant, je suis juste en tapant dans un nom de fichier. Je vais l'enregistrer dans mon John Annuaire Accueil Harvard. Et maintenant j'ai cet onglet qui indique Je suis en effet édition un fichier appelé hello.c. Donc, encore rien de trop intéressant. Et maintenant, il va obtenir assez énigmatique. Je vais effectuer un zoom avant, juste il est donc plus visible. Et je vais commencer à taper comprennent stdio.h, int main, vide, ouvert bouclés croisillon, un, deux, trois, quatre espaces d'indentation, impression f, pour l'impression quelque chose de formaté, entre guillemets, "Bonjour tout le monde" barre oblique inverse, n, près citation, parenthèse fermée, point-virgule, entrer backspace, retour arrière, retour arrière, backspace, fermé accolade - J'ai programmé. Très bien, donc c'est un super simple programme, vraiment, le programme qui quelqu'un commence programmation. Et tout ce qu'il fait, pour toute sa complexité, est imprimer sur l' écran, devinez quoi? Bonjour tout le monde. Mais il ne suffit pas seulement d'écrire un programme. Donc, ce n'est code. Il s'agit du code source dans un langage appelé c. Il est sauvé actuellement en un fichier appelé hello.c. Maintenant, regardez en bas de l'écran ici. Plus de détails sur ce, encore une fois, dans les semaines à venir. Mais c'est ce que nous appellerons une fenêtre de terminal. C'est un clignotant, noir et invite blanc. C'est en quelque sorte une interface old school à un ordinateur qui n'est pas généralement utiliser une souris ou un autre des éléments graphiques. Il utilise simplement votre clavier. Et je peux taper des commandes à Ce clignotement rapide. Et pour les besoins d'aujourd'hui, je suis juste allez tapez la commande suivante - faire bonjour. Et ce programme, assurez-vous, c'est juste une programme qui, dans le monde réel ces jours, nous serions double-cliquez sur. Mais dans cette interface pour aujourd'hui, nous sommes aller à taper son nom à cette invite. faire bonjour va littéralement à me faire un programme appelé bonjour. Et il va le faire en regardant pour un fichier, il suffit de par défaut, appelé hello.c. Ça va supposer que je veux un programme C par la nature de la façon dont cet ordinateur est configuré. Donc, je vais de l'avant et appuyez sur Entrée. Je vois certains sortie cryptique, mais cela va devenir trop familier avant longtemps. Ce qui est arrivé à exécuter un compilateur, plus à ce sujet dans un moment, appelé Clang. Mais maintenant, j'ai juste un autre clignotement rapide. Et je peux maintenant aller de l'avant et taper dot Slash, pour des raisons inintéressantes nous allons revenir à la semaine prochaine - bonjour. Donc, tous ces efforts jusqu'ici juste pour écrire le plus simple des programmes qui, dès que j'ai touché Entrez, ne le fait. Alors j'ai écrit mon premier programme. Je suis donc délibérément se moquer à ce programme très simple pour un couple de raisons. Premièrement, il est difficile de s'enthousiasmer de prendre une classe si c'est le jeu final. Mais plus que cela, il ya une beaucoup de distractions ici. La première fois que vous apprenez à programmer, pour ceux d'entre vous moins à l'aise, et moi-même, à l'époque, quand j'ai vu quelque chose comme cela - vous pouvez sorte de figure qui, tout droit, ce est dans un monde bonjour d'impression. Mais il ya tellement de distraction. Il ya tellement de syntaxe à l'écran qu'il est dans la manière de très idées simples, sinon simple,. Donc, ce que nous allons faire aujourd'hui, c'est que nous sommes va mettre de côté C et venir revenir à ce lundi. Et nous allons utiliser un graphique langage de programmation appelé Scratch. Il s'agit d'un langage de programmation, que je fait allusion à mercredi, cela va pour nous permettre de faire le même genre de trucs mais fermer les yeux, pour aujourd'hui, les accolades, les parenthèses, les points-virgules, et toutes ces stupides distractions qui nuisent à la manière, en cette première journée, d'une certaine base, assez idées intéressantes. Donc, à cette fin, je vais aller retour à mon bureau ici et vous présenter l'alternative à cette programme, qui va chercher une petit quelque chose de léger cela. C'est ainsi que nous allons mettre en œuvre cette même programme aujourd'hui - deux casse-tête des pièces qui, lorsque reliés et cliqué, va dire au monde, Bonjour tout le monde. Donc, nous allons effectivement aller là-bas. Donc, je vais aller de l'avant et d'ouvrir une site connu comme scratch.mit.edu. Et cela va me mener ce site ici. Par avance, je me suis connecté en ce site et les premiers problèmes que vous guidera à travers certaines de ces étapes. Je vais aller de l'avant et cliquez sur sur mon dossier de travail ici. Et cela va me montrer certains projets que j'ai effectivement créé à l'avance. Et il s'avère que ce graphique non seulement le langage de programmation va de nous laisser programme par glisser- déposer ces pièces de puzzle, vous n'ont même pas besoin d'un logiciel spécial. Tout est intégré dans un navigateur si que vous pouvez faire, en théorie, sur vos ordinateurs en ce moment, comme certains d'entre vous peut-être, sans même avoir besoin logiciel comme l'appareil CS50, qui va venir la semaine prochaine. Je vais donc aller jusqu'à l'angle supérieur ici et cliquez sur Créer. Et à un moment, je vais me faire un vide écran via lequel je peux commencer programmes dans ce graphique environnement de programmation. Mais cette fois, ça va être beaucoup, beaucoup plus simple de le faire effectivement. Donc, en un instant, lorsque le Wi-Fi coopère, nous avons maintenant cet écran. Ainsi, un rapide tour d'horizon verbale, mais j'ose dire, Certes, quand vous plonger dans l' premier jeu de problème, vous aurez trouver tout cela très accessible et assez intuitive. Mais nous allons peindre une image mentale pour un instant. Donc, sous cette invite Enregistrer disant modifications, vous allez voir de zéro. Il s'agit d'un sprite. C'est un personnage. Et il vit sur ce que nous appellerons une étape, ce grand rectangle blanc sur laquelle il peut se déplacer de haut en bas, à gauche, à droite, et à faire, vraiment, d'autres types d'actions. Pendant ce temps, au milieu de cet utilisateur l'interface, nous avons tout un tas d' des pièces de puzzle. Et vous verrez qu'ils disent des choses comme déplacer de 10 étapes, tourné de 15 degrés, point dans une certaine direction. Mais il ya des catégories de blocs ici aussi. Donc, si je vais à l'Looks, vous verrez que Il ya d'autres pièces du puzzle qui apparemment dira ce cit de dire bonjour, de penser, de montrer lui-même, se cacher lui-même. Si je descends Sounds, il s'avère il ya des façons de jouer des sons comme meow, pour arrêter tous les sons, à jouer un tambour. Alors, longue histoire courte, il ya toute une tas de pièces de puzzle qui vous permettent de dire ce chat, ou n'importe quel nombre d' autres personnages, quoi faire. Mais pour faire tout cela vous arrive besoin pour commencer la programmation. Et cette grande boîte blanche ou boîte grise, sur le côté droit, c'est là Je vais glisser réellement et laisser tomber ces pièces de puzzle. C'est mon texte vide Fenêtre équivalent. Donc, je vais aller de l'avant et cliquez sur Contrôle dans le milieu. Ou plutôt, permettez-moi de commencer sous Événements. Sous Evénements banc, vous remarquerez une quelques choses qui sont délibérément courbé sur le haut de telle manière que ils n'ont probablement pas de verrouillage sur le dessus des morceaux de puzzle. Et c'est parce qu'ils DEMARK le début d'un programme, le début d'une scénario, pour ainsi dire. Donc, si je vais de l'avant et faire glisser, quand elle est verte drapeau cliqué ici, et puis je ce chat veut dire quelque chose au premier abord. Je vais donc passer sous les regards panneau. Et je vais aller de l'avant et prendre le dire bonjour bloc, et glisser et déplacer, et de laisser aller afin qu'elle automatiquement verrouillages là. Et puis notez que je peux cliquez sur le texte. Et je ne peux passer outre à être plus spécifiques comme, par exemple, bonjour tout le monde. Et maintenant, nous avons le programme que je prétends est équivalent à celui beaucoup plus programme des arcanes j'ai mis en place en C il ya un moment. Si je vais plus maintenant sur le côté gauche, Remarquez qu'il ya un grand panneau d'arrêt et un grand drapeau vert. Permettez-moi de zoom avant pour plus de clarté. Et quand je clique maintenant ce drapeau vert, vous pouvez probablement deviner ce que cette première programme va maintenant faire. Donc, là aussi, nous programmons, mais nous ne sommes pas réellement s'enliser dans certains de ces syntaxique, moindres détails. Mais nous allons essayer quelque chose d'un peu plus intéressant. Laissez-moi aller dans mon dossier Scratch ici. Et en fait, permettez-moi alors laissez-moi j'ouvre un programme distinct ici pour juste une moment, maximiser cette fenêtre, fichier ouvert, et je vais aller dans d'aujourd'hui répertoire source. Comme toujours, vous trouverez, aujourd'hui et avant, que tous les exemples d'aujourd'hui sont accessibles à l'intérieur de le site du cours. Et je vais aller de l'avant ici et choisir un petit quelque chose de différent. Celui-là, pour qui J'ai besoin d'un volontaire. Qui voudrait d'une lampe de bureau aujourd'hui? OK, que diriez-vous à quelqu'un un peu - vous êtes sur la fin? Allez vers le bas. Maintenant, voulez-vous participer ou juste dire commencer avec la lampe de bureau? VANESSA: [inaudible]. DAVID MALAN: OK. Excellent, ce qui vous son nom? Vanessa? David. Enchanté de faire votre connaissance. Alors, venez sur place et Vanessa va de prendre le contrôle de mon clavier pendant un moment. Et ce que j'ai fait ici, juste le temps de même, comme je l'ai réalisé l' Wi-Fi était un peu lent, Scratch, l' environnement de programmation que nous sommes utilisation, peut également être téléchargé et exécuter sur votre ordinateur local. Donc ce que j'ai fait à l'avance de conférence, en cas ce qui se passe, c'est que j'ai téléchargé tous les fichiers que nous sommes sur le point de jouer avec de sorte qu'ils puissent tourner un peu plus rapidement ici sur mon portable. C'est pour ça que maintenant je vois une interface MAC-spécifique. Donc, je vais aller de l'avant et d'ouvrir celui-ci. Je vais aller de l'avant maintenant et plein écran de la fenêtre. Et comme vous le verrez, nous pouvons très rapidement, que cet étudiant a fait, l'un des vos prédécesseurs, vont du monde bonjour à un bien plus convaincant application. Voici donc les instructions. Oh, et nous avons une autre chose. Je pensais que ce serait amusant, car, Normalement, nous serons en train de filmer caméras de cette façon. Je pensais que ce serait amusant si, Vanessa, nous pourrions voir le monde à travers vos yeux. Nous avons donc ici une certaine Verre Google. [Halètements étonné] DAVID MALAN: Nous ne donnerons loin lampes de bureau aujourd'hui. [Rires] Alors permettez-moi de cue cela. Très bien, alors toucher cela. OK, verre, enregistrer une vidéo. Tout droit, Vanessa? Maintenant, en aparté qui n'a rien à voir avec Scratch, si vous regardez légèrement en haut et à droite, vous verrez le verre littérale, et vous devriez voir une petite fenêtre rectangulaire. Vous devriez voir tous vos camarades de classe filmé en ce moment? Oui. VANESSA: Oui. DAVID MALAN: OK. Donc, c'est très bien. Nous publions ces images plus tard. Pour l'instant, tournez votre attention à l'écran ici. Et que votre prédécesseur a fait, c'est mettre quelques instructions à l'écran tout en utilisant un programme de peinture. Alors vous allez, dans quelques instants, appuyez sur la barre d'espace pour commencer. Et puis, quelques pièces du puzzle vont commencer à se déplacer vers le haut de l'écran. Et vous voulez frapper les touches fléchées, tout comme dans la vraie DDR, conformément avec des choses alignant avec ces flèches. VANESSA: OK. DAVID MALAN: Vous avez jouer ça avant. VANESSA: Ouais. DAVID MALAN: Très bien, Vanessa, aller de l'avant et l'emporter. [MUSIQUE - Kayne West, "Stronger"] [Applaudissements] DAVID MALAN: Donc, nous allons maintenant prendre un peu de cela. Donc, clairement, c'est le jeu final. La fin de match n'est pas Bonjour tout le monde. Mais vous n'avez pas à le faire nécessairement choses qui sont si interactifs. Vous pouvez également faire de l'animation. Ainsi, par exemple, un, un autre de votre successeurs faites ce programme ici, qui raconte une histoire de plus de il n'a mis en place un match. Alors laissez-moi aller de l'avant et d'ouvrir ici une programme dans notre même répertoire source à partir d'aujourd'hui. Ce seul appel, et nous allons commencer avec, une histoire d'amour de cookie. Et pour ne pas faire de ce trop académique, mais, que vous regardez celui-ci, pensez à vous lequel de ces simples les concepts de programmation dont nous avons parlé environ jusqu'ici - variables, et les boucles et les conditions, votre prédécesseur n'a probablement utiliser seulement de mettre en œuvre certaines des les visualisations. Vous voyez ici. Donc, je vous donne une histoire d'amour de cookie. [MUSIQUE - GREEN DAY, "vacances"] [CRASH] [MUSIQUE - LES TORTUES, "HEUREUX ENSEMBLE"] DAVID MALAN: Très bien, alors là, nous avons eu une histoire d'amour de cookie. Mais là encore - [Applaudissements] DAVID MALAN: Très bien, là encore, penser, que ces coeurs sont passés de du bas vers le haut de l'écran, il y avait effectivement un peu de aléatoire en cours. Et en effet, nous verrons que, même dans le simple d'environnements, comme Scratch, comme en C, vous pouvez générer nombres aléatoires, ou l'illusion de des nombres aléatoires, de sorte que le jeu est un peu plus intéressant que cela puisse si vous aviez absolument dur tout codé. Dans le mouvement que vous voyez, il il ya une sorte de réactivité. Dès que l'homme pain d'épice touche la femme pain d'épice, elle semble s'éloigner. Et si, en effet, vous pouvez mettre en œuvre, en la plupart des langages de programmation, la notion d'événements, de sorte que, si l'on touche à la main D'autre part, cela peut déclencher une de votre code source fait exécuter. Vous pouvez écouter une telle choses à l'écran. Prenons donc un tour rapide, puis, de certains des blocs de construction, nous pouvons utiliser pour atteindre certains de ces objectifs. Alors, voici ce que nous allons désormais appeler un communiqué. Une déclaration se trouve être pourpre Scratch, un petit quelque chose de ce genre, mais c'est arbitraire. Une déclaration est juste un morceau de puzzle ou, plus généralement, une instruction, qui indique à l'ordinateur de faire quelque chose, une déclaration. Alors, voici un exemple simple. Dites bonjour monde. Un autre pourrait être attendre une seconde. Donc, cette pièce de puzzle, qui est soutenu à zéro, nous allons laisser votre caractères interruption de certaines nombre de secondes. Cela, aussi, est juste une déclaration. Voici prochaine, nous avons une autre plus intéressant, le jeu meow sonore, et signifie la petite flèche qui en Scratch, il s'agit d'un menu déroulant. Ainsi, vous pouvez importer des sons. Vous pouvez enregistrer des sons et faire d'autres choses amusantes à zéro. Et ça aussi, cependant, à la fin de la journée, c'est juste une déclaration. Mais maintenant nous allons introduire une plus pièce intéressante, qui appelle une Expression booléenne. Capital B, nommé d'après un gars nommé Bool. Et une expression booléenne est juste un pièce de puzzle ou, plus généralement, une élément d'information qui est vrai ou faux - un ou zéro, oui ou non. Donc, c'est juste un de ceux deux opposés. Donc, une telle expression booléenne dans le monde de Scratch ressemble à ceci bleu morceau de puzzle. Et il a posé une question, souris vers le bas, et qui peut être soit, de Bien sûr, vrai ou faux. Donc, avec cette pièce de puzzle dans Scratch, Eh bien, vous serez en mesure de détecter si un intriguer si la souris est, en fait, être tenue par le interagissant humaine avec votre programme. Celui-ci est un peu plus abstrait, mais ces deux cases blanches ne sont que des numéros. Ainsi, vous pouvez faire des choses comme cela est nombre inférieur à l'autre? Et si oui, Scratch va se comporter d'une façon ou l'autre. Celui-ci est un peu plus graphique. C'est si le sprite, si le chat, pour par exemple, est en fait toucher le pointeur de la souris. Donc, si la petite tête de flèche est en vol stationnaire sur le chat, alors cette pièce du puzzle sera évaluée à true. Ce sera vrai, dans ce cas, si vous utiliser cette expression booléenne, comme nous allons verrons dans un instant, dans une branche, vous pouvez soit le faire, ou vous pouvez le faire, un peu comme nous avions une condition qui cochée, est-il un plus dernière personne dans la salle? Si c'est le cas, ajoutez-en un. Sinon, ne vous inquiétez pas plus loin. Ainsi, une expression booléenne peut aussi être et ed-ensemble ou ou-ed ensemble. Ainsi, vous pouvez combiner des expressions booléennes et dire ceci et cela doit être vrai pour le tout pour être vrai. Et voici un exemple du monde plus réel. Si vous avez utilisé CS50 Cours de faire cours shopping, ces cases à cocher là, où si vous cochez la case suivante aux cours, qui diront, oui, seulement me montrer cours pour lesquels la valeur Q est de 4,5 ou supérieur. Si vous la décochez, non, ne le faites pas s'inquiéter à ce sujet. Ou même, sur la droite, ne Conflit avec des cours que je prends, c'est vrai ou faux. C'est juste une expression booléenne. Donc tout ce temps où vous avez utilisé sites avec des cases à cocher, vous êtes juste basculer l'équivalent d'une valeur booléenne expression sur et en dehors. Alors, sous quelle forme que vous utilisez ceux-ci? Eh bien, dans Scratch, nous le verrons dans un instant qu'il ya des conditions que ressembler à ceci. Et c'est le genre de sensé parce que beaucoup comme en pseudo-code, nous indenté le genre de pièces de puzzle en forme de U, signifie que quoi que ce soit à l'intérieur de ce U est aller à exécuter, ou non, en fonction sur l'endroit où il est. Donc, si l'expression booléenne, puis tout ce qui est à l'intérieur seront exécutés. Pendant ce temps, il ya un bloc if / else. Donc si vous voulez une branche qui va de cette ou comme cela, nous donne Scratch. Et dans cette logique, maintenant, même si ce pièce du puzzle est clairement trop petit pour caler quelque chose d'autre à l'intérieur de celui-ci, les pièces du puzzle à gratter, ils sont aller juste à se développer. Lorsque vous faites glisser et déposez sur quelque chose, il va juste se développer pour s'adapter à tout ce qu'il c'est que vous essayez de faire. Ainsi, nous pouvons prendre deux de ces choses et effectuer une fourche à trois voies de la route de sorte soit que vous fassiez ceci ou cela, ou cette autre chose simplement en les nidification de cette façon. Bien sûr, si vous faites cela trop beaucoup, ça commence à devenir laid. Mais à ce moment, vous êtes réellement probablement pas programmer très bien. Et donc ce sera récurrent thème, aussi, que du style. Juste comment bien faire réellement formater votre code? Ou comment concevez-vous votre code? Mais plus à ce sujet dans l'avenir. Et maintenant nous avons des boucles. Il ya une belle boucle infinie dans Scratch qui signifie littéralement que - faire tout ce qui est à l'intérieur de ce nouveau et encore, et encore. Vous pouvez être plus concret et dire: faire la chose suivante 10 fois. Vous pouvez également utiliser des variables. Vous pouvez venir avec n'importe quel nom dans ce peu descendre et dire, donnez-moi une variable appelée n et mis en Il égale à une certaine valeur. Et puis vous pouvez avoir des fonctions. Mais plus à ceux dans un instant. Permettez-moi de revenir à mon Grattez interface. Et permettez-moi d'aller de l'avant ce moment. Et allons-y et ouvrez-vous, disons, un exemple de - c'est un peu plus intéressant. Permettez-moi d'aller de l'avant, et, en fait, Permettez-moi de faire moi-même. Je n'ai pas besoin d'ouvrir celui-ci. Permettez-moi d'aller dans Fichier, Nouveau. Je vais aller à des événements. Je vais aller quand drapeau vert cliqué, et je vais aller au son. Et je vais faire glisser et déposer cette morceau de puzzle, jeux meow sonore. Il verrouille ensemble. Et maintenant, si je clique sur le drapeau vert - [SOUND MEOW] DAVID MALAN: Adorable. OK, alors maintenant nous allons faire quelque chose d'un peu plus logique que de démontrer que nous pouvons, pour l'instant. Je vais déverrouiller ce à partir de ce type. Je vais aller à contrôler. Et je vais attraper une maladie. Donc, si quelque chose ensuite. C'est donc ce à quoi il ressemble il. J'ai donc besoin d'une expression booléenne. Et permettez-moi d'aller de l'avant et de dire: laissez-moi aller aux opérateurs. Je vais faire quelque chose de légèrement Mathy, juste pour le plaisir. Je vais aller ici et dire que, si quelque chose est inférieure à autre chose, aller de l'avant et faire quelque chose. Alors maintenant, vous savez quoi, un bloc aléatoire. Alors remarquer comment, si je survole cette chose ici, qui va casser là-dedans. Alors maintenant, remarquez, je commence à faire quelque chose de déjà plus logiquement intéressant. Si un nombre aléatoire entre 1 et 10 est inférieure à, disons six. Si je choisis de six, qui essentiellement moyens, procédez comme suit avec 50% probabilité. C'est comme lancer une pièce. Maintenant, je peux faire quelque chose de manière conditionnelle. Et c'est quelque chose que je vais à faire est de jouer le son. Alors maintenant, quand je clique sur l'écran drapeau, c'est comme lancer une pièce de monnaie. [SOUND MEOW] DAVID MALAN: C'était têtes ou il joyeusetés. Faisons-le à nouveau. [SOUND MEOW] DAVID MALAN: Têtes de nouveau. [SOUND MEOW] DAVID MALAN: Têtes de nouveau. Ouf, OK. Tails ce moment-là. Donc, 50% du temps, si nous faisons cela infiniment long, nous aurons 50% miaule et 50% silences. Donc, là, juste un bâtiment de base bloc qui nous permet de faire cela. Mais c'est un peu fastidieux que j'ai à garder en cliquant sur ce bouton. Donc, nous allons simplement faire glisser et jet tous ceux qui sont loin. Si vous les glisser au milieu, ils vont simplement supprimer eux-mêmes. Laisse-moi aller jusqu'à contrôler. Laissez-moi aller pour toujours. Et cette fois, je vais le faire quelque chose minorly ennuyeux. [Rires] DAVID MALAN: et je m'en irai l'avant et faire le contrôle. Attendez une seconde, juste pour il n'est pas trop grille. [SOUND MEOW] DAVID MALAN: Ce n'est pas naturel. OK. [SOUND MEOW] DAVID MALAN: Et remarquez ce qui, nice sur Scratch, pour ceux d'entre vous qui avoir une expérience préalable de programmation, vous n'ont pas besoin pour démarrer et arrêter. Vous n'avez pas besoin de compiler. Vous venez de changer, et le programme va adapter dynamiquement. Donc, cela devient un peu intéressant. Mais prenons un peu plus loin. Permettez-moi d'aller de l'avant et obtenir débarrasser de ce programme. [SOUND MEOW] DAVID MALAN: C'est ce que nous allons appeler un bogue dans Scratch. Il ne devrait pas continuer à faire ce bruit. Donc, nous nous lui dire d'arrêter. Très bien, alors maintenant je suis va aller en - Je vais vous laisser savoir MIT. Nous allons passer en revue ici pour toujours. Et maintenant, je veux faire quelque chose encore et encore. Je vais aller dans le contrôle. Et nous allons voir, je vais glisser mon état si là-bas. Alors maintenant remarquer la logique. Lorsque le drapeau vert est cliqué, faire quelque chose pour toujours, mais seulement le faire quelque chose si cette autre chose est vrai. Je vais aller, nous allons dire détection. Et je vais aller de l'avant et de choisir toucher et déposez-là. C'est une expression booléenne. Et maintenant, remarquez, dans cette chute menu déroulant, il ya des valeurs prédéfinies. Donc je peux dire, touchez-vous le bord de l'écran? Ou êtes-vous toucher le pointeur de la souris, la flèche sur l'écran? Donc, je vais le faire. Et si oui, alors je vais y aller l'avant et jouer son miaulement. Alors maintenant, je suis le genre de prémices d'un jeu - un jeu adorable. [SOUND MEOW] DAVID MALAN: OK, un adorable, jeu de buggy. Permettez-moi d'attendre, disons, un seconde là. Vous pouvez maintenant jouer à nouveau en cliquant le drapeau vert. [SOUND MEOW] DAVID MALAN: Alors maintenant, c'est comme caresser un chat. [SOUND MEOW] DAVID MALAN: Très bien, maintenant ce un je ne fais à l'avance. Très tard, il obtient le genre d' facile de faire des choses stupides. Alors, laissez-moi aller ici. Disons, qui a été caresser le chat. Nous allons maintenant ouvrir Ne pas caresser le chat. Maintenant, si nous jouons celui-ci, vous pouvez le deviner, si vous êtes en regardant l'écran - [SOUND MEOW] DAVID MALAN: Maintenant, si je caresse le chat [Rugissement LION] DAVID MALAN: Donc, ne pas réellement caresser le chat dans cette affaire. Alors maintenant, nous avons juste un exemple de branche qui va dans deux directions. Maintenant, laissez-moi aller de l'avant et ouvrir un autre ici. Celui-ci, également, entre notre source fichiers de code pour la journée. Alors permettez-moi de revenir dans ma Source répertoire et aller dans, choisissons ce gars-là et de voir ce qui est différent. Wow, c'est bon, alors maintenant ça devient un peu plus complexe. Et avant de voir ce que ce gars fait, Essayons d'en déduire, à partir du programme du côté de la main droite. Et maintenant scratch permet clairement que nous avoir plusieurs scripts, de multiples programmes associés à un sprite, avec un caractère, et, apparemment, ils sont tous les deux va courir au même rythme. Parce que ces deux programmes débute A quand le drapeau vert clics, c'est faisant allusion à un sujet plus avancé, avec dont certains d'entre vous connaissent peut-être, connu sous le nom de filetage, ou multi-threading. Il s'avère que, Longue histoire courte, les ordinateurs aujourd'hui peut faire essentiellement multiple choses à la fois. Ou ils peuvent faire qu'une chose à la fois pour vite que vous ne remarquerez même pas que il est en train de faire une chose à la fois. Mais pour l'instant, supposons que les deux ces programmes vont exécuter à en même temps. Et remarquez, deux d'entre eux ont toujours des pièces de puzzle. Donc, ils sont tous deux vont continuer à courir jusqu'à ce que je frappe le panneau d'arrêt rouge. Alors, qu'est-ce qu'ils vont faire? Sur le côté gauche, je suis apparemment déclarer une variable appelée en sourdine. Je n'ai donc pas l'appeler quelque chose comme ennuyeux comme N. Je l'ai appelé en sourdine cette le temps de transmettre une signification. Je l'ai mis égal à zéro. Pensons à ce que les fausses, ou pensons à ce que faux. Maintenant, pour toujours faire ce qui suit. Si la barre d'espace du clavier est enfoncée, alors si sourdine est égal à zéro, puis changer en sourdine à l'égalité de l'un. Sinon, mettre en sourdine à zéro. Donc, logiquement, même si c'est un tout tas de pièces de puzzle qui est juste que quand j'ai frappé la barre d'espace, Que dois-je faire pour la variable appelé en sourdine? Changez-le de un à zéro, ou zéro à un. Voilà tout. Donc, c'est comme allumer un interrupteur de lumière ou de désactiver et de se souvenir, avec un variable, je l'ai fait. Pendant ce temps, sur le côté droit, termes simples, ce qui est le but de le script à droite? ETUDIANT: Pour jouer le son otarie. DAVID MALAN: Pour jouer Sea Lion sonore, s'il n'est pas mis en sourdine, par la nature de cette variable. Nous allons donc partager état, pour ainsi dire, partage d'information entre ces deux parce que son exécution, notez ici, nous sommes faisant toujours ce qui suit. Si sourdine est nul, donc si ce n'est pas mis en sourdine - si sourdine est faux, alors jouer ce bruit de Sea Lion. Et pensez-vous, salut, salut, salut, pour de deux secondes, attendez un instant, puis vérifier de nouveau. Donc, si nous passons ici à gauche, à l'endroit où ce type est, et a frappé le drapeau vert, [OTARIE SOUND] DAVID MALAN: À quel moment ce devenir vraiment ennuyeux? Parce que ce sera juste durer éternellement. Alors, parfois, des boucles infinies, pour ainsi dire, sont délibérées. Mais dans ce cas, dès que je a frappé la barre d'espace, il s'arrête. Maintenant, le programme n'a pas cesser de fumer. Il est encore en cours d'exécution dans ces boucles. Mais si je reçois la barre d'espace à nouveau - [OTARIE SOUND] DAVID MALAN: Il va choisir là où il s'était arrêté. Donc, il ya un moyen pour nous de faire quelque chose encore et encore, mais que temps, que conditionnellement. Eh bien, alors que nous sommes dans cette veine de faire choses encore et encore, permettez-moi aller dans un autre exemple ici. Celui que nous appellerons compter les moutons. Et remarquez ce que ce gars fait. C'est en fait un peu plus comme l' pseudocode nous avons joué avec le Mercredi lequel il définit certaines compteur, penser c'est comme N fois, à zéro, il fait toujours le suivant. Il dit que la valeur du compteur pour une deuxième, attend une seconde, puis modifie le compteur d'une unité. Et dans ce contexte, que tout signifie incrémente. Donc, il ajoute un à elle. Il s'agit donc littéralement - ce n'est pas tout à fait ce que nous pensons comme de compter les moutons. C'est le mouton faire le comptage, toujours, à partir de zéro. Ainsi, nous pouvons faire des choses similaires là, logiquement. Mais maintenant nous allons essayer de nettoyer certaines de ces choses. Permettez-moi d'aller de l'avant maintenant en simple exemple où notre chat va tout simplement commencer à tousser. D'accord, donc nous avons ici toux 0 - les informaticiens commencent le comptage à partir de 0. Donc, ce chat va tout simplement à tousser trois fois. Et voici comment j'ai implémenté cela. Quand le pavillon vert est cliqué, la toux, attendre, tousser, attendez, tousser, attendez. Et je l'ai fait par simple glisser- et déposer les pièces du puzzle. Ou si vous commencez à bricoler avec Scratch, vous verrez que vous pouvez réellement dupliquer morceaux de sorte que vous pouvez faire choses plus rapidement sans glisser et l'abandon ad nauseam. Mais nous ne sommes pas sur le meilleur chemin ici. Parce que comment puis-je lui fais tousser une quatrième fois? Eh bien, je pourrais tri de descendre ici. Je ne pouvais dupliquer, puis collez ce là-dedans. Comment puis-je lui faire cracher une cinquième fois? Eh bien, copier et coller à nouveau. Ou faites glisser à nouveau drop. Et très vite, ce programme commence pour vraiment, vraiment redondant, très long, mais vraiment inintéressant. Mais il ya un moyen de nettoyer cette place. Quel est le moyen le plus évident pour nettoyer cette place? OK, alors nous pourrions vraiment aller out et, quand vous frappez l'espace bar, ont tousser. Mais si je veux juste faire quelque chose répétitive, rappelons que nous avons un certain contrôle construit. Permettez-moi de passer ce hors de l' Ainsi, passer sous contrôle. Permettez-moi de faire une répétition, dire trois fois. Et maintenant, permettez-moi de voler quelques de ces pièces de puzzle. Permettez-moi craque ça ici. Permettez-moi de jeter ces tout à fait. Et maintenant, j'ai une meilleure programme conçu. Pourquoi? Si je veux changer le nombre de fois Ce chat tousse, tout ce que j'ai à faire est de changer une variable ou une valeur, plutôt de trois, à quatre, ou cinq ou six. Ou je pourrais faire quelque chose conditionnellement, même, avec l'espace bar si je le voulais. Il s'agit donc d'un principe général. Une fois que vous commencez à copier et coller le code, que ce soit dans Scratch, ou en C, vous faites quelque chose mal, le plus probable. Ou au moins, une fois que vous avez dépassé un certain un nombre raisonnable de copies et pâtes, vous êtes probablement quelque chose de mal. Mais vous savez quoi? Je n'aime pas vraiment ça. Ce n'est pas la conception propre. J'aimerais qu'il y ait une pièce de puzzle appelé tousser parce que je n'aurais pas avoir à mettre en place moi-même, à l'ancienne, par ayant dire, et attendre - Et si ils étaient juste une pièce du puzzle de la toux. Eh bien, je peux réellement faire. Permettez-moi de passer sous plus de blocs, cliquez sur Faites un bloc, et maintenant je reçois cette fenêtre ici. Je vais appeler cette chose toux. Je vais aller de l'avant et cliquez sur OK. Et maintenant, avis, je reçois un nouveau départ pièce qui est courbée vers le haut. Et ce que je vais faire avec ça, je suis allez simplement à voler ces blocs. Je vais les mettre ici. Et maintenant, avec ces trois morceaux, j'ai mis en œuvre ce que je vais faire appel à un une fonction ou d'une procédure, ou d' vous savez peut-être comme une méthode. De légères différences entre les mots. Mais pour l'instant, disons simplement appeler cette fonction. C'est juste une nouvelle pièce du puzzle. Maintenant, il est mis en œuvre comme ça. Mais remarquez que Scratch nous a donné une représentation physique de l'ensemble que bloquer ici. Alors maintenant, je peux juste faire glisser ceci ici, dire, répéter trois fois, et qu'est-ce qui va se passer maintenant, quand je joue ce script, un seul programme est en cours d'exécution à la fois. Il ya un seul lorsque drapeau vert cliqué. Mais ce bloc violet appelée toux est dire effectivement Scratch, chaque fois que vous voyez ce morceau de puzzle, en fait exécuter ces étapes que je arriver à mettre en œuvre manuellement. Donc, c'est plutôt drôle. Mais maintenant, suppose que j'ai décidé, je ne sais pas vouloir ce chat juste à tousser. Je veux qu'il soit en mesure à éternuer ainsi. Eh bien, comment pourrions-nous nous y prendre la mise en œuvre éternuement? Eh bien, je pouvais assez bien faire la même chose. Je pourrais faire un autre bloc. Je pourrais appeler cet éternuement, cliquez sur OK. Alors, ici je pouvais ont, permettez-moi de dupliquer cette - et c'est là que vous devriez vous sentir comme vous n'allez probablement pas faire quelque chose dans la meilleure façon. Je pourrais dire quelque chose comme: achoo, pendant une seconde. Attendez une seconde. Maintenant, j'ai un nouveau bloc appelé éternuement. Et en effet, il est là. Mais cela, aussi, doit commencer à se sentir - peut-être pas la première semaine de classe, mais par le second - juste un peu redondant. De toute évidence, il ya une certaine redondance ici. Alors permettez-moi de proposer, au contraire, que nous affiner la définition comme suit. Permettez-moi de remonter vers mon menu Fichier. Je ne vais pas à sauver cette version. Je vais aller dans l'une des mes fichiers prédéfinis ici. Et je vais aller de l'avant et d'ouvrir la toux 2. Oups c'était toux 2. Permettez-moi d'aller de l'avant et d'ouvrir la toux 3, qui est ce répertoire source. Toux 3 et notez - oh, j'ai dit l'histoire dans le bon ordre. Permettez-moi de remettre de cette histoire. L'histoire que je voulais raconter se termine par la toux 4 - il est là. Alors que faire si je, plutôt, de définir une pièce de puzzle plus appelé définir, disons le mot n fois. Éternuement est juste, apparemment, dans Scratch, achoo. Donc, nous l'exprimons comme un mot, juste parce que c'est la contrainte du programme. Et une toux est [TOUX], mais la toux, C-O-U-G-H. Donc, c'est juste deux différents mots faisant, essentiellement, la même chose. Donc, je peux réellement faire une nouveau bloc comme ça. Je n'ai pas utilisé cette option avant. Mais lorsque vous cliquez sur Créer un bloc, vous pouvez choisir certaines options. Et vous pouvez dire que ce bloc fait prend certains intrants, autrement connu comme arguments, ou paramètres, de sorte que vous pouvez modifier le comportement de votre bloc. Donc ce que j'ai fait il ya un moment été J'ai appelé ce bloc Say. Et puis je l'ai dit, il faut une entrée de chaîne. Et maintenant remarquer, par défaut, il affirme chaîne 1. Une chaîne est juste un mot ou une phrase, pour nos besoins. Mais je vais juste mettre un peu d' texte d'espace réservé là-bas, comme dans une site Web, quand vous voyez identifiant, ou mot de passe, puis il disparaît lorsque vous commencez à taper. C'est tout ce que c'est. Et maintenant, je vais ajouter une entrée numérique. Et je vais appeler ce n - mais c'est assez arbitraire. Et puis juste une étiquette, juste pour faire ce bloc un peu plus auto explicatif - fois, c'est ce que je viens de faire. Et le résultat final est que je reçois un bloc qui ressemble à ceci. Et maintenant, vois, je suis en utilisant un bloc de répétition. Mais plutôt que de coder en dur trois ans, je suis glisser-déposer dans n, donc je peut paramétrer la fonction. Je peux faire cette fonction fasse quelque chose un nombre différent de fois sur la base de cette valeur. Et remarquez, par exemple, c'est ce que j'ai fait ici, si je traîne mot, je ne peux pas dire une dur mot codé, mais quel que soit est passé dans une seconde. Pendant ce temps, comment puis-je ré-implémenter tousser? Je définis plutôt comme la toux toux dire n fois. Donc en bref, je vais à travers ce rapidement, mais l'idée de base est dès que vous commencez à voir dans votre programme qui, attendez une minute, je l'ai fait quelque chose de tout à fait comme ça avant, je peux factoriser certaines communes fonctionnalité? Puis-je décomposer ce que je fais dans quelques idées de base? C'est ce que nous faisons ici. Et j'ai empilé ces choses, visuellement, sur le dessus de l'autre parce que c'est témoigne de cette idée d' à commencer par binaire, va ASCII, rendre les programmes graphiques, sorte de superposition des idées de plus en plus complexes sur dessus de l'autre. Même idée ici. J'ai commencé à partir de zéro, la mise en œuvre toux, puis la toux est réalisé vraiment juste dire quelque chose. Permettez-moi donc implémenter l' notion de dire quelque chose. Et en plus de cela, ce que je peux mettre en œuvre achoo ou de la toux? Et nous pourrions en faire plus comme variantes encore. Donc à partir de ce principe de base, nous pouvons commencer à faire programmes plus complexes. Permettez-moi de m'ouvrir celui-ci. Nous pouvons effectivement avoir plusieurs sprites l'interaction sur l'écran en même temps. Si je vais dans mon répertoire source et Saisissez un disant Threads, rappeler qu'une fil est vraiment la capacité de deux scripts à exécuter côte à côté à la fois. Remarquez maintenant, avoir à la fois un sprite d'oiseaux et un sprite de chat, qui ont tous deux leurs propres scripts. Donc, avis, lorsque je clique sur le chat, je reçois ces scripts. Lorsque je clique sur l'oiseau, Je reçois ces scripts. Donc, chacun de ces gars a ses propres programmes. Lorsque je clique maintenant le drapeau vert, remarque que ce que ce programme ne fait que avoir le chat, incroyablement lentement, chasser l'oiseau. Mais le chat a l'avantage d'avoir été programmé de telle manière que peu importe où l'oiseau est, le chat va vers lui. Nous pouvons jouer à ce jeu beaucoup plus rapide. Donc, si je suis sur le chat, m'aperçois que je suis en utilisant, disons déplacer un pas. Ayons le déplacer cinq étapes à un moment, donc cinq points à la fois. Permettez-moi de cliquez sur Lecture. [Rugissement LION] DAVID MALAN: Très bien, nous pouvons maintenant vraiment donner le chat l'avantage. 10 marches à la fois. [Rugissement LION] DAVID MALAN: Très bien, donc très rapidement, elle obtient un petit avantage pour le chat. Mais je ferai signe à ma main certains détails. Mais la raison pour laquelle ce chemin est départ un peu différent à chaque fois c'est que je fais un peu de hasard. Je suis en train de pointer le chat dans une direction différente selon l'endroit où je veulent qu'il commence sorte que chaque fois le jeu, ou l'animation, est une peu différent. Maintenant, laissez-moi vous présenter un autre construction ici. Donc dans ce cas, nous avions fonctions. Il va aussi être une pièce du puzzle connu comme un tableau ou une liste, qui vous permet de stocker plusieurs valeurs à l'intérieur d'une variable. Nous avons vu des discussions, et maintenant il ya des événements. Alors, voici un événement à l'aide ces deux gars ici. Et si j'ouvre le fichier appelé Événements à partir des exemples d'aujourd'hui, nous allons voir un programme qui ressemble un peu comme ça. Et maintenant remarquer ce gars - ainsi remarquer que j'ai le bleu Muppet cliqué - il ne fait que ce qui suit. Il n'a pas l'un de ceux des morceaux de puzzle drapeau vert. Il a un quand je reçois événement - si un mot arbitraire. J'ai juste tapé sur l'événement là-bas - il va dire, Polo, pendant deux secondes. Ainsi, ceux d'entre vous qui sont familiers avec ce jeu pourrait connaître où cela va. Si je clique maintenant sur le Muppet orange, Son programme fait cela. Toujours, si la barre d'espace du clavier supprimé, il va dire, Marco, pendant deux secondes sur l'écran. Mais il va aussi utiliser cet amateur bloquer dite diffusion. Il va diffuser devis Ils ont dit, «événement». Pendant ce temps, le gars bleu, le rappel est écoute je cite, «événement». Donc, en quelque sorte, maintenant, nous pouvons avoir deux sprites interaction. Et quand nous arrivons à la programmation web, plus tard dans la durée, de la même volonté de cette être avantageux d'avoir votre site web faire quelque chose en réponse à des Ainsi, un clic sur le clavier. Alors laissez-moi aller de l'avant et appuyez sur la barre d'espace. Orange gars dit Marco. Bleu gars dit Polo. Si je le fais à nouveau mec d'orange dit Marco, bleu gars dit polo. Alors prenons un peu plus loin. Cette fois, nous irons probablement, juste quelques minutes de plus ici. Avons-nous - lampe de bureau, allez vers le bas. Vous êtes juste sur la fin. OK, vous pouvez aussi bien venir. Nous avons des lampes de bureau pour tout le monde. Allez. Je ne sais pas si nous pouvons garder ce gag ridicule jusqu'à tout le semestre, cependant. Très bien, allez vers le bas. Et en attendant, nous avons la les exemples suivants pour tirer vers le haut, juste pour accélérer les choses maintenant, de sorte que nous une manifestation d'un autre prédécesseur de la vôtre à l'aide de l' mêmes blocs de construction de base. Quel est votre nom? JOHN: John. DAVID MALAN: John. Nice pour moi de vous. Et alors? SETZ: Setz. DAVID MALAN: Setz, Nice à moi que vous. John, si vous voulez venir le premier, c'est un vieux jeu d'école nommé Frogger. Vous utilisez le clavier pour cela aussi. Et l'objectif est de faire passer la rue et de l'eau. [MUSIC FROGGER et joue SON] DAVID MALAN: Je suis désolé, non lampe de bureau pour vous aujourd'hui. Tout droit, Setz, diriez-vous envie de venir sur place? Très bien, nous allons le faire encore. SETZ: Dois-je utiliser les flèches? DAVID MALAN: Seules les touches fléchées. Haut, bas, gauche, droite. [MUSIC FROGGER et joue SON] DAVID MALAN: Nous allons les appeler Consolation Prizes aujourd'hui, puis, très bien fait. Ici, pour vous deux, John et Setz. Félicitations, tout droit. Donc, encore une fois, que ce jeu se joue, penser à ce qui se passe? Un, il ya clairement beaucoup de mouvement. Mais nous avons vu comment, avec le chat et le Ainsi oiseau, comment vous pouvez faire la illusion du mouvement en déplaçant simplement certains nombre de pixels, encore et encore. Et si vous avez un bloc toujours, vous pourriez avoir ces voitures faisant cela pour toujours. Nous avons la capacité de avoir un peu de hasard. Donc, ce jeu n'a pas besoin d'être exactement le même à chaque fois. Ces journaux, ces voitures, peuvent commencer à des instants différents de sorte que l' jeu lui-même est plus intéressant avec chaque jeu. Et pendant ce temps, nous avons vu la possibilité pour écouter la barre d'espace. Mais clairement, dans Scratch, vous pouvez aussi écouter pour monter, descendre, gauche, droite, et vraiment n'importe quelle touche du clavier. Et vous pouvez aussi faire d'autres choses. Permettez-moi d'aller de l'avant et revenir à la version web. Permettez-moi d'entrer dans notre collection des exemples. Et dans mon studio vidéo qui est, essentiellement, un dossier sur scratch.mit.edu. Nous avons les versions web de tous ces projets. Et nous allons voir si je peux obtenir mon ordinateur de coopérer ici. Ce qui est écrit par un de nos amis au MIT, a appelé Déplacez le papillon. Et une fois que cela ouvre, c'est va en fait utiliser plus de le matériel de mon ordinateur. Scratch arrive à mettre en œuvre avec Flash. Flash peut parler à votre webcam, si vous en avez un. Donc, si je vais de l'avant et plein écran cette ici, cliquez sur le drapeau vert, un avis que le message de sécurité de l'éclair n'est pas peu dire, voulez-vous permettre d'utiliser ma webcam? Normalement, vous devriez probablement dire Refuser. Mais dans ce cas, nous dirons permettre. Alors je vais dire à Chrome pour permettre à ce même. Et maintenant, dans un instant, tu me vois, oui, moi. Et si ma main va jusqu'à - Je dois pas bouger mon la tête en même temps. Il ya aussi une réflexion sur l'écran. Allez, nous y voilà - vous pouvez le déplacer sur l'écran parce que il ya aussi des pièces de puzzle - oh, vous savent ce que c'est, c'est parce que vous aussi voir l'écran du projecteur derrière moi. Nous avons donc un peu infini chose qui se passe là-bas. Très bien, alors je jouerai ici. Nous y voilà. Donc, il ya aussi une pièce de puzzle qui dit, quand vous voyez le mouvement sous un des sprites, vous pouvez aller haut, bas, gauche, droite ou autre. Donc, nous avons un peu de la réalité virtuelle passe ici aussi, le tout dans le limites de mon navigateur, il suffit ici avec ma webcam. Alors, quel est alors à l'horizon. La première série de problèmes, comme vous le verrez, ou le site Web sera mis en ligne plus tard ce soir à cs50.net, est assez beaucoup va être ouverte terminé. Et mettre en œuvre un projet de Scratch d'intérêt pour vous, un jeu, un interaction, quelque chose d'artistique, et vous mettre au défi d'utiliser n'importe quel nombre de ces pièces de puzzle. Et il peut être soit interactive de cette manière. Ou il peut être quelque chose de plus délibérément fait de raconter une histoire. Et en effet, c'est là que nous finirons off aujourd'hui, avec un dernier exemple. Laissez-moi aller dans Scratch localement. Permettez-moi d'aller de l'avant et ouvrez ce, et joue un dernier programme écrit par un de vos prédécesseurs, à savoir que personne ici. Bon, augmenter le volume de celui-ci. [Jouer de la musique] Narrateur: Lors de la prochaine CS50, David invite un bénévole sur scène. DAVID MALAN: Pour cette démonstration, nous allons avoir besoin d'un bénévole. Voulez-vous venir sur le bas? Quel est votre nom? Passons.