DAVID J. Malan: C'est donc CS50. Et c'était propre Colton Ogden CS50, pour plus de qui est la musique, vous pouvez télécharger au soundcloud.com/cs50. Donc, aujourd'hui, nous nous concentrons d'autant plus sur la technique de programmation. Et nous prenons où nous avons laissé la semaine dernière, en se concentrant sur Scratch, qui était présent langage de programmation graphique. Et prendre les choses à un niveau inférieur, l'aide d'une programmation plus traditionnelle langue ou C. Mais le long du chemin, la réalisation que les mêmes idées que nous parlé vendredi dernier se reproduira pas seulement dans ce langage C, mais dans la plupart des tous les autres que nous regardons ce semestre. Nous avons donc appelé cette chose ici ce la dernière fois? C'est représentant d'une déclaration. Nous avons donc appelé ce une déclaration. Et il fait quelque chose. C'est une instruction qui a ordinateur ou Scratch peut exécuter. Et désormais, nous allons commencer également appeler quelque chose comme cela une fonction, pour des raisons que nous verrons bientôt. Pendant ce temps, nous avons vu des choses comme ça. Et ceux-ci sont généralement connue sous le nom de ce construire? PUBLIC: Boucle. DAVID J. Malan: Donc une boucle. Donc assez simple. Il fait littéralement ce qu'il dit. Et dans Scratch, si vous voulez caser plus de pièces de puzzle là, la pièce passera à l'adapter. Et nous le verrons dans C que nous pouvons faire la même chose. Un autre type de boucle, mais, Scratch pourrait être pour toujours, ou il ya un certain nombre d'autres approches. Mais prenons un plus regard généraliste, avec un visage c'est probablement très familier, à boucles plus généralement. Mark Zuckerberg: un chose que les ordinateurs sont vraiment bons à se répéter les commandes. En tant que personne, vous obtiendrez vraiment ennuyé si vous eu à faire la même chose beaucoup de fois de suite. Mais un ordinateur peut faire la même chose des millions, voire des milliards de fois, et ne pas s'ennuyer, et être en mesure de l'exécuter vraiment bien. Ainsi, par exemple, si je voulu souhaiter à tous sur Facebook un joyeux anniversaire en leur envoyant un e-mail, il pourrait me prendre plus d'une siècle à fait écrire à tous les e-mails à tout le monde. Mais avec seulement quelques lignes de code, je peux d'un système envoyer un email à tout le monde sur Facebook qui souhaitent eux un joyeux anniversaire. C'est ce que les boucles sont et pourquoi ils sont précieux et quelque chose que les ordinateurs peuvent faire très bien. DAVID J. Malan: Donc, si vous avez été le destinataire de certains CS50 de et L'espace de Dropbox de la fin, c'est en fait exactement ce que nous faire, en utilisant le code tout à fait comme ça. Nous avons essentiellement un grand feuille de calcul dans laquelle les gens ont été la saisie de leur Les noms et adresses e-mail. Et nous avons écrit un petit morceau de code qui peut itérer sur ces adresses et cracher des adresses uniques dans cas où quelqu'un a présenté à plusieurs reprises. Et par la suite, nous vous enverrons un automatisé e-mail de la bot CS50, y compris le code de coupon. Maintenant, nous avons également examiné cette construction dernière fois. Et il s'agit d'un particulier exemple de quoi? Alors, oui, une expression booléenne. Et la forme est destinée pour capturer aussi. Toutes ces questions de la former vrai ou faux dans Scratch va chercher un petit quelque chose de ce genre. Et nous appelons cela une expression booléenne. C'est bien vrai ou faux, oui ou non. C'est une façon de répondre à une question. Et attendant, vous pouvez les utiliser booléenne expressions à l'intérieur de constructions comme ceux-ci, qui de bien sûr sont des conditions ou branches, proverbiale bifurcations. Et ils peuvent regarder non seulement comme ça, mais ils peuvent aussi ont elses qui leur sont associés. Et vous pouvez en fait avoir un à trois voies bifurcation de la route ou une fourche à quatre voies de la route, tout simplement par nidification de ces choses, comme vous le verrez dans Scratch si vous n'avez pas déjà. Et comme vous pouvez le faire en C ainsi. Prenons un autre généraliste regarder un alumnist, ainsi, qui pourraient présenter une approche différente à ces choses appelées conditions. BILL GATES: Les gens font décisions chaque jour. Par exemple, avant de sortir vous sorte de faire une déclaration qui dit si, si il pleut alors je besoin d'obtenir ma veste. Et les ordinateurs sont incroyables une fois que vous décider ce genre de déclarations, qu'ils peuvent exécuter de façon fiable ces choses à une vitesse incroyable. Et si un programme d'ordinateur vraiment est un peu de mathématiques et d'autres si les états où la décision se fait. DAVID J. Malan: Alors que vous le savez, il était des gens comme Bill Gates, Paul Allen, et d'autres que véritablement lancé la dite ordinateur personnel révolution il ya quelques années. Je pensais, avant de nous plonger dans certains administrivia, nous aimerions raconter une histoire à partir de Albuquerque, Nouveau-Mexique musée d'histoire naturelle et de la science, où certains de Bill Gates et premières histoires de Paul Allen sont raconté comment nous avons maintenant les PC et les Mac et les plus actuelles. Pour cela, cependant, nous avons besoin de deux bénévoles qui ont de très bonnes voix de narration de lire un script à haute voix. Très bien, que diriez-vous de là-bas. Venez sur place. Et que diriez-vous devant ici. Venez faire un tour. Prenez vos places ici. Comme vous les gars viennent, un couple des annonces administratives. sectionnement, le processus de choix d'un article, débutera à l' Du mercredi au vendredi. Plus d'informations sur cette entrée Mercredi à la conférence. Sections super, quant à lui, sont quelque chose que nous vous proposons la semaine prochaine laquelle toute la classe est invitée de participer à assez grande échelle sections, l'une plus confortable, un moins à l'aise. Et nous allons annoncer les détails de cela, ainsi, plus tard cette semaine. sections Pendant ce temps, eux-mêmes, va commencer dans trois des cours la semaine, l'indice zéro, ce qui signifie que ce sont deux semaines out. Donc, ne vous inquiétez pas. Vous n'avez pas encore manqué tout le long de ces lignes. Pendant ce temps, dans l'intervalle, si vous Pour toute question sur le plan administratif, moi-même et Devon et Gabe courriel et Rob à cette adresse ici. Enfin, problème réglé 0 est, bien sûr, sur. Vous avez peut-être remarqué sur le site Web du cours. Il devrait vous fournir toutes les réponses aux questions vous pourriez avoir le long de la voie à mise en route de l'ensemble des problèmes. Mais si vous vous trouvez besoin d'un coup de main, par tous les moyens suivent les heures de bureau, Lundi, mardi, mercredi, jeudi de cette semaine dans la soirée dans quatre salles à manger. Voir cette URL là pour les détails où les heures de bureau sont. Maintenant, nous allons répondre à nos deux invités ici aujourd'hui. Quel est votre nom? JAY PAUL: Jay Paul. DAVID J. Malan: Jay Paul, ravi de vous rencontrer. HIKARI: Hikari. DAVID J. Malan: Hikari? HIKARI: Hikari. DAVID J. Malan: Hikari. Ravi de vous rencontrer ainsi. Jay Paul et Hikari ont en devant eux sur ces musiques se tient deux scripts que je imprimés ce matin du Nouveau-Mexique musée d'histoire naturelle et des sciences. Et ce que je pensais Je ferais sur le rétroprojecteur est accompagner votre récitation du script et cette histoire avec des images visuelles, pas de surprises. Et ce que j'ai fait à l'avance est prehighlight sur votre script ce que vous devez lire, et ce que vous devriez lire. Et nous allons essentiellement paragraphes juste suppléants. Donc, c'est un peu comme vous pourriez ont fait en classe d'anglais. C'est vraiment contraindre le public à croire en votre histoire ici. On y va? Donc l'histoire est ici, nous avons une BASIC, et il commence à Cambridge. JAY PAUL: C'était l'hiver 1974, à Cambridge, Massachusetts où les hivers peuvent être froids. Un barbu, aux cheveux longs College Dropout nommé Paul Allen a été trimer dans Harvard Square, absorbé dans ses pensées. Sa principale préoccupation en ces jours était de savoir comment obtenir son ami, Bill Gates, de quitter l'école et aller en affaires avec lui. HIKARI: Les deux hommes avaient déjà fait par un certain nombre d'entreprises commerciales ensemble, à partir de Lakeside école à Seattle, où ils ont été payées en temps d'ordinateur libre de tester un ordinateur PDP-10 à une heure locale partager entreprise. Le plan le plus récent a été de quitter école et former une société de logiciels. Allen avait quitté Washington Université de l'Etat. Mais à la dernière minute, Bill Gates décidé de s'en tenir à Harvard. JAY PAUL: Ce jour-là, en traversant Harvard Square, Allen a repéré le Janvier, 1975 question de Popular Electronics avec le titre d'arrêt de la terre, La trousse de premiers mini-ordinateurs au monde Rival modèles commerciaux. Sous le titre était une image d'une petite boîte ornée de lampes et les interrupteurs. Il a été appelé le MITS Altair 8800. Et Allen savait que c'était ce que il avait cherché. HIKARI: Jours de discussion a suivi. Allen et Gates a compris l' importance de l'Altair. Ils avaient parlé souvent sur les microprocesseurs et attendaient de voir ce serait fait avec eux. Il y avait un kit de mini-ordinateur sur le couvercle de l'électronique populaires. Il avait apparemment pas encore de logiciel. Ils ont imaginé une nation de programmeurs descendant sur MITS. Et ils ont donc appelé Ed Roberts, la tête de la société, prétendant avoir une version de la Langage de programmation BASIC presque prêt pour l'Altair. Ils n'ont pas. Et Roberts aurait dû savoir qu'ils n'ont pas. Il devenait 10 appels par jour de des gens qui avaient un BASIC presque prêt. Et sa réponse boursier était: «La première personne qui se présente avec un travail BASIC obtient le contrat ". JAY PAUL: Gates et Allen n'avait jamais vu un Altair. Ils avaient même jamais vu la Intel 8080 microprocesseur au cœur de l'Altair. Mais quelques années plus tôt Allen avait écrit un programme sur un ordinateur central qui émulé le fonctionnement d'un précédent Intel microprocesseur. Et cette fois-ci ils ferait la même chose. HIKARI: Avec un processeur Intel 8080 manuel à ses côtés, Allen s'assit à une Ordinateur Harvard PDP-10 et écrit l'émulateur et le logiciel outils nécessaires pour faire de la programmation. Pendant ce temps Gates a cessé d'aller à des classes et se consacre à la conception de la BASE, en utilisant tous les trucs il a su obtenir la taille vers le bas au-dessous de 4 kilo-octets. JAY PAUL: Out à Albuquerque, Ed Roberts a reçu un appel de portes en demandant des détails sur la façon dont la Altair manipulé routines spécifiques. Personne n'avait jamais posé cette question. Et Roberts a commencé à s'intéresser. HIKARI: Avec le développement outils et la conception prête, Gates et Allen écrit le code sur le PDP-10, l'enrôlement d'un autre étudiant de Harvard, Monte Davidoff, écrire routines mathématiques. Après une dernière nuit de programmation, Allen a obtenu sur un plan de livrer leur BASIC à MITS. Il a passé le voyage en avion à s'inquiéter. Et de retour à Cambridge Gates inquiétant. Ils ont testé leur BASIC et il avait travaillé sur l'émulateur. Mais que faire si l'émulateur a eu tort? JAY PAUL: Comme le plan approché Albuquerque, Allen s'est rendu compte que leur BASIC, maintenant parfaitement contenue sur un petit rouleau d' bande de papier perforée, serait inutile sans un séparé programme, appelé un chargeur, qui dirait l'Altair comment pour lire la bande de papier être introduit dans le téléscripteur. Il sortit son portable et rapidement griffonné un programme de chargement en langage d'assemblage, puis manuellement traduit que dans les 1 et les 0 Altair comprendrait. HIKARI: Allen attendait un propre petit, société, high-tech dirigées par des hommes en costumes d'affaires. Donc, il a été surpris quand Roberts a rencontré lui à l'aéroport qui ressemble à un ranch main. Roberts a également été surpris. Quand il a abandonné la Harvard programmeur à un hôtel de luxe, Allen a dû avouer que il ne pouvait pas se permettre de la salle. JAY PAUL: MITS, lui-même, était situé dans un centre commercial poussiéreux. A l'intérieur sur une encombré atelier était un Altair chargé avec 5 kilo-octets de mémoire et relié par un câble à un téléscripteur. Roberts et ingénieur en chef, Bill Yates, attendu dans l'expectative comme Allen basculé son chargeur programme dans l'Altair. Le téléscripteur a commencé soufflant comme il a tiré la bande de papier dans le lecteur de bande. Il a fallu peut-être 15 minutes à charger le programme. Ensuite, le télétype brusquement imprimé un invite de mémoire, puis une invite prêt, et Allen a commencé à taper commande un peu test. Au grand étonnement de tout le monde, le logiciel a travaillé. Il y avait des insectes, bien sûr. Mais l'essentiel était qu'il travaillait. HIKARI: Plus tard, sur le chemin d'une $ 3,00 déjeuner à Pancho, une guêpe a volé dans la fenêtre de la tête de lecture camion et piqué Allen sur le bras. Mais à ce moment rien pourrait gâcher l'ambiance. L'Altair a maintenant son BASIC, le premier logiciel commercial pour une maison ordinateur, faite par Paul Allen et Bill Gates, faisant affaires sous Microsoft. DAVID J. Malan: Beaucoup grâce à nos deux lecteurs. [Applaudissements] DAVID J. Malan: Maintenant vous avez le choix, avant de partir, d'un brillant ou une lueur dans le dark-- oh, attendez une seconde, wait-- brillant et une lueur dans l'obscurité éléphant de la propre Cheng Gong CS50. HIKARI: Aw, je vous remercie. DAVID J. Malan: Tous Très bien, merci beaucoup. [Applaudissements] DAVID J. Malan: histoire tellement vrai. C'est-à-dire que tous ces machines et la facilité avec laquelle on les utiliser maintenant et prendre pour acquis, vraiment commencé ici, à quelques pas seulement de ce théâtre actuel. Et aujourd'hui, si vous n'avez pas été, c'est Maxwell Dworkin, l'ordinateur pavillon des sciences, aussi dans le coin. Et au deuxième étage de cette bâtiment fait pendre trois pages à partir du code source d'origine que Bill Gates et Paul Allen écrit. En fait, si l'utilisation que vous zoomez en vous pouvez voir non seulement leurs noms dans l' type d'original, mais aussi leurs signatures qu'ils ornaient une il ya quelques années lors de leur dernière visite. Mais ce qui était particulièrement convaincante à ce sujet, c'est ce qu'ils avaient prévu de faire était d'écrire un programme qui serait permettre à d'autres gens à écrire leurs propres programmes. A l'époque il y avait tout de cette machine Altair faite par MITS. Et tout ce qu'ils avaient besoin, c'était d'une certaine façon de le rendant facile pour les amateurs et les gens comme nous dans cette salle pour effectivement programme que sans nécessairement comprendre Code de l'Assemblée, ou à la machine code, ou à Dieu ne plaise, 0 et de 1. Nous programmeurs, comme ceux qui dans cette salle, nous veulent être en mesure d'exprimer nous beaucoup plus comme pseudo-code même si c'est un peu plus lentes pointilleux que nous avons parlé la semaine dernière. Nous ne voulons pas d'écrire du code comme celui-ci, qui Paul Allen et Bill Gates ont fait. Nous, au contraire, veut écrire du code qui regarde un peu plus convivial. Maintenant, c'est une langue connue comme BASIC. Et les numéros de ligne, il ya ce que vous utiliser simplement numéroter les lignes de code que vous écrivez. Nous n'avons même pas à faire ces jours-ci. Mais vous pouvez voir ici comment PRINT "Bonjour le monde" serait en effet sans doute imprimer exactement cela. Et si ce projet de loi et Paul ont été habiliter les gens à écrire du code comme ceci au lieu de-- si vous jetez un oeil à l' informatique wall-- code comme ceci. En fait, CS50 récemment eu l'occasion de s'asseoir avec le professeur Harry Lewis dans le département d'informatique, qui effectivement enseigné le projet de loi Portes il ya quelques années, et est debout, ici ces trois pages d'extraits. Jetons un coup d'oeil. HARRY LEWIS: Qu'est-ce que vous avez ici est une inscription d'une pièce au début de logiciels écrit par Bill Gates et Paul Allen, fondateurs de Microsoft. Ainsi, le code est intéressant pour deux raisons. Tout d'abord, il est devenu Le premier produit de Microsoft, qui était un interprète pour le langage de programmation BASIC. Et d'autre part, ce n'était l'une des premières tentatives pour créer un interprète si ordinaire les gens pourraient utiliser les ordinateurs personnels. Donc, Bill Gates était un premier cycle à Harvard. J'ai commencé à enseigner à Harvard en 1974. Cela a été fait en 1975. Alors qu'il était au début de sa carrière et au début de ma carrière. En fait, j'ai appris le projet de loi en un cours à cette époque. Paul Allen n'était pas un Étudiant de Harvard, mais il avait été une école secondaire camarade de classe de Bill Gates. Si vous venez et regardez à l'inscription, vous aurez effectivement trouver un troisième nom, Monte Davidoff, qui était le camarade de classe de Bill Gates ici à Harvard. OK, voici donc une commentaire intéressant ici. Il dit: «En 4K peut supprimer la racine carrée mais pour les boucles doivent encore travailler. " OK, donc ce que cela signifie, c'est qu'il ya avait deux façons de compiler ce programme. Le premier consistait à exécuter sur une version de cet ordinateur Altair que seulement eu 4K mots de la mémoire, 4096 mots de mémoire. Mais la grande version avait 8K. Et qu'est-ce que cela dit est que dans la version 4K vous deviez supprimer certains Code pour le rendre apte. Et l'une des choses qui serait supprimé serait la racine carrée de routine. Mais apparemment, l' pour les boucles devraient encore travailler même lorsque vous compilez le bas pour juste la version 4K de l'ordinateur. DAVID J. Malan: Donc, l'un des thèmes, comme nous le verrons en informatique, C'est cette notion de stratification et de l'abstraction, et vraiment debout sur les épaules des gens qui sont venus avant nous, et non pas contrairement à certains de Bill Gates et Paul Allen récit ici. Et ce que cela signifie est aujourd'hui que nous pouvons prendre pour acquis que les choses sont en fait plus facile pour nous d'écrire du code. En effet le code, comme nous l'avons dit vendredi, est techniquement plus connue sous le nom de code source. Et c'est ce anglais comme syntaxe c'est plus propre et plus bien définie que quelque chose comme pseudo-code, pour lesquels il n'existe pas de définition officielle. Et aujourd'hui, ce que nous allons de se concentrer sur le code source qui ressemble à ce qui Certes, à première vue semble tout à fait énigmatique. Et franchement, c'est beaucoup plus esthétique complexe que le programme sous-jacent est. Tout ce programme fait, rappel, est ce que disions-nous? Il affiche juste "Bonjour tout le monde." Et pourtant, regardez toutes les choses que nous devons à enrouler autour de cette phrase très simple. Mais avant toute de ces lignes et plus fera beaucoup mieux de sens pour vous. Et le débit est le suivant. Ce que nous devons à notre disposition est de prendre le code, comme la source code que nous venons de voir. Et nous avons besoin d'un nouveau programme le lancer à travers. Nous avons besoin d'algorithmes qui peuvent convertir le code source, comme ça, en code objet, 0 et de 1. En d'autres termes, ce nous allons apprendre aujourd'hui est de savoir comment le faire, écrivez code source en haut, transmettre comme entrée d'un particulier programme connu comme un compilateur, et nous allons produire le code objet. Qui est juste une façon élégante de dire que nous allons prendre quelque chose qui ressemble à cela, passer dans un programme appelé compilateur, production de code objet qui ressemble à ceci. Donc, ce sont littéralement les schémas de 0 et de 1 qui sont compris par un Ordinateur Intel ces jours, que si elles sont interprétées par l'unité centrale, le cerveau à l'intérieur d'un ordinateur, littéralement imprimer, tout simplement, "Bonjour tout le monde." Maintenant, il ya beaucoup plus de 0 et de 1 que vous serait espoir pourrait être nécessaire pour cela. Mais c'est parce que nous construisons sur une bonne partie de la complexité que nous pouvons désormais prendre pour acquis. En d'autres termes, beaucoup de gens intelligents nous ont donné beaucoup d'outils cool et un logiciel puissant qui nous peut maintenant faire des projets de la nôtre. Donc, nous allons commencer. Alors que vendredi dernier, et pour ensemble de problèmes 0 cette semaine, vous jouerez dans un monde qui ressemble à ceci. A partir d'aujourd'hui et pour problème Set 1 la semaine prochaine, le code va regarder un peu plus cryptique, mais est fonctionnellement va être la même. Alors avis, est supérieure aux rayures, fond est C. Franchement Scratch est beaucoup plus facile à utiliser convivial et accessible. Mais si l'on compare maintenant visuellement supérieure à bas, il n'y a sorte de un pour un la correspondance entre l' des pièces de puzzle et la langue nous sommes sur le point de jouer avec. En particulier, dire, la bleu pièce de puzzle en haut, est apparemment équivalent à ce mot-clé ou une phrase particulière dans cette langue appelé C? PUBLIC: Printf. DAVID J. Malan: Printf. Cela signifie que l'impression formatée. Et c'est juste une fantaisie façon de dire printf en C va être une déclaration ou d'une fonction qui imprime quelque chose à l'écran. Que faut-il imprimer à l'écran? Quoi que vous disiez à l'intérieur des citations, à l'intérieur de parenthèses. Encore une fois, il est vrai, il ya beaucoup de choses que vous devez garder à l'esprit, parenthèses, guillemets, des points-virgules, et tout cela. Mais tout cela est une sorte de la question. Les plats à emporter intéressante pour l'instant est ce que le bloc de voix au Scratch est à peu près équivalent à printf en C Pendant ce temps, la pièce du puzzle jaune en haut, quand le drapeau vert cliqué, est probablement équivalent à ce mot-clé ici? PUBLIC: Main. DAVID J. Malan: Donc principale. Peut-être int, peut-être vide. Mais genre principal de sons comme il est important, et en effet il est. Ainsi, lorsque vous cliquez sur le drapeau vert est, encore une fois, le morceau de puzzle qui démarre une ensemble du programme de Scratch. Mais nous allons commencer dès maintenant appeler que la principale, cette fonction connue sous le nom principal. Maintenant, en attendant nous allons généraliser ce de la manière suivante. Nous pourrions appeler dire une fonction. Et il pourrait ressembler spécifiquement comme ça. Eh bien, qu'en est-il des boucles? Si nous voulons lancer la conversion ou traduire plus de Scratch à C, cette chose ici apparemment juste dit: «Bonjour tout le monde" pour toujours. Donc, si vous associez ces son avec un chat dans Scratch, il va tout simplement continuer à dire dans une sorte de bulle de bande dessinée, "Bonjour tout le monde, Bonjour tout le monde, bonjour monde ", ad nauseam, toujours. Si nous voulons faire quelque chose de similaire dans C, il va chercher un peu cryptique. Mais nous pouvons obtenir le même résultats, comme nous le verrons par la suite savoir, avec cette syntaxe. Je vais utiliser printf nouveau, parce que, à la fin de la journée Je veux imprimer "Bonjour tout le monde." Et je suis apparemment l'aide d'un mot-clé qui n'est pas pour toujours. C'est plutôt le mot tout. Mais juste sémantiquement dans Anglais, tout en sorte de suggère une sorte de boucle ou cycle. Donc, ce qui arrive à être le mot-clé que C utilise. Et tandis que vrai, pourquoi alors moyenne réelle efficacité pour toujours? Eh bien, alors, comme nous allons bientôt apprécier d'autant plus, a cette parenthèse à côté de lui où vous pouvez mettre une expression booléenne. Et tant que expression est vraie, ce code, telle qu'indiquée entre les deux accolades comme nous les appelons, va juste continuer à courir encore et encore. Tant il est vrai vrai. Ainsi, alors que de véritables moyens il suffit de faire ce pour toujours. C'est presque un stupide construire de vous exprimer. Mais il n'y avait pas toujours mot-clé dans C. On a alors. Et il y avait un très simple Expression booléenne comme vrai. Et cela, nous le verrons, permet d'obtenir le même résultat. Sinon, comment pourriez-vous mettre en œuvre une boucle? Eh bien, dans Scratch vous pourriez coder en dur un certain nombre d'itérations de la boucle ici. Et c'est exactement ce que nous pourrait faire dans cette version de C, lequel nous avons un soi-disant pour la boucle. Et la boucle ici va à parcourir, un peu énigmatique, à partir de la valeur 0 sur place mais à moins de 10. Maintenant variables dans Scratch. Vous pourriez ne pas avoir eu occasion d'utiliser ces. Mais quel est le point, en général, d'une variable avons-nous dit la semaine dernière? Qu'est ce que c'est? PUBLIC: Points. DAVID J. Malan: Pour pointer? Oh, les points. OK, le suivi de points, par exemple, dans le stade. Ou plus généralement faire ce avec la variable? Quelle est l'utilité d'entre eux? PUBLIC: Mémoire. DAVID J. Malan: Ouais, donc la mémoire. C'est pour stocker quelque chose. Et le genre de bête Je visuel utilisé dernière fois, c'était comme ce bol en verre. Et si nous voulons stocker quelque chose à l'intérieur d'une variable, par exemple en ce moment la La valeur est de six, car il six balles de ping pong dans ici. C'est juste une sorte de stockage Récipient sous le capot que est mis en œuvre avec les bits, 0 et de 1, Cependant un ordinateur arrive à le faire. Ainsi, dans Scratch, si nous veulent avoir une variable, nous pouvons utiliser un bloc orange comme ça. Nous appellerons ce compteur dans ce cas particulier. Je initialisé à 0. Et ce que je fais alors? Toujours, dire contre qui, si vous jouez avec celle de Scratch, vous ne verrez Scratch. Le chat ou tout autre costume que vous mettez sur lui indiquera le numéro en question. Compteur de variations de 1 est comme par incrément de 1. Et si cela va compter de ce alors? De 0 jusqu'à l'infini, ou jusqu'à ce que les pauses à gratter, ou jusqu'à ce que vous sorte de perdre de l'intérêt à regarder à quelle hauteur il peut réellement compter. Alors, comment pouvons-nous convertir en C? Il va chercher un peu cryptique. Mais encore une fois, si vous regardez à chaque de ces lignes individuellement ils genre de gamme en général. Int Donc, apparemment, va avoir une signification spéciale dans C. Nous allons voir ça. Soit dit en passant, cela signifie entier. Donc, cela signifie juste nombre. Voilà le type de bol en verre que je veux, un qui peut stocker des nombres, pas ping pong boules. Et je vais utiliser le signe égal il lui attribuer une valeur de 0. Donc, c'est tout à fait comme ensemble compteur à 0, mais en C. Pendant ce temps, tout en vrai, c'était équivalent, bien sûr, pour toujours, même si c'est un peu cryptique, puis à l'intérieur des accolades. Et vous pouvez penser de ces accolades, laquelle vous pouvez taper sur votre clavier, comme étant réellement comme la courbure dans ces blocs de boucle jaunes dans Scratch. Elle englobe plusieurs lignes de code. Printf est d'obtenir un peu effrayant parce que je voir non seulement des citations entre parenthèses. Mais quoi de neuf syntaxiquement dans cet exemple? Il ya un pour cent d. Et puis oblique n est là. Nous n'avons que avant, même si je n'en ai pas parlé. Ensuite, il ya une virgule. Et puis il ya un compteur. Mais nous verrons en seulement instant que ce n'est que un moyen standard de dire une impression "Nombre décimal," entre guillemets, un certain nombre décimal. Mais je vais vous le dirai plus tard ce que nombre décimal est. Donc, le fait qu'il ya une virgule dans cette ligne dicton printf, signifie aller de l'avant et d'impression un certain nombre décimal. Oh, et en passant, le nombre est quelle que soit la valeur de cette variable est. Et donc pour le rendre plus clair, nous verrons un exemple avant longtemps portant exactement sur printf dans le cadre de programmes immobiliers C. Maintenant, il suffit de conclure un certain de ces constructions. Expressions booléennes, vous pourriez ne pas avoir l'occasion de les utiliser dans votre programme mais vous pourriez très bien, notamment si l'on utilise des conditions. De sorte que ces deux exemples de Grattez dire si x est inférieur à y, ou si x est inférieur à y et y est inférieur à z, comment pourrions-nous traduire cela? Eh bien, en C, il est juste va ressembler à ceci. Un peu cryptiques, plus parenthèses, certains esperluette étranges, mais fondamentalement les idées sont aussi simples qu'elles sont dans le monde de la pièce de puzzle. Nous sommes tout simplement de vérifier si quelque chose est inférieure à autre chose. Que diriez-vous les conditions? En un mot en anglais, ce qui fait de cette morceau de code à gratter ne diriez-vous? PUBLIC: Compare deux nombres. DAVID J. Malan: Compare deux nombre, et si x est inférieur à y elle en dit autant. Si x est supérieur à y elle en dit autant, sinon si x est égal à y elle en dit autant. Maintenant, où x et y ne viennent-ils? Qui sait. Ce morceau de Scratch code est hors contexte. Mais ce que nous voulons faire maintenant est de traduire ce pour un instant pour voir. Donc, comme vous obtenez à l'aise cette semaine ensemble de problèmes 0 jouer dans ce monde sur la gauche, réaliser que les idées ne changent pas cette semaine ou la prochaine ou au-delà. Nous allons simplement commencer à écrire des choses d'une autre manière avec notre clavier à la place de notre souris. Donc, si x est inférieur à y, et il ya quelques parenthèses là-bas, puis il ya quelques accolades à nouveau type d'encapsuler tout comme les pièces d'un puzzle jaune font. Et je vais à printf x est inférieur à y, et ainsi de suite. Ce qui est bien à propos de C, comme vous pouvez le voir ici, c'est que vous ne recevez pas cet emboîtement, nidification, reproduction, c'est nécessairement va pousser votre code vers la droite. Vous pouvez avoir tout lieu gamme parfaitement comme ça. Mais c'est juste une esthétique détail, nous verrons à nouveau avant longtemps. Bien. Donc, cela nous ramène à ce programme à l'aspect crypté. Nous allons écrire un peu de code. Maintenant, comment allez-vous écrire de code? Toutes ces années que vous avez possédiez un Mac ou un PC, de bureau ou portable, vous avez effectivement eu la capacité de commencer à écrire le code de programmation. Mais vous êtes probablement manquer un type de programme. Vous pouvez certainement écrire du code. Mais vous ne pouvez pas nécessairement, hors de la boîte, convertir le code source en code objet, 0 et de 1 sans quoi sur votre ordinateur? PUBLIC: Compiler. DAVID J. Malan: Donc, un compilateur, à droite. Aujourd'hui, la plupart d'entre vous sans doute ne possèdent pas un compilateur, n'ont jamais téléchargé un compilateur. Mais vous verrez que vous pouvez télécharger comme la plupart de tout autre morceau de logiciel. Dans le monde de Mac OS, vous pourriez télécharger ou ont déjà téléchargé quelque chose qui s'appelle Xcode ou GCC ou Clang. Si vous venez de l' Windows, vous pourriez monde ont téléchargé Visual Studio, Visual Basic, environnements comme ça. Il ya des dizaines de compilateurs ces jours-ci que vous pouvez utiliser. Mais le court, c'est ici est que ce serait une douleur et, franchement, une technologique cauchemar pour des centaines des personnes atteintes de différents configurations informatiques à tous configurer leurs machines exactement de la même manière de sorte que nous pouvons tous être sur la même page. Donc, ce que nous, à la place, faire dans CS50, c'est que nous vous donnons un environnement standard, un Environnement Linux qui est aller chercher un peu de quelque chose comme ça. Vous verrez plus de cela dans le Problème Set 1 cahier des charges qui sera mis en ligne ce vendredi soir. Et ce que cela signifie c'est que vous désormais vont être en mesure d' télécharger et installer un programme appelé le CS50 Appliance. Et vous allez télécharger et installer un autre programme appelé un hyperviseur, qui est juste un fantaisie façon d'y parvenir. Que vous soyez propriétaire d'un Mac ou d'un PC ou d'un Ordinateur Linux ou un ordinateur Solaris, ou quelle que soit exploitation fou système que vous utilisez, vous allez télécharger un programme appelé l'hyperviseur qui est va courir le CS50 Appareil sur votre ordinateur quel que soit votre système d'exploitation est. Un hyperviseur en d'autres termes convertit nos affaires dans n'importe quelle langue, quel que soit vos instructions propre ordinateur comprend. Il s'agit donc d'une superposition. Et encore une fois, c'est un peu des thématiques en informatique la science, le bâtiment sur le dessus des choses. Vous pourriez avoir Windows. Vous pourriez avoir Mac OS. Mais à partir de la semaine prochaine vous êtes va avoir téléchargé un logiciel gratuit appelé l'hyperviseur. Vous allez avoir téléchargé un morceau logiciel appelé la CS50 Appliance. Cela va fonctionner dans l'hyperviseur, qui va s'exécuter sur votre ordinateur. Et le résultat final est que chacun d'entre nous sera avoir une fenêtre simple comme cela sur votre Mac ou PC ce qui nous donne l'illusion de tout exécuter le même système d'exploitation, sans autre impact sur votre ordinateur. Et vous pouvez plein écran et il se comporter essentiellement comme si vous exécutez une système d'exploitation appelé Linux, qui est ce que le CS50 Appareil est basé sur. Donc, nous allons effectivement utiliser ce maintenant d'écrire un programme. Vous pouvez écrire un programme l'aide de Microsoft Word. Vous pouvez écrire un programme en utilisant TextEdit ou Notepad, ou WordPad, ou à peu près n'importe quel mot programme de traitement vous avez déjà utilisé. Mais la réalité est que vous ne devriez pas vraiment utiliser l'un de ces programmes. Vous devriez certainement pas utiliser quelque chose comme Microsoft Word, qui a face et italique gras, et grandes polices et des polices plus petites, parce que l'ordinateur ne fonctionne pas soucier de tout cela. Toute l'ordinateur est va se soucier est Anglais comme des instructions écrites en C. Donc, ce que nous ferons à l'intérieur de l'appareil de CS50 est d'utiliser un programme gratuit disponible, et il est pré-installé en ce appareil, appelé Gedit. Et Gedit est juste un super simple éditeur de texte comme TextEdit de Mac OS, comme Bloc-notes Windows qui va regarder un petit quelque chose de ce genre. Donc, nous allons effectivement pas regarder des diapositives de cette. Mais nous allons effectivement aller dans l'environnement lui-même. Je vais aller de l'avant et connecter, dans cette autre fenêtre, à mon CS50 Appliance, que je n'ai pré-installé sur mon portable ici. Notez que, comme Windows et Mac OS, il a quelques menus. Comme Windows, il met il là-bas à la place de Mac OS, ce qui le place là-bas. Mais la réalité est que c'est tous les types de la même. Et en voici un tout tas de logiciels. Il ya Dropbox. Il ya tout un tas d'accessoires, programmes graphiques que nous allons utiliser plus tard dans la durée pour les ensembles de problèmes. Il ya un navigateur Web intégré dans la qu'il s'agit d'un ordinateur à part entière à l'intérieur d'un ordinateur. Mais je vais cliquer sur ce plus à gauche icône blanche ici, qui est l'icône de Gedit. Et il va ouvrir une fenêtre qui a trois panneaux à elle, une une gauche, un haut-ci, et une une base. Maintenant, c'est dans ce droit un sommet qui Je vais effectivement écrire du code. Alors, faisons ce ,. Je vais aller dans Fichier, Enregistrer. Et vous pourriez ne jamais avoir vu cette fenêtre particulière avant. Mais c'est comme Mac OS ou Windows. C'est juste une fenêtre avec tous les dossiers que j'ai à l'intérieur de cet ordinateur. Et je vais sauver le fichier que hello.c. Et je vais aller l'avant et cliquez sur Enregistrer. Et maintenant, j'ai remarqué un onglet en haut à gauche appelé hello.c. Donc probablement assez familier, même si vous avez pas utilisé ce programme particulier avant. Et maintenant, je vais taper dans les séquence assez cryptique de commandes que nous avons vu il ya un moment. Inclure standard I / O.h. Plus sur cela bientôt. Void main int, bouclé ouvert corset, fermé accolade. Et puis à l'intérieur de là, je pense que c'est où nous avons eu "Bonjour tout le monde," point-virgule. Et maintenant enregistrer. Il s'agit donc d'un programme écrit en C, écrite, par conséquent, dans le code source. Mais je ne peux pas exécuter ce programme. Je veux sorte de doubler cliquez sur une icône quelque part, mais aucune icône existe d'autres que le fichier de code source. Qu'est-ce, encore une fois, est le processus maintenant que J'ai besoin d'exécuter ce fichier à travers? PUBLIC: Compiler. DAVID J. Malan: Donc un compilateur. Ainsi, dans différents ordinateurs que vous faire de différentes manières. Mais ce que nous avons fait ici en l'Appliance CS50 qui est représentant de la façon dont vous pourriez le faire sur de nombreux systèmes différents, c'est que je vais tout simplement exécuter une commande appelée marque. Et marque va littéralement faire. Faites-moi un programme. Donc, assurez-va exécuter un compilateur pour moi. Et le nom du programme Je veux dire, c'est bonjour. Maintenant faire est un programme. Et faire est assez intelligent pour se rendre compte que si je dis bonjour faire, il va chercher automatiquement pour un bonjour.c de fichier appelé juste parce que c'est la façon dont il est configuré. Alors, quand j'ai maintenant frappé Entrez ici, ce ligne cryptique fou vient de se exécuté. Et croyez-moi, avant longtemps, dans quelques jours, vous comprendrez ce que tous de ce moyen de non-sens. Mais pour l'instant, il suffit de savoir que faire l'exécution d'un compilateur déclenchée. En d'autres termes, il a trouvé un compilateur sur mon ordinateur c'est pré-installé sur l'Appliance CS50 que nous allons vous remettre en problème Set 1. Et il a ensuite pris comme bonjour.c entrée, et produit apparemment 0 et de 1 en sortie. Et par défaut ce qu'il fait est qu'il permet d'économiser ces 0 et de 1 dans un fichier appelé bonjour. Et si cette syntaxe trop pourrait être nouveau pour vous, tout simplement en disant point réduire bonjour va être l' moyen par lequel je lance ce programme. Pour le moment et pour au moins un couple de semaines, la quasi-totalité des programmes nous écrivons allons être en noir et blanc fenêtres de texte. Pas de souris, pas de clic, pas de fenêtres, pas d'icônes. Nous allons garder les choses simples et se concentrer sur les idées qui sous-tendent d'abord avant d'arriver à quelque chose niveau plus élevé, par exemple, comme l'éclatement jeu que nous avons parlé sur la première conférence de la semaine dernière. Alors, quand j'ai touché Entrez ici, c'est équivalent dans un texte que l'environnement à double-cliquant sur une icône appelée bonjour. Qu'attendez-vous de la volonté arriver quand je frappe Entrez alors? PUBLIC: Il va imprimer "Bonjour tout le monde." DAVID J. Malan: J'espère il affichera "Bonjour tout le monde." Et elle l'a fait. Maintenant, il ya eu une certaine syntaxe cryptique ici. Disons rembobiner pour seulement un moment et voir si nous ne peut pas démarrer déduire simplement par bricoler, tentatives et des échecs, à ce qui se passe ici. Que faire si je me débarrasser de la barre oblique inverse n? Maintenant, certains d'entre vous qui avez programmée avant probablement savoir instantanément ce que cela signifie. Mais pour ceux d'entre vous qui avez jamais programmé avant, au moins penser à vous-même ce qui se passe à changer quand je ReRun ce programme? Donc, je vais redescendre à mon petite fenêtre en noir et blanc, qui est la fenêtre dans laquelle Je peux compiler ce. Je vais recompiler bonjour. Nous allons voir le même séquence cryptique de commandes. Et je vais faire slash dot bonjour. Et maintenant quelqu'un, si vous le voulez, qui n'a jamais programmé, ce qui pourrait être différent cette fois? Ouais. PUBLIC: Il ne s'arrêtera pas impression "Bonjour tout le monde." DAVID J. Malan: Ça va to-- désolé? PUBLIC: Il ne s'arrêtera pas imprimer? DAVID J. Malan: Il ne sera pas arrêter l'impression "Bonjour tout le monde." Donc pas une mauvaise idée. D'autres idées? Ouais. PUBLIC: message d'erreur? DAVID J. Malan: Erreur message, OK, peut-être. Quoi d'autre? PUBLIC: Il peut imprimer l' support avec le point-virgule ainsi? DAVID J. Malan: Pourrait imprimer l' support avec le point-virgule ainsi. Alors peut-être que la barre oblique inverse est alors un peu type de terminous que c'est important. Toutes les autres pensées? Donc, toutes les bonnes idées. Et en fait, ça va être un message d'erreur. C'est probablement la plus probable être la réponse en général pour les prochaines semaines que nous apprenons à coder ici. Mais pour l'instant se rappeler que les ordinateurs seulement vous feriez ce que vous leur dites de faire. Tout comme l'arachide ridicule beurre et de gelée exemple. Nos ordinateurs humains ont été seulement censés de faire ce que vous leur avez dit de faire. Donc dans ce cas, si vous ne pas dire à l'ordinateur pour déplacer ce curseur clignotant sur le ligne suivante, il ne va pas le faire. Donc, quand je lance ce programme maintenant, vous remarquerez la différence. On dirait un bug. C'est un bug esthétique, peut-être. Mais ce qui est différent au sujet de cette sortie en fonction de la dernière évidence? Ouais. PUBLIC: Il n'a pas fait une nouvelle ligne. DAVID J. Malan: Il n'a pas fait une nouvelle ligne. Maintenant, ceux d'entre vous qui avoir des pages web peut-être faites avant, vous savez peut-être de la BR étiquette ou la balise de paragraphe, très similaire dans l'esprit. Un navigateur web vous ignorer jusqu'à ce que vous lui dites exactement quoi faire. De même, est un langage comme C seulement allez faire ce que vous lui demandez de faire. Ainsi, la raison pour laquelle tous ces exemples, à ce jour, ont type de eu par hasard cette barre oblique inverse là, c'est les moyens par lequel vous vous exprimez comme un caractère de nouvelle ligne, pour ainsi dire. Et vous pouvez sorte de le comprendre, peut-être, que ça ferait un peu stupide si rien d'autre. Si je voulais une nouvelle ligne, juste Entrez frapper puis genre de massacrer le code comme ça ne devrait pas vraiment vous frotter le droit chemin. Et même si vous ne le faites pas s'intéressent pas vraiment à ce point, vous vous rendrez compte que ce n'est pas un particulier bon morceau à la recherche de code. Et si ce que le monde il ya quelques années est décidé que lorsque vous voulez mettre le curseur sur une nouvelle ligne explicitement, vous devez explicitement dire nouvelle ligne, barre oblique inverse n. Et il ya un autre symboles comme ça. Mais pour l'instant nous allons juste se concentrer sur la barre oblique inverse n. Faisons maintenant le programme un peu plus intéressant. Je vais aller de l'avant et cette fois d'ouvrir un nouveau fichier. Je vais l'enregistrer comme bonjour-1.c. Et juste pour le plaisir, je vais aller le mettre dans mon dossier Dropbox. Comme vous le verrez dans le CS50 documentation de l'appareil, plus tard cette semaine pour problème Set 1, nous encourageons vous utilisez Dropbox ou un service équivalent, car alors tout le code de va être sauvegardé automatiquement. Et c'est pour ça que je n'ai passé dans ce dossier ici. Et maintenant, je vais écrire une programme légèrement différent. Inclure standard I / O.h, void main int. Et puis ici printf, Bonjour tout le monde, qui est exactement le même que précédemment. Mais maintenant, je veux imprimer quelque chose c'est un peu différent. Je veux imprimer, dire: «Bonjour, David." Très bien, alors de toute évidence, il devrait, espérons- être le cas que si je recompile ce programme, relancez-le, il va dire "bonjour, David." Mais si je veux introduire ce type de variable, la notion d'un conteneur qui va pour stocker D-un-v-i-d et code, il n'est pas difficile dans mon programme. Eh bien si je commence faire quelque chose comme ça? String s, c'est donc une variable. Si vous voulez une chaîne, a.k.a. un mot ou une phrase. Une séquence de caractères est ce que nous appelons à la programmation d'une chaîne. Nous allons juste générique appel il s, parce que c'est un joli nom simple. Mais je ne pouvais l'appeler n'importe quoi. Je vais dire les égaux chaîne de entre guillemets, «David», point-virgule. Et maintenant, je veux insérer D-un-v-i-d dans ce que je suis impression. Et avant, nous avons vu un teaser sur l'écran de certains syntaxe spéciale qui nous a permis de substitut à une valeur. Quelle a été la spéciale symbole, il ya quelques diapositives? Donc pour cent. À l'époque, c'était pour cent d pour décimal. Cela ne semble pas vraiment pertinent ici. S'avère qu'il ya un autre symbole de pour cent, qui est l pour cent, ce qui signifie pour un espace réservé pour une chaîne. Alors maintenant, très simplement, je suis va aller faire bonjour-1, car ce fichier est appelé bonjour-1.c, et appuyez sur Entrée. Et j'ai foiré. Ce qui se passe? Eh bien, c'est là que nous devons commencer à conscients que nous sommes dans cette commande environnement de ligne, ce texte seul environnement. Il n'y a pas cliquer sur les icônes comme des dossiers en ce moment. Et pensez à il ya un moment. Dans ce dossier fait je dis Je gardais mon code? Donc, le dossier Dropbox. Aurait pu s'appeler rien. Mais il arrive d'être appelé Dropbox. Donc j'ai un peu besoin de double-cliquer sur ce dossier Dropbox afin d'obtenir en elle et me mettre à l' Code appelé bonjour-1.c. En fait, laissez-moi aller de l'avant et minimise cette fenêtre pendant un moment. Tout comme Windows et Mac OS, il ya des dossiers dans Linux. Il ya des dossiers dans le CS50 Appliance. C'est juste maintenant nous confiner nous à cet environnement de texte. Mais si je double clic sur Dropbox, remarquez il est le fichier que je veux compiler. Mais j'ai besoin de ce noir et blanc fenêtre de terminal, pour ainsi dire. Mais j'ai besoin, donc, de se déplacer dans ce dossier ou répertoire. Donc un peu mystérieux, mais vous aurez l'habitude de cela aussi. Dans le monde de Linux, qui est de nouveau le fonctionnement système que nous allons manquer l'intérieur de la CS50 Appareil, il ya une commande appelée CD. Ce qui veut dire que je peux faire CD, l'espace, Dropbox. CD, changement de répertoire. Droite. Retour dans la journée quand les gens étaient inventer des ordinateurs et de l'exploitation systèmes de ce genre, ils voulaient tapez les touches moins de possible. Donc, la meilleure façon de dire changement de répertoire a CD. Donc, si je frappe CD, espace Dropbox, remarquer ce qui a changé ici. A l'intérieur de parenthèses l'appareil est en quelque sorte de me ménageant et me rappeler où je suis. Ainsi, le dossier ouvert est Dropbox. Si je tape maintenant ls pour liste, encore succincte, parce que les gens ne voulaient pas entrez dans la journée l-i-s-t. Ils ont fait place donc ls. Entrée. Remarquez que je vois deux choses, bonjour-1.c, et puis cette chose énigmatique source 1m. C'est juste ma façon de dire code source pour la semaine 1 lundi. C'est un dossier que j'ai téléchargé à partir de Le site Web de CS50 que j'ai fait plus tôt aujourd'hui et il suffit de mettre dans le appareil à l'avance. Mais pour l'instant la seule chose que nous importe est fait de ce programme. Alors, quand je tape faire bonjour-1, Entrée. Bon sang. Quelque chose s'est mal passé. Donc, nous allons taquiner cet appart. Et malheureusement c'est là que les choses obtenir un peu stressant au début, du moins si vous avez jamais programmé avant. Mon Dieu. J'ai écrit un programme de deux lignes et J'ai quatre lignes d'erreurs. Donc ce qui se passe ici. Tout d'abord toujours revenir en arrière et trouver le premier message d'erreur, parce compilateurs souvent juste se confondre par ce que vous et moi. Les compilateurs sont assez stupide. Ils ne font que ce vous leur dites de faire. Et si vous les confondez, ils sont tout simplement aller au genre de baisser les bras et peut-être jeter plus de messages d'erreur que ne le sont réellement pertinent. Examinons donc à la première. Super énigmatique au premier abord. Mais remarquez, voici le nom de la fichier dans lequel je foutu apparemment. Colon 5, du côlon 5 signifie simplement sur ligne 5 à la cinquième caractère. Ainsi cinquième colonne de caractères, si vous voulez, erreur. L'utilisation de chaîne d'identificateur non déclaré. Vouliez-vous dire norme n? Non, je voulais dire chaîne. Et puis c'est le genre de copier et coller ce que j'ai tapé à vraiment attirer mon attention à l'endroit où j'ai foiré. Donc, pour une raison quelconque, C, ou au moins le compilateur ne comprend pas la chaîne de mots. Et c'est parce que nous l'avons fait jusqu'à. Donc n'existe pas chaîne dans C. Quel CS50 fait, pour les premières semaines seulement de la classe, c'est que nous offrons une formation roues, pour ainsi dire. Et nous avons mis ces roues de formation l'intérieur d'un fichier spécial appelé CS50.h. C'est donc la deuxième de deux fichiers noms qui se terminent apparemment en dot h. Disons rembobiner. Printf est une déclaration ou d'une fonction qui imprime apparemment quelque chose à l'écran. Mais vous ne m'avez pas vu mettre en œuvre printf, à droite. il ya des années de mise en œuvre Quelqu'un printf. Dans ce dossier vous parier qu'il ou elle a mis la mise en œuvre pour printf, le code de printf? Dans un fichier appelé E / S standard O.h. En fait, c'est probablement dans deux fichiers, E / S standard O.h, qui se tient pour la tête fichier, et le niveau I / O.c, qui se tient pour le code source C. Donc, il ya, il ou elle quelques années flac le code qu'ils ont écrit dans ce fichier de sorte que des gens comme nous ans plus tard, peuvent inclure, pour ainsi dire, dans nos propres programmes. Et en effet, c'est ce que le signe dièse suivi du mot comprennent le fait. Il semble sur le disque dur local, trouve le fichier appelé E / S standard O.h, puis copie effectivement et papiers, coller à l'intérieur de mon propre fichier. Alors maintenant, mon programme sait comment imprimer sur l'écran. Ainsi, par cette logique, où est une chaîne définie? PUBLIC: CS50.h. DAVID J. Malan: CS50.h. Et en effet, c'est ce que nous, le personnel de base, ont fait. Nous avons inventé quelques types de données, pour ainsi dire, comme une chaîne, en plus de ceux que vous obtenir gratuitement, comme un int. Et nous voyons les autres comme un charbon pour un caractère et un peu plus. A l'intérieur de CS50.h est apparemment au moins une mention de chaîne. Alors maintenant, laissez-moi aller de l'avant et réexécutez bonjour-1. Je zoome encore et croise les doigts. Maintenant, en ayant fait un changer J'ai corrigé la plupart des choses. Mais bon sang. Plus de pourcentages que les arguments de données. Qu'ai-je fait de mal cette fois? Donc, il est encore assez énigmatique. Mais cette erreur est ligne 7 et le caractère 21. Allons donc chercher ici. C'est un peu subtil. Mais si vous pensez à ce que les idées fondamentales sont ici, peut-être que nous pouvons taquiner cet appart. Ainsi printf est le nom de la fonction. Les parenthèses, à ce jour, est tout comme ce que nous mettons dans les choses que nous passons comme entrées à une fonction. Très bien, juste un convention arbitraire humain. Utilisez les parenthèses. A l'intérieur de ces parenthèses nous avons été en train de mettre des guillemets, puis une chaîne comme "Bonjour tout le monde." Mais dans cet exemple très tôt brièvement fait que nous regardons avec Scratch. Et nous avons eu le pour cent d, quoi d'autre était à l'intérieur de ces parenthèses que j'ai appelé verbalement? Ouais. PUBLIC: Donc, c'est ce que vous prenez [Inaudible] à partir de [inaudible] ce que ces [inaudible]? DAVID J. Malan: Exactement. Donc, nous avons eu le pour cent d. Mais nous avons eu près citation, une virgule, un compteur. Droite. Nous avons précisé ce que nous voulons de faire ce que l'espace réservé. Donc ce que je vais faire ici est virgule, que voulez-vous que je mette? PUBLIC: S. DAVID J. Malan: S, car s dans ce cas est le nom du conteneur de stockage. C'est le nom de ce bol en verre. Alors qu'avant il était contre le fait que exemple Scratch simple, nous avons examiné. Alors maintenant, après avoir fait deux changements, permettez-moi un zoom avant et essayer une fois de plus à compiler ce programme. Maintenant, je vois que la ligne cryptique. Mais c'est en fait la nom du compilateur. Cliquetis est le nom du compilateur. Make est juste me sauver le mal de tête de plus en taper cette commande à long fou sur. Alors maintenant, si je ne slash dot bonjour-1, Je dois voir "bonjour, David." Jolie décevante, bien, non? Nous aurions pu faire ce beaucoup plus simplement sans parler des variables et CS50.h et tout cela. Faisons donc un peu plus intéressant. En plus de CS50.h, avoir des choses comme chaîne déclaré, la bibliothèque CS50 a aussi quelques fonctions. Il ya quelques années donc, tout comme, quelqu'un a écrit printf et le mettre dans la norme E / O.h et un autre fichier. Nous, le personnel CS50, écrit une fonction appelé GetChar, GetDouble, GetFloat, Getint, GetLongLong, GetString, et nous mettons les dans un fichier appelé CS50.h et CS50.c. Et nous les avons mis à l'intérieur de la CS50 Appliance. Et les gens peuvent aussi télécharger en ligne si elles envie de les mettre sur leur propres ordinateurs ainsi. C'est-à-dire que nous avons créé fonctions qui obtiennent entrée de l'utilisateur. Je ne sais pas ce que tout de ces types de données sont. Getint est une sorte de simple, comme obtenir un nombre entier d'une certaine manière de l'utilisateur. Et GetString est probablement comme get un mot ou une phrase de l'utilisateur. Donc, nous allons mettre l'accent sur ce point. Et je vais retourner dans la appareil et je vais aller de l'avant et enregistrez le fichier sous, disons il bonjour-2.c comme ma deuxième version. Et nous allons faire quelques changements. Cette fois, au lieu de David disque de codage, qui rend incroyablement cohérente mais le programme décevante, si je le fais à la place GetString? Maintenant, remarquez GetString a une parenthèse ouverte, parenthèse fermée, car il n'a pas besoin d'entrée. Il va juste aller chercher une chaîne de caractères à partir de l'utilisateur. Et maintenant, un mot sur l'autre syntaxe. Le point-virgule juste la fin d'une ligne de code. Vous n'avez pas besoin d'eux partout. Mais cela signifie juste que je suis fait avec cette ligne de code. Permettez-moi de passer sur un autre déclaration ou d'une fonction. Chaîne déclare une variable. Chaîne, c'est comme dire me donner un bol, s'il vous plaît. Et laissez-moi mettre une chaîne en elle. Et maintenant, le signe égal. Quel est le signe égal essentiellement équivalent à? PUBLIC: Assigner. DAVID J. Malan: Ouais, attribuer une valeur. Donc, si je, par exemple, l'appel cette fonction GetString, et nous le verrons dans un instant que c'est va demander à l'utilisateur une chaîne. C'est comme me laissant alors écrire D-a-v-i-d sur une feuille de papier. Et quand je dis chaîne s est égal à GetString, égalité ne veut pas dire égalité dans la programmation C. Cela signifie attribuer de la droite côté de la partie gauche. Donc, je suis devenu une chaîne. Et les moyens de signe égal mettre dans le récipient de stockage appelé s. Et ensuite passer cette option pour printf à fait faire sa chose. Donc le résultat final alors va à regarder un peu différent. Disons ne font bonjour-2. Soit pourraient travailler. Vous suivez. Faire bonjour-2 a fonctionné. Dot slash bonjour-2, Entrée. Il me semble avoir un infini boucle ou quelque chose. Rien ne se passe. Pourquoi? PUBLIC: Ca fait une boucle infinie. DAVID J. Malan: Il s'agit d'une boucle infinie. C'est une sorte d'attente pour moi de effectivement le fournir avec certaines entrées. Alors laissez-moi aller de l'avant et tape dans David, et appuyez sur Entrée. Et maintenant, il dit "bonjour, David." Si je cours à nouveau. Donc tapons dans Rob, "bonjour, Rob." Maintenant, c'est le pire interface utilisateur jamais. L'utilisateur est apparemment supposé savoir ce qu'il faut faire. Mais peu importe. L'utilisation de ces même bâtiment blocs, tout comme dans Scratch, nous pouvons résoudre ce problème et dire quelque chose comme votre nom s'il vous plaît, du côlon, espace, fermé citation, près parenthèses, point-virgule. Il ya donc beaucoup de nouveau niaiserie avec la syntaxe. Mais notez que je viens d'ajouter un morceau de puzzle-dessus celui-ci et au-dessus de celui-ci. Alors maintenant, si je ReRun ce, bonjour-2, Entrée. Attendez une minute. Qu'est-ce qui ne va pas? Ce n'est pas se comporter différemment. Ouais. PUBLIC: Vous n'avez pas exécuter à nouveau make. DAVID J. Malan: je n'ai pas exécuter à nouveau make, à droite. J'ai donc changé mon code source. Mais encore une fois, il n'y a que le débit. Le code source par le compilateur donne Vous êtes nouveau code objet, ou 0 et de 1. Je dois donc fait réexécutez bonjour-2 Entrée. OK, quelque chose semble s'être passé. Dot slash bonjour-2. Votre nom s'il vous plaît. Et pour être clair maintenant, pourquoi est- le curseur sur la même ligne? Exactement. Je n'ai pas mis la barre oblique inverse n ici dans mon code. Alors maintenant, je peux écrire quelque chose comme Daven, Entrée. Je peux courir à nouveau et tapez quelque chose comme Gabe, Entrée, et nous obtenons un programme différent encore et encore et encore. Maintenant, finalement, nous allons avoir besoin de d'utiliser quelques capacités différentes. Nous devons mettre en place en fin de compte un certain conditions de faire les choses de manière conditionnelle. Peut-être que les boucles afin que nous puissions faire les choses encore et encore. Peut-être que ce serait bien si nous pourrait mettre en œuvre nos propres fonctions, comme nous avons pu mettre en place notre propre printf ou notre propre version de GetString et GetFlow, parce que finalement, même utilisant cet environnement de ligne de commande pouvons-nous faire, même les plus visuellement intéressant des choses. En effet, en conclusion permettez-moi de le faire. Je vais aller de l'avant et fermer ces fenêtres et ouvrir cette icône ici, qui est juste un plus grand version de ce noyé fenêtre de terminal. Donc Gedit a non seulement le lieu de mon code, mais aussi construit dans la fenêtre de terminal, la noir et blanc fenêtre où je peux courir commandes. Je suis tombé à ouvrir une version plus grande de cette. Et maintenant, je vais aller dans le dossier que j'ai déjà mis en avant sur le site Web du cours. Et je vais aller de l'avant et ouvrir un fichier appelé thadgavin.c, qui a été écrit par quelqu'un d'autre. Et si nous regardons ce, ce n'est pas le type de code nous allons écrire car l'objectif de ce code était d'écrire la plus belle à la recherche du code qui il ou elle pourrait, indépendamment de si oui ou non un autre être humain ne pourrait jamais comprendre ce code. En effet, chaque année, il est ce qui est appelé un concours C masquée, qui est pour les vrais geeks qui écrivent code qui personne ne peut lire, mais que fait quelque chose soit très simple ou vraiment incroyable. Et nous pensions que nous serions conclure avec ce look à quelque chose qui est assez étonnant vous pourriez avoir vu une fois avant. Mais nous nous retrouverons sur ce note slash dot, thadgavin. C'est donc ce qui l'attend. C'est tout pour CS50. Nous nous reverrons mercredi. [MUSIQUE LECTURE]