>> DAVID MALAN: C'est CS50, et cette est le début de la première semaine.
Et ce que nous avons pensé faire est de tirer en arrière le rideau d'un dispositif que beaucoup
vous avez probablement passé devant maintenant pendant des années, mais peut-être jamais tout à fait
sait ce que c'est.
Donc, ce dispositif va probablement chercher familier à la plupart d'entre vous, maintenant.
>> [LECTURE VIDEO]
>> -Un triomphe de mathématique et compétence en mécanique est cette grande nouvelle
Calculateur automatique à Université Harvard.
Problèmes complexes en mathématiques mis à travers la machine dans une forme codée sur
bande sont résolus avec précision en une minute fraction du temps nécessaire pour que
calcul humain.
>> Conçu pour accélérer toutes les formes de recherche mathématique et scientifique,
le cerveau mécanique géant travailler pour les Etats-Unis
Marine jusqu'à la fin de la guerre.
>> [FIN LECTURE VIDÉO]
>> DAVID MALAN: C'est ce que vous voyez dans le Centre des sciences, qui est l'endroit où
cette machine est maintenant logé.
En fait, vous ne voyez partie.
Seule une partie est actuellement exposé, et c'est un dispositif appelé
le Mark I, et c'était essentiellement Un très gros calculatrice.
Il a été remplacé par le Mark II, et c'est à partir de la Mark II qui nous fait
obtenir un peu de lexique.
>> Il s'agit du premier cas connu d' quelque chose que vous êtes sur le point de devenir tout
trop familier avec sur la cours du semestre -
à savoir, un bug.
Alors, il s'est avéré qu'à un moment la marque II appareil ne fonctionnait pas
correctement, et regardant de plus près, il y avait effectivement un bug - un papillon -
qui moth -
à l'intérieur.
Et depuis, nous avons appelé erreurs dans les programmes que les bugs.
Donc, plus sur cela pour venir.
>> En parlant de vidéo, ainsi, si vous ont pas encore, sachez que CS50 est
évidemment filmé.
Les cours vont généralement tout de suite après classe dans une sorte de pré-version
Format inédit, et puis un jour ou deux plus tard, nous avons mis en place une plus haute résolution
et une version de meilleure qualité.
Vous vous souvenez peut Vanessa, qui a eu l' fortune de jouer avec Google verre,
qui je me suis souvenu d' facturer le temps.
Donc, si vous voulez venir après la classe et jouent, ils devraient travailler aujourd'hui.
Et si vous voulez voir ce que Vanessa vu l'autre jour, ce que vous verrez
ici - permettez-moi de soulever le volume ici sur mon portable.
>> [LECTURE VIDEO]
>> -Alors, permettez-moi de file, ce n'est en place.
Très bien.
Donc toucher cela.
Très bien.
OK, Glass.
Enregistrer une vidéo.
>> Très bien.
Vanessa?
>> [FIN LECTURE VIDÉO]
>> DAVID MALAN: D'accord, donc la raison que cela n'a pas fonctionné pour la plupart d'entre vous à
la fin de la classe parce que je me rendis à enregistrer une heure de cette
images montrant moi-même après Je mets les lunettes vers le bas.
Donc, aujourd'hui, je vais laisser les enlever, mais remercie vous à Vanessa d'avoir un tel
Sport bon.
>> Pendant ce temps, quelques annonces avant que nous allons de l'avant aujourd'hui.
Donc un, CS50 a une tradition de faire ce que nous pouvons pour essayer de faire une très
grande classe se sentent plus petits.
Et à cette fin, plus tous les vendredis, nous nous réunissons dans un restaurant
la place, Fire and Ice, avec 30 ou 40 de vos camarades de classe, moi-même, quelques-uns des
le personnel enseignant, et nous venons d' un déjeuner très décontracté.
Nous invitons souvent des amis de l'industrie, anciens élèves de la classe, les anciens élèves de l'
collège, vraiment juste pour discuter chaque autre place, parler de la vie après
université, la vie au collège, et analogues.
Donc, si vous souhaitez participer à cette d'abord comme le déjeuner ce vendredi à
13h15, rendez-vous que URL à un moment donné.
>> Les places sont limitées, donc nous allons faire premier arrivé, premier servi.
Mais nous ferons cette fois sur un thème récurrent base, donc ne vous inquiétez pas si vous n'avez pas
en faire ce premier lot.
>> Maintenant, en ce qui concerne les ressources fournies curricularly en cours,
il ya tout un tas, et si vous ne l'avez pas tiré vers le haut le site Web du cours
déjà, en particulier, dans des conférences, vous verrez que tout
nous n'avons semaine dernière est là, à la fois en vidéo et en quelque sorte
la forme électronique.
Mais au-delà des vidéos, vous y trouverez qu'il ya maintenant texte intégral
transcriptions, par exemple, de chaque conférence.
>> Donc, si on fait revenir à l'écran ici avec Vanessa, et naviguez
dans le coin inférieur de l'écran, vous vous rendrez compte que effectivement, non pas pour
La conférence de vendredi, mais si nous revenons à Mercredi puisque cette fonction prend un
quelques jours, vous verrez que vous pouvez effectivement tirer vers le haut, pour le meilleur ou pour
Pire encore, chaque mot que j'ai ou un bénévole sur scène dit.
Et plus que cela.
Vous pouvez réellement chercher, vous le pouvez cliquez sur l'une de ces peines, sauter
à ce point dans la vidéo, le tout vers et à la fin de la fabrication du matériau d'autant
plus navigable.
>> Mais si vous préférez ne pas le suivre dans de tels détails, vous trouverez, pour
Ainsi, ce petit menu ici pour 1.5x vitesse, vitesse 2x, ou i f i déjà
parler trop vite pour vous, la vitesse 0.75x.
Donc réaliser tout cela est il disponible pour vous.
>> Mais au-delà, pour des conférences, réaliser que nous faisons aussi ces ressources
disponibles.
Diapositives, exemple de code, tout ce que je faire sur scène ou à l'avance de la classe,
nous y afficherons afin que vous puissiez jouer le long de la maison ou dans Sanders.
Mais ce que nous avons pensé que nous faisons année pour la première fois est également
vous fournissez des soluces de ces exemples.
De plus en plus, comme je l'ai réfléchi sur l' valeur des conférences de CS50, j'ai commencé
à la question à quel point il est utile pour vous les gars de s'asseoir là, pour moi de me
ici, et pour moi de parler de vous, en particulier en tant que matière, l'
exemples, deviennent plus complexes.
Parce que toujours, après un certain nombre de minutes, quelqu'un zone out, et
puis vous oubliez une idée clé de certains par exemple, et puis vous êtes essentiellement
parti pour la partie restante de la classe, ce qui n'est pas le meilleur usage de
votre temps, ou, en réalité, la nôtre collectivement comme une classe.
>> Et donc ce que nous avons pensé que nous essayons de faire, en particulier pour une partie de la plus
exemples complexes que je ne pourrais pas faire justice en classe, que l'on ne pourrait pas
avoir du temps pour en classe, ou vous pourriez juste zone pendant, c'est que nous allons produire
une série de procédures pas à pas de ces exemples de sorte que si vous allez à, pour
Ainsi, la page vidéo de vendredi dernier ici en vertu exemples, vous verrez que
pour le vendredi, il ya maintenant cette lien vers soluces.
Et le format de ces va changer au fil du temps.
Pour l'instant, nous sommes en utilisant un simple YouTube playlist.
>> Mais ce que j'ai fait avec notre équipe de production par la suite été marcher à travers chaque
et chacun de ces exemples, encore une fois, j'espère en soulignant de façon beaucoup plus
clarté exactement ce que les plats à emporter pourrait être ou devrait être de chacun.
Ainsi, vous trouverez, par exemple, de la dernière semaine, tous les exemples de grattage
nous avons traversé sont fait linéairement de cette façon.
Alors n'hésitez pas à participer ou non s'engager dans cette matière.
Vraiment un thème de ce cours particulier c'est qu'il ya probablement plus
dans la façon de ressources que vous pourrait absorber plus
Au cours d'un semestre.
>> Mais c'est délibéré.
Il est destiné à être afin que vous aussi élèves peuvent choisir eux-mêmes
en fonction de votre style d'apprentissage.
Donc, si des conférences travailler pour vous, tant mieux.
Si sections travaillent pour vous, tant mieux.
Si soluces travaillent pour il vaut mieux, tant mieux.
Ce sera vraiment à vous de choisir quelles ressources fonctionnent le mieux pour vous.
>> Enfin, grâce à un ancien élève de l' Bien sûr, nous fournissons également une canonique
ensemble de notes de découpe.
Alors plutôt que de vous les gars têtes dans des conférences griffonner
choses qui viennent en classe, nous, les personnel, vous donnera ce que nous
sentir sont un ensemble canonique de notes vous libérer de cette distraction, de sorte que
Si vous êtes ici et engagé, vous êtes véritablement engagé avec ce qui se passe,
avec vos camarades de classe font sur scène, avec ce qui se passe sur l'écran,
et non pas simplement écrire verbatim ce qui est arrivé à avoir été dit.
Donc, réaliser l'ensemble de ces ressources sont à votre disposition.
>> Coupe, en réponse à une FAQ, débutera ce mercredi.
Nous attendons essentiellement qu'après plus autres classes sont faites pour que nous puissions
minimiser le nombre de changements que nous devons faire.
Mais venir ce week-end, à partir Dimanche sera une instance de temps de
ce que nous appelons sections plus.
Ceux-ci seront filmés pour ceux qui ne peuvent pas assister, et essentiellement, l'
les têtes des cours va nous guider à travers quelques-uns de la partie C de la formation,
vers une fin de set un problème, qui va être notre premier C en fonction
problème posé.
Et ce sera juste sections facultatives en prévision de ce qui va
devenir sections récurrentes menées par plus de 50 ans de la cours
enseignement boursiers hebdomadaire.
Le dimanche ou lundi ou le mardi, nous avoir 90 sections minute dans une très
sens traditionnel du terme, qui sera opportunités pour les mains sur et plus
examen intime de l' le matériel de cours.
>> Sans plus tarder, permettez-moi de vous présenter les têtes de cours, qui sont
dans les coulisses avec moi, faisant tout arrive.
Si ceux qui sont ici aujourd'hui pourrait se joindre à moi, Rob et Lauren et Joseph et Lucas, tous
d'entre eux ont été avec l' cours depuis un certain temps.
RJ est le troisième membre de notre équipe.
Il ne pouvait pas être ici aujourd'hui, mais il m'a demandé de montrer une photo de lui.
Je ne suis pas sûr qu'il voulait cette , mais là il est.
>> Et permettez-moi de permettre à l'équipe de dire bonjour et se présenter afin que
vous apprenez à les connaître ainsi que votre propre adjoint à l'enseignement ce terme.
>> LAUREN CARVALHO: Salut.
Mon nom est Lauren Carvalho.
Je suis un tuteur résident dans Leverett House.
Je suis aussi super excité d'être un TV de tête pour CS50 cette année.
>> CS50 est une classe très difficile aussi bien comme une très grande classe, donc si vous
avoir des inquiétudes, si vous avez envie vous êtes en retard, n'hésitez pas à
tendre la main à chacun d'entre nous à heads@cs50.het, ou à moi, si vous voulez
envie de jouer avec mon or retriever chiot.
Voici Lucas.
>> LUCAS FREITAS: Hey, les gars.
Mon nom est Lucas Freitas.
Je suis un junior [inaudible]
l'informatique et la linguistique.
Je suis en fait du Brésil, et j'ai aussi réaliser des études est-asiatiques.
Donc, si vous avez des questions sur l'informatique ou de la langue ou
rien, laissez-moi savoir.
Ou CS50, en particulier.
>> JOSEPH ONG: Salut.
Je suis Joseph.
Je suis un ordinateur principal l'étude la science dans Elliott House.
Donc, nous allons voir.
Vous me voyez autour de la réalisation un de ces énormes caméras.
Je suis le photographe de personnel résident pour 50 aussi bien, et souvent les étudiants
confondre parfois moi un touriste asiatique.
>> Donc, si vous me voyez avec une caméra, ne fuyez pas.
Juste sourire et ne soyez pas timide.
Et j'espère que vous apprécierez 50.
Je l'ai beaucoup apprécié lorsque je l'ai pris, et c'est pourquoi j'ai été TFing pour
ces trois années.
>> ROB BOWDEN: Salut.
Je suis Rob.
C'est ma quatrième semestre avec CS50.
Je viens de terminer en mai.
J'étais à Kirkland.
Je suis excité pour ce semestre, et j'espère que vous l'êtes aussi.
>> DAVID MALAN: Merci pour cette année têtes, et à RJ ainsi.
>> Alors quelques notes finales sur les ressources.
Un, p réglée 0 est déjà en place.
Celui-ci n'existe que dans la norme édition, qui est destiné à l'
intégralité de la classe.
Commençant par P set 1, il y aura éditions pirates de la plupart des séries de problèmes,
qui, encore une fois, portera sur le matériel avec un peu plus d'un défi, tandis que
encore toucher à certains les mêmes sujets.
Ne jetez un oeil sur le site de cours pour cette spécification, pour p set 0.
>> Les heures de bureau, aussi, vont commencer cette semaine, ce soir, demain, mercredi,
et jeudi dans divers restaurants salles sur le campus.
Découvrez cs50.net/ohs pour le bureau heures pour le cours, et de réaliser cette
sera occasions très occasionnels, Certes, au début de l'
semestre, à trouver avec votre ordinateur portable pendant la pause du cerveau.
Apportez des amis et discuter le Les facteurs de transcription et des AR de cours avec une
questions que vous pourriez avoir.
>> Et je ne peux pas souligner assez, même pour rayures et problème set 0, il
C'est vraiment pas de question stupide.
Il n'est pas trop inconfortable étudiant poser des questions.
S'il vous plaît n'hésitez pas à profiter de cette ressource.
Il sera là cycliquement tout au long du semestre,
Comme on CS50 Discuter.
C'est discussion du cours en ligne Créer un forum à cette adresse là.
>> Ce que nous allons aussi le faire au cours de conférences est également surveiller ce, grâce à la
L'équipe pédagogique du cours.
Et donc, si vous avez une question pendant conférence, parce que j'ai dit quelque chose
mal ou pas du tout, par tous les moyens, demandez que en temps réel si vous avez votre
ordinateur portable ou de téléphone sur le site, et nous ferons de notre mieux en temps quasi réel
répondre à cela.
>> Y at-il des questions sur CS 50?
Puis une dernière note de la mine.
Cette question de la SAT UNSAT.
Comme vous finalisez vos cartes d'étude, si vous ont pas encore, sachez que le
vision globale de la SAT UNSAT, disponible pour tous les étudiants, c'est vraiment
pour aider à prendre le bord d'un cours comme ça, pour ainsi dire, de sorte que si vous
vous trouverez tard dans la nuit, deux heures, trois heures, cogner vraiment votre tête contre
le mur où vous savez que vous êtes 99% le chemin jusqu'à la fin, mais vous
avoir tellement d'autres choses à faire, Je pense qu'une meilleure utilisation, souvent, de
le temps des étudiants est de se déplacer en effet à ces autres choses afin que vous puissiez
optimiser votre temps tout autour.
Et SAT UNSAT est un mécanisme par lequel vous pouvez prendre le confort dans le fait
que 99% de la façon dont il est encore sacrément bon.
>> De même, aussi, si vous êtes dans l' Bien sûr sans fond avant ou
pas autant que vous le fond penser vos camarades pourraient avoir, vrai
ou faux, se rendre compte que c'est une possibilité de se salir les mains
avec le cours, mettez vos orteils dans l' eau, pour ainsi dire, un peu comme je me
a fait il ya quelques années avec succès / échec.
Comme je l'ai dit la semaine dernière, a eu ce cours, comme d'autres, ne sont plus disponibles
réussite / échec à l'époque, je n'aurais probablement pas avoir jamais mis les pieds dans
la classe, même si je le faisais, cinq semaines plus tard, me changer les idées, qui vous
peut aussi bien, et passer à ou de la lettre statut graduée.
>> Très bien.
Nous avons donc examiné ce genre de choses sur Vendredi, et nous sommes très rapidement aller
la transition vers quelque chose qui ressemble plus énigmatique aujourd'hui.
Mais c'est tout de même le même idée fondamentale.
Quel était le terme général qui nous utilisé pour décrire une pièce de puzzle
qui ressemblait à ça?
>> Ainsi, une déclaration.
Et vous pouvez appeler cela une certain nombre de choses.
Mais nous allons l'appeler simplement une déclaration, et une déclaration
raconte juste le programme -
ou dans le cas de Scratch, le sprite -
de faire quelque chose.
Dites bonjour dans ce cas.
>> Quelque chose comme cela, nous au lieu appelé quoi?
Ouais, donc une expression booléenne.
Une expression booléenne est juste quelque chose cela est vrai ou faux, et ainsi de Scratch
les dessine avec cette forme, mais aussi avec un point d'interrogation pour transmettre l'
idée que la réponse à cette question est vrai ou faux, oui ou non
une, 1 ou 0.
>> Et nous utilisons ces expressions booléennes à l'intérieur de constructions de ce genre, qui
nous avons appelé quoi?
Ainsi, l'état ou de la branche.
Et la condition que vous voyez ici en Scratch est un espace réservé pour un peu
pièce du puzzle de cette forme, le but de ce qui est pour que vous puissiez
faites-le glisser et déposez-le sur le dessus et puis dicter au programme si ce Boolean
expression est vraie, faire de cet ensemble de instructions, cet ensemble de déclarations,
d'autre le faire cette autre série des instructions.
>> Et rappeler que vous pouvez nid ces choses.
Même s'il n'y a pas beaucoup de place visuellement dans ce morceau de puzzle, Scratch
va grandir et rétrécir pour s'adapter à n'importe quel pièces de puzzle vous glissez-déposez dans
là si vous pouvez réellement nid et cette une fourche à trois voies de la route.
Si, d'autre if, else.
Et vous pouvez même aller plus loin en imbrication supplémentaire et davantage si nécessaire.
>> Alors, enfin, nous avons vu des constructions comme cela, autrement connu comme une boucle.
Et c'est juste quelque chose qui ne quelque chose encore et encore et encore.
Dans ce cas, il arrive à être un ensemble fini nombre de fois, mais nous avons également
a vu un exemple où le nombre de temps est venu d'une variable, il
pourrait changer.
Et nous avons aussi vu un autre bloc tout appelé un bloc toujours que
nous a permis de boucler infiniment long.
>> Donc, une autre construction que Scratch 2.0 a - et ceux d'entre vous plus
confortable avec un fond avant sont déjà bien familiarisé avec cette
construire -
ces choses que nous avons appelé quoi?
Nous avons donc appelé ces fonctions, autrement connu sous le nom des procédures.
Il ya une légère différence sémantique, mais nous les appelons juste des fonctions.
>> Et une fonction, dans le cas de Scratch, est une pièce du puzzle personnalisé
vous pouvez créer vous-même afin que vous ayez une nouvelle pièce du puzzle que, dans ce
cas, serait appelée toux, qui figure parmi tous les autres
pièces de puzzle disponibles dans Scratch.
Même si MIT n'a pas inventé cette pièce de puzzle, vous avez fait.
>> Ainsi, une fonction vous permet de créer de nouveaux comportement, donnez-lui un nom de fonction, et
puis l'appeler, pour ainsi dire.
Vraiment l'utiliser dans les programmes de nouveau et encore et encore sans avoir à attendre
pour quelqu'un comme MIT sur la route de inventer de nouvelles fonctionnalités à partir de zéro.
Vous pouvez construire vous-même ces casse-tête pièces vous-même, puis les réutiliser
dans vos propres programmes.
Et nous allons voir un exemple récurrent d'aujourd'hui et au-delà.
>> Donc, aujourd'hui, nous passons maintenant à quelque chose de plus mystérieux.
Mais à la fin de la journée, quelque chose plus puissant et plus expressif et plus
représentant le chemin que nous serons sur tout au long d'une session numéro
des langues -
que de code ou le code source.
Et le code source, il s'avère, n'est pas ce qu'est un ordinateur
typiquement fonctionne réellement.
Le code source ressemble à quelque chose comme ça.
>> Il s'agit donc, encore une fois, peut-être le plus simple programme, nous pouvons écrire dans un
langue appelée C. Nous allons commencer à taquiner cette part avant longtemps, et si
ce vraiment ne ressemble grec vous dès maintenant, croyez-moi.
En seulement une semaine ou deux de son temps, cette sera trop familier et en fait
tout à fait représentatif de plus en plus exemples complexes avec laquelle vous serez
également obtenir plus confortable.
>> Mais vous ne pouvez pas exécuter cette sorte de code habituellement.
Vous devez en faire quelque chose qui l'ordinateur se comprend.
Et pour cela, nous avons besoin de quelque chose nous allons appeler un compilateur.
Un compilateur est un programme qui prend code source, comme vous venez de le voir, comme
l'entrée, et il produit des zéros et ceux que la production, autrement
connue sous le nom de code objet.
Et ce sont ces zéros et de uns que les pourrait ressembler tout à fait comme cela que
finalement compris par votre Mac ou votre PC.
>> Si vous avez déjà entendu parler de la commercialisation expression Intel Inside, qui vient
signifie qu'une compagnie appelée Intel a fabriqué l'
cerveau de votre ordinateur -
autrement connu comme le CPU, Unité centrale de traitement -
et c'est juste la chose qui comprend les modèles
des zéros et des uns.
Et en convertissant le code source en code objet à travers ce processus ici
que nous ferons avec un couple de commandes en juste un peu, vous êtes
la création de modèles de zéros et de uns que les employés d'Intel ont
décidé de représenter certaines déclarations.
>> Maintenant, je ne sais pas très bien qui est ce qui vient en regardant
ces zéros et de uns.
La plupart des gens ces jours-ci n'en ont pas.
Mais quelque part là-bas est un modèle de zéros et de uns qui représente l'
déclaration impression.
Quelque part dans il pourrait y avoir un autre un ensemble de zéros et de uns qui
représenter la notion d'éternité ou répéter 10 fois ou même meow, si c'est
en fait un programme qui peut inclure certains sons.
>> Donc en bref, les humains ont tout simplement décidé, un peu comme nous l'avons fait pour ASCII -
pour les lettres de l'alphabet de la semaine dernière - les humains ont décidé que, même
des modèles plus complexes de zéros et de uns représenter des comportements plus complexes
comme l'impression ou de dire ou miauler.
Et pour aujourd'hui, et largement en avant au cours du semestre, nous allons prendre pour
acquis que quelqu'un a compris comment faire la cartographie.
Mais nous, en accord avec cette idée d' stratification sur le dessus du travail des personnes
qui sont venus avant nous, aura pour acquis le fait que cela se passe
sous la hotte.
Mais nous sommes beaucoup plus intéressés par construire des choses qui sont plus
intéressant sur le dessus de tout cela.
>> Et en effet, le premier programme nous a écrit dans Scratch était ce super simple
un, Bonjour tout le monde.
Et vous pouvez penser à cela comme étant l' programme principal qui régit Scratch de
comportement de vendredi dernier.
>> Aujourd'hui, nous allons commencer à traduire Grattez les pièces du puzzle en
code source dans ce langage appelé C de sorte que ce qui ressemblait à ceci sur
Vendredi, à partir d'aujourd'hui en avant, est va maintenant ressembler à ceci.
Certes plus énigmatique.
Il est assez distrayant et sorte de l'esprit engourdissement de voir tous les devis
et les points-virgules et les parenthèses et ainsi de suite.
>> Mais si vous commencez à ignorer tout ce que vous ne comprennent pas, et vraiment regarder
à l'essence du texte blanc sur l' écran, sûrement que vous voyez, comme je le fais,
"Bonjour tout le monde." Qui s'aligne avec l' déclaration violet en haut, et il s'avère
que le mot-clé va s'aligner avec conceptuellement lorsque verte
drapeau cliqué.
>> Donc, en d'autres termes, alors que dans Scratch, nous mettons en œuvre ce programme Bonjour tout le monde
avec ces deux pièces de puzzle, en C, nous allons mettre en œuvre avec ces
quatre lignes un peu énigmatiques.
Mais comme nous plonger plus profondément dans cela, vous aurez voir que chacun de ceux
caractères blancs sur l'écran fait a une signification importante,
et la plupart de nos programmes vont regarder structurellement tout à fait le même.
Donc, une déclaration, pour être clair, ce qui ressemblait à "dire bonjour monde" sur
Vendredi va commencer à regarder aimer ce lundi.
printf ("Bonjour le monde").
Et il ya certains barre oblique inverse bizarre n, il ya entre parenthèses, il ya
virgules.
>> Mais à la fin de la journée, la clé emporter aujourd'hui, c'est que tout ce que nous faisons
est la traduction choses de la photo former à la forme de texte.
Ainsi, une boucle qui ressemblait à ceci la semaine dernière va maintenant examiner
quelque chose comme ça.
>> Et permettez-moi de rejeter, tout comme dans Scratch, il ya différentes façons d'
atteindre le même objectif.
Même en C. Je ne vous montrant le seul façon de faire les choses, mais une façon de
traduire ça pour toujours bloquer à une boucle en C.
>> Celui-là, répétez 10 fois.
Celui-ci vraiment une sorte de courbe la l'esprit la première fois que vous le voyez.
Mais pour mettre en œuvre que désormais, nous allons utiliser une
pour la boucle, pour ainsi dire.
Et il est clair qu'il ya une syntaxe qui est un peu complexe là-bas avec moi et
égal et 0, mais une fois que nous plongeons dans ce Dorénavant, vous allez juste
de voir que qui est tout simplement en faisant quelques arithmétique de base pour nous de 0
sur un maximum de 9 ou 10 dans ce cas.
>> Enfin, avec des variables, vous vous en souviendrez une variable qui est une pièce de stockage.
Eh bien, ce que nous avions sur la gauche, il ya la dernière semaine va se pencher un peu
quelque chose comme ça cette semaine.
Mais encore une fois, plus sur cela pour venir.
>> Nous avons eu des expressions booléennes, qui la semaine dernière, ressemblait à cela.
Cette semaine avant, ils vont commencer à regarder un peu comme ça.
>> Et celui-ci est en fait un peu rassurant.
En fait, c'est presque aussi simple comme les blocs verts.
Mais ici nous avons, à nouveau, une nouvelle syntaxe avec une esperluette, mais vous pouvez
peut-être deviner alors que dans Scratch, vous dire A-N-D, apparemment en C, nous sommes
allez dire esperluette esperluette.
Mais tout cela va devenir naturel avant longtemps.
>> Conditions.
La semaine dernière, il semblait ceci sur la gauche.
Cette semaine, sur la droite, il est va ressembler à ça.
Mais encore une fois, les plats à emporter clé ici est que comme vous voyez des choses comme ça sur
à droite, et en particulier si elle est inférieure confortable, c'est un peu plus de votre
tête, vous obtenez un peu dépassés qui Je n'ai vraiment aucune idée de comment je pourrais
peut-être venir avec qui à partir de zéro -
sans jeu de mots -
juste se rendre compte que c'est vraiment la même idée qui se sentait probablement beaucoup plus
naturel de la semaine précédente.
Et même si vous n'avez pas plongé dans problème posé 0, si j'ose dire, vous trouverez
que les pièces du puzzle sont assez intuitif, ou au moins
devenu si au fil du temps.
>> Donc, nous allons plonger po
Allons nous salir les mains avec ici ce premier programme simple.
Et simple est, bien sûr, relative.
Pour ce faire, je vais changer d'écran à ce dispositif, j'ai appelé le
CS50 appareil.
L'appareil CS50 est un morceau de logiciel qui s'exécute à l'intérieur d'un
fenêtre sur mon Mac, et vous pouvez également exécuter dans une fenêtre à l'intérieur de votre PC, que
me permet d'avoir exactement le même l'environnement de l'ordinateur comme chaque TF, en tant que
chaque CA, que chaque élève dans la classe.
Parce que l'appareil CS50 est littéralement un autre système d'exploitation
appelé Linux -
spécifiquement Fedora Linux -
et nous, le personnel, avons configuré le processus d'installation de ce
le système d'exploitation de telle sorte que l'un, il ya un petit logo dans le CS50
milieu, deux, il ya un menu personnalisé à le fond, et trois, pédagogiquement,
Nous avons simplifié l'interface utilisateur comme autant que possible, de sorte que lorsque vous
d'abord démarrer cette chose sur votre propre Mac ou PC, vous avez les mêmes
environnement comme tout le monde, et vous avoir tous les outils dont vous avez besoin
pour le cours sans avoir à déterminer comment installer chacun et
chaque outil individuellement.
>> Donc, cela semble relativement comme Mac OS ou Windows.
Dans le coin inférieur gauche, vous avoir essentiellement un menu Démarrer de
sortes, ou un menu Pomme.
Et puis vous avez ce que nous suspect être vos trois icônes les plus courantes.
L'un est Chrome.
Il ya un navigateur à l'intérieur de l'appareil.
>> Deux est un programme appelé gedit, qui nous avons vu brièvement la semaine dernière, ce qui est
juste un éditeur graphique.
Et trois est un programme de terminal, qui est une fenêtre en noir et blanc de
antan qui nous permet de taper plus commandes ésotériques mais plus puissant au
notre clavier.
Donc, je vais aller de l'avant et cliquez sur gedit, et soyez assurés que problème
série 1, qui sera publié le vendredi, sera vous guidera à travers toutes ces étapes.
>> Remarquez que j'ai une assez simple interface utilisateur en trois parties.
Sur la gauche, j'ai un grand vide fenêtre appelée code source.
C'est là que je vais voir un résumé de tout code que j'écris.
Sur le côté droit, j'ai une grande onglet, actuellement non enregistrées, et c'est
où mon code va aller.
Et sur le fond, j'ai intégré une fenêtre de terminal, un noir et blanc
inciter à laquelle je peux taper des commandes à compiler et exécuter mes programmes - qui
est, à fabriquer et à lancer mes programmes.
>> Commençons donc simple.
Laisse-moi aller jusqu'à Fichier, Enregistrer.
Je vais aller de l'avant et aller dans jharvard.
Donc l'appareil, indépendamment de ce que votre nom est, appartient à un gars nommé
John Harvard, qui a une maison jharvard répertoire à l'intérieur de laquelle l'ensemble de votre
fichiers iront.
C'est votre propre copie de son compte, si nous ne sommes pas tout partage
le même disque dur.
Vous avez juste l'illusion du propre de John Harvard.
>> Par avance, je réellement installé Dropbox.
L'appareil est livré déjà préparées avec Dropbox afin que si quelque chose va mal
au cours du semestre, si vous avez configuré votre appareil avec un libre
Compte Dropbox, tous vos fichiers seront être automatiquement sauvegardées si vous
peut très facilement récupérer.
Et je vais aller dans ma Dropbox répertoire, et il va déjà
être un couple d'autres choses là-bas.
>> Mais je vais aller de l'avant et allez dans Fichier, Enregistrer.
Je vais aller dans jharvard, Dropbox, et ici, je vais
donner mon programme un super simple nom, hello.c, puis enregistrez.
Donc, j'ai la même interface maintenant.
La seule chose qui a changé est l'onglet en haut.
Je suis donc très rapidement aller à recréer que le programme de l'
glisse il ya un instant.
>> Donc en main (void), puis printf, "Bonjour, monde," un peu cryptique
barre oblique inverse n, près citation, fermez parenthèse, point-virgule, et
puis Ctrl S pour enregistrer.
Et remarquez en passant ce qui vient paru ici en haut à gauche.
Et ce n'est pas utile aujourd'hui, mais seront utiles au fil du temps.
Vous venez de voir, encore une fois, un résumé des le code que vous avez écrit.
Et parce que j'ai écrit quelque chose qui s'appelle principale, c'est pourquoi le mot principal a sauté
jusqu'à là-bas.
Mais pour la plupart, nous n'ont pas besoin de cela aujourd'hui.
>> Très bien, alors je prétends que c'est mon premier programme écrit dans une programmation
langue appelée C. Nous savons à partir du vendredi que ce que cette chose va faire
très uninterestingly quand je terme, il est juste afficher -
en d'autres termes, imprimer, comme un ordinateur scientifique dirait -
Bonjour tout le monde sur l'écran.
Donc, pour ce faire, vous remarquerez que je n'ai de descendre ici pour mon terminal
fenêtre, et maintenant je dois un clignotement rapide.
Mais c'est maintenant une version clavier de mon répertoire Harvard John.
C'est une façon de clavier dans laquelle pour naviguer dans mon disque dur.
>> Donc, je ne peux pas vraiment taper comme je l'ai fait la semaine dernière font bonjour, parce que c'est
allez dire pas de règle pour fabriquer la cible -
quelque chose qui ne va pas.
Je ne sais pas trop quoi ce message moyens, mais c'est parce que par défaut,
lorsque cette fenêtre noir et blanc est ouvert, je suis à l'intérieur de John Harvard
répertoire personnel.
Mais où ai-je sauve ce programme?
Dans mon dossier Dropbox.
>> Maintenant, nous avons tous grandi avec ordinateurs sur lesquels vous suffit de double cliquer
sur l'icône d'un dossier, il ouvre, et le tour est joué.
C'est là que le fichier appelé hello.c serait.
Donc, en fait, nous allons le faire.
>> Permettez-moi d'aller de l'avant et de minimiser gedit comme vous le feriez sur
Windows ou Mac OS.
Laissez-moi aller dans la maison dossier en haut à gauche.
Je vois ici un tas de dossiers.
Voici mon dossier Dropbox.
Les coches signifie qu'il a été synchronisé.
Et il ya quelques petites choses ici, mais il faut noter que hello.c est
en effet là.
>> Et sous Mac OS ou Windows, normalement, Je double-clique qui, elle ouvre en
n'importe quel programme, et je suis prêt à continuer.
Mais maintenant, au moins à partir d'aujourd'hui, nous besoin de prendre un pas en arrière juste pour
vous donner quelques outils de base pour votre kit d'outil pour faire plus
des choses puissantes avant longtemps.
>> Donc, à cette invite, je dois faire le équivalent du double cliquant sur l'
Dossier Dropbox.
Et pour ce faire, je vais taper CD pour change de répertoire, Dropbox, entrez.
Et maintenant, notez les parenthèses à mon soi-disant prompt dit maintenant que je suis en
tilde, le petit squiggly symbole en haut à gauche de
la plupart des claviers, / Dropbox.
C'est juste abbréviation de dit l'homme, vous êtes maintenant à l'intérieur de
le dossier Dropbox, comme si vous avez double-cliqué dessus.
>> Alors maintenant, si je vais de l'avant et taper make bonjour, entrez, je vois une très cryptique
commande, mais n'est pas un message d'erreur, il semble, puis
autre clignote rapidement.
Et si vous vous souvenez, jamais si rapidement le vendredi, nous avons fait cela. . / Bonjour.
>> Ce que vous allez voir est le résultat de mon exécution de ce programme, ou, sous Mac
OS et PC termes, si j'avais normalement doubler cliquez sur un programme -. une application
programme ou un fichier. exe, il ouvre une fenêtre et des pistes.
Tapant. / Bonjour, c'est comme deux cliquer sur un programme à exécuter, mais
utiliser mon clavier.
>> Entrée, bonjour tout le monde.
Et c'est tout.
Donc, nous allons taquiner cette part de sorte qu'il ne se sent pas trop comme le grec.
>> So. / Veut dire quoi?
Quiconque a déjà navigué un clavier environnement comme celui-ci, ce n'est point
référence?
Le répertoire courant.
>> Ainsi, le répertoire courant est juste synonyme d'un dossier.
Donc, en disant dot slash, je dis, chercher un programme appelé bonjour dans la
répertoire courant -
dans le dossier actuel.
En d'autres termes, mon dossier Dropbox.
Et c'est pourquoi en appuyant sur Entrée après fonctionne réellement ce programme.
>> Si I LS Maintenant, tapez, remarquez que je vois tout dans mon dossier Dropbox.
Premiers contacts.pdf, qui Dropbox vous donne gratuitement, mes photos
répertoire, un répertoire public non enregistré Documents 1 que j'ai fait par erreur une
il ya moment, machin.c, que j'ai fait plus tôt aujourd'hui, puis deux lignes -
hello.c et bonjour.
>> Hello.c est le programme que j'ai écrit avec gedit, et ce qui est en vert bonjour?
Le bonjour en vert est l'exécutable.
En d'autres termes, quand j'ai couru cette commande il ya un moment - Let Me Roll
Remontez dans le temps -
quand j'ai couru rendre bonjour, c'est l'étape intermédiaire ici.
Et il a fallu hello.c en entrée -
Code source AKA - et il a produit un fichier appelé bonjour en sortie, qui
contient tous ces zéros et de uns.
Et c'est pourquoi, à la fin, je ne peux en fait exécuter une commande comme. / bonjour.
En raison de Intel Inside, mon exploitation système, Linux, ouvre les zéros
et ceux, les nourrit dans l' cerveau de mon ordinateur -
la CPU -
et qui sait CPU, oh, voici un modèle de zéros et de uns que dit
imprimer la chose suivante sur l'écran.
>> Quelle est la chose suivante?
GUILLEMETS, "Bonjour tout le monde."
>> D'accord, donc un bref résumé de quelques-uns des ces commandes afin que nous puissions commencer
de les prendre pour acquis.
Permettez-moi de passer directement à où nous nous sommes quittés.
Et vous vous souviendrez que nous avions CD à notre back-end il ya un instant.
Ce sont, j'ose le dire, pour Les fins d'aujourd'hui -
peut-être cette semaine - les seules commandes que nous pourraient avoir besoin de taper à la commande
invite en outre faire.
>> Donc CD était pour quoi?
Changez de répertoire.
C'est juste l'équivalent de deux en cliquant sur un dossier.
Et en passant, si vous obtenez perdu jamais à l'intérieur de votre
appareil, tels que Dropbox -
Je veux revenir à mon répertoire jharvard -
En cas de doute, CD, entrez, sans autre mots, et ça zips vous rappellons
à l'endroit où vous avez commencé, qui C'est un joli petit raccourci.
>> Bon, alors maintenant d'autres commandes.
LS.
J'ai tapé il ya un instant.
Que pensez-vous LS signifie?
>> Ainsi, liste, non?
Retour dans la journée, quand les humains venaient avec ces commandes, ils
essayaient d'être efficace, et plutôt taper L-I-S-T entrent, ils
LS décidé.
C'est très bien.
Il semble assez comme liste.
Disons simplement LS de type entrent, et que Liste les fichiers ou les dossiers dans mon
dossier en cours.
>> mkdir, vous pouvez probablement le deviner.
Assurez-répertoire.
Donc, vous n'allez pas à certaines menu Fichier et choisissez Nouveau dossier dans cet environnement.
Au contraire, vous tapez l'espace d'mkdir et puis le nom du dossier
que vous voulez créer, et ce sera fait.
>> rm, vous pouvez probablement le deviner.
Supprimer ou supprimer.
Donc, si vous voulez supprimer un fichier, vous aurez voir dans le jeu de problème comment vous
peut le faire.
Et rmdir, supprimer le répertoire.
>> Donc, encore une fois, je vais tendance à voler à travers certains de ces détails, premièrement, parce que
ils ne sont pas tout à fait autant de plaisir à passer temps, mais deux, nous vous fournirons dans
beaucoup plus en détail dans l'un des Le problème de parcours fixe, en particulier
les éditions standard, chacune des étapes que vous pourriez avoir besoin de taper de manière
que vous obtenez de plus en plus à l'aise avec ces choses.
>> Mais maintenant, permettez-moi de démêler une autre chose.
Lorsque nous avons tapé faisons bonjour il ya un moment, nous avons vu une séquence de commandes cryptiques.
Nous avons vu, encore une fois, faisons bonjour.
OK, nous allons le faire.
J'étais sur le point de faire une erreur, mais [Inaudible] maintenant admettre que j'étais sur le point d'
et de le faire délibérément.
>> Qu'ai-je fait de mal en ce moment?
Ouais, donc je ne suis pas dans la Dropbox répertoire, car il ya un moment que je
dactylographiée CD et appuyez simplement sur Entrée.
Cela m'a avez à l'endroit où j'ai commencé, qui n'est pas là mon dossier
est donc j'ai vraiment besoin de faire CD Dropbox entrer, et maintenant je peux faire bonjour rm
entrer, supprimer le fichier régulier bonjour.
Je ne sais pas pourquoi il est si énigmatique.
C'est seulement un moyen êtes-vous sûr vous voulez supprimer bonjour?
Vous pouvez taper y pour oui, entrez, et maintenant il est parti.
>> Et maintenant, si je tape rendre bonjour encore une fois, c'est aller à recréer mon code objet,
recréer ces zéros et de uns.
Mais quel est le problème avec cette très longue commande?
Eh bien, nous allons taquiner cette part avant longtemps, mais assurez -
Je l'ai dit un peu de mensonge avant -
n'est pas un compilateur.
Make est un programme qui automatiquement chiffres sur la façon d'exécuter une
compilateur pour vous.
>> Ainsi, la commande que vous devriez vraiment être exécutant de manière à convertir hello.c
dans bonjour semble effectivement un peu plus comme ça.
Et Dieu ne plaise que nous devons réellement n'oubliez pas de toujours taper que toute
séquence de commandes à l'extérieur.
L'objectif de faire dans la vie est d' n'oubliez pas ce degré de complexité pour
nous et automatiser ce qui serait autrement être pas très fastidieux.
>> Mais je ne peux approximatif.
Donc, par cette petite antisèche ici, je peut rapprocher ce que la commande est
faire simplement en tapant clang, qui est le nom du compilateur nous serons
l'utilisation de ce semestre.
Si quelqu'un d'entre vous l'ont jamais fait iOS développement pour l'iPhone ou l'iPad,
Clang est le programme que vous avez utilisé au sein de Xcode pour rendre vos applications.
Clang, cependant, c'est juste un autre programme dont le nom nous pouvons taper à la commande
Demander, par l'introduction de cette entreprise, Je peux présenter quelque chose qui est un
peu représentatif des commandes à venir.
Permettez-moi de le faire manuellement.
>> Donc rm bonjour, et maintenant préavis en cas I, comme un test de cohérence -
. / Bonjour, que pensez-vous que je devrait voir si je fais ça?
Une sorte d'erreur.
Un tel répertoire de fichiers.
Alors que l'on en fait assez direct.
>> Alors maintenant, laissez-moi éclaircir l'écran.
Control S efface simplement l'écran à supprimer certaines distractions.
Et maintenant, je vais manuellement Type clang-o bonjour hello.c.
Quel est donc ce propos faire?
Exactement la même chose que faire a fait pour nous, mais je ne jette quelques-uns des
les mots superflus.
>> Clang est le programme qui va prendre une image. c comme entrée et produire
zéros et uns en sortie.
Mais désormais-o appellera un interrupteur ou un pavillon.
Ce n'est qu'un jargon techno pour dire c'est un mot que vous tapez à l'invite
qui influe sur le comportement d'une certaine manière du programme que vous utilisez.
Donc, personne ne veut deviner ce-o transmet?
>> Sortie.
C'est juste quelqu'un décide-o signifie sortie un fichier appelé bonjour et prendre en
entrée quel que soit le dernier mot sur l' invite est, hello.c, de sorte que si je frappe
Entrez maintenant, rien ne semble se passer.
Et curieusement, dans ce monde de programmation, si rien ne se passe,
c'est probablement une bonne chose parce qu'il n'y a pas d'erreur
un message sur l'écran.
Bonjour, Entrée.
Mon programme est maintenant exécuté.
>> Mais je ne peux faire de petites choses stupides comme ce produit. clang-o, hihihi, hello.c,
entrer, et maintenant j'ai un identique programme nommé hihihi.
Il se comporte de la même chose, mais le nom est différent.
>> Donc, ce n'est que pour dire que si vous voulez pour influencer le comportement d'un
programme, nous allons de plus en plus voir les choses appelées
arguments de ligne de commande.
Il s'agit d'une ligne.
Vous tapez les commandes.
Ergonomique, la ligne de commande.
Et les arguments de ligne de commande sont juste des mots ou des petits morceaux de syntaxe qui
en quelque sorte influencer le comportement des programmes que nous sommes en marche.
>> D'accord, c'est peut-être le plus programme ennuyeux on peut écrire et voir.
Faisons maintenant quelque chose plus intéressant.
Permettez-moi d'aller de l'avant et créer un nouveau fichier.
Je vais aller de l'avant et mettre cela en Le répertoire de John Harvard,
appelons-le custom.c, pour être un petit programme personnalisé.
Je vais zoomer à mon sommet de les pattes ici et recommencer.
>> Inclure stdio.h standard.
Plus sur cela dans un instant.
int main (void), plus le dans un instant.
printf ("Bonjour, David").
Beaucoup plus intéressant, non?
>> Alors maintenant, si - non pas à cause de mon nom, juste parce que c'est différent -
Faites des saisissez.
Coutume, bonjour, David.
Mais même cela aussi, c'est un mensonge.
Ce programme pourrait aussi bien être appelé David.C, parce que ce n'est pas coutume
comportement du tout.
Vraiment, je veux un programme qui demande l'utilisateur à leur nom.
>> Alors, comment dois-je faire cela?
Eh bien, permettez-moi de défiler vers le haut ici.
Et avant que j'utilise une déclaration Scratch, avant de l'utiliser printf,
autrement connu comme une fonction, permettez-moi d'abord demander à l'utilisateur pour certaines entrées.
>> Donc, pour ce faire, j'ai besoin d' faire une ou deux choses.
Un, j'ai besoin d'un endroit pour stocker de l'utilisateur nommer après que je lui ai demandé ou
lui pour cela.
Qu'est construction dois-je utiliser probablement pour stocker une valeur comme ça?
Une variable.
>> Donc, contrairement à Scratch, où vous obtenez juste une belle pièce de puzzle, ici, nous devons
utiliser, évidemment, mots à nous exprimer.
Et désormais, quand vous le voulez une mot ou une phrase, dans la programmation,
nous allons appeler cela une chaîne.
Ainsi, une chaîne est un mot ou une phrase.
Il s'agit d'une séquence de zéro ou plus personnages, plus formellement.
>> Et si vous voulez une telle variable existe, vous avez à dire me donner une.
Et le moyen par lequel vous faites c'est-à- dire chaîne de virgule, où s peut être
tout ce que vous voulez.
En effet, s est un peu décevante.
Permettez-moi d'aller de l'avant et plus clairement appeler son nom.
Donne-moi une chaîne appelée nom.
>> Mais maintenant, ce qui est de la personne nom par défaut?
Eh bien, si l'homme ne tapez rien en, de toute évidence, il va y
avoir aucune valeur de nom.
Et il se trouve dans C, si vous ne donnez pas une valeur à une variable, il va
avoir une valeur d'ordures.
Il pourrait avoir quelques zéros aléatoires et ceux, si vous allez juste pour voir
ordures, vraiment, sur l'écran si vous essayez de l'afficher.
>> Mais je peux arranger ça en disant, en fait, à l'intérieur du magasin du nom
suivant la valeur.
La façon dont vous stockez les valeurs des variables est si vous avez un nom de variable sur l'
à gauche, vous avez en quelque sorte à mettre ce que vous souhaitez stocker dans le sur la droite, et
La syntaxe de ce qui se passe être comme suit.
>> Nous n'avons pas vu cela avant, mais prenons sur la foi d'un instant qu'il y
existe une autre déclaration dans le monde que je vais appeler à nouveau la fonction,
et cette fonction est appelé obtenir chaîne.
Et il le fait littéralement cela.
C'est en quelque sorte obtient une séquence de caractères à partir de l'être humain et ensuite
fait quelque chose avec elle.
>> Et cela ne ressemble pas à syntaxe cryptique.
Normalement, si vous utilisez les signes d'égalité - vous êtes dans le monde, disons,
algèbre, et vous êtes réellement x disant égal à 1.
Ici, nous ne disons pas que Nom est égal à obtenir chaîne.
Nous disons boutique en nom ce qui est sur le côté droit
de ce signe égal.
Le signe égal représente l'opérateur d'affectation.
C'est la syntaxe qui dit que ce qui est mis sur le côté droit à l'intérieur de ce qui est
sur la gauche.
Donc obtenir chaîne est une nouvelle pièce d' fonctionnalité que non seulement
quelque chose -
demande à l'utilisateur une chaîne -
il la retourne aussi, pour ainsi dire.
>> Donc, nous allons voir ce qui se passe pour arriver ici.
Je vais maintenant aller de l'avant et zoom arrière, et je vais obtenir un couple de
erreurs dans mon message.
Je vais taper make personnalisé, entrez.
Wow.
Tout un tas d'erreurs.
>> D'accord, donc c'est un peu écrasante, certainement au début, mais
Il s'avère que l'ensemble de ces très Certes messages d'erreur incompréhensibles sont
référant à certains modèles qui nous allons commencer à voir au fil du temps.
Donc, ce que je vais arrachez, parce que c'est la première.
L'utilisation de chaîne de l'identificateur non déclaré.
>> Cela signifie simplement que gedit ou Clang, dans ce cas, ne sait pas
ce que je veux dire par chaîne.
Et c'est parce que dans C, la programmation langue, il en fait
a pas de variable de type string.
C ne sait pas que les chaînes existent.
>> Mais nous, CS50 personnel faisons.
Et donc à l'avance de classe, nous créé un fichier appelé CS50.h.
Et à l'intérieur de ce dossier - et plus sur la syntaxe à venir -
à l'intérieur de ce fichier est une définition de ce que je viens de définir
verbalement comme une chaîne.
Donc, simplement en concluant cette ligne de code dans mon programme, je suis maintenant
enseignement gedit et faire et Clang tour à tour ce qui est une chaîne.
>> Je ne sais pas encore comment.
Dans quelques semaines, nous peler vais retour cette couche.
Mais pour l'instant, sachez que cette enseigne le compilateur quel
chaîne est en réalité.
>> Alors maintenant, laissez-moi éclaircir ma borne ici.
Permettez-moi de relancer faire la coutume, et je résolu tous ces problèmes.
Donc, cela aussi va être un thème récurrent.
J'ai seulement écrit un programme 9 de la ligne, et pourtant j'avais 18 lignes d'erreurs.
C'est le genre d'intimidation.
Mais se rendre compte qu'ils cascade souvent comme qui déclenche une petite erreur
la confusion pour le compilateur, et il semble bien pire qu'elle ne l'est.
>> Alors maintenant, un observateur avisé saura que je reçois une chaîne à partir de la
utilisateur, mais je ne suis pas vraiment fait quoi avec elle?
Je ne suis pas en train de faire quelque chose avec elle.
Donc, si je lance réellement coutume encore, il va rester là.
Que se passe-t-il?
Mon programme semble être coincé sur quelle ligne, diriez-vous?
>> Donc, il est effectivement bloqué sur la ligne 7.
Et nous n'avons pas vu cela avant, mais sur la ligne 7, il n'y a, à nouveau, cette
déclaration, obtenir chaîne.
Et il fait ce qu'il dit.
Il attend maintenant l'humain à prendre la chaîne.
Ceci est totalement intuitif pour moi, l'être humain, parce que je n'ai pas été informé
ce qu'il faut faire.
>> Mais permettez-moi d'aller de l'avant sur la foi et permettez-moi de faire semblant d'être Rob.
Entrée.
Ce n'est pas le programme que je voulais.
Donc, nous avons notre premier blog.
>> Mais nous allons essayer de raisonner par pourquoi c'est le cas.
Tout d'abord, permettez-moi de résoudre ce premier problème.
Permettez-moi d'ajouter une ligne ici qui dit: printf, quel est votre nom?
Disons simplement faire près citation, fermer les parenthèses.
>> Maintenant, permettez-moi de re-exécuter le programme.
Problème.
Je ne vois pas cela.
>> Droit.
Je n'ai pas le recompiler.
Donc, dans un langage comme C, parce que vous modifier le code source ne signifie pas
que vous avez changé votre code d'objet pour générer un nouveau code d'objet,
nouveaux zéros et de uns.
Vous devez recompiler.
Si je maintenant ré-exécuter personnalisé, entrez, ah, un peu plus clair.
Mon nom est Rob.
Toujours buggy.
>> Et je dirais qu'il ya quelques bogues maintenant.
Cela ressemble tout simplement hideux, franchement.
Comme, minimalement, je devrais avoir un espace là-bas, ou déplacer le
le curseur à la nouvelle ligne.
>> Et en fait, la nouvelle ligne.
C'est en quelque sorte d'une expression clé ici que nous l'avons vu, n'est pas défini.
La façon dont vous obtenez un texte pour passer à la ligne suivante,
vous ne le faites pas.
Ceci est source de confusion pour l'ordinateur.
Cela ressemble à deux lignes distinctes du code, dont aucun
est parfaitement correcte.
Vous avez la place pour être plus explicite et plus dire, me donner une nouvelle ligne, qui nous
représenter dans c avec barre oblique inverse n.
>> Il ya donc un peu de ces personnages.
Backslash n fixera cette esthétique.
Permettez-moi de recompile mon programme.
Permettez-moi de ré-exécuter mon programme.
>> Cela semble mieux.
Il est encore assez primitive, mais c'est aussi toujours buggy.
Donc, il ya une -
même si vous n'avez jamais programmé auparavant, vous pouvez probablement faire une supposition
les raisons pour lesquelles ce programme est encore imparfait.
Que dois-je faire Je n'ai pas encore fait?
>> Je dois donc faire réellement quelque chose avec le nom.
Tout comme dans zéro, vous pourriez effectivement affecter une variable comme n ou
contrer comme nous l'avons fait la dernière semaine - une valeur.
Mais si vous ne faites rien avec , rien ne va se passer.
>> Très bien, nous allons donc corriger.
Permettez-moi de taper ma variable là, et laissez-moi descendre ici.
Permettez-moi de recompile, permettez-moi de re-run, Rob.
Maintenant, je suis juste un idiot, non?
>> Donc, ce n'est pas vraiment obtient me plus loin.
Mais c'était tout à fait naturel instinct, je dirais, non?
Si la variable est appelé nom, et je il veut y aller, pourquoi ne pas simplement
saisissez-là?
>> Bien sûr, nous avons de distinguer maintenant
entre ce qui est une chaîne?
Remarquez que je cite ici, bonjour nom?
Ce fait lui-même est une chaîne.
Il est codé en dur.
Ce n'est pas de l'humain.
C'est de moi, le programmeur original, mais c'est toujours une chaîne.
>> Donc, si vous écrivez littéralement N-A-M-E à l'intérieur d'une chaîne, ce qui se passe à
obtenir imprimé?
Eh bien, N-A-M-E. Nous avons plutôt besoin d' dire printf, ne pas imprimer
out littéralement nommer.
Imprimez la valeur du nom.
>> Et pour ce faire, nous faisons ce qui suit.
Et ce n'est qu'une convention humaine.
Nous disons au lieu% s, et que est synonyme de chaîne.
Et puis à la fin de mes proches citations, Je vais mettre une virgule et
passer un second argument dans cette déclaration.
Je vais taper nom.
>> Alors maintenant, nous avons remarqué une légèrement nouvelle syntaxe.
Nous avons encore deux parenthèses, et Permettez-moi de dire que désormais les choses
entre parenthèses représente arguments dans une fonction -
entrées qui sont en quelque sorte vont d'influer sur son comportement.
Donc, en cette logique, combien arguments printf ne semble être
prendre en ce moment?
>> Donc, il semble prendre deux, Et c'est en effet implicite
par la virgule ici.
Il s'agit donc d'un argument entre guillemets.
Même si elle a une virgule en elle, tout est entre guillemets, ce qui signifie
c'est une longue chaîne.
Comma, nom de la variable.
>> Alors maintenant, permettez-moi de faire un zoom arrière.
Permettez-moi de ré-exécuter.
Rob.
Bon sang, qu'est-ce que j'ai fait de mal?
>> Très bien, alors vous devez recompiler.
Encore une fois, les erreurs faciles à faire début encore et encore sur.
Alors maintenant relancer coutume, Rob, entrer, et le tour est joué.
Nous avons maintenant un programme personnalisé.
>> Donc, j'ai maintenant un programme qui l'aide de quelques caractéristiques
qui sont à noter.
D'abord, je suis en utilisant CS50.h, autrement connu sous le nom de la bibliothèque CS50.
Et à l'intérieur de la bibliothèque sont CS50 fonctions que d'autres personnes ont écrit -
à savoir le personnel -
que vous pouvez utiliser, et obtenir chaîne est l'une d'elles.
>> A l'intérieur de la ligne 2 est stdio.h, et pourquoi est-ce là?
Faites une conjecture.
Ce qui existe à l'intérieur de norme parent IO?
Printf.
Donc, printf, vous ne le voyez pas n'importe où d'autre sur l'écran.
Il doit venir avec l' ordinateur en quelque sorte.
Où cela vient-il?
C'est à l'intérieur de - il est déclaré, pour ainsi dire, à l'intérieur de
un fichier appelé stdio.h.
>> Maintenant, pour ce genre de choses, nous reviendrons à terme, parce que c'est un peu
distrayant pour l'instant.
Il s'agit de notre type de retour.
Il s'agit d'un argument.
Mais pour aujourd'hui, nous nous concentrons juste ici sur ces lignes.
>> Donc nom de chaîne, juste pour rappel, qu'est-ce que cela fait pour moi?
Ainsi, il a déclaré une variable de type string.
Donc, il est censé être pour les mots, pas pour les nombres.
Soit dit en passant, si je ne voulais qu'il s'agit d'un numéro, je dirais
quelque chose comme int.
Si je voulais être un point flottant valeur, quelque chose avec un point décimal,
Je dirais flotteur.
Mais pour aujourd'hui, je viens de le dire chaîne.
>> Et je lui ai donné cette variable un nom de nom, mais je ne pouvais
ont appelé quelque chose.
En fait, à l'origine, je l'ai appelé S.
>> Ici, c'est juste une autre déclaration.
Combien d'arguments est-ce déclaration de prendre?
Donc, il faut juste un, et que est tout simplement un détail esthétique
affichant quelque chose sur l'écran pour moi.
Qu'est-ce que cette ligne 8 faire en termes simples?
>> Ça devient une valeur à partir de la utilisateur - à savoir, une chaîne -
et Que fait-il avec elle?
Il s'agit essentiellement de les remettre à l' gars sur le côté gauche de l'
signe égal de sorte que dans ce cas, le variable nom peut effectivement stocker.
>> Et puis c'est un autre printf instance d'une fonction.
Et nous disons pour appeler une fonction.
Pour utiliser une fonction est pour appeler une fonction.
Cette chose apparemment prend deux arguments.
Celui-ci, une virgule, celui-ci.
>> Celui-ci lui-même est juste une chaîne qui contient un espace réservé.
Les moyens% de poser une autre chaîne ici.
Et en mettant nom après la virgule, qui est l'insertion
cette chose pour moi.
>> Donc je ne peux faire d'autres choses encore.
Permettez-moi d'aller de l'avant maintenant et je fais un peu de programme stupide, mais permettez-moi de supprimer ce,
et permettez-moi de créer une boucle.
C'est sans doute vrai.
Le symbole est évidemment vrai toujours d'être vrai.
Alors, quel genre de boucle que je INDUIRE en écrivant une ligne comme ça?
>> Donc, une boucle infinie, non?
Juste en vrai.
Il n'ya aucun moyen que je peux changer le mot vrai d'être autre chose, si ce n'est
tout va courir pour toujours.
Donc, si vous avez jamais réellement eu un programme à votre Mac ou PC qui semble
avoir enfermé, ou qu'il fait quelque chose et quelque chose, et vous venez
ne peut pas obtenir la chose à quitter à moins que vous redémarrez votre ordinateur ou de tirer le
Gestionnaire de tâches ou analogues, voici un exemple.
>> Je peux dire: «Je suis un programme bogué". Fermer citation, fermez
parenthèse, point-virgule.
Encore une fois, notez les motifs.
Même si certains de nos syntaxe est nouveau, le mot-clé tout, le mot vrai,
Remarquez que je n'ai même genre d'accolades.
J'ai un point-virgule et les parenthèses.
>> Donc, maintenant nous allons aller de l'avant et compiler cela.
Assurez coutume, personnalisé.
Donc, à ce stade, vous n'avez pas besoin d' redémarrer votre appareil, tout va bien?
Donc, la leçon est facile ici avec deux doigts, de contrôle c,
nous allons quitter ce programme.
Mais vous pouvez voir exactement pourquoi cette chose se répétait encore et encore.
>> Je peux faire quelque chose d'un peu plus complexe comme un teaser.
Je vais aller de l'avant et dire ce qui suit.
Pour int, qui est un entier, i est juste un nom générique que nous donnons à plus
variables dans la programmation lorsque vous êtes juste comptage, est égal à 0.
Permettez-moi d'aller de l'avant et de dire tout i est, disons, moins de 100, je plus plus.
Nous allons revenir à cette syntaxe, mais cela signifie simplement
incrémenter i encore et encore.
>> Et qu'est-ce que je veux faire ici?
Printf, "je peux compter à i." Il s'agit d'un programme buggy.
Qu'ai-je réellement l'intention ici?
>> Pour cent ne s, mais vous ne le devineriez pas ce produit. % D est un entier décimal.
Comma i.
Permettez-moi de Roll Back.
>> Permettez-moi maintenant recompiler avec faire.
Permettez-moi maintenant RERUN à la coutume.
Je ne peux vraiment compter sacrément rapide lorsque J'écris un programme comme celui-ci.
>> Maintenant, nous allons faire quelque chose d'un peu involontaire.
Que diriez-vous, nous allons faire tout i est supérieur ou égal à 0.
Qu'est-ce cela va induire?
Donc logiquement, ce n'est pas si sage, parce que maintenant si je RERUN cela, raconter,
Je peux maintenant compter vraiment, vraiment élevé.
Malheureusement, à peu près aussi élevé que possible nombre est de 4 milliards de dollars, si cela va
prendre un certain temps.
>> Alors pourquoi ne pas nous quittons ce que notre cliffhanger, promettant que le
Mercredi, nous allons voir si Ce programme est effectué.
Deuxièmement, nous allons présenter comment vous vous écrire votre propre fonction de sorte que très
rapidement, le mercredi, nous allons, comme nous l' transition à partir de zéro en C, commencer
écrit toujours de plus en plus complexe programmes qui font beaucoup,
beaucoup plus que cela.
Nous vous verrons ensuite.
>> [Applaudissements]
>> INTERLOCUTEUR 1: Lors de la prochaine CS50, Journée Puzzle a été un succès.