[Powered by Google Translate] [MUSIQUE ROCK] [MUSIQUE - "HAPPY TOGETHER" LES TORTUES] DAVID MALAN: Aujourd'hui, nous commençons notre exploration de la fondamentaux de l'informatique et notre introduction, maintenant, à l'art de la programmation, dont c'est juste un exemple. Mais dans la même veine de la résolution de problèmes, sachez que Jour CS50 Casse-tête classique, c'est demain. Si vous n'avez pas encore RSVPed pour cet événement, vous pouvez aller à cs50.net/rsvp. Vous pouvez apporter des équipes de deux, trois ou quatre. Vous serez appelé à des problèmes tels que celui que vous avez vu là-haut au début. Tous les nouveaux problèmes cette année si vous participait l'an dernier, et vous auront la chance ensuite de gagner des prix fabuleux. Parmi eux, une Wii et des certificats-cadeaux et comme, tout en traînant avec CS50 élèves et camarades de classe et de la pizza et Facebook. Donc plus sur que demain, si vous le souhaitez. C'est alors CS50, pour ceux d'entre vous joindre à nous pour la première fois. Et sachez que ce cours est particulièrement déterminé à obtenir vous à travers ce cours à sa fin, au cours de laquelle vous pointez aura non seulement une compréhension de ces fondamentaux de l'informatique, mais vous aurez cet ensemble de compétences très pratique que vous pouvez ensuite ramener à votre ministère, que ce soit sciences de l'ingénieur, mathématiques appliquées, les sciences physiques, naturelles science, ou similaire. En effet, ce qui est si excitant à propos de l'informatique de ces jours, c'est que c'est tellement applicable à toutes sortes de domaines. Et même si aujourd'hui, nous ne font qu'effleurer la surface d'un langage de programmation très traditionnelle connue sous le nom C, nous allons plutôt regarder quelque chose appelé Scratch, quelque chose avec que cette histoire d'amour cookie a été mis en œuvre par l'un de vos prédécesseurs dans les années passées, de raconter des histoires, de créer des jeux, à créer de l'art interactif, et de réellement commencer à envelopper notre esprits autour de certains des concepts fondamentaux qui sous-tendent la programmation, mais dans un contexte, comme vous le verrez, c'est beaucoup moins effrayant, c'est beaucoup moins mystérieux, que vous verrez avant longtemps. Et se rendre compte, aussi, pour ceux d'entre vous venez vous joindre à nous ce semestre, les phrases sur lesquelles nous nous sommes retrouvés conférence de mercredi, ce n'est pas si important où vous finissez par rapport à votre camarades de classe dans cette catégorie, mais où vous, d'ici la fin du semestre à la semaine 11, finissent par rapport à vous-même le droit ce jour. Alors sans plus tarder, il s'agit également de noter que ceux qui sont moins à l'aise, ceux entre les deux, sont aussi, par la conception de ce cours, pas désavantagés vis-à-vis de ceux qui sont plus à l'aise venir dans cette catégorie. Comme vous le verrez dans les semaines à venir, nous avons différents pistes pour le fond arrière disparates, des sections pour ceux moins à l'aise, plus confortable, les quelque entre les deux. Comme vous le verrez ce week-end et la semaine prochaine, deux versions de la plupart des ensembles de problèmes à la fois dans l'édition standard et hacker afin que vous pouvez tous choisir eux-mêmes le chemin qui vous sont plus à l'aise. Donc, aujourd'hui, nous plonger dans cette programmation langage appelé Scratch. Il s'agit d'un langage de programmation graphique, et pourtant, il a le mêmes caractéristiques de quelques-unes des langues de niveau supérieur nous allons explorer plus tard dans le semestre, parmi lesquels C et JavaScript et PHP. Mais ça va nous permettre d'éviter certains des distractions dès le début de la syntaxe, des choses comme des points-virgules, parenthèses, et d'autres détails obscurs qui, à première vue, sont tout simplement pas du tout intellectuellement intéressant et ont tendance à entrer en la voie d'une certaine compréhension fondamentale. En termes de maintenant la structure de soutien avant, réalisé cette outil, CS50 Discuter, qui sera relié au cours de site Web plus tard aujourd'hui, est le forum de discussion en ligne que vous serez en mesure de poser des questions à l'autre et personnel, et c'est aussi un outil, comme nous le verrons la semaine prochaine, que nous allons utiliser tout façon intégrée dans les heures de bureau ainsi. En effet, les heures de bureau commence le lundi, et franchement, le premier semaine de heures de bureau est assez bas de gamme. Je ne pense pas que vous trouverez tout ce que Scratch inaccessible. Il est plutôt explicite, comme nous allons le voir, et ce nous allons l'utiliser pour aujourd'hui est d'extraire une partie de la idées fondamentales qui, ensuite, persistent tout au long de la reste du semestre. Mais à partir de lundi, à 8:00 PM par 23 heures 00 sera les heures de bureau dans plus de Annenberg pause cerveau. Sectionnement deux vont commencer ce soir, donc le courant de l' week-end, allez à cs50.net/section, et vous aurez être demandé à un certain nombre de questions. Parmi eux, comment décririez-vous votre le niveau de confort d'aujourd'hui? Il ne fait aucun mal, règle absolue quant à savoir qui est où seau. C'est exactement le genre de chose que vous savez sans doute si vous sont parmi ceux du moins à l'aise ou non. Et maintenant, soluces. La spécification du jeu de problème pour cette semaine, à la fois standard et de l'édition pirate, qu'elle soit en ligne à cs50.net dès maintenant. Et vous verrez que la première de ces éditions, le édition standard chaque semaine, est accompagné de quelque chose que nous appeler une procédure pas à pas du code, une séance dirigée par l'un des boursiers d'enseignement de cours pour vous guider à travers, fournir Conseils sur, et vous descendez un chemin particulier quand il s'agit à partir de ces ensembles de problèmes. Donc, avec chacun de ces ensembles problème, si jamais vous êtes désireux pour vous-même, où dois-je commencer, vous commencez avec ces soluces. Et en fait, permettez-moi de présenter Zamyla Chan, cette adjoint à l'enseignement année qui dirigera chaque l'une de ces procédures pas à pas. Zamyla? [Applaudissements] ZAMYLA Chandler: Oh, salut, tout le monde. Mon nom est Zamyla. Je suis un étudiant ingénieur débutant à Winthrop Chambre. Mais je tente de s'adapter à autant de cours d'informatique que je peut, et c'est pourquoi je suis vraiment excité de diriger ce année soluces. Procédures pas à pas, pour moi, était une partie essentielle de mon CS50 expérience. Au cours de la procédure pas à pas, pour tout p-ensemble, nous allons passer par le problème posé ensemble, regarder par-dessus les problèmes, sorte de les diviser par piqûres gérables. Je vais vous donner des conseils, des techniques, pour obtenir à travers et commencer. J'espère vous voir tous les soluces. Si vous ne pouvez pas le faire en personne, s'il vous plaît ne syntonisez en ligne. DAVID MALAN: Excellent. Merci, Zamyla. Alors rends compte que soluces sont, en effet, un vendredi après-midi, mais c'est délibérément par la conception afin que même si vous préférez ne pas assister aux cours un vendredi après-midi, les vidéos seront tout le plus rapidement au cours le week-end. Alors rends compte que cs50.net sera tout de Zamyla de soluces. Et qu'il ya la date du jour et l'heure, 3:00 PM, Harberd Hall, 104. Et quelques-uns des compagnons d'enseignement ont également préparé quelques remarques pour vous par contumace pour vous donner un peu d' point de vue quant à ce que leur expérience et entrée en sortir du CS50 était. Donc, si on pouvait éteindre les lumières pour un instant, je vous donne certains membres du personnel du CS50. JACKSON Steinkamp: J'ai pris CS50 l'année dernière en tant que recrue dans la tomber, et il est absolument soufflé mon esprit. Je n'avais jamais pris de cours de programmation avant, et jamais arrivé avec toute l'informatique l'expérience du tout. Et juste, j'ai entendu le buzz autour de la classe et décidé de le prendre. JULIA MITELMAN: C'était vraiment amusant, très engageant. J'ai encore, à ce jour - J'ai récemment vu que j'ai la disquette que David nous a donné le premier jour de la conférence. Je l'avais accroché à mon mur. C'est sans doute un peu ringard, mais je me suis accroché dans le mon mur pendant la classe comme un rappel de la façon dont il a été cool. TRAVIS DOWNS: C'est tellement embarrassant. JACKSON Steinkamp: Computer science est quelque chose que vous devraient essayer, même si vous n'êtes pas l'un des les sciences traditionnelles. C'est sa propre expérience, et CS50 s'assurera que vous êtes bien soutenu par lui avec sa véritable armée de FO. ALI Nahm: Je l'ai pris comme un étudiant de première année, et j'ai fait beaucoup de nouveaux amis. J'ai également été présenté à cette concentration tout scolaire de l'ingénierie, et je le recommande fortement et vous accueillir dans notre famille CS50. YANIV Yacoby: CS50 enseigne exactement comment utiliser les outils qui sont largement accessibles. Vous avez juste besoin d'un ordinateur portable, vous avez besoin d'un navigateur Web, et vous besoin d'apprendre à écrire du code, et vous pouvez vraiment construire choses intéressantes. KAREN XIAO: C'est tellement cool d'être en mesure de faire quelque chose et que les gens l'utilisent et que les gens le voient, et c'est ce que j'aime vraiment à ce sujet. Tim McLaughlin: - un sens de la communauté, je pense que, dans ce Bien sûr, plus que tout autre cours que j'ai prises jusqu'à présent. Vous n'êtes pas simplement de prendre un autre - vous n'êtes pas remplir une autre exigence. Vous n'êtes pas seulement aller à des conférences et aller à la section. Mais tu fais des tonnes de choses qui sont tous sur programmation et tout autour de la technologie, mais ce n'est pas se sent vraiment comme une classe la plupart du temps. DOWNS TRAVIS: Et le premier jour, ils ont distribué des gâteaux, et J'ai été immédiatement vendu. JACOB PRITT: bonbons gratuit et des pizzas. ZAMYLA CHAN: - quel que soit votre niveau d'intérêt, je pense que qui CS50, vous aurez du plaisir, et vous serez intellectuellement stimulée. MARK GROZEN-SMITH: C'est toujours une partie de la classe, et c'est un fête tous les soirs à travailler sur votre p-ensemble. JACKSON Steinkamp: Chaque fois que vous terminez un ensemble de problèmes, vous vous sentirez comme vous avez terminé un projet. MELISSA NIU: Il était en première année, et je me suis fait du shopping. J'ai eu mes quatre classes de prêt, et j'étais dans Annenberg. Et je tombe sur un ami, et il dit: hey, je suis achats cette classe appelée CS50, et vous devriez venir avec moi. Fini par le prendre à l'automne, et après que la classe, je pensé que je vais faire une mineure en CS. Mais ici je suis, trois ans plus tard, encore étudiant ordinateur la science et le faire réellement comme un grand, et j'ai adoré chaque moment de celui-ci. ROB BOWDEN: Je n'en ai aucune idée. ALI Nahm: Voyons voir. MELISSA NIU: Folie. INTERLOCUTEUR 1: J'ai l'impression que je serais très cliché. Je venais de dire, comme, impressionnant. YANIV Yacoby: Accessibilité. JACOB PRITT: bonbons gratuit et des pizzas. TRAVIS DOWNS: ne peut pas refuser une classe qui distribue des gâteaux. Tim McLaughlin: Énergétique. Vipul Shekhawat: Essential. ROB BOWDEN: Permettez-moi de penser à une réponse. Je crois que j'ai quelque chose. Oh, mon dieu. Oui, mon nom est Rob Bowden, et c'est CS50. [Applaudissements] DAVID MALAN: Très bien, nous allons donc commencer à brosser un tableau de la direction dans laquelle nous pouvons aller, et nous allons introduire ce concept ici connu comme pseudo. Donc pseudo n'est pas une programmation la langue en soi. Il n'a rien de technique en soi, mais c'est juste une sorte de manière générale de s'exprimer de manière assez précise, algorithmiquement assez, assez de la procédure, mais sans avoir à se soucier de ce que la langue vous exprimez vous po Il est certain modèle de l'anglais et des langages de programmation avec ce qui vous arrive d'être au courant, afin que nous puissions commencer à écrire ce genre de chose que nous allons. Et en fait, Joseph, pourrais-je vous emprunter sur scène pour être scribe ici? J'ai pris les devants ici à l'avance et oublié de mettre des chaussettes aujourd'hui, et cette serez parmi nos plus exemples ridicules. Maintenant, j'ai besoin de toi ici. Je vais faire la part des chaussettes. Nous avons donc ici un petit bloc-notes. Ceci est littéralement juste TextEdit sur un Mac. Nous ne sommes pas réellement allons écrire un programme exécutable, mais nous allons juste commencer à dessiner sur base de pseudo- sur quelques avocats que vous fournissez à moi ici. Donc, voici ma pile de chaussettes à la maison. Je n'ai pas de chaussettes quand je me réveille le matin, et nous avons maintenant besoin d'écrire un programme, un algorithme de toutes sortes, avec laquelle pour obtenir ces chaussettes sur mes pieds. Et le long de la route, nous allons voir si nous trébucher, ou rencontrez, quelques-unes des idées que vous allez devoir commencer à penser beaucoup plus au sérieux lors de la programmation De peur que vos programmes ne se comportent pas tout à fait comme prévu. Alors je m'assois ici. J'ai mon tas de chaussettes. Quelle est la première chose qu'un être humain raisonnable serait quand l'objectif est de mettre sur une paire de chaussettes? Quelqu'un me donner une seule étape, et une seule étape. Ouais? PUBLIC: Penche-toi. DAVID MALAN: Penche-toi, d'accord. L'étape deux. L'étape deux. PUBLIC: Prenez votre chaussette. DAVID MALAN: Prenez votre chaussette. Bon, si légère ambiguïté ici, et c'est l'un des premiers des pierres d'achoppement que nous sommes censés délibérément rencontrons ici. C'est un peu ambigu, alors prenez votre chaussette. Bon, je vais prendre celui-ci, mais un ordinateur, de réaliser en peu de peu, ne va pas avoir cette sorte d'instinct humain à juste choisir le plus proche. Nous allons devoir commencer, avant longtemps, exprimant nous plus précisément. D'accord, donc la deuxième étape est de choisir votre chaussette. Nous allons le prendre. La troisième étape. Dans le dos. PUBLIC: Trouver une paire. DAVID MALAN: Trouvez paire. Ok, donc c'est une bonne chose. Je devais choisir cette chaussette. L'objectif est donc de trouver une chaussette correspondance, maintenant, mais ce ce que cela signifie? Un homme raisonnable est, tout comme le mercredi quand je viens a su trouver Mike Smith dans un annuaire téléphonique, juste une sorte de est allé à leur instinct. Mais ici, c'est évidemment cette chaussette ici, mais d'un ordinateur ne va pas être si instinctive. Un ordinateur va avoir une collection de bits, comme nous l' examiné mercredi, et ceux qui sont organisé en quelque sorte dans la mémoire. Mais le fait est que l'ordinateur ne dispose que de la capacité à regarder les choses une à la fois, et en fait, même si nous l'homme - même si elle se sent comme j'ai regardé vers le bas et une scission seconde plus tard, je sais où est la chaussette, mon cerveau et mes yeux n'ont probablement un rapide écrémé de ces chaussettes, puis verrouillé sur l'une en question. Donc, si nous sommes d'autant plus délibérée maintenant comme un ordinateur, comment puis-je trouver cette paire correspondance? Eh bien, nous avons à parcourir. Nous devons peut-être une boucle sur ce gâchis de chaussettes sur le étage où je dis quelque chose comme POUR CHAQUE chaussette, ramassez- en place, et si la forme et la même taille que l'autre, PUIS point, point, point, nous allons continuer l'histoire. Ainsi, pour chaque chaussette, alors je prends celui-ci. Je vérifie cette égalité à celui-ci. Ce n'est pas, alors j'ai mis de côté côté. Puis-je réitérer à nouveau. Est-ce une égale? Non, ce n'est pas le cas, alors je l'ai mis de côté. Est-ce celui-ci? Non. Celle-ci? Pas, et ainsi de suite. Et puis finalement, je l'espère, je vais rencontrer cette chaussette ici. Donc, si c'est la même forme, la taille, le prendre. Et maintenant, quelle serait la prochaine étape ici? Ouais? PUBLIC: Identifier droite de la gauche. DAVID MALAN: D'accord, d'identifier droite et à gauche, de sorte Heureusement, ce genre de travaux. Un peu symétrique, ou j'ai simplement usé de cette façon. Très bien, alors j'ai identifié la droite. Et maintenant, avant de commencer, permettez-moi de souligner ce que Joseph fait ici comme une sorte de programmeur versé. Encore une fois, il n'y a pas qu'une seule façon de le faire, mais au-delà de la numérotation des lignes, Joseph a déjà commencé à le faire sorte d'indentation. En effet, il s'agit d'une convention très commun dans la programmation, de sorte que lorsque vous faites quelque chose itérative, boucle style, nous impliquant avec l'expression anglaise "POUR CHAQUE chaussette ", la convention en pseudo-code et, comme nous le verrons, langages de programmation normales, est de simplement tiret. Toucher la barre d'espace à quelques reprises, appuyez sur la touche Tab ou similaires, de sorte que imbriquée sous "POUR CHAQUE chaussette» est le morceau de choses que vous devez faire à la suite de cette boucle. Donc, c'est tout ce qui est sémantiquement transport. Maintenant, quant à lui, l'«Si c'est la même forme et la taille,« le fait que "Take it» est gravé en outre des moyens peu c'est la seule chose que vous devriez faire si cette condition, si cette branche, qui bifurcation de la route, est en fait vrai. Alors maintenant, ici, nous sommes sur la quatrième étape, identifier les appareils droit et gauche. J'ai identifié droit. Donnez-moi l'étape cinq. Et techniquement, on pourrait vraiment appeler POUR CHAQUE la chose - vous devriez probablement numéroter toutes les lignes si nous allons le faire. JOSEPH: [Inaudible] DAVID MALAN: [inaudible]? Bon, d'accord, d'accord, nous allons faire à votre façon. D'accord, donc en cinq étapes, comment faisons-nous la chaussette droite? Comment allons-nous procéder prochaine, ici? Oui? PUBLIC: Soulevez la jambe droite. DAVID MALAN: Soulevez la jambe droite, d'accord. Étape six? Rapidement. Ouais. PUBLIC: Trouver une extrémité ouverte de la chaussette. DAVID MALAN: D'accord, trouver l'extrémité ouverte de la chaussette. Si bon. Donc, ici, honnêtement, un instinct très commun serait tout simplement mis sur chaussette droite, mais qui est trop assez ambigu. Sauf si l'ordinateur ou humain sait exactement ce que cela signifie, ça ne va pas être pour exécuter ce, alors voici, j'ai trouvé l'ouverture du parc. Étape sept? PUBLIC: Touchez vos orteils. DAVID MALAN: orteils Touch. Bon, alors maintenant nous allons - D'accord, je vais prendre quelques libertés ici. Merci. Étape huit? Mettez chaussette. Bon, alors maintenant je, pense que nous sommes assez près pour trier de prendre celui-ci à la maison. D'accord, donc cela va vers le haut. Je vais prendre quelques libertés avec ce que cela signifie, en fait. Mettez la chaussette sur. Très bien, maintenant l'étape neuf? PUBLIC: Mettez pied à terre. DAVID MALAN: Je vous remercie. Étape neuf, mettre pied à terre, et maintenant, nous pouvons répéter. Donc, sans doute, nous pouvons maintenant passer à l'étape 10 et dire identifier chaussette gauche, mais c'est sans doute déjà fait. Et alors, je peux presque répétez ces étapes. Mais ce genre de élude la question. Avant, la dernière fois que nous avons voulu répéter quelque chose, nous il l'a fait de manière itérative, encore et encore, un POUR Chaque boucle pour ainsi dire. Serait-il judicieux d'utiliser une boucle afin de gérer à la fois la gauche et la chaussette droite? Parce qu'il se sent comme ces opérations sont à peu près identiques à l'exception du fait que l'on commence ici et une commence ici? Avons-nous la boucle, ou devons-nous simplement continuer étapes d'écriture 10 et 11 et 12? PUBLIC: Boucle. DAVID MALAN: D'accord, donc la boucle. En fait, j'ai peut-être dit juste continuer. Alors, pourquoi est-ce le cas? Eh bien, c'est en fait la première partie de notre non-évidence décisions de conception, et en fait, l'une des mesures qui nous allons commencer à évaluer, pour nous et pour vous, le la qualité d'un programme est juste à quel point il est conçu. Avez-vous fait la quantité minimale de travail nécessaire pour faire le travail le plus rapidement, soit en termes de votre temps ou en termes de temps d'exécution de l'ordinateur? Combien d'opérations faut-il pour exécuter? Donc, sans doute, il s'agit d'une opportunité pour une boucle, car dès que je commence à copier-coller, comme Joseph efficacement serait de commencer à faire dans un instant, vous êtes un peu perdu votre temps, et tu es doublement expressif. Mais en même temps, ce sont vraiment seulement deux spéciales cas, à gauche et à droite. Et alors qu'avant, je pourrais avoir 10, 20 ou plus de chaussettes dans une pile, cela fait vraiment sens de ne pas avoir 50 lignes de Code dire vérifier cette chaussette, puis la suivante, alors la suivante. Ici, c'est un peu moins évident, et je propose que l'on pourrait aller de toute façon. On pourrait soit avoir cette boucle, même si elle ne boucle deux fois, ou nous pourrions simplement copier et coller un peu ici pour faire le travail. Mais ce programme est buggé, pour ainsi dire. Il pourrait avoir des erreurs, des erreurs, ou des cas d'angle, de sorte à parler, que nous n'avons pas vraiment anticiper. Rien ne s'est passé cette fois, mais ce qui aurait pu mal tourner lors de l'exécution de ce programme? PUBLIC: Vous n'avez pas de chaussettes. DAVID MALAN: Donc il pourrait y avoir pas de chaussettes il que ce soit. Donc, nous allons examiner ce cas coin. Donc, si nous pouvions revenir en arrière jusqu'à la première étape, donc la première étape a été baisser, de sorte que vérifie. La deuxième étape, prenez votre chaussette, mais vous les trouverez chaussette assortie, identifier droite. Nous avons un peu fait tout un tas d'hypothèses, et c'est, franchement, pourquoi parfois planter le programme. Si vous, le programmeur, ont émis certaines hypothèses, comme sûrement il va y avoir des chaussettes ou il ya sûrement aller être laissé dans la mémoire de l'ordinateur, il va sûrement à gauche de l'espace disque sur le disque dur - Eh bien, si vous faites ces hypothèses, et ce n'est pas, En fait, la réalité, qui sait parfois ce que l'ordinateur va faire? Et parfois, quand vous obtenez le ballon de plage de filature ou le congelés Windows ou autre, c'est précisément parce que certains programmeur n'a pas prévu les cas dits coin. Quoi d'autre aurait pu mal tourner dans ce programme? Ouais? PUBLIC: Vous n'avez pas une jambe droite et une jambe gauche. DAVID MALAN: D'accord, peut-être pas tant une jambe droite et une la jambe gauche, et ainsi de ce programme pourrait ne pas être universellement applicable. Autres? PUBLIC: Vous pourriez avoir ramassé une chaussette orpheline. DAVID MALAN: J'ai peut-être pris une chaussette orpheline, donc un non-appariement chaussette qui vient pas de frères et sœurs parce que j'ai il a perdu, il est déchiré, c'est dans le wash still, ou similaire. Alors que, lui aussi, n'a pas vraiment été traitée. Ouais? PUBLIC: Vous pouvez déjà avoir des chaussettes. DAVID MALAN: J'ai peut-être déjà chaussettes. Je n'ai pas vraiment vérifier. SI vous n'avez pas de chaussettes, puis continuez à faire une ligne et deux. Et qui pourrait arriver. Vous vous endormez avec tes chaussettes et articles similaires, de sorte qui, lui aussi, une affaire coin très raisonnable. Et peut-être qu'un autre? PUBLIC: La chaussette est à l'envers. DAVID MALAN: Donc, la chaussette est à l'intérieur, donc nous avons fait aucune erreur vérifier, en somme. Nous n'avons pas vérifié si l'état du monde est comme nous le prévoyons. Nous n'avons pas vérifié si l'on en fait trouvé ce que nous recherchons. Et même si c'est un peu un exemple ridicule impliquant des chaussettes, à la fin de la journée, c'est exactement le sorte d'état d'esprit que vous devez avoir lors de l'écriture des programmes, même dans Scratch ainsi que dans C, JavaScript, PHP, parce que sinon, vos programmes présentent l' équivalent de ce ballon de plage filature ou simplement donner des des résultats inexacts. Merci si grand nombre à notre Joseph scribe. [Applaudissements] DAVID MALAN: D'accord, donc ce qui est, en effet, un programme d'ordinateur? Eh bien, nous allons jeter un rapide coup d'œil à une représentant un ici. Il s'agit donc d'un programme écrit dans un langage appelé C. C est assez vieux ces jours-ci, mais de nombreuses langues nouvelles sont construites sur le dessus de celui-ci. En effet, PHP, l'une des langues web-centriques nous allons utiliser vers la fin du cycle, elle-même a ce qu'on appelle une interprète, un programme qui est écrit en C, mais plus sur cela depuis de nombreuses semaines à partir de maintenant. Mais ce programme, et c'est ce que cela signifie d'écrire un programme, même s'il est très simple. Nous avons une syntaxe assez cryptique ici, mais vous pouvez probablement le deviner, même si vous n'avez jamais programmé auparavant, ce qui ce programme fait. En effet, je ne sais pas ce qui est printf, mais certainement imprimer évoque l'idée d'imprimer quelque chose. Et si oui, ce programme va finalement à imprimer les mots «Hello, World». Maintenant, si vous avez un Mac ou un PC ou un ordinateur Linux, les chances sont, du moins si vous avez téléchargé un libre logiciels disponibles, vous auriez pu écrire des programmes sur votre propre ordinateur portable pour un certain temps maintenant. Sous Mac OS, par exemple, il ya ce programme appelé Terminal qui est livré avec un Mac, c'est habituellement dans votre Dossier Utilitaires, et il ouvre généralement un noir et blanc ou une fenêtre blanche et noire au cours de laquelle vous avez une invite à laquelle vous pouvez taper des commandes. Donc, c'est en fait penser à ce que les ordinateurs l'habitude d'être devant utilisateur graphique interfaces, interfaces graphiques, est arrivé. Maintenant, dans Windows, vous disposez d'un mécanisme similaire dans la forme de l'invite de commande. Mais ce que je vais faire ici, c'est d'ouvrir, disons, TextEdit à nouveau, de sorte que le même programme que nous utilisions pour pseudocode il ya un instant, et je vais aller de l'avant et écrire mon premier programme. Inclure stdio.h, quoi que cela signifie, int main nulle, quel que soit ce moyen, et ensuite dans le milieu ici, printf ("Bonjour, monde.»). Et puis citation à proximité, fermer parenthèses, point-virgule. Maintenant, je vais aller de l'avant et appuyez simplement sur Commande-S. Je vais aller de l'avant et l'enregistrer comme hello.c, de sorte que la convention le monde de la programmation C est le nom du fichier dot c. Je vais juste mettre dans le répertoire d'accueil John Harvard, ici, cliquez sur Enregistrer, et maintenant je vais passer à ce fenêtre de terminal, qui est encore présente en noir et blanc rapide où je peux exécuter des commandes. Je peux exécuter des programmes en tapant leur nom, et non par double-cliquant sur des icônes dans le sens habituel du terme. Mais la chose est sur le point C est un langage que comme premier C vient sous cette forme, que l'on appelle le code source. Quelque chose qui ressemble un peu anglais, mais est nettement moins anglais que comme un pseudo-Joseph tout à l'heure. C'est un peu plus obscur. Il semble suivre certaines tendances ou des règles. Le fait que je n'ai accolades, points-virgules, des citations, équerres, on se sent comme un ordinateur est venu avec cette sorte de langage. Mais si je pars, maintenant, à cette fenêtre de terminal, je peux courir un commande qui va convertir ce code source est quelque chose qui s'appelle le code objet. Cela va convertir Anglais-comme la syntaxe de zéros et ceux, les mêmes sortes de zéros et de uns nous parlé mercredi. Maintenant, je vais exécuter une commande appelée Clang. Plus à ce sujet dans les semaines à venir, mais c'est un programme avec que je peux convertir hello.c dans un tas de zéros et de uns. Maintenant, j'ai exécuté cette commande. J'ai couru Clang, et puis j'ai dit vous-même fonctionner sur ce fichier appelé hello.c, que j'ai créée il ya un instant, et rien ne semble se passer. Mais en fait, si je fourré autour de mon répertoire, je verrais que ce programme a.out bêtement nommé existe maintenant. Ce n'est que le nom par défaut d'un programme lors de l'écriture dans C. On peut remplacer ce terme, mais a.out est l' nom du programme que je viens convertis en zéros et de uns. Et maintenant que ses zéros et de uns, mon Mac, dans ce cas, ou votre PC sous Windows, peut comprendre ces bits, ces zéros et de uns. Et donc quand je la touche Entrée, je vois «bonjour, monde!" Mais c'est un peu bogué. Je n'ai pas tout à fait dire «bonjour, monde: de l'air: - jharvard." L'air est le nom de mon ordinateur. Jharvard est le nom du compte, donc qu'est-ce que j'ai clairement omettre de ce programme? Une sorte de retour à la ligne. Je n'ai pas touché l'équivalent de la touche Entrée ou le retour chariot, et c'est, encore une fois, témoigne du fait que les ordinateurs peuvent seulement faire ce que vous leur dites de faire. Et le fait que je n'ai pas indiquer à l'ordinateur de déplacer le curseur sur la ligne suivante - bien, ça ne va certainement pas juste le faire présomptueusement pour moi. Donc, si je reviens à mon programme, et je dis \ n - Donc, \ n, comme nous allons le voir bientôt, c'est la voie de représenter les choses bizarres comme caractères de nouvelle ligne, les choses qui, autrement, être le résultat d' appuyant sur la touche Entrée. Mais pour l'instant, sachez simplement que la touche Entrée serait juste faire notre code paraître étrange, pour que le monde a décidé, vous savez ce qui, pour garder les choses plus jolies, pour le maintenir sur une ligne, nous allons juste dire \ n représente une nouvelle ligne. Permettez-moi de réenregistrer mon fichier, revenez à la fenêtre du terminal, et re-run a.out, Entrée. Encore buggé, mais pourquoi? PUBLIC: [Inaudible] DAVID MALAN: Ouais, donc j'ai besoin de le recompiler. Donc, pour compiler un programme signifie simplement le convertir à partir des sources code en code objet du code source, de zéros et de uns. Maintenant, le simple fait que j'ai touché Enregistrer dans cette TextEdit n'a pas portant sur ces zéros et de uns, car je dois d'abord tell Clang hey, j'ai changé ces lignes de code, le code source. Vous devez régénérer a.out. Rien ne semble avoir eu lieu, mais dans un ordinateur, à une ligne de commande, pour ainsi dire, quand rien ne se passe, cela signifie généralement que tout va bien. Lorsque quelque chose arrive, cela signifie vous foiré, en général. Donc, nous allons maintenant passer au format a.out, et même maintenant, j'ai "bonjour, monde. " Et maintenant, que dire de ces zéros et de uns? Si, en effet, sont ceux-là? Eh bien, je ne peux pas vraiment juste une sorte de fouiller très efficacement. Permettez-moi d'ouvrir TextEdit. Voici a.out. Permettez-moi aller de l'avant et ouvrez ce, et c'est apparemment ce que mon programme ressemble. J'ai donc ouvert, et non hello.c, mais a.out. Mais ce n'est effectivement pas ce que mon programme est vraiment. De toute évidence, c'est une sorte de caractères alphabétiques. Je ne vois pas de zéros et de uns, mais ce n'est parce a.out est un programme. Zéros et de uns - mais TextEdit, comme son nom l'indique, il est tout comme le Bloc-notes de Windows, est tout simplement un éditeur de texte, il est donc confondre tous ces zéros et de uns comme si elles étaient, quoi? Caractères ASCII. Donc, rappelons le mercredi, nous avons juste eu cette cartographie arbitraire de chiffres, ou bits, aux lettres de l' l'alphabet et les signes de ponctuation et autres. Donc, TextEdit, que c'est un éditeur de texte est une interprétation erronée ces modèles de zéros et de uns qui sont censés être mots d'impression, tels que «bonjour, monde». C'est en les affichant ASCII, et c'est pourquoi il semble un peu désordonné. Maintenant, il ya quelques conseils de justesse dans ici. Remarquez, si je mets en évidence, il ya un soupçon de réalité "bonjour, monde », donc quelque part dans ce programme est la phrase que j'ai écrit. Mais nous allons aller de l'avant et de maintenant voir avec un programme différent. Ce n'est pas celui que nous allons l'utiliser souvent, mais il est également livré avec un Mac et sera à l'intérieur de l'appareil CS50. Permettez-moi aller de l'avant et d'ouvrir avec un programme appelé XXD. Retour dans la journée, la plupart des programmes ont été nommés assez énigmatique, et si la tendance se poursuit. Mais-b signifie cracher sur ce programme sous forme binaire. Ne pas le faire fonctionner. Montrez-le-moi autant de zéros et de uns, et c'est le C programmer nous venons d'écrire. Maintenant, moi, comme un être humain ici, honnêtement, je n'ai aucune idée de ce que ces divers modèles de zéros et de uns représentent. Retour dans la journée, moi, avec mes cartes perforées ou analogues, serait effectivement regarder jusqu'à ce que ces divers modèles de 01111000, représentent en fait. Ou pire, j'aurais besoin de faire la perforation ou la création de ces modèles de zéros et de uns. Mais pour l'instant, prendre sur la foi qu'un processeur, Intel Inside, si à parler, à l'intérieur de tous nos ordinateurs de nos jours, connaît comment interpréter ces zéros et de uns. Et certains zéros et de uns signifie impression. Certains zéros et de uns signifie jouer un son. Certains zéros et de uns signifie prendre saisie de l'utilisateur à partir d'un clavier. Il ya toutes sortes de motifs différents, mais nous avons heureusement, en tant qu'êtres humains, que généralement besoin de s'inquiéter à propos de la programmation à ce niveau assez élevé. Et dans les classes CS d'autres peuvent vous plonger plus profondément et nous à des choses comme les zéros et des uns, ou encore d'autres choses encore. Alors maintenant, nous allons convertir cette. Passons très rapidement loin de C et de passer à quelque chose d'un peu plus réconfortant, un peu plus excitant, dans ce nous pouvons récupérer nos animations et des sons et tout ce qui clairement nous ont échappé dans ce assez d'interface primitive. Donc, ce même programme en C peut être représenté aujourd'hui dans ce langage de programmation appelé Scratch comme suit. C'est l'équivalent de ce programme Bonjour tout le monde écrit en cette langue style de puzzle appelé Scratch. Alors laissez-moi aller de l'avant et d'ouvrir ce programme très. Il a de nouveau appelé Scratch. Il est librement disponible, et c'est la même chose que nous Commencez dès aujourd'hui sur. Il s'agit donc ici Scratch, et il est divisé en un petit nombre différentes pièces. Sur la droite, tout en haut, nous avons le stade de soi-disant, et en effet, c'est là que les cookies effectué un peu plus tôt. Et sur cette scène sont des choses appelées sprites, des caractères ou des objets ou des entités. Il n'est pas vraiment important ce que vous pensez d'eux, mais ils sont programmables, les biens meubles, et dans ce cas, ce programme que notre étudiant a écrit a un couple de pain d'épice biscuits, un couple de cookies circulaires, tout un tas d' cœurs, tout un tas de lunettes. Pour cette raison, il ou elle est en mesure de programmer chacun de ces caractères individuels séparément. Maintenant, qu'est-ce que cela signifie pour programmer ces personnages? Eh bien, laissez-moi aller de l'avant et cliquez sur ce cookie main gauche et faites défiler vers le haut à gauche ici. En haut à gauche de mon écran est maintenant le dite zone scripts. C'est en quelque sorte une ardoise vierge, d'abord, sur lequel je peux glisser-déposer les pièces du puzzle qui, franchement, ne exactement ce qu'ils disent. Au sommet de cette pile de pièces de puzzle est le mot Lorsque vous cliquez dessus drapeau vert, et si vous ne l'avez pas remarqué avant, la façon dont j'ai commencé cette chanson cliquant cookie a été, littéralement, un drapeau vert. Alors que pièce de puzzle en haut à gauche il signifie que lorsque le clics de l'homme le drapeau vert, se mit à faire les choses suivantes. Maintenant, qu'est-ce qu'ils cookie de procéder à le faire? Je ne sais pas vraiment comment interpréter ce moment, mais le biscuit apparemment mis sa gorge à zéro, puis elle a attendu trois secondes, puis il a changé son groupe à l'un, puis l' attendit une seconde, puis il a changé son retour à une rainure. Et puis ce ressemble réellement un peu d'un bug, ne devrait pas avoir à changer sa gorge encore et encore sauf s'il s'agit d' étant changé d'ailleurs, mais cette série de mesures est ce qui est dicter le comportement de ce cookie particulier. Donc, nous allons effectivement revenir en arrière et de ne pas regarder quelque chose tout à fait si complexe encore. Permettez-moi aller de l'avant et allez sur Fichier, Nouveau, et obtenir une table rase. Alors maintenant, j'ai en effet une zone de script vide, une scène vide, Scratch avec notre sprite par défaut, et en haut à gauche sur mon écran je dois la palette de l'ensemble de leurs pièces de puzzle disponibles. Et nous n'allons pas passer près que beaucoup de ces choses aujourd'hui, parce que, encore une fois, la plupart sont explicites, mais nous allons essayer de les classer et de souligner les similitudes avec ces langues futures auxquelles nous allons plonger. Et en haut à gauche voici le premier drapeau vert Lorsque vous cliquez dessus, alors laissez-moi faire glisser ce par ici, un zoom arrière un peu. Et si je clique sur le drapeau vert, rien ne se passe vraiment parce que Je n'ai pas attaché toute logique, toute déclaration pour ainsi dire, à que le drapeau vert, alors laissez-moi aller jusqu'à la catégories plus ici. Je suis actuellement dans la catégorie de contrôle. Je suis plutôt aller vers le bas pour la catégorie Apparence, et il ya tout un tas de choses ici qui disent Say, Pensez, changement de costume Commutateur couleur,. Ainsi, vous pouvez faire des choses stupides avec des costumes et sons et analogues. Permettez-moi aller de l'avant et juste dire Say, et remarquez maintenant que je traîne et déposer cette pièce de puzzle, il va vouloir prendre le sein dans la forme correspondante. Alors, quand je aller de l'avant et de laisser aller de ma souris, ils ferment ensemble, et maintenant si je vais là-bas et cliquez sur le drapeau vert, le chat ne fait de dire bonjour parce que c'est ce qu'il ya dedans de cette boîte blanche. Nous verrons bientôt que cette boîte blanche est ce qu'on appelle un argument, ou un paramètre. C'est une façon de changer le comportement des, dans ce cas, un puzzle, mais si je veux dire exactement ce que j'ai dit avant, dire bonjour, monde, je peux maintenant retourner là-bas, cliquez sur jouer, et "bonjour tout le monde" est ce qui est dit. Donc, nous sommes littéralement programmer maintenant. Ce n'est pas tout ce que convaincante d'un programme, mais au moins c'est un petit quelque chose de plus convaincant que qui ressemble à première vue, comme ça. Et on peut très rapidement obtenir autant plus expressive parce que dans Scratch, comme dans d'autres langues, il ya tout sortes de déclarations, pas seulement dire ou l'impression quelque chose, mais vous pouvez faire des choses comme l'attente, comme nous venons de le voir avec le cookie, un certain nombre de secondes. Vous pouvez jouer des sons dans l'environnement de Scratch juste comme vous pouvez dans un son jeu d'ordinateur normal du programme. Vous pouvez vérifier ce qu'on appelle des expressions booléennes. Alors maintenant, nous allons commencer à ajouter à notre boîte à outils un peu de terminologie qui se rapporte effectivement à l'exemple que Joseph et moi avons fait ici avec les chaussettes. Donc déclarations ne sont que des énoncés de faits. Pour ce faire. Une directive pour le sprite, ou me l'être humain, de faire quelque chose. Une expression booléenne est quelque chose qui a une valeur, un valeur de vérité soi-disant, c'est un zéro ou un, faux ou vrai, éteint ou allumé, oui ou non. N'est pas vraiment important ce que vous pensez de cela, mais c'est un état binaire. Comme Nate discuté dans la vidéo de mercredi, deux choses différentes. Ainsi, dans Scratch, les expressions booléennes arrive de regarder comme ces objets bleus ici, et dans ce cas, la question marque implique que vous vous posez une question. Est le chat ou le sprite, touchant le pointeur de la souris? Donc, ce n'est qu'un exemple d'un bloc Scratch qui va pour nous permettre de répondre par oui ou non, est la souris de toucher le sprite à l'écran? Et cela peut être utile si vous voulez vraiment faire les choses avec votre souris. En plus des expressions booléennes, nous avons des choses comme est la souris vers le bas, de sorte que vous pouvez détecter ce genre de question ainsi. Nous pouvons faire des mathématiques, si vous voulez vraiment, et il ya utilisations en fait plus impérieuses pour ce que juste pur arithmétique, comme nous le verrons. Aléatoire pseudo et faire de votre programme semblent penser ou se comporter différemment selon certaines valeurs apparemment aléatoires, et puis nous avons des choses comme expressions booléennes comme ET. Donc, si vous voulez vraiment vérifier deux valeurs, nous le verrons dans Grattez que nous pouvons tester si ce n'est vrai et ce qui est vrai. Par exemple, dans le cas de mes chaussettes, j'aurais pu à la très fin posé la question si chaussette gauche et à droite sur la chaussette est sur, arrêter de fumer. Vous avez terminé pour la journée, alors ce serait une possibilité pour cela. Donc, nous allons aller de l'avant et essayer de reconstituer certains d'entre eux ainsi que et aller dans quelques exemples parmi les plus convaincant que celui-ci. Alors laissez-moi aller de l'avant ici et d'ouvrir quelques-uns des exemples qui sera toujours sur le site Web du cours aussi bien, et ouvrir hello2. Donc, en hello2 ici, nous avons un programme qui fait un peu choses, mais il ne le fait pas de manière aussi efficace que nous le pourrions. Donc, ici, il dit "bonjour tout le monde" pendant une seconde, puis attend pour une seconde. Et est-il à nouveau, puis refait la même chose. Donc, si je clique sur le drapeau vert, dit Scratch "Bonjour tout le monde. Bonjour tout le monde. Bonjour tout le monde. "Et ce n'est évidemment candidat maintenant amélioration. Quelle est la légère amélioration, je l'espère, nous pouvons maintenant faire si Scratch appuie le concept? Une sorte de boucle. Une sorte de répétition, maintenant, ce serait bien, permettez-moi de effectivement essayer. Permettez-moi de réellement aller avancer ce dossier. Alors préavis peut se détacher des blocs aussi facilement que vous pouvez ajouter à les attacher. Permettez-moi de passer sous contrôle, descendez ici, et en effet, il ya ce morceau de puzzle ici, Répétition et pour toujours et Toujours Si. Il ya donc un certain nombre de façons d'exprimer constructions de boucles dans Scratch. Celui que je veux sans doute ici n'est pas toujours parce que je ne que cela se produise à trois reprises, mais sans doute répéter. Permettez-moi de glisser Répéter ici, faites-le glisser et maintenant, au lieu de dire «Hello, World" à trois reprises, permettez-moi de faire glisser cette pièce de puzzle ici. Et même si elle ne semble pas correspondre, le programme est intelligent assez pour savoir qu'il passera à remplir, c'est donc la formes que la matière et non pas la taille absolue. Permettez-moi de changer la répétition à trois, et maintenant laissez-moi aller de l'avant et faire glisser Attendez une seconde là-dedans aussi. Il va s'enclencher aussi bien, et maintenant je vais glisser ces gars-là ici et plus simplement les jeter parce que je ne les avez plus besoin. Permettez-moi de faire un zoom arrière et cliquez sur le drapeau vert maintenant, et nous avons le même programme, mais, comme je l'avais prédit avant, une meilleure conçu parce que vous pouvez imaginer à quel point ce programme obtiendrait certainement esthétiquement, si vous aviez à commencer à copier-coller, copier-coller, ou glisser-déposer les mêmes choses encore et encore sacrément. Maintenant, il suffit de dire des choses sur l'écran, l'impression à la écran, vraiment tout-ce pas excitant, nous allons donc ouvrir un variance troisième ici. Et maintenant, comme vous le verrez, ça va vite ennuyeux - [MEOW] DAVID MALAN: - mais c'est aussi assez mignon. [MEOW] DAVID MALAN: D'accord, donc il vaut mieux, et nous pouvons certainement utiliser cette même transition d'arrachement ce en une boucle structure, mais nous allons la rendre plus intéressante encore. Permettez-moi aller de l'avant et d'ouvrir une variance quatrième ici, où je prendre les choses un peu plus loin. Ainsi, selon cette, idiot si ce n'est dans un premier temps coup d'oeil, ce qui est ce programme va faire? Il va miauler fois. Pourquoi? Eh bien, on est, autant que je sache, toujours inférieur à deux. Il n'ya pas de notion de hasard ici. J'ai littéralement codé en dur un et deux, mais c'est une Par exemple aujourd'hui d'utiliser effectivement une expression booléenne. Tout comme comme le fit Joseph dans son pseudo-code, l'indentation SI vous trouverez chaussettes correspondant puis procédez comme suit, ici, nous avons une expression si l'on est moins de deux PUIS - et en fait, nous avons même un peu de retrait, où le violet est légèrement en retrait à droite - Alors vous allez jouer le miaulement sonore. Maintenant, dans ce cas, que l'on est toujours inférieur à deux, donc ce est une sorte de gaspillage d'une condition. Mais nous serons en mesure, comme nous le verrons, de brancher d'autres choses dans ces espaces réservés où un et deux sont maintenant. Donc, nous allons maintenant passer à cinq d'entre eux par exemple plusieurs bonjours et regard sur ce que ce programme va faire. Alors maintenant, dans une phrase en anglais, comment cela programme se comporter? PUBLIC: Meows la moitié du temps. DAVID MALAN: la moitié Meow de l'époque, c'est donc une façon de transport une idée très simple. Même si nous arrive d'utiliser des inégalités ici en quelques chiffres, c'est vraiment juste un programmatique Ainsi, d'une manière précise, de dire si la pièce se lève la tête, aller avant et miauler. Ou à l'inverse, si la pièce se lève la queue, ne miaulent pas. Et dans ce cas, comment pouvons-nous exprimer cela? Nous allons choisir un nombre aléatoire de 1 à 10, et si cela nombre est inférieur à 6, aller de l'avant et miauler. Et comment est-ce arrivé ici? Eh bien encore une fois, notez simplement le glisser-déposer et les choses se verrouille en place. Alors maintenant, nous allons voir si cela fonctionne aléatoire. Permettez-moi aller de l'avant et cliquez sur le drapeau vert. [MEOW] DAVID MALAN: Très bien. [MEOW] DAVID MALAN: Très bien. Bon, bon, donc nous avons têtes, les têtes, queues de manière efficace. Tails. [MEOW] DAVID MALAN: chefs. [MEOW] DAVID MALAN: Excellent. C'est toujours difficile quand vient statistiquement vous obtenez un mauvais courir, et c'est toutes les têtes, et le programme ne fait pas travailler comme vous le souhaiteriez. Mais cette fois, il a travaillé, et il semble que nous avons, si nous avons fait ce nombre infini de fois, les chances de 50%. Maintenant, encore une fois, pas tout à fait intéressant, juste faire les chats miaou, alors voyons si nous ne pouvons avancer que c'est un peu plus loin ici en version six. Alors maintenant, nous avons la version très ennuyeux - [Miaule toutes les quelques secondes] DAVID MALAN: - et c'est ce qui est connu, en général, en tant que boucle infinie. Boucle infinie Donc dans ce cas, se sent mal. Il va certainement commencer à sonner mal, et pourtant infinie boucles ne sont pas toujours mauvais. Pouvez-vous penser du contexte dans les programmes d'ordinateur où vous souhaitez veulent réellement une boucle infinie? Ouais? PUBLIC: Lorsque vous voulez vérifier une condition. DAVID MALAN: D'accord, si vous voulez garder le contrôle de la situation? Comme quoi? PUBLIC: [Inaudible] DAVID MALAN: Très bien, donc si vous aviez un programme, certains genre de chose domotique, où vous voulez en permanence moniteur est quelque chose de l'affaire. Les lumières allumées? Les lumières allumées parce que peut-être vous avez une minuterie, et vous voulez qu'ils s'éteignent, vous pourriez avoir besoin de faire quelque chose encore et encore. Et en fait, en parlant de minuteries, aucun d'entre vous qui ont horloges sur votre ordinateur ou les montres numériques, c'est une boucle infinie. Il continue de mettre à jour le temps parce qu'il est constamment la vérification et le contrôle et la vérification a changé le temps, et si oui, oh, mon dieu. L'horloge a finalement changé. Il faut afficher cette valeur pour vous. Ainsi, alors que la plupart des boucles temporelles infinies sont une erreur, ou au moins une décision de conception médiocre, parfois ils le font ont leur valeur. Eh bien, nous allons progresser encore ici pour hello7. Alors maintenant, le programme sera un peu plus interactif. Permettez-moi de faire un zoom avant ici, et encore une fois, c'est ce qui est bien à propos de Scratch. Et nous allons l'utiliser pour être clair, Scratch, juste aujourd'hui et dans problème réglé la semaine prochaine. Mais lundi, nous plonger dans C. Dans ce programme ici, c'est le cas, toujours, ce qui suit. SI toucher le pointeur de la souris - maintenant, qui est la contexte ici? Eh bien, et notez que qui est sélectionné ici-bas, au fond, est juste le chat, sprite un, de sorte que ces scripts, ce programme, s'applique à lui en particulier. Donc, si ce chat est en contact avec le pointeur de la souris, puis il va de jouer ce bas et attendre deux secondes, et puis répéter ad nauseam. Alors allons-y et appuyez sur lecture. Rien ne se passe, mais si je veux caresser le chat maintenant, je ne peux tout simplement. [MEOW] DAVID MALAN: adorable. [MEOW] DAVID MALAN: D'accord, moins ennuyeux, mais obtient également terne, nous allons donc passer à autre chose et de voir si nous ne pouvons pas injecter une logique un peu plus. Ce fut par exemple sept ans. Ici dans l'exemple huit, nous allons introduire une condition ELSE. Donc, un peu comme une fourchette littérale de la route, où vous pouvez aller vers la gauche ou vous pouvez aller à droite, une condition dans une programmation langue comme le Scratch, ou comme nous le verrons C, peut vous permettre de aller dans un sens ou dans l'autre par l'intermédiaire d'un SI AUTRE construire. Donc, littéralement, SI toucher pointeur de la souris, ce jouera un son, sinon il va jouer cet autre son, miaou. Maintenant, si vous pouvez en déduire le nom de ces sons, vous pouvez probablement deviner ce que ce programme est censé évoquer l'idée d'. Ce chat miaule heureux. [MEOW] DAVID MALAN: Heureusement, mais ne tout à fait comme au toucher. [Rugit] DAVID MALAN: Alors maintenant, nous avons un chat qui va hurler à vous. Bon, eh bien, un dernier exemple avec les chats ici, et nous allons version open neuf de cela ici. Alors maintenant, nous avons le son suivant le plus ennuyeux que je ne pouvais trouver, donc nous avons un morse ou un lion de mer ici qui va procédez comme suit. [BARK SCEAU] DAVID MALAN: D'accord, donc cela va durer jusqu'à ce que vous avez compris comment ce programme fonctionne. Alors, cette fois, cet animal a deux scripts, et ce qui est intéressant ici, c'est que ces scripts vont exécuter en parallèle. Parce qu'ils commencent tous les deux par un drapeau vert cliqué, c'est comme aller comme ça, et les deux programmes lancer son exécution une fois même si elles sont toujours en boucle. Ainsi, dans le scénario haut, j'ai une certaine logique. Quelles sont les fonctionnalités qui fournissent là-haut? [BARK SCEAU] PUBLIC: [Inaudible] DAVID MALAN: Si c'est quoi? [BARK SCEAU] PUBLIC: Si sourdine à zéro, il va continuer à jouer le retentit. [BARK SCEAU] DAVID MALAN: Très bien. Donc, si en sourdine, tout ce que c'est, cette chose orange est égal à zéro, Puis reproduire ce son lion de mer et de penser "Oh, Salut, "pendant deux secondes. Maintenant, je ne sais pas ce qui est mis en sourdine, mais nulle évoque l' idée de false ou à off. Donc, si sourdine est fausse, donc si pas coupé, continuer à jouer le son. Bon, eh bien, comment peut-on désactiver cette chose? Eh bien, regardons le second script là-bas. Le second script mis en sourdine dit à zéro. Notez qu'il est également orange, alors qu'est-ce que Scratch est elle colore blocs dans l'ombre même si c'est un peu des logiquement liés. Ainsi, tout comme l'appoint en sourdine était orange, est tellement coupé ici mentionné dans le bloc d'orange. Mais cela est un affectations de variables, tellement juste comme dans algèbre, vous avez x et y et z, dans la programmation que vous avez variables, mais ils sont généralement - Arrêtons-nous un moment et la façon dont la figure pour arrêter ces aboiements. Comment puis-je faire cela? [BARK SCEAU] DAVID MALAN: Très bien. Il s'est arrêté. D'accord. Ainsi, tout comme en algèbre vous avez des variables x, y, et z, mais dans programmation, comportant des variables telles que x, y, et z est généralement désapprouvée parce qu'ils ne sont pas du tout expressif. Ils n'ont pas de signification sémantique que ce soit, si dans la plupart des langages de programmation, les variables peuvent avoir la pleine noms à part entière ou des mots ou des phrases, comme en sourdine, de dire ce qu'ils font. Donc, ce second script aussi écoutait toujours, et il a dit si la clé, l'espace du clavier, est enfoncée, point d'interrogation. Il ya donc une condition avec une expression booléenne qui est va répondre à une question soit véridique ou fausse, puis j'ai à l'intérieur de celui-ci SI la touche espace est enfoncée et SI coupé est égal à zéro, réglez coupé à un, mis en sourdine ELSE à zéro. Donc, cette autre fourche sur la route, et remarquez comment j'ai imbriquées les deux conditions IF, est un moyen de vérifier est l' Barre d'espace enfoncée, car si c'est le cas, soit je veux aller dans cette telle ou telle manière. Et comment puis-je inverser la valeur de sourdine? Je dois vérifier est-il nul? Si c'est le cas, en font l'un, sinon le faire passer de zéro à donc ses deux états. D'accord, donc nous avons alors une partie de ces droits fondamentaux constructions. Nous avons des expressions booléennes, et se rendre compte, aussi, ce sont des pas tout à fait inconnu. En fait, voici une capture d'écran rapide de Harvard cours du CS50 outil de shopping, et tout site Web qui il a cases à cocher et listes déroulantes ont vraiment tout ce temps, eu recours à Les expressions booléennes. Dans ce cas là, si vous cliquez sur la case à cocher bien entendu supérieur ou égal à 4,5, ou même à l'autre faculté, vous spécifiez une expression booléenne. Montrez-moi les cours pour lesquels cette expression est vraie. Ou vers la droite, n'entre pas en conflit avec les cours que je suis prendre, si cela est vérifié, alors oui, vous voulez vérifier cette condition, ce que vous voulez ignorer. Expressions booléennes Donc, sont en quelque sorte tout autour, mais quand nous les mettons dans des conditions, si les conditions SI, SI Elses, ou nous pouvons même simuler profond niveaux, SI SINON SI AUTRE - donc c'est une sorte d'un état ternaire. Vous pouvez aller de cette façon ou de cette façon ou de cette façon. Nous pouvons garder les choses de nidification pour aller dans des directions différentes. Donc, Scratch a ces boucles, comme toujours. Il a plusieurs fonctions comme Répétez 10, certains nombre fini de fois. Nous avons maintenant la capacité de définir des variables, alors dans ce cas J'ai déclaré, par exemple, une variable appelée chaussettes. J'ai initialisé à 0, et c'est encore une autre direction nous aurions pu prendre ici avec Joseph, où peut-être je juste garder la trace de combien de chaussettes que j'ai sur et mettre fin à le programme lorsque la valeur de cette variable est 2. Ce serait une autre façon de sorte que la généralisation problème et de faire quelque chose, encore et encore. Eh bien, nous allons aller de l'avant et de maintenant vous présenter quelques choses nouvelles. Ainsi, ceux d'entre vous avec une expérience de programmation préalable sera sais que beaucoup de langues ont des tableaux ou des vecteurs ou listes, et en effet, Scratch a quelque chose comme ça, aussi. Donc, nous allons voir si nous ne pouvons pas prendre les choses au prochain niveau ici. Si j'ai la possibilité, maintenant, avec ces pièces de puzzle à ajouter quelque chose, comme un mot ou un nombre, une variable, je ne peux commencer à accumuler des choses. Et c'est en fait assez à propos pour des choses comme des jeux, des jeux de rôle où vous êtes sorte de se promener un monde fantastique à collectionner des choses, saisir des objets, gagner des points, ou autres. Vous voudrez peut-être garder la trace de quelque sorte d'inventaire, et en effet, c'est ce que l'un de nos anciens élèves ici fait avec quelque chose qui s'appelle Fruitcraft RPG. Alors laissez-moi aller de l'avant et d'ouvrir cette chose ici, et dans Fruitcraft, nous avons ce monde jusqu'à en haut. Alors laissez-moi aller de l'avant et cliquez sur le drapeau vert. Avis en haut à gauche est une sorte d'inventaire. Cela est mis en œuvre dans Scratch que ce que nous appellerons un tableau ou une liste, et maintenant nous avons cette petite animation. Ainsi, tout comme nous avons commencé plus tôt avec cette histoire d'amour cookie, puis nous avons avancé pour les chats et les lions de mer, maintenant nous pouvons avoir des choses qui sont encore plus interactif. Et ce petit bonhomme bleu, je peux commencer à se déplacer autour de son petite maison ici. Donc il semble que il a une sortie ici-bas, donc je suis en utilisant les flèches, haut, bas, gauche, droite. Et maintenant, je suis à l'extérieur, nous allons donc c'est ce que j'ai ici. Ressemble à une orange, et en effet, dès que je touche le orange, il se laissa dans mon inventaire. Si je vais là-bas pour les cerises, maintenant j'ai quelque chose d'autre dans mon inventaire. Et tout cela est beau et mignon, mais pensez à faire, maintenant, ce est mis en œuvre. Eh bien, nous avons cette notion d'une liste, et c'est apparemment un pièce du puzzle que vous venez de dire ce que vous voulez ajouter à cela, ajouter orange, ajouter les cerises. Maintenant, ce qui est ce petit bonhomme bleu faire? Eh bien, il s'agit d'un sprite. Et sans doute, l'orange et les cerises - ils étaient eux-mêmes sprites différents. Et en utilisant les conditions dans les expressions booléennes, étudiant était probablement en mesure d'exprimer SI gars bleu cerises touchant puis ajouter les cerises mot à son inventaire, puis également masquer le sprite de cerise. Ainsi, sous le capot, il est probablement toujours une cerise sprite là. Nous avons tout simplement dit de devenir effectivement invisible. Maintenant, si je continue à marcher par ici, nous pouvons aussi le faire chose proximale, où je peux aller lire le signe. Donc, si mec bleu toucher signe, nous pouvons avoir ce bloc Say tout comme le chat nous a parlé à mots, bonjour, au début, "Got des fruits? Apportez-le à la place des fruits. "Bon, alors maintenant, apparemment, J'ai mes sens. Je peux aller là-bas au lieu de fruits, moi s'aligner avec la porte. Maintenant, je suis ici. Je peux aller jusqu'à l'homme au comptoir. Il détecte que je suis près de lui, donc il ne doit pas être tout à fait identique toucher, et j'ai gagné la partie. Donc là nous avons Fruitcraft RPG. Ainsi, nous pouvons faire des choses encore plus avancés que cela. Nous pouvons ajouter des sons. Nous pouvons ajouter un côté aléatoire pseudo. Nous pouvons ajouter de la complexité. Permettez-moi aller de l'avant ici, et plutôt que de le faire moi-même, permettez-moi de vous montrer l'un des arguments plus sophistiqués nous avons eu l'année dernière d'une certaine personne nommée Blake. Peut-on avoir un volontaire qui est à l'aise figurant sur caméra et est en place pour un jeu? Que diriez-vous là? Venez sur place. D'accord, donc le jeu que vous venez sans le savoir, volontaire pour jouer - [Applaudissements] DAVID MALAN: - C'est quelque chose d'antan appelé «Frogger». Quel est votre nom? RENDA: Renda. DAVID MALAN: Redna? RENDA: C'est comme Brenda avec un b. DAVID MALAN: D'accord, Renda. David. Enchanté de faire votre connaissance. Donc, ici, dans "Frogger", et si nous pouvions augmenter le volume juste un peu, vous êtes ce petit grenouille verte sur le fond. Vous pouvez utiliser gauche, à droite, de haut en bas, et votre but est de traverser la rue, traverser la rivière, et de toucher les feuilles de nénuphar au sommet. Aw. Un t plus - refaire, tout va bien? Laissez arrêt hit. Personne n'a vu cela. [Applaudissements] [Applaudissements] DAVID MALAN: Ouais. Très bien fait. Excellent, merci. Alors qu'il y avait Frogger. Maintenant que vous savez ce que vous avez vous mis, encore une bénévole pour un autre jeu présenté par un autre élève. Tu veux venir sur place? Quel est ton nom? RICHARD: Richard. DAVID MALAN: Richard. Très bien, Richard, allez vers le haut. [Applaudissements] DAVID MALAN: Vous avez quelque chose qui va paraître familier bientôt, alors voici vos instructions. Donc, en un instant, quelques pièces du puzzle vont défiler vers le haut à partir de l'écran qui ressemblent soit à gauche ou vers la droite vers le haut ou vers le bas. Vous allez avoir à frapper les touches fléchées de manière qu 'il répond à ces pièces de puzzle avec la queue les espaces réservés au sommet. Alors, quand vous voyez une flèche vers la gauche, et qu'elle s'aligne sur la gauche flèche, cliquez sur la flèche gauche. Vous pouvez commencer. [MUSIQUE - "FORT" Kanye West] DAVID MALAN: Très bien, salve d'applaudissements pour Richard. [Applaudissements] DAVID MALAN: Très bien fait. Merci. [Applaudissements] DAVID MALAN: fun Donc, et, apparemment, une sorte de intimidant que cela puisse être pour mettre en œuvre quelque chose d'aussi apparemment sophistiqué que cela, se rendre compte que l'étudiant n'a pas établi et il suffit d'écrire tout cela à la fois. Au contraire, vous pouvez décomposer un problème en apparence complexe car cela en morceaux beaucoup plus petits, et cela, aussi, est va être un thème. La pire chose que vous pouvez faire dans la rédaction d'un programme dans la plupart toute la langue est de s'asseoir, être vraiment excité, écrire le toute fichue chose, et puis juste espérer que cela fonctionne par le fois que vous avez fini d'écrire. Au contraire, le processus de programmation doit généralement être très délibérée, très itératif, par lequel vous venez de mis de très petits pas pour vous-mêmes, bouchées voulez-vous mordre, et que vous avez ces sanity contrôles, les jalons petits que vous pouvez rencontrer. Et puis vous construire au-dessus de ceux à créer plus choses sophistiquées encore. Ainsi, par exemple, comment pourrions-nous faire pour la mise en œuvre d'un jeu comme celui-ci? Eh bien, franchement, je serais certainement commencer par simplement une clé de support à la fois. Disons simplement implémenter un support pour la flèche gauche. Ainsi, l'élève devait en quelque sorte créer dans Photoshop ou dans Se gratter à l'aide de l'éditeur graphique peu, un flèche qui ressemble à celui en haut à gauche là, juste l'espace réservé gris. Ensuite, l'élève devait comprendre ce que x, coordonnée y l'a dit, où le mettre dans la fenêtre. 0, 0 est ici, alors vous devez déterminer le nombre de pixels, ou points, pour compenser cette flèche de le haut de l'écran. Et puis une fois que c'est en place, votre programme ne fait pas rien encore, si vous avez besoin alors d'un sprite seconde, pour par exemple une flèche verte qui est également orientée vers la gauche, et vous devez alors commencer à écrire des scripts pour elle. Et vous remarquerez peut-être que ces choses ont commencé à venir à des vitesses différentes, et les couleurs étaient différentes endroits, et c'est parce que l'élève a utilisé un peu de aléatoire pseudo. Et par hasard pseudo, je veux juste dire choisir un nombre entre quelque chose et quelque chose parce que vous pouvez les choses commencent à carte, comme si le nombre est compris entre un et cinq ans, eh bien, nous allons faire la chose verte. Si c'est entre 6 et 10, nous allons faire la pièce de puzzle rouge à la place. Tant que vous avez un moyen de générer une sorte de aléatoire, vous pouvez alors prendre des décisions basées sur ce que aléatoire. Et je continue en disant pseudo aléatoire parce qu'il ya une petit secret sale. Ordinateurs ne peuvent pas venir avec des nombres aléatoires. Ils peuvent seulement faire ce qu'on leur dit, car ils sont fabriqués par l'homme appareils. Ils ne peuvent pas deviner un nombre comme nous, les humains se sentir comme nous le pouvons. Un ordinateur doit faire quelque chose de mathématique pour évoquer l' illusion de nombre mathématique, parfois à l'aide de la jour en cours du temps comme une contribution à comprendre ce que Numéro de revenir, mais plus sur cela une autre fois. Pour l'instant, sachez simplement que nous pouvons générer aléatoire pseudo. Donc, une fois que j'ai la capacité pour la flèche gauche pour démarrer apparaissant à des moments différents et à des vitesses différentes, Je ne peux revenir en arrière et ajouter un peu de ces conditions IF. SI ce sprite est en contact avec l'autre, et la flèche gauche touche a été pressée - donc trois conditions dans ce cas. Je peux utiliser ce bloc AND peut-être, dans ce cas - Ensuite, je veux aller de l'avant et incrémenter le score. Et au sommet, nous avons un score, nous avons Awesome, Cool, bonne, et Boo. Donc, il ya apparemment cinq variables que cet élève utilisé pour garder la trace de ces diverses mesures. Donc, en résumé, le résultat final est étonnant. C'est amusant, c'est fun à jouer, il est engageant, mais ce n'est pas où l'étudiant a commencé. Il ou elle a commencé à un ensemble plus petit d'étapes. Quels sont donc les autres blocs de construction que nous pouvons tissent dans ces programmes? Eh bien, il ya cette autre concept dans la plupart des langues, Grattez parmi eux, connu en tant que fils. Alors qu'un ordinateur puisse réellement pas vraiment faire de multiples choses à un temps, du moins pas en général. Au contraire, un ordinateur possède généralement un seul processeur, et même si les ordinateurs sont super rapide et peut, par conséquent, créer l'illusion de faire plusieurs choses à la fois - vérifier votre courrier, obtenir un instantané message, l'impression d'un document - vraiment, un ordinateur est juste de sauter de l'impression à IMing à envoyer, le dos et le dos et d'avant en arrière si vite que nous lents humains witted ne réalisent pas que c'est en fait exécuter ces programmes un peu à la fois. Maintenant, cela un peu de blanc se trouvent ces jours-ci parce que, de nos jours, beaucoup de nos ordinateurs sont ce qu'on appelle multi-core, de sorte que vous avoir un CPU, mais plusieurs cœurs, ce qui est un peu comme ayant plusieurs processeurs. Et si parfois, les ordinateurs peuvent vraiment faire des choses multiples à la fois, mais généralement au sein d'un programme, des programmes s'appuyer sur ces choses appelées threads. Donc, un thread est un peu comme un programme miniature qui peut coexister avec un autre programme miniature et peut fonctionner en parallèle, ou du moins peut être exécuté sous l'illusion que ils courent simultanément. Donc Scratch soutient ces choses appelées threads. Vous pouvez avoir plusieurs scripts d'exécution à la fois, comme nous l'avons fait avec le lion de mer, ce qui nous permet de réellement alors les interactions entre ces sprites. Permettez-moi aller de l'avant ici et tirer vers le haut, disons, les threads et jouer ce comme suit. Nous avons deux sprites, chacun d'entre eux que nous allons voir a juste un script. Et vous remarquez qu'il semble y avoir une certaine intelligence dans le chat dans celui-ci parce qu'il se rapproche - [Rugit] DAVID MALAN: - et plus proche du petit oiseau. Alors, comment est l'exploitation d'oiseau? Eh bien, nous allons jeter un oeil à la première volaille. Le script oiseau dit alors que le drapeau vert est cliqué, aller à x est égal à 115 et négatif y est égal à 150. Donc, je viens de comprendre un emplacement aléatoire où je voulais l' oiseau de commencer, et je lui laissais là par défaut. Puis, toujours si pas toucher chat, c'est donc un autre type de construction de boucle, mais même idée, faire cela à nouveau et encore et encore. Tant que vous n'êtes pas en contact avec le chat, déplacer trois étapes, et si vous êtes sur le bord, le rebond, où il est une sorte de réflexion dans le sens de billard. C'est comme ça que l'oiseau se déplace autour genre de apparemment au hasard, mais c'est juste parce que ça rebondit les murs dans ce cas. Le chat, quant à lui, est une sorte de tricherie. Le chat, quand le drapeau vert est cliqué, oui, commence à un certain endroit, un endroit au hasard - au moins en partie selon le choix aléatoire bloc vert là-bas - et puis pour toujours si touchant l'oiseau, le son du lion, puis stopper. Alors, quand j'ai dit mettre fin ou de quitter avant la fin, il ya un casse-tête pièce de Scratch qui va juste tuer le programme à ce signaler parce que c'est une sorte de logique fait. Mais sinon, ici, notez ce qui va se passer. Pointent vers l'oiseau et se déplacent d'un pas. Donc, de ce point vers l'oiseau est une sorte d'avantage le chat a en ce qu'il est se focalisant sur l'oiseau en mouvement, et nous pouvons maintenant faire de ce programme d'autant plus intéressant. Au lieu d'aller une étape à la fois par cycle de la CPU, par frapper péage de la cloche, pour ainsi dire, laissez-moi aller de l'avant et déplacer, disons, cinq marches à la fois que le chat. Cliquez sur Exécuter, et maintenant il lui trouve vraiment rapidement. Si on double ce à la suite de 10 étapes, il sorte de va droit pour lui. Maintenant, nous pouvons donner à l'oiseau, peut-être un petit avantage. Allons à l'oiseau et de dire au lieu de déplacer trois étapes, Passons lui 30 marches. Mais il a toujours été pris à la fin. Donc, ici, nous avons deux threads. Il est incarcéré à rayures avec deux scripts et deux sprites, mais l'idée dans d'autres langues, c'est que vous pouvez écrire, pour l'essentiel, de trop nombreux programmes de ce genre et ont de les exécuter réellement ou imaginairement, en parallèle. Maintenant, il ya aussi cette notion dans la programmation connu sous le nom événements, et c'est quelque chose que nous ne verrons pas dans C, les langue connue sous le nom C. Nous le verrons vers la fin du semestre dans la programmation web, lorsque nous introduisons JavaScript et le notion de construction des pages web qui sont dynamiques et interagir avec les utilisateurs. Donc dans ce cas, nous avons un exemple très simple de deux sprites, garçon et fille, chacun d'entre eux ont leur respectif discussions, mais de toute façon ces deux sont inter-communication par voie de ce qu'on appelle les événements. Alors laissez-moi aller de l'avant ici et zoomer sur le script de l'enfant, qui ressemble à ceci. Lorsque vous cliquez drapeau vert, toujours faire ce qui suit. Si la touche Espace ou la barre d'espace, est pressé, par exemple Marco pendant deux secondes, c'est purement esthétique sur le écran, une bulle peu, mais ensuite diffusé. Ainsi, la diffusion est un autre morceau Scratch c'est représentant d'une classe de fonctionnalité à programmer qui permet aux différents programmes, fils différents, pour inter-communiquer, en quelque sorte envoyez messages, une à l'autre. Le passage d'un morceau de papier en classe est une sorte de basse technologie équivalent. Donc Evénement de diffusion. Je peux envoyer ce message, et le mot événement est complètement arbitraire. Scratch a parfois ces listes déroulantes, alors j'ai juste venu avec un mot au hasard comme événement parce que maintenant, ce que le garçon ne lorsque j'appuie sur la touche est-il diffuse cet événement. Et si je regarde maintenant le script de la jeune fille, son script est super simple, car tout ce qu'elle doit faire est de ne pas agir quand le drapeau vert est cliqué. Elle est conçue à l'action quand elle reçoit entre guillemets, «Événement», et à ce moment, elle écoute donc pour l'événement que l'on appelle encore et encore. Dès qu'elle reçoit cet événement, elle va crier Polo pendant deux secondes. Et ainsi vous pouvez peut-être déduire exactement ce que le résultat suivant va être. Permettez-moi de cliquer sur le drapeau vert. Rien ne se passe parce que je dois faire quoi? PUBLIC: barre d'espace. DAVID MALAN: barre d'espace. Garçon dit Marco, jeune fille dit Polo. Mais ce n'est pas codé en dur en soi. C'est l'intercommunication entre les scripts, donc maintenant nous ont la capacité de rendre les programmes plus complexes où ces deux sont en quelque sorte inter-communication. Donc, dans ce sens peut-on aller? Eh bien, dans la série problème 0, vraiment, l'objectif est de amusez-vous avec Scratch. Pour l'édition pirate, vous, au lieu de s'amuser avec un plus version sophistiquée de Scratch appelé BYOB, Build Vos propres blocs, mais l'idée est la même. Vous serez en mesure - Oui, c'était délibéré. Il venait de Berkeley. BYOB est la version pirate de cette édition, mais les deux , les données démographiques, édition standard et l'édition pirate aussi bien l' objectif à portée de main pour la semaine à venir est vraiment jeter à l'eau profonde, se salir les mains avec la programmation, et de faire quelque chose d'intéressant, de faire quelque chose interactif, faites- quelque chose d'artistique, faire quelque chose d'amusant à fait démontrer, de sorte que d'ici la fin de la semaine, vous avez un projet, non seulement pour votre première CS50 pset, mais vous aurez une petit quelque chose que vous pouvez montrer au Annenberg pour des amis ou de la famille, même en le téléchargeant sur le site du MIT. Et donc, comme je l'ai dit, le mercredi, nous nous attendons à 90% de la classe, généralement, faire les éditions standard. Se rendre compte que il ya aussi cette sortie pour ceux d'entre vous qui pourraient autrement se trouver un peu ennuyé avec les bases et je veux vraiment plonger et à élaborer une vision que vous avez déjà avoir avec fond avant dans ce plus convivial environnement. Permettez-moi de tirer vers le haut un autre exemple que l'un de nos anciens les étudiants ont ici fait et dire un petit quelque chose à travers la chanson. Que, de même, que celle-ci joue, pensez à comment vous allez mise en œuvre de ce programme en utilisant précisément ces mêmes blocs de construction, un peu de hasard et un pseudo, peu de chanson familière. Si nous pouvions augmenter le volume un peu? [MUSIQUE - "Il pleut des hommes" The Weather Girls] DAVID MALAN: C'est tout pour CS50. Nous vous verrai lundi. [Applaudissements]