[MUSIQUE LECTURE] DAVID Malan: Très bien c'est CS50 et c'est la fin de la première semaine. Donc, je voudrais vous présenter mon ancien advisee, Andel Duff, qui permet non seulement iPhone 5 est, ainsi que ce lutrin, il fait aussi des voitures. ANSEL DUFF: Comment ça va, tout le monde? Je veux juste vous dire un peu peu de Formule SAE, dont je Je suis le capitaine. C'est une équipe du MIT. Je veux juste vous dire les gars un peu à ce sujet et générer espérons un certain intérêt. Alors permettez-moi de passer en revue un quelques choses à propos de notre équipe. Nous sommes donc tout à fait dirigé par des étudiants, dans lequel tous de la conception des membres, simuler, test, et le fabricant un sous-système de la voiture. Nous avons notre propre atelier d'usinage et garages, et N52-- ou désolé, N51-- qui est le même immeuble le Musée des Sciences du MIT. Et nous sommes le peuple qui conduisent la voiture. Il ya un concours national au début de l'été, et puis il ya des petits fusillade compétitions tout au long de l'année. Et puis nous faisons la formation des conducteurs jours pour se familiariser de nouveaux membres. Nos jours de construction sont sur Samedi onze heures-20 heures. Le déjeuner et le dîner prennent soin de, de Bertucci et de Beantown respectivement. Nous avons une réunion hebdomadaire et séminaire, qui est pour les crédits de cours. Ce qui est nouveau à partir de ce semestre, et il sera également pour le prochain semestre, de sorte que vous pouvez traverser-reg pour cela. Et puis nous avons la conception, la boutique, et les jours de CAO au cours de la semaine, alors que les membres de façon indépendante éléments de CAO, stock de commande et ainsi de suite. Donc, pour électrique ingénierie à l'équipe nous avons notre traction, Système à haute tension, qui fonctionne à une tension nominale 300 volts, ce qui comprend les moteurs, les commandes de moteur, et des batteries. Ensuite, nous avons un faible système de tension, qui se déroule à 12 volts, ce qui comprend contrôles, CAN nœuds, le cerveau boîte, et le tableau de bord. En ce qui concerne CS va, nous faisons avoir maintenance du site que nous n'avons fait pour des événements, l'adhésion changements, de nouvelles photos et de matériel de relations publiques. Et puis nous avons un code qui contrôle la voiture pour notre contrôle de traction, lancement contrôle, le contrôle du tableau de bord, vectorisation de couple, et les systèmes de freinage par récupération, qui de fonctionner normalement dans MATLAB, Simulink, et LabView. Vous dire un peu plus sur la voiture. C'est donc environ 500 livres. C'est règles limitées à 85 kilowatts. Il dispose de 2 EMRAX 207 moteurs de la arrière, un pour chaque roue arrière. Il a des batteries sur mesure à partir de cellules de poche A123 prismatiques, un montant total de 300 volts et 5,6 heures kilowatts. Et c'est à entraînement direct avec un rapport de 2,64 à 1 d'entraînement. Voici quelques photos nous a pris de lui à la concurrence. Voici le cône arrière, nez, et voici les moteurs, ces grands disques noirs sous la mens et manus. Voici une diapositive que je tirai de notre régime de concurrence. Et cela est juste compare notre voiture à un couple de voitures disponibles dans le commerce, comme la KTM XBOW, Ariel Atom, et Caterha M 7-280. Si vous êtes familier avec le prix, la puissance tirez poids, dollars par cheval-vapeur, dollars par couple, et notre voiture tous les coups hors de l'eau. Si vous avez des questions, notez cette adresse email. Nous tirer un email à fsae@mit.edu. Nous sommes heureux de parler de ce que vous voulez. Étudiants de Harvard sont gentils de la minorité dans l'équipe. Si vous avez des questions au sujet que s'il vous plaît ne nous tirer un email, heureux de parler, et je vais de retourner à David. Merci. Je l'apprécie, les gars. [Applaudissements] DAVID Malan: Ansel a passé l'été travailler avec nous ici sur le campus CS50 cet été. Et en plus de travailler sur des choses comme les ampoules binaires, il fait vraiment ouvert notre eyes-- et le mien dans particular-- à ce qui est vraiment l'intersection de pas de matériel et de logiciels peut être. En fait, beaucoup des choses qu'il a juste vous êtes en tournée à travers finalement créé le premier logiciel, et puis finalement fabriqué dans le monde réel dans le matériel. Donc, si vous êtes intéressé par explorer cette intersection, peut-être prendre ce groupe. Maintenant, quant à lui, ceux d'entre vous qui sont fans de technologie, et les produits Apple dans notamment savoir qu'il ya étaient un couple de annonces hier. Mais nous avons pensé montrons vous un qui est sorti quelques jours avant que vous n'auriez pas vu. JORGEN EGHAMMER: Vous savez, une fois dans un certain temps quelque chose vient le long de cette change la façon dont nous vivons. Un dispositif de manière simple et intuitive l'aide il se sent presque familier. Présentation 2015 catalogue IKEA. Ce n'est pas un livre numérique ou un e-book, c'est un livre-livre. La première chose à noter est pas câbles, pas même un câble d'alimentation. Le catalogue IKEA 2015 vient complètement chargée, et la durée de vie de la batterie est éternelle. L'interface est de 7,5 par 8 pouces, mais peut s'étendre à 15 par 8 pouces. La navigation est basée sur le toucher tactile la technologie que vous pouvez réellement sentir. Contenu est livré pré-installé par 328 pages en haute définition d'inspirer des idées d'ameublement. Pour commencer à naviguer, il suffit de toucher et faire glisser. Droite à gauche pour aller de l'avant, de gauche à droite pour revenir en arrière. Notez autre chose? C'est ça. Pas de décalage. Chaque page cristalline charges instantanément, peu importe à quelle vitesse vous faites. Si vous souhaitez obtenir un aperçu rapide, il suffit de tenir dans la paume de votre main, et en utilisant simplement votre pouce, vitesse parcourir le contenu. Si vous trouvez quelque chose que vous souhaitez enregistrer pour plus tard, vous pouvez simplement ajouter à vos favoris. Et même si vous fermez l'application, vous pouvez facilement retrouver le signet. Incroyable. [Rires] [Applaudissements] Donc, cela nous amène à la fin de la première semaine. Quelques annonces maintenant. Donc sectionnement est maintenant en cours. Aller à l'URL ici quelque temps entre aujourd'hui et vendredi à midi de préciser effectivement si vous êtes parmi ceux qui sont moins à l'aise, plus confortable, ou quelque part entre les deux. C'est typiquement un de ceux les choses que vous venez de type de savoir. Et en fait, ceux d'entre vous qui sont moins confortable savez probablement autant, ceux d'entre vous qui sont plus confortable savent autant, et encore si vous n'êtes pas sûr de ce qui de ces seaux vous tombez dans vous êtes probablement quelque part entre les deux. Mais rassurez-vous, vous pouvez échanger au bout de quelques semaines si nécessaire. En attendant, pour la semaine à venir on ne commence pas par soi sections, mais les sections de super, qui sont ouverts à tous les étudiants. Ce dimanche, à un endroit être annoncé sur le site du cours nous allons avoir un pour ceux qui sont moins à l'aise, ainsi que l'un de ceux qui sont plus à l'aise. Et ceux quelque part entre peut choisir lequel des deux, ou les deux si vous le souhaitez, à un sit-in sur. Et la mise au point de ces sera finalement sur C, que nous allons continuer notre la conversation d'aujourd'hui. Problème réglé 0 en attendant est j'espère que dans vos mains. Officiellement en raison demain, Jeudi, à midi. Sauf si vous encaissez un de vos 5 jours de retard, qui l'amènerait jusqu'à vendredi à midi. Problème réglé 1 devra quant à lui être posté sur le site Web du cours. Et ce sera notre première incursion comme une classe en C Et ce problème mis en spec vous guidera par beaucoup de la mécanique de ce nous avons commencé à parler le lundi, et nous allons continuer à parler aujourd'hui. C, Linux, le CS50 appareil, tout cela vous attendent dans la spécification. Les heures de bureau sont en cours quant à lui, dans la salle à manger de premier cycle. Rendez-vous à l'adresse ici pour voir le planifier pour ce soir et demain, si vous souhaitez participer. Questions Pendant ce temps, de sorte que vous avoir la possibilité de poser des questions asynchrone, 24/7, réaliser que vous êtes ne se limite pas aux sections et bureau heures, mais plutôt cet outil ici, CS50 Discuter de cette URL sera la ligne de cours logiciel de la carte d'affichage, par lequel vous pouvez poser des questions camarades de classe et aussi personnel. Donc, gardez à l'esprit que les ressources ainsi. Pendant ce temps une tradition commence ce vendredi. Comme vous avez pu entrevoir de teaser vidéo de mercredi dernier, nous avons une tradition plus tous les vendredis pendant le mandat de prendre quelque 50 étudiants et personnel dans un restaurant local appelé Fire and Ice, à laquelle nous sommes généralement rejoints par certains anciens ou des amis de l'industrie à aspirer général pour faire une grande classe se sentent plus petits. C'est donc un déjeuner tout à fait décontracté. Un groupe d'entre nous, le personnel en particulier, va jouer les chaises musicales et discuter avec les élèves sur 50, la vie à l'extérieur de 50, vie dans l'avenir, le monde réel, Je parle de possibilités d'emploi avec des amis dans l'industrie. Donc, si vous souhaitez vous joindre à nous ce vendredi, à la tête de cette URL ici. L'espace est limité, mais nous allons le faire cycliquement pendant toute la durée. Rendez-vous là pour cs50.harvard.edu/rsvp. Et si vous n'obtenez pas cette fois, ne vous inquiétez pas. Nous le ferons à nouveau dans les semaines à venir ainsi. Donc, c'est l'image nous avons peint la semaine dernière, et vous avez probablement été barboter dans ce jour. Mais nous allons essayer de relier cette entreprise à ce que nous allons faire aujourd'hui et au-delà. Pourrais-je avoir un bénévole? Très bien, ou plusieurs. Que diriez-vous ici sur la fin, en chemise bleue. Montez donc, quel est votre nom? ALANA: Alana. DAVID Malan: Alana. Donc, Alana, pour seulement un moment-- agréable de rencontrer vous-- va jouer le rôle de cette fonction ici. Le bloc violet nous avons appelé jusqu'ici une fonction. Donc ce que je vais avance ici et offrir Alana est un peu nom de balise, de faire clairement le rôle que vous jouez. Alors tu seras le bloc de dire. Si vous voulez aller de l'avant et mettre ça sur. Et nous allons garder ce super simple. Si l'objectif à portée de main est tout simplement maintenant à mettre en œuvre avec Alana, ce soi-disant dit bloc, voici comment cela va fonctionner. Je have-- appelons-il un argument ou un paramètre, c'est vraiment juste une feuille de papier vierge. Et elle est blanche à type de faire penser de la boîte blanche dans laquelle vous peut écrire des mots. En attendant, je vais aller ici. Je vais aller de l'avant et écrire H-E-L-L-O virgule monde. Et maintenant, moi, en tant que dire le programmeur, fais pas savent réellement comment dire quelque chose. Je peux venir avec les mots, mais je ne fais pas nécessairement savoir comment m'exprimer verbalement ou à l'écran. Et si ce que je vais à faire est de prendre cette pièce de fonctionnalités, dont la input-- ou un argument, comme nous l'appellerons, J'ai écrit sur ce morceau de paper-- et je vais le confier. Et en effet, c'est le rôle que les fonctions dans un langage de programmation peut jouer. Quelque chose comme l'exemple bloc peut être externalisée à quelqu'un qui sait vraiment ce qu'il ou elle parle. Donc, si vous enjambez ici pendant un moment, Je vais passer cette entrée pour Alana, et de demander que vous dites cette entrée. ALANA: Bonjour tout le monde. DAVID Malan: C'est ça. Alors qu'il existe une fonction. Maintenant, nous pouvons prendre un peu plus, nous pouvons faire un pas en avant ici. Parce que c'était clairement décevante. Donc, nous allons convertir maintenant ce à quelque chose d'un peu plus sophistiqué. Donc, cela est bien sûr notre version de C. Alors maintenant, si vous voulez prendre que un arrêt, ce nom étiquette hors et nous allons avoir vous mettez sur un nouveau nom. Mais fondamentalement vous êtes jouer le même rôle, il se trouve à être appelé printf maintenant. L'histoire est, bien sûr, va probablement être-- comme c'est underwhelming-- va être la suivante. Vous êtes maintenant la fonction printf. Je suis l'appelant, ou la programmeur, qui veut reposer sur les épaules d' gens dans le passé comme vous, qui ont déjà compris comment pour réellement écrire quelque chose. Et cette fois, plutôt que de dire qu'il nous allons effectivement utiliser notre écran ici. Donc, si vous souhaitez l'étape ici, je vais de passer à nouveau ce que entrée à mon ami printf. Si vous pouviez aller de l'avant et imprimer que sur l'écran, en tirant simplement avec votre le doigt sur l'écran noir. Excellente. D'accord, donc beaucoup de suspense pour comment cela allait se jouer. Alors maintenant, nous allons prendre les choses un encoche finale, si nous le pouvions, comme suit. Il s'agit donc d'un programme C comme nous l'avons dit la dernière fois. Et ce fait exactement ce que vous avez fait, il imprime à l'écran, bonjour, monde. Même si il ya clairement beaucoup de substance de distraction là-haut. Mais prenons les choses d'un cran et introduire cette version, qui rappellent C'était la troisième version nous nous sommes retrouvés avec la dernière fois. Et maintenant, il ya clairement deux utilisations de printf. Il ya deux appels à Alana dans ce cas pour printf, mais il ya aussi un appel pour une autre fonction. Qu'est-ce que la fonction clairement? GETSTRING. Pouvons-nous obtenir un plus volontaire? OK, venez sur place. Quel est votre nom? JAVIER: Javier. DAVID Malan: Javier, venez sur place. Donc, le rôle de Javier est sur ce morceau de papier. Ce que je vais appeler génériquement s. Maintenant, c'est une variable, il est de type chaîne, comme le laisse entendre par cette deuxième ligne au milieu là. Et je voudrais que vous allez me chercher une chaîne. Plus précisément la tête en bas à l'orchestre section et moi d'obtenir le nom d'une personne, et de revenir avec une variable contenant cette valeur. Il peut être qui vous voulez. Et c'est parti. Très bien, Javier est écrire le nom. Bien. Nous pouvons tous probablement deviner comment cela va se jouer. Nous peut-être belaboring le point de ce une fonction est de faire, mais néanmoins je vous remercie beaucoup. Donc, Javier est revenu cette chaîne ici, qui, ne peut pas tout voir, Jonathan est la chaîne que nous avons obtenu. Alors maintenant, ce que je vais en fait de fournir à Alana que est quelque chose d'un peu différent. Parce que dans cette version de la programme, il ya d'abord l'état de votre nom. Ainsi, le très premier argument J'ai besoin de fournir Alana avec va être dire littéralement votre nom. Très bien, si simple Je voudrais remettre cela pour vous. Et au moment où j'écris le d'argument suivant, si vous vouloir aller de l'avant et écrire ce sur la carte, nous allons aller de l'avant et faire le dernier exemple ici de faire effacer ce qui doit arriver en fin de compte. Donc, votre nom, écrire vers le haut si cela ne vous dérange pas, juste pour que nous avons de la place pour une deuxième ligne. Parce que la dernière chose que je vais de vous fournir maintenant avec n'est pas un, mais deux morceaux de papier. Bien. H-E-L-L-O virgule, puis une ligne vierge. Donc ce que je suis sur le point de remettre Alana maintenant est quelque chose d'un peu différent. Non seulement elle devient ce, où remplir le vide représente que percent-- quelle était la espace réservé nous utilisons? Ouais, donc pour cent s. En attendant, je vais passer elle dans un deuxième argument, qui C'est précisément ce que Javier extraites de Jonathan. Alors permettez-moi de vous donner ces deux. Si vous souhaitez, aller de l'avant et imprimer cet effet. Qu'est-ce qui se passe en fin de compte maintenant, Alana nouveau joue le rôle de printf. Javier jouait le rôle de GetString. Donc, ça va être votre souvenir. Et en fin de compte ce qui se passe, en dépit de ce hello-- yep aller de l'avant et la virgule. ALANA: Est-ce que je reçois ce encore ou pas? DAVID Malan: Yep, vous les deux reçu à la fois. Donc, l'idée est que vous peut maintenant tourner la page pour gérer la deuxième de ces deux entrées. Donc, il ne s'agit que de marteler le signaler que, alors que Alana exécuté cette ligne verte ici, puis Javier a fait celui-ci pour nous et revenez me voir quelque chose nous appelons s, mais c'était vraiment juste ce morceau de papier de la sienne. Et maintenant, Alana a fait cette troisième ligne. Et même si tout cela ressemble si incroyablement énigmatique peut-être à première vue, il a vraiment est aussi simple que cela. En passant entrées autour, obtenir sorties, soit être physiquement remis quelque chose en retour, ou de voir un effet secondaire de ce genre. Quelque chose de visuellement écrite sur l'écran. Donc, nous allons aller de l'avant et merci Alana et Javier, qui était ici-bas, pour nous rejoindre ici. [Applaudissements] Alors maintenant, nous allons prendre pour acquis à quel simple tout cela pourrait être. Et nous allons procéder à fait faire quelque chose dans le code réel. Donc, sur l'écran ici est une capture d'écran de l'appareil soi-disant CS50. Et si vous deviez à, comme un 14h00 le mercredi après-midi, expliquer dans une certaine ami ce que l'appareil est de CS50, comment définiriez-vous dans une phrase? Toute une seule phrase? Ouais? ETUDIANT: C'est comme un programme que fait l'ordinateur de tout le monde de fonctionner avec le même système. DAVID Malan: Bon! C'est un programme qui permet à chacun de ordinateur de fonctionner avec le même système. C'est un peu de votre propre copie d'une exploitation système qui arrive à être appelé Ubuntu Linux. Et il fonctionne de manière efficace à l'intérieur de une fenêtre sur votre propre Mac ou PC, de sorte que de cette façon dès la sortie de la porte dans la semaine 1, tout le monde ici dans la classe a accès aux mêmes outils, la même configuration, et il n'y a pas de courbe d'apprentissage spécifique à un Mac ou un PC en particulier. Maintenant, nous avons ouvert, à l'intérieur de la CS50 appareil lundi, ce programme ici. Il arrive à être appelé gedit. Mais c'est vraiment juste un éditeur graphique. C'est quelque chose comme le Bloc-notes ou texte Modifier sous Windows ou Mac OS, respectivement. Et j'ai proposé qu'il y avait vraiment trois éléments importants à cet écran. Le côté supérieur est l'endroit où vous serait écrire votre code. Et c'est là que nous avons passé beaucoup de notre trois exemples de la conférence de lundi. Le fond nous avons appelé ce, cette fenêtre noir, oui? ETUDIANT: compilateur? DAVID Malan: Compiler nous accédé par l'intermédiaire de cette fenêtre. Mais plus généralement. Ouais, c'était juste une fenêtre de terminal. C'est un vieux terme d'âge que juste décrit essentiellement un clignotement rapide, qu'il ya quelques années l'habitude d'être sur un de ces grands moniteurs de style CRT. Mais aujourd'hui, c'est un peu de virtuel dans le logiciel. Et les fenêtres terminales permet de faire le taper des commandes. Il sorte de la version simplifiée de l'interface utilisateur ou l'interface utilisateur. Ce n'est pas un graphique l'interface utilisateur graphique ou, c'est une interface en mode texte ou une interface de ligne de commande. Et en effet, c'est là finalement J'étais capable d'écrire un peu de code. Une fois que j'avais écrit du code si, rappelle que j'ai utilisé cette commande. Et comme il le nom type de l'indique, ce me permet de faire un programme appelé Bonjour. Mais ce qui a été vraiment fait? Eh bien make prenait mon entrée, mon code source, et la conversion à ce que, en fin de compte? Code de l'objet. Et le code de l'objet est juste une fantaisie façon de dire zéros et de uns. Et puis une fois que je voulais d'exécuter ce code objet, une fois que je voulais passer en entrée les zéros et de uns dans mon ordinateur de cerveau, la dite CPU ou de l'unité centrale de traitement, J'ai eu à exécuter le programme. Mais ce n'était pas tout à fait simple, le lundi comme il suffit de double cliquer sur une certaine icône. Qu'est-ce que la place ai-je dû faire pour exécuter un programme? Quelle était cette deuxième commande? J'entends un peu barres? Oui, oui? ETUDIANT: Dot slash et le nom du programme. DAVID Malan: Exactement. Dot slash et le nom du programme. Maintenant, qu'est-ce que cela signifie? Eh bien point est juste une façon mystérieuse de dire le répertoire courant. Quel que soit le dossier dans lequel vous êtes référencée, est représenté par point. La barre est juste ce que vous avez vu sous Mac OS et Windows depuis des années, c'est un séparateur entre un répertoire ou le dossier et le reste de quelque nom. Dans Windows, il arrive à aller vers l'arrière, sous Linux et Mac OS il arrive à aller de l'avant. Mais c'est juste le séparateur, il est donc juste un détail syntaxique inintéressant. La partie juteuse de cours est le nom du programme, Bonjour. Et c'est ce que rendent créé pour nous. Il sorti ce fichier pour nous. Mais comment sommes-nous arrivés à ce point? Posons maintenant la question, ce qui était vraiment passe ici, au moins ce qui concerne une partie de cette syntaxe? Ainsi, dans un phrase ou deux, Comment avons-nous expliquer cette première ligne qui est surligné en vert? Quelle était cette première ligne faisant, à l'égard de mon programme? Ouais? ETUDIANT: [inaudible]. DAVID Malan: Dites-le à nouveau? ETUDIANT: Inclusion et téléchargement fonctions passées [inaudible]. DAVID Malan: Bon. Y compris, je ne dirai pas le téléchargement, mais disons y compris les fonctions que les gens ont écrit dans le passé. Et ces fonctions sont mises en œuvre quelque part dans mon ordinateur. Quelqu'un a écrit un fichier il ya des années, et que ce fichier est quelque part dans le CS50 appareil, ou sur mon disque dur plus généralement. Et si cette ligne est essentiellement dit, aller trouver ce fichier, / O pointée standard I h, et copier et coller son contenu ici sur le dessus de mon dossier de sorte que je n'ai pas à faire manuellement moi-même. Et parmi les morceaux les plus juteux à l'intérieur de ce fichier nous avons réclamé était quelle fonction? Quelle est la fonction disions-nous a été déclarée ou mentionnée dans la norme E / S point h le plus probable? Printf, non? Nous n'avons pas écrit sur printf Lundi, il existait seulement. Tout comme Alana vient sur scène et elle a juste existé et a su tirer quelque chose sur l'écran, printf n'existe donc depuis de nombreuses années. Et voilà comment nous accédons. Maintenant, si nous passons ici, principal était analogue nous dit le morceau de puzzle appelée lorsque le drapeau vert cliqué dans le monde de Scratch. C'est en quelque sorte de la nom par défaut que les humains décidé représenterait la par défaut point d'entrée à un programme. Le morceau de code de programmation qui est exécuté en premier. En attendant ces accolades sont un peu comme la forme incurvée d'un grand nombre de ces pièces à gratter jaune. Ils genre de encapsulent un ensemble tas d'instructions ensemble. Donc, c'est en quelque sorte lie certaines fonctionnalités connexes. printf est bien sûr une fonction qui imprime l'écran, comme nous venons de le faire. Qu'en est-il de ces parenthèses? Comment voulez-vous define-- même si vous avez jamais programmé auparavant, mais seulement sur la base maintenant sur une augmentation espérons intuition, ce sont les parenthèses font pour nous ici? Ou qu'est-ce qu'ils entourent? Ouais? ETUDIANT: Ils disent que vous allez imprimer avec printf. DAVID Malan: Ouais, ils disent ce que vous allez imprimer avec printf. Ou, plus généralement, ils sont entourant les entrées de la fonction. Ainsi, vous pouvez presque penser de ces parenthèses comme étant comme le métal clip sur cette presse-papiers. C'est ce qui maintenant, c'est ce qui est va être utilisé pour fournir des arguments dans la fonction, dans lequel ce cas est appelé printf. Donc, en général, pratiquement n'importe quel temps que nous appelons une fonction, nous allons voir une paire de parenthèses. Peut-être que quelque chose en elle, comme maintenant, peut-être rien en elle. Mais c'est là que vous mettriez les entrées ou les dits arguments à une fonction. Voici un tel argument. J'ai tout mis en relief entre guillemets, car il s'avère dans cette langue appelée C, quand vous voulez représenter un string-- c'est un mot ou une phrase ou même un paragraph-- vous devez l'entourer de guillemets. Citations pas simples, doubles guillemets. Et c'est exactement ce que j'ai fait ici. Pendant ce temps, il ya un morceau de musique symbole à la fin il. La barre oblique inverse n. Qu'avons-nous dit que représenté? Ouais? ETUDIANT: Une nouvelle ligne. DAVID Malan: Nouvelle ligne. A droite, vous n'avez pas généralement appuyez sur Entrée quand vous voulez que le programme à cracher une nouvelle ligne. Plutôt que vous dites explicitement avec cette pièce certes des arcanes de la syntaxe, la barre oblique inverse n, que vous voulez une nouvelle ligne pour y aller. Enfin, le point-virgule. Nous n'avons pas vraiment parler trop à ce sujet, et de loin ce sera le fléau de certains de votre existence pour le premier problème définir, lorsque vous venez de perdre pour réaliser vous avez oublié quelque chose d'aussi stupide comme un point-virgule. Et généralement mettant il y aura régler ce problème. Mais qu'est-ce qu'il fait pour nous, diriez-vous? ETUDIANT: [inaudible]. DAVID Malan: Désolé? ETUDIANT: [inaudible]. DAVID Malan: Finition un communiqué. C'est un peu comme la période au la fin d'une phrase en anglais, alors que dans cette langue C c'est la fin d'une déclaration. Une instruction de programmation code que vous voulez juste dire, J'en ai fini avec ça. Maintenant, remarquez que c'est le seul ici. Donc, vous ne voulez pas entrer en l'habitude de mettre des points-virgules après chaque parenthèse fermée. Par exemple, il ya aucun à côté de nul effet, et nous allons revenir à l'avenir à ce que des moyens vide. Mais dans ce cas votre printf est une fonction, ou une déclaration utilisé, et si nous voulons avoir que terminale à la fin de celui-ci. Et je suis volontairement ramasser sur C. Et franchement un grand nombre de langages comme C, C ++ Java, JavaScript, et un certain nombre de d'autres langues ont beaucoup de ces sorte de détails syntaxiques. Cela a certainement si vous êtes nouveau à programmation peut véritablement vous faire trébucher. Et vous, marquer mon mots, certains d'entre vous seront cette expérience aux heures de bureau ou la fin la nuit à travailler sur un p-set, où votre programme sacrément juste ne compile pas, il ne fonctionne pas, vous avez aucune idée de ce qui ne va pas, il semble tout à fait logiquement correct pour vous. Et c'est parce que vous avez oublié quelque chose comme frapper un point-virgule à la fin d'une certaine ligne. Mais c'est le genre de choses que vous êtes va apprendre immédiatement à voir. Et en effet, ce sont les choses que et les TF de de l'AC ont été sorte de formation pour voir beaucoup plus vite que vous. Et si ce n'est pour dire, comme vous le plongée en problème réglé 1 en particulier, ne soyez pas frustrés par ce genre de choses. Une fois que vous sorte de s'acclimater au monde, vous commencer à voir des choses que vous ne pourriez pas voir à première vue de cette première semaine. Donc, le code source est quelque chose comme ça. Nous voulons passer en le compilateur dite. Et ce compilateur comme nous l'avons dit fournit une sortie connu sous le nom de code objet, le soi-disant zéros et de uns. Mais à partir de là, qu'est-ce qui nous donne? Eh bien, il nous donne à ces modèles. Et encore une fois votre ordinateur, votre Intel à l'intérieur, compréhension de ces modèles de zéros et de uns. Et parfois, le modèle représente un nombre décimal réel comme nous l'avons vu la semaine dernière, parfois il représente une lettre comme nous l'avons vu la semaine dernière, parfois il représente une instruction, comme l'impression de quelque chose à l'écran. Donc printf pour instance-- mais, permettez-moi de revenir en arrière. Nous avons pris pour acquis que ces zéros et de uns sont produit par cette commande make. Mais la marque n'est pas un compilateur. Faire n'est pas la chose au milieu que cela la production des zéros et des uns. Plutôt faire est juste une très commodément programme nommé dont le but dans la vie est essentiellement de comprendre comment compiler votre programme. Et nous l'utilisons dans ces premières semaines parce que cela nous permet d'économiser beaucoup d'ennuis. Mais ce qui est vraiment rendre faire lorsque vous compilez bonjour, est, comme nous l'avons dit la dernière fois, c'est recherche sur votre disque dur ou dans le dossier en cours, pour fichier appelé ce, apparemment? Hello.c, non? C'est juste une sorte de convention. C'est arbitraire, mais c'est la façon dont les choses sont. Faire, si vous spécifiez simplement le nom d'un programme qui n'existe pas encore, il va chercher le code source dans un fichier, par défaut signifie hello.c. Et s'il le trouve, très bien. Il va convertir cette source Code en code objet pour vous. Mais chaque fois que je l'ai frappé Entrez après l'exécution de make bonjour, vous rappelez-vous avoir vu la dernière fois un assez long et la séquence cryptique d'autres lettres blanches et caractères sur l'écran? Eh bien, c'était la commande effective, le compilateur réel, qui a été en cours d'exécution. Ainsi, le compilateur réel nous allons utiliser la plupart des le semestre est quelque chose qui s'appelle clang. Certains d'entre vous ont utilisé Visual Studio avant, ou GCC, ou n'importe quel nombre d'autres compilateurs. Nous utiliserons clang. Et clang nous permet effectivement de convertir que le code source pour le code objet. Qu'est ce que cela fait dans la pratique? Eh bien, laissez-moi aller dans l'une des mes dossiers depuis la dernière fois. A l'intérieur de l'appareil de CS50. Et laissez-moi aller de l'avant et de créer ce même fichier, comprennent E / S standard point h. Void main Int. Et nous reviendrons à l'avenir à ce que int moyens et ce que signifie vides. Mais pour l'instant nous allons faire bonjour barre oblique inverse du monde n, Tout comme nous l'avons fait sur la carte. Permettez-moi à sauver ce fichier appelé hello.c. Et maintenant, si je veux compiler ce Je could-- laissez-moi un zoom avant terme in-- faire entrer bonjour. Et ce message a été cette ligne très énigmatique. Mais maintenant au moins un mot saute probablement hors de vous. Clang est que la ligne que nous avons vu avant. Maintenant, il ya un tas d'autres choses franchement que nous agitons nos mains à aujourd'hui. Mais il ya quelques sous-ensembles, quelques personnages ici qui présentent un intérêt. Mais je vais aller de l'avant et le faire. Je vais première manche bonjour, juste pour prouver que ce soit en travaillant comme c'était lundi. Mais maintenant, je vais supprimer le programme. Et tout comme nous avons eu ces noms courts dernière fois, la commande de suppression quelque chose est rm, supprimer, entrez. Vous allez obtenir une certaine questions assez énigmatiques. Difficile de croire que vous pouvez faire même cette question difficile à comprendre. Mais enlever bonjour de fichier régulier seulement moyen voulez-vous supprimer bonjour. Et je peux aller de l'avant et y saisir pour oui, Entrez, et maintenant il est parti. Qu'est-ce que cela signifie maintenant, si je effacer mon écran, est qu'au lieu d' faire faire hello-- vous sais quoi, je suis en train de bon à cela. Je vais courir le compilateur moi-même. Je n'ai pas besoin un programme de comprendre ce que mon fichier est appelé. J'ai écrit bonjour.c, je savoir ce que ça s'appelle, Je suis bien capable de taper ça. Donc, je vais aller de l'avant et ne clang bonjour.c Entrée. Semble fonctionner. Et il n'y a pas de sortie supplémentaire, parce cliquetis est le compilateur. C'est ce qui la conversion de la le code source de zéros et de uns. Donc, si je le fais maintenant dot réduire bonjour Entrez, hm. Message d'erreur Nouveau aujourd'hui. Donc, bash est juste le nom de la clignotement rapide que nous utilisons. C'est une simplification grossière, mais pour l'instant c'est tout ce qui est, c'est l'invite à clignoter. Et c'est pourquoi il hurle à nous. Aucun fichier ou le répertoire est un peu plus simple. Mais sûrement que j'ai fait que le code objet. Mais le hic, c'est que si je tape la commande pour afficher le contenu de cette répertoire, qui est ce? ls pour la liste. Il ya un tas de choses ici, dont certains sont venus avec l'appareil, comme mon dossier Bureau, Téléchargements dossier, dossier Dropbox, et tous ce genre de choses. Mais ce qui est intéressant est bonjour.c, qui J'ai créé il ya un moment avec gedit. Et ce qui est le plus singulier regardant nom ici, peut-être que nous n'avons pas voir la dernière fois à tous? a.out, non? Donc, retour dans la journée, il a tout simplement décidé que lorsque vous compilez un programme pour la première fois, et vous ne spécifiez pas le nom d'un fichier, appelons-le un. Et a.out signifie simplement que c'était la sortie du compilateur. Donc, c'est un nom horrible pour un programme. Mais cette logique, dot slash pour répertoire courant, slash a.out, devrait signifier qu'il ya, en fait, bonjour mon programme mondial. Maintenant un peu de réchauffer l'exercice, aussi. Si je veux renommer ce fichier s'avère que vous déplacer un fichier d'un nom à un autre. A.out Donc mv, et puis je peut appeler bonjour Entrée. Il s'agit donc d'une commande Linux. DOS avait il ya des années, Windows a une fenêtre de terminal de quelque sorte que l'air comme ça, Linux et Mac ordinateurs ont cette invite à clignoter. Même si la plupart d'entre nous sans doute rarement, sinon jamais, l'utiliser. Mais ce que j'ai fait est exécuté une programme, dont le nom est mv, et j'ai fourni avec deux arguments, pour ainsi dire. Deux entrées. a.out est le nom original. Bonjour est le nouveau nom. Donc, si je le fais maintenant slash dot bonjour, Entrée, cela existe. Et si je le fais point barre a.out, que voulez-vous que je devrais voir? Bash, aucun fichier ou répertoire. Parce que je viens retitré. Donc, cela prend un peu de temps pour s'y habituer. Mais le problème réglé 1 cahier des charges sera vraiment tenir la main par une partie de cette minutae. Parce que c'est une complète distraction intellectuelle à partir de la plus intéressante idées à portée de main, qui est réellement créer quelque chose de code. Mais nous allons faire une modification maintenant à ce programme. Rappelons que la dernière fois que j'ai fait quelque chose de comme ça, indiquer printf votre nom. Et en effet, nous avons juste fait ce sur le grand écran là-bas. Et puis j'ai fait la chaîne s obtient GetString parenthèse ouverte, près parenthèse. Et paren juste raccourci notation de parenthèse. Donc ne GetString prendre des arguments? Aucune entrée Non, mais il besoin des parenthèses, parce que c'est ce délimite l'appel d'une fonction. Donc, je vais aller de l'avant et essayer de exécuter le compilateur sur ce programme maintenant. Clang bonjour.c, parce que je n'a pas changé son nom pour le moment. Et j'ai eu un tas d'erreurs. Disons rétrécir ici. Si je fais défiler à nouveau, comme je l'ai dit la dernière fois, à la première, même erreur que j'ai eu la dernière fois. Sur la ligne 6 du bonjour.c j'ai eu un Chaîne d'identificateur non déclaré, ai-je veux dire dans la norme? Je n'ai pas. Parce que ce que je n'ai erreur accomplis dans ce programme, si vous vous souvenez de la dernière fois? Oui, nous avons besoin de l' soi-disant roues de formation que nous allons simplement utiliser pendant quelques semaines. Mais je dois préciser que aussi, quelque part à l'intérieur de l'appareil, est un fichier qui nous écrit il ya seulement quelques années. L'intérieur de laquelle sont des fonctions comme apparemment GetString. Alors maintenant, si je reviens ici, zoom avant, et ré-exécuter clang hello.c. Merde, une autre erreur. Mais nous n'avons pas vu celui-ci avant. Celui-ci est un peu plus ésotérique à comprendre. Mais ce n'est délibérément sur l'écran, parce que nous voulions raconter cette histoire. Lorsque vous compilez bonjour.c, tout comme l'image d'avant suggéré, vous ne convertir que le code source de zéros et de uns. Maintenant personnel CS50 il ya quelques années a écrit CS50.h, et un fichier correspondant, CS50.c. Et nous, il ya quelques années, ces fichiers compilées dans un fichier qui se passe à appeler CS50.o. Ou il peut être renommé une nombre de choses différentes. Mais c'est un moyen simple de penser. Donc, nous avons compilé CS50 de bibliothèque dans zéros et de uns. Mais nulle part je n'ai spécifiée que je veux combiner mes zéros et ceux pour mon monde de bonjour programme avec les zéros et de uns que le personnel de CS50 créé quelques années Il ya dans un programme complet. Tout ce que j'ai précisé par écrit bonjour.c clang est compiler hello.c. Je n'ai pas dit à clang lien dans les zéros et de uns que le personnel de CS50 créé pour vous il ya quelque temps. Donc, c'est une solution facile, dash l pour le lien, CS50. Et nous voyons encore ce avant longtemps encore et encore. Mais remarquez maintenant il n'y avait rien à redire. Alors maintenant, si je n'ai point barre bonjour, maintenant ça marche. Bien que c'est un peu trompeur puisque je viens recréé ce fichier? a.out. Permettez-moi de rembobiner pour un instant. Le programme que nous venons compilé a trois lignes de code. Quand j'ai couru Bonjour tout le monde, bonjour un moment Il ya, je ne vois pas d'indiquer votre nom. Et c'est parce que j'ai couru l' ancienne version du programme. Mais si je ne fait courir point barre a.out Entrez, indiquez votre nom, Rob, bonjour, monde. Hm. C'est une sorte de bug. Signifiait probablement dire Rob, non? Alors, quelle est la solution ici dans le code. ETUDIANT: [inaudible]. DAVID Malan: Exactement. Donc, je dois juste faire ce tweak finale de sorte que je suis de passage dans un espace réservé, comme un remplissage dans le vide, comme nous l'avons fait il ya un moment. Mais pour cent s est maintenant que remplir le vide. Donc, nous allons enfin de révéler une dernière détail de sorte qu'il n'y a pas de magie. Je vais aller de l'avant et de se débarrasser de hellow. Je vais aller de l'avant et de se débarrasser de a.out. Alors maintenant, je n'ai pas de programmes, juste mon code source. Et je vais courir un un peu plus longue commande, clang tableau de bord o bonjour bonjour.c tiret LCS50. Maintenant, cela commence à aller sorte de dans une oreille et sort par l'autre peut-être. Mais juste taquiner à part ce que cela fait. Clang est le compilateur, tableau de bord LCS50 délibérément à la fin fait quoi dans une phrase? Liens à la bibliothèque CS50. Saisit les zéros et ceux que le personnel fait et les CRAM dans mon propre programme. Ainsi, la dernière question qui se pose est, ce qui est tableau de bord o bonjour probablement faire, même si vous n'avez jamais vu cette syntaxe avant? Sortie d'un programme qui est pas nommé a.out par défaut. Au contraire, il est nommé bonjour. Alors maintenant, il n'y a pas a.out. Aucun fichier ou répertoire de ce nom, parce que je dis explicitement appeler ce programme bonjour, de sorte que Je peux maintenant saisir un nom comme ça et le faire se comporter. Maintenant, franchement, mon garçon, c'est que sans intérêt d'avoir de se rappeler tout cela peu minutie, non? Donc, nous allons aller de l'avant et se débarrasser de bonjour de nouveau. Et revenons maintenant à un monde qui il suffit de dire bonjour faire. Mais c'est la magie qui faire est fait pour vous, c'est l'ennui qui il est fait pour vous. Et comme nos programmes et problèmes deviennent plus complexes, faire va vraiment être votre ami. Parce que pas trop longtemps à partir de maintenant, nous allons d'avoir des programmes qui sont écrits pas avec un fichier, mais plusieurs fichiers, et de faire permettra d'automatiser le processus de compiler tout cela pour nous ensemble. Alors maintenant imprimer. printf est à l'intérieur de ce fichier, norme I / O point h, que nous avons vu auparavant, mais il ya plus à printf que cela. Il ya barre oblique inverse n, mais il ya aussi un tas d'autres séquences d'échappement. Et la séquence d'échappement est juste un façon élégante de dire quelque chose qui commence par une barre oblique inverse, pas une barre oblique, une barre oblique inverse, et fait quelque chose de spécial. Et nous ne nous attarderons pas sur la plupart d'entre eux, mais pourquoi est-il anti-slash guillemets, pensez-vous? Pourquoi cette séquence bizarre de caractères, barre oblique inverse guillemets, pourquoi cela pourrait-il être utile? ETUDIANT: [inaudible]. DAVID Malan: Exactement, non? Pensez à notre programme mondial de bonjour que nous avons vu à quelques reprises maintenant, chaque fois que nous avons vu ce monde de bonjour programme, nous avons eu des guillemets à l'intérieur de ce qui est bonjour virgule monde oblique n. Mais pensez à vous-même, si vous avez réellement voulu imprimer un guillemet? Votre premier réflexe pourrait être, je ne sais pas savoir pourquoi je pourrais vouloir do-- ici, nous pouvons être un peu passive agressif, bonjour ami. Nous pourrions faire quelque chose comme ça. Mais pourquoi est-ce maintenant problématique? Ignorant les guillemets courbes de côté que principal fait pour nous automatiquement. Pourquoi est-ce problématique? Exactement. Parce que nous avons comme 4 guillemets. Eh bien, le premier sans doute va de pair avec la deuxième, et peut-être la quatrième va de pair avec la troisième, ou, je veux dire que je ne suis même pas sûr, ni l'ordinateur va être. Ordinateurs de nouveau, les compilateurs encore une fois, sont assez muet. Ils ne font que ce vous leur dites de faire. Et si vous n'êtes pas sans ambiguïté, il vont probablement une erreur. Si vous n'êtes pas sans ambiguïté sur la façon de faire un beurre d'arachide et sandwich à gelée des choses étranges peuvent arriver. C'est la même idée. Maintenant, il suffit de dire qu'il n'y a d'autres séquences d'échappement, mais nous reviendrons à ceux avant longtemps. Il s'agit essentiellement de fuite séquences représentent quelque chose que vous pourriez ne pas être en mesure trop facilement au clavier, sans confondre l'ordinateur. Maintenant, en attendant, nous avons des espaces réservés dans printf. Pour cent d, qui peut aussi s'écrire dans presque tous les cas que pour cent i, est un espace réservé pour ce type de données? Quel type de valeur? Un certain nombre décimal. Donc, en fait, nous allons commencer en utilisant pour cent i parce que c'est un peu plus simple, comme un nombre entier. I pour cent. Un entier qui se trouve être décimal. Pour cent s nous avons déjà dit était un espace réservé pour une chaîne. Qui est juste un mot, une phrase, un paragraphe, un essai, peu importe. Il s'agit d'une séquence de les caractères d'une certaine longueur. Et nous verrons avant longtemps certains de ces autres. Mais pour cent c est pour un seul caractère. Pour cent f est un nombre à virgule flottante, comme un nombre réel qui a un point décimal en elle, qui n'est bien sûr pas un nombre entier. Et il ya toute une tas d'autres aussi. Pendant ce temps dans C, et dans beaucoup de langues, nous avons différents types de données. Différents types d' verre bols si vous voulez. Le bol j'ai utilisé la dernière fois était pour des balles de ping-pong, mais nous pouvons également stocker différents des valeurs comme les caractères et les chaînes et des nombres entiers dans un récipient, comme une variable, et C a ces derniers. Char est le type de données, le type de variable, dans lequel vous pouvez stocker un caractère. Flotteur est un type de variable en lequel vous pouvez stocker un nombre réel. Int est bien sûr pour un int. Et plutôt ridiculement nommé un long long C'est là que vous pouvez stocker l'essentiel un très long nombre, même avec plusieurs chiffres alors un typique peut stocker int. Mais nous y reviendrons qu'avant longtemps. Dans CS50 point h en attendant l'autre fichier d'en-tête que nous avons vu un couple fois en utilisation, il n'y a deux autres types de données que n'existent pas en C habituellement. Une est une chaîne, et nous verrons dans quelques semaines ce que les cordes vraiment sont sous le capot. Et on est bool. Et un bool est une variable qui ne peut prendre sur certaines valeurs. Et sur la base de la semaine dernière explication de Scratch, C et, plus récemment, que feriez-vous deviner sont les deux valeurs possibles pour certains conteneur qui est de type bool? Oui et non. Un et zéro. Vrai ou faux. Et en effet, c'est la dernière qui tend pour être classique dans une programmation langue, dire quelque chose comme vrai ou faux. Pendant ce temps la bibliothèque CS50 vient avec un tas de fonctionnalités que le personnel a écrit pour vous, mais pas seulement obtenir une chaîne. Nous avons écrit à la fonction d'avance que peut obtenir un nombre entier de l'utilisateur, obtenir un seul caractère, obtenir un flotteur, qui est juste un nombre avec le point décimal. Obtenez un long long, un très grande valeur à partir de l'utilisateur. Donc, nous avons vu que ce à action sous la forme de GetString. Mais ces fonctions par l'intermédiaire d' sera bientôt en mesure d'écrire des programmes qui donnent entrée de l'utilisateur. Pendant ce temps examiner ce programme, et envisager comment nous pourrions maintenant commencer à ajouter à elle avec de nouvelles constructions. Un petit tour tourbillon puis nous verrons à un écrit certains programmes manuellement nous-mêmes. Désormais, si nous voulons mettre en place une condition, ça ne va pas ressembler à un joli petit joli morceau de puzzle. Il va chercher un peu plus obscur. Mais c'est la canonique Structure d'une condition dans C. Le mot si, deux entre parenthèses, à l'intérieur de laquelle va être une sorte d'expression booléenne. Maintenant, la barre oblique dans le milieu, c'est au moment un peu comme Code pseudo espace réservé. Mais plus correctement, une ligne de code en C qui commence par slash slash est un commentaire. C'est comme un pense-bête que vous pourriez mettre sur un essai, imprimé sur du papier. C'est une note à vous-même. Elle n'a pas de fonction impact sur le programme. C'est une sorte de rappel, c'est votre propre documentation à ce qui se passe. Donc, le faire à l'heure actuelle est une sorte de marque de réservation pour tout ce qui est à l'intérieur de ces accolades finirait par faire quelque chose. En attendant, vous avez deux fourchettes dans le route, un autre si construire comme ça. Vous pouvez si, elseif, autre. Maintenant, il est intéressant de noter, en particulier si vous avez été googler autour en ligne de ressources sur curiosité, ou si vous prenez l'un des cours de livres recommandés sur C, vous verrez que les humains ont beaucoup des préférences différentes sur la façon dont de s'exprimer dans le code. Certaines personnes aiment mettre la accolades comme je l'ai fait ici. Certaines personnes aiment mettre le bouclés accolades, par exemple ici. Certaines personnes aiment mettre la elses ici et ceci ici. Il ya un certain nombre de façons de écrire du code, et aucun d'eux sont juste en soi. Bien qu'il y ait un peu qui sont assez mal. Mais il existe no-- si c'est finalement, un débat très religieux. En fait, l'un des plus ennuyeux choses sur l'informatique comment opiniâtre les informaticiens peuvent être. Et vous trouverez plus de temps que même vous développez préférences personnelles sur la façon dont votre code devrait ressembler. Non seulement se comporter, non seulement de créer une sortie, mais comment il devrait ressembler esthétiquement. Donc, ce que nous allons faire est de vous guider tout au long la voie vers, pour l'instant du moins, un style de CS50 standard au moins garde tout uniforme et facile à lire. Mais plus sur les distinctions avant longtemps. Une expression booléenne en C, si vous voulu dire si cette condition est vraie et cette autre condition est vrai, vous n'écrivez pas le mot et, comme vous le feriez en anglais. Vous utilisez à la place esperluette esperluette, pour des raisons que nous allons revenir à. Si vous voulez dire ou vous utilisez deux barres verticales, qui sur un clavier américain est généralement supérieure à la Saisissez touche à côté de la barre oblique inverse. Et cela signifie que si cette condition ou cette autre condition est vraie faire. Pendant ce temps, il ya cette Ce qui est fou, qui vous aurez l'occasion à utiliser une fois de temps en temps. Mais c'est juste une alternative façon de vous exprimer. Ce, pour l'instant, nous allons précise, c'est juste une autre manière géniale d'exprimer si, elseif, elseif, elseif, elseif. C'est juste formaté en termes des cas, où vous littéralement énumérer les valeurs qui vous voudrez peut-être vérifier. Pendant ce temps les boucles. Nous avons vu une comparaison des Grattez avec une boucle. Et je vais agiter ma main à ce que chacun de ces choses signifie. Mais remarquez qu'une boucle sera très commencent souvent avec le mot-clé pour. Ou il va commencer avec le mot-clé tout. Ou il va commencer avec le mot-clé faire, et se terminer par le mot-clé tout. Mais ce que nous sommes sur le point de voir est des choses plus comme ça. Voici, en général en C, comment vous pourriez déclarer une variable et lui donner une valeur. En C, il ne suffit pas, comme dans Scratch, il vous suffit dire me donner une variable appelée quelque chose. Vous devez dire à C, et dites le compilateur, et plus spécifiquement, quel type de valeur que vous faire vouloir mettre dans le bol en verre. Est-il un nombre entier? Si c'est le cas, vous devez dire littéralement int puis le nom de la variable, puis un point-virgule. Si vous voulez à la place chaîne et appelé il s comme je le faisais mon code ici aujourd'hui, vous diriez la virgule chaîne de. Une fois que vous voulez lui donner une valeur vous pouvez ensuite utiliser le signe égal, autrement connu sous le nom opérateur d'affectation. Et remarquez comment chaque de ces lignes de code a le point-virgule à la fin de celui-ci. Mais franchement ce juste semble un peu laid. Pourquoi ne puis-je pas dire à l'ordinateur, donner moi une variable et l'initialiser à zéro. C'est à dire, donnez-moi un bol en verre vide. Alors que vous pouvez. Et si l'un de l'arrêt vous appelle y avoir à faire stylistique au fil du temps est-ce que vous écrivez votre code comme ceci, ou ne vous sorte de nettoyer et impressionner les gens en écrivant deux lignes comme un seul. Et cela serait considéré comme généralement une façon plus élégante d'écrire votre code stylistique. Fonctions nous sommes bien sûr vu. Ils vont prendre ce format. Le nom d'une fonction, certains parenthèses, et puis peut-être un peu choses à l'intérieur. Ou vous pourriez voir des utilisations de multiples fonctions côté de l'autre, quelque chose comme ça. Or, comme une tangente, ne cette blague maintenant un sens? [Rires] Cela ne signifie pas que c'est drôle, mais il ne fait peut-être un peu plus de sens. Alors maintenant, nous allons passer à la appareil CS50 pour un moment. Et permettez-moi de m'ouvrir un teaser de ici. Et en effet, l'une des raisons pour introduire catalogue IKEA et clignoter l'image de l'iPhone il ya un peu était réellement attacher dans ensemble le fait que il ya quelques années, en 2007, ce morceau de code était libéré, qui a été l'un des tout premier la mise en œuvre d'une pièce de logiciel que fait ce qu'on appelle jailbreaking. Pour ceux qui ne connaissent, jailbreaking quelque chose comme un téléphone ou un iPhone signifie essentiellement déterminer comment faire les choses avec elle que la société qui a fait qu'il n'a pas l'intention. Comme vous voulez installer certains un logiciel qui n'est pas dans l'app store, jailbreaking votre téléphone qui vous faites les choses comme cela et plus encore. Mais ce qui était amusant dans 2007-- et il ya eu des dizaines de versions différentes de ces choses depuis, dans toutes sortes de languages-- est que ce programme ici, appelé iUnlock, a été effectivement écrit en C. Et donc je tiré vers le haut le code source pour cela, juste pour montrer gentil de votre part quelques-uns des les similitudes avec les constructions nous avons discuté jusqu'à présent. Maintenant, il ya beaucoup plus de complexité ici que nous avons déjà vu en classe. Permettez-moi de défiler vers le haut un peu ici. Mais remarquons these-- bien nous remarquons quelques-uns things-- de remarquer ces lignes ici, y compris E / S standard point h. Et tous-- ligne 24, please-- remarquerez E / S standard point h et tout un tas d'autres Les fichiers qui apparemment d'autres personnes ont écrit. Et si nous faisons défiler à travers ce, peu arbitrairement, Remarquez que je ne sais pas comment écrire tout cela me forcément encore, mais il ya si. Donc, apparemment, cela a une branche. Et si je défiler vers le bas un peu en outre il ya une autre si. Si je fais défiler, je pense autour de la ligne 100, j'ai vu pour. Donc, je ne suis pas sûr comment cela fonctionne encore, mais c'est une boucle qui va permettez-moi de itérer un nombre de fois. Et si je fais défiler tous le chemin vers le bas Je vois qu'il ya une fonctionner ici appelé principal, et des crédits supplémentaires pour votre plaisir de lecture. Donc ce n'est à say-- et nous allons mettre cette ligne entre la source du cours Code today-- que même certains d'entre eux dispositifs que nous prenons pour acquis, à la fin de la journée, vous êtes toujours l'utilisation de ces structures de base que nous avons été l'introduction déjà à ce jour. C'est assez de celui-là. Très bien, alors maintenant nous allons fait construire quelque chose. Allons au-delà de quelque chose comme bonjour.c, et d'ouvrir ce, Écrivons ce programme ici. Je vais aller de l'avant et écrire un programme appelé adder.c, dont le but dans la vie va être comme mon premier calculateur super simple qui ajoute juste un couple de nombres. Non parce que c'est un disque problème, mais parce qu'il me permet d'attacher maintenant ensemble un certain nombre de choses. Donc, je vais aller de l'avant et inclure Je / S standard dot h et CS50 point h. Je vais dire void main int. Et à l'avenir nous reviendrons sur ce dans dans ce contexte et des moyens de vide. Et maintenant, je vais dire quelque chose comme printf, donnez-moi un entier. Et maintenant sur mon deuxième ligne, comment puis-je m'exprime comme que je tiens à déclarer une variable cela va stocker un int? Littéralement qu'est-ce que je tape si je veux créer une variable qui stocke un int diriez-vous? int une égale getint. Bien sûr, si cela fonctionne. Et juste pour la cohérence avec le code que vous aurez voir en ligne, laissez-moi le changement ce à x, juste parce que x est un nom de variable commune d'utiliser, au moins en algèbre. Maintenant, laissez-moi aller de l'avant et ne printf nouveau. Donnez-moi un autre entier. Et maintenant, je vais genre de tirer des leçons de ce modèle, Je vais dire int y arrive à getint. Et nous n'avons pas l'habitude Getint avant, mais juste comme GetString va chercher une chaîne, comme Javier a fait de l'auditoire, fait de même getint commence à clignoter l'invite. Et effectivement attente pour l'utilisateur pour lui donner un entier, en le tapant dans et en appuyant sur Entrée. Maintenant, enfin je vais faire ce, la somme printf de-- et laissez-moi maintenant-- fantaisie i pour cent pour cent et i est présente i point d'exclamation barre oblique inverse n. Et qu'est-ce que vous pensez que je vais mettre en maintenant que les entrées supplémentaires à printf? Je ne veux pas dire citer littéralement x Unquote. Je veux classe en x et alors, et maintenant passons fantaisie et supposons que nous pouvons faire ce que nous voulons. Ce que vous voulez dire par la suite? x + y. Et en effet, cela fonctionnera. Il est peu langages de programmation faire comprendre l'arithmétique de base, et si cela ne devrait en fait le travail. Alors laissez-moi aller de l'avant et ne fais additionneur à ma fenêtre en noir et blanc ici-bas, Entrée. Ligne Cryptic mais aucune erreur message, de sorte que c'est bon. Dot slash additionneur, donne-moi un entier, 1. Donnez-moi un autre entier, 2. La somme de 1 et 2 est de 3. Très bien, alors un assez trivial programme, mais qu'est-ce qu'il fait? Il m'a permis d'utiliser une fonction appeler ici, appeler une autre fonction ici, deux appels à getint, un troisième appel à printf, et puis en utilisant ces espaces réservés. C'est donc un peu plus sophistiquée que la dernière fois. Mais si je veux obtenir un peu de fantaisie? Permettez-moi aller de l'avant et maintenant fais. Permettez-moi d'aller de l'avant et créer un nouveau fichier appelé conditions zéro. Et je vais sauver un peu de temps pour l'amour de cours et il suffit de coller dans ce un code de point de départ. Et maintenant, je vais juste mettre quelque chose de nouveau dans le milieu. Donc printf J'aimerais un entier s'il vous plaît. Et tout ce code est disponible sur le site Web de la formation, vous n'avez pas besoin de taper tout ça en classe si vous ne souhaitez pas. int, et maintenant je vais utiliser, à la place de x et y, Je vais utiliser n, qui est probablement le nom le plus commun pour un nombre entier dans un programme informatique. Et maintenant, je veux faire un peu de jugement ici. Je vais voir si n est supérieur à 0, puis Je vais dire oups printf--, printf-- vous avez choisi un nombre positif, point d'exclamation barre oblique inverse n. Fermez cela. Sinon je vais imprimer printf vous avez choisi un nombre négatif. Maintenant, avant de vous criez à moi, lançons ce programme. Permettez-moi de descendre ici. Et comment puis-je compiler un programme appelé conditions tiret 0? Faire conditions tiret 0. Genre d'un nom stupide, mais-- merde. OK, bon moment d'enseignement. Pourquoi cela ne pause? Qu'est-ce que j'appelle accidentellement ce fichier? Vous pouvez sorte de déduire partir de l'onglet ici. Donc, il n'est pas mauvais que je fait cela, parce que ce qui se passera peut-être à certains d'entre vous. Donc j'ai accidentellement appelé mon Code source de l'état 0. Mais mon code source par convention devrait être dans un fichier appelé condition 0 tiret c, ou quelque point c. Permettez-moi de résoudre ce problème. Tout comme Microsoft Word, je peux aller jusqu'à sur Enregistrer sous et faire état 0 point c. Maintenant, il suffit d'être bien rangé je suis aller de l'avant et retirez état 0, ce qui était mon ancienne version. Et maintenant, ne font condition 0, Entrée. OK, semble bon. Condition 0, Entrée. J'aimerais un entier s'il vous plaît, 50, vous avez choisi un nombre positif. Maintenant, que diriez-négative 50? Vous avez choisi un nombre négatif. Que diriez-vous maintenant, 0. Sûr que 0 n'est pas négatif. Donc, c'est une sorte de bug logique. Comment puis-je résoudre ce problème? Sinon, si n est inférieur à 0, le faire, d'autre nous pouvons avoir une branche à trois voies ici, printf vous avez choisi 0. Alors maintenant, si je ReRun ce programme, après la compilation, il nouveau avec la marque, et maintenant relancer état 0, ce que je vais voir ici est 0 me donne cette sortie. Alors, où allons-nous avec ça? Eh bien, il est très facile de perdre de vue de la forêt pour les arbres. Et si nous permettent de conclure avec ce 2 et 1/2 minute vidéo qui est finalement un peu d'une annonce de Google, mais c'est vraiment preuve de ce même en utilisant ces bâtiments de base blocs, nous pouvons finalement faire une fois nous avons un peu de programmation savvy sous nos ceintures. [MUSIQUE LECTURE] Saroo BRIERLEY (voix off): C'était il ya 26 ans, et j'étais sur le point de tourner 5. Nous sommes arrivés à la gare et nous avons pris notre train ensemble. Mon frère vient de dire je vais rester ici, et je reviendrai. Et je pensais juste que, vous le savez bien, Je pourrais aussi bien aller juste pour dormir et il va juste me réveiller. Et quand je me suis réveillé le lendemain jour, l'ensemble de chariot était vide sur un train fou, un fantôme train de me prendre, je ne sais pas où. J'ai été adopté à l'Australie, pour une famille australienne. Et maman avait décoré mon séjour avec la carte de l'Inde, qui elle a mis à côté de mon lit. Je me suis réveillé chaque matin voir cette carte, et donc il sorte de garder les souvenirs vivants. Les gens diraient, vous êtes essayer de trouver une aiguille dans une botte de foin, Saroo vous ne le trouverez jamais. J'aurais flashé des endroits que je l'habitude d'aller, les éclairs de ma famille visages. Il était l'image de ma mère, assis les jambes croisées, il suffit de regarder son cri. La vie est tellement difficile. C'était mon trésor. Et je cherchais à Google Map et réalisé il ya Google Earth ainsi. Dans un monde où vous pouvez zoomer sur, J'ai commencé à avoir toutes ces pensées et quelles sont les possibilités que cela pourrait faire pour moi. Je me suis dit, vous le savez, vous avez eu tous ces souvenirs photographiques et des sites où vous êtes, et vous savez ce que la ville ressemble. Cela pourrait être une application qui vous pouvez utiliser pour retrouver votre chemin. J'ai pensé, eh bien je vais mettre un point sur la gare de Calcutta, et une ligne de rayon, vous savez, que vous devrait être à la recherche autour de cette zone. J'ai en quelque sorte tombé ces voies ferrées. Et j'ai commencé à suivre, et Je suis venu à une station de train qui reflète la même image c'était dans mes souvenirs. Tout en correspondance. J'ai juste pensé que oui, je savoir où je vais. Je vais juste laisser le carte que j'ai dans ma tête me conduire et me ramener à ma ville natale. Je suis venu à la porte de la maison où je suis né. Et fait le tour de 15 mètres autour du coin, il y avait trois dames debout à l'extérieur, à côté de l'autre. Et celui du milieu s'avança, et J'ai juste pensé, c'est votre mère. Elle s'avança, elle m'a embrassé, et nous étions là pendant environ cinq minutes. Elle a attrapé ma main et elle m'a emmené à la maison et a obtenu sur le téléphone, où elle sonné, ma sœur et mon frère de dire que, vous le savez, ton frère a juste tout d'un coup apparu comme un fantôme. Et puis la famille était réunie à nouveau. Tout va bien, J'ai aidé ma mère à, elle n'a pas à être trimer. Elle peut vivre le reste de sa vie en paix. C'était une aiguille dans une botte de foin, mais l'aiguille était là. Tout est là. Tout ce que nous avons dans le monde est au robinet d'un bouton. Mais vous devez avoir la volonté et la détermination à vouloir. [MUSIQUE LECTURE] DAVID Malan: Merveilleusement témoignage douce à tout ce que vous pouvez maintenant faire avec la technologie. Nous nous reverrons la semaine prochaine.