[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.
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]
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]