[Jouer de la musique] DAVID MALAN: Très bien. Bienvenue. C'est CS50, et c'est Une semaine, s'est poursuivie. Donc l'une des raisons pour lesquelles nous avons été en passant autour des technologies comme Google Glass est qu'ils viennent avec quelque chose de connu comme un API, une Interface de programmation d'applications. Et ce que cela signifie est que, avec l' fichiers droit et avec le droit documentation, vous pouvez réellement écrire logiciels pour appareils même genre. Et donc ce que nous avons à l'esprit vers semestres fin est, si un projet impliquant, par exemple, Google pourrait verre appel, nous verrons ce que nous pouvons faire dans Conditions de vous accrocher avec certains loaner matériel ainsi que l' API accessible au public afin que vous puissiez réellement commencer à créer des logiciels qui fonctionne sur le même verre Google. Un autre dispositif que nous avons joué avec du retard que nous avons pensé que peut-être plaisir à la fin de semestre est cette petite chose ici. Ça s'appelle Leap Motion et ce que vous voir est techniquement une publicité pour l'appareil, mais il ne parle de ce que ce particulier dispositif est capable de. Et, aussi, est livré avec une API via que vous pouvez écrire du logiciel pour contrôler votre ordinateur de façon tout à fait comme ce film d'une minute ici. [LECTURE VIDEO] [FIN LECTURE VIDÉO] Alors maintenant, ce dispositif arrive à être mis en œuvre comme un petit USB connecteur que vous pouvez brancher sur votre ordinateur, mais je ne serais pas surpris si avant longtemps, nous avons ce genre de technologies dans le prochain lot d'ordinateurs et Mac afin que vous puissiez, en effet, interagir avec lui en d'une manière comme cela. En fait, ce que j'ai pensé que je ferais aussi, c'est J'ai tiré une petite démonstration programme qui vient avec ce logiciel. Alors j'ai mis le petit capteur en face de mon ordinateur portable. Et comme vous pouvez le voir, il réalise déjà que ma main est là contrôler. Et tout cela ne demande est merveille petites choses comme ça. Mais vous pouvez voir que, en effet, J'ai cinq doigts là-bas. Si nous pouvons lui faire faire tous les 10, vous pouvez imaginer un piano soignée l'application ou analogue. Donc, si vous voulez venir après la classe aujourd'hui et de jouer avec ce que Eh bien, vous êtes invités à. Donc plus sur ce vers la fin de semestre. Ainsi, un couple d'administration annonces. Un, faire partie de ce vendredi à midi au cs60.net/section. Cette URL est en cours de page d'accueil ainsi. Dans l'intervalle, cependant, supersections fera ses débuts ce dimanche. Supersections sont une chose une seule fois, car il nous faut un certain temps pour travailler savoir qui est dans quelle section et où. Donc, ce dimanche, il y aura une section pour ceux qui sont moins à l'aise, une section pour ceux plus à l'aise. Et ceux d'entre vous quelque part dans entre sont invités à aller à ou les deux ou aucun des deux. Ces deux seront filmés. Ils vont être dans un plus grand auditorium de une section devrait normalement être po Mais le but ici est de vous équiper avec un peu de réconfort avec un problème réglé, avec C, avec l'appareil CS50, cette week-end, avant même que vous trouvez sur votre affectation de la section officielle. Donc, vous allez rencontrer votre TF et votre petit groupe de sectionmates dans environ le temps d'une semaine. Les heures de bureau, quant à lui, ont été en cours. Faire profiter d'eux ce soir ou demain soir, si vous le souhaitez. ensemble du problème 0 est dû le vendredi. C'est un jour plus tard que l' régulièrement programmée jeudi. Mais avec le jeu de problème 1, vous verrez qu 'il comporte un certain échauffement exercices avec laquelle vous vous peut prolonger votre Jeudi échéance au vendredi. ensemble du problème 1, quant à lui, fera ses débuts sur le site Web du cours prochain Vendredi, si vous voulez vous plonger dans comme je l'ai fait une fois en retard Vendredi soir dans votre chambre. Alors cs50.net/appliance est le lieu où vous pouvez obtenir l'appareil CS50 que nous avons commencé en utilisant le lundi. Nous utiliserons un peu plus aujourd'hui. Mais rassurez-vous que le problème réglé 1 spécification vous guidera à travers précisément les étapes que vous devez pour obtenir cette place et fonctionne. Ne vous inquiétez donc pas de faire ça avant Pset 1 si vous ne souhaitez pas. Très bien. Nous avons donc examiné lundi au code source, mais dans le cadre d'une nouvelle langage de programmation, à savoir C, et C, Contrairement aux rayures, n'est pas graphique. Ce n'est pas des pièces de puzzle. C'est syntaxe plus proche de l'anglais. Et il ya quelques étapes en fait, l'écriture et l'exécution d'un programme en C, car en plus de la source code comme ceci, vous besoin de quelque chose appelé un compilateur. Et en termes simples, ce qui fait un compilateur pour nous? Ouais. ETUDIANT: Il convertit le code que vous écrivez à 0 et de 1. DAVID MALAN: Bon. Donc, il convertit le code nous écrivons à 0 et de 1. Il convertit les soi-disant code source à code objet, dont le dernier est un petit quelque chose de ce genre. Et c'est votre CPU, le cerveau des votre ordinateur, qu'en raison de la personnes qui ont créé ces ordinateurs, savoir ce que ces séquences de moyenne 0 et de 1. Peut-être que cela signifie impression. Peut-être que cela veut dire plus. Peut-être que cela signifie soustraction. Peut-être que cela signifie afficher un graphique. Il ya des motifs de bits prédéfinis que le monde a décidé de dire certaines choses. Mais pour la plupart, dans ce cours, nous allons travailler à un niveau supérieur, et nous tenons pour acquis qu'il existe des choses comme les compilateurs qui peuvent rendre notre fonction de code source dans la façon dont nous entendons. Ainsi, le programme que nous avons écrit la première semaine dernière puis a commencé à bâbord, afin de parler, à C cette dernière Lundi était présent. Lorsque drapeau vert cliqué, dire bonjour. Ce fut, bien sûr, écrit dans Scratch. Et je prétendais que l'équivalent programme en C avait l'air un peu quelque chose comme ça. Alors que je pensais que nous ferions dans un premier temps est, nous allons démêler ce qui ressemble, à première coup d'œil, il est vrai, comme assez obscur la syntaxe, mais vous allez commencer à remarquer modèles assez rapidement. Ce que nous allons faire aujourd'hui, c'est aussi fournir vous avec un modèle mental pour certains canonique, certaines constructions standards dans la programmation. Et puis nous obtenons réellement nos mains sale avec quelques exemples ainsi. Donc, pour ceux d'entre vous plus à l'aise, se rendre compte que cette semaine, puis prochaine semaine peut très bien être un peu de révision. Mais surtout quand l'édition pirate de problème ensemble 1 sort sur le le site Web de cours le vendredi, je ne pense vous verrez que même si vous remplissez quelques blancs au cours de la prochaine semaine ou deux, vous allez commencer à avoir de plus en plus contestée et rencontrer nouveaux et plus récents choses. Donc, nous allons taquiner ce programme à part quelques lignes à la fois. Au sommet, nous avons ce que c'est techniquement appelé directive de préprocesseur. C'est juste une ligne de code qui dit à inclure le contenu d'un fichier, J'ai appelé standard / N, l'entrée standard - ou, désolé, E / S standard, standard d'entrée / sortie,. h, à l'intérieur de mon propre programme. Donc, en d'autres termes, si j'ai écrit ce programme avec un simple éditeur de texte comme gedit, l'équivalent de plus simple quelque chose comme Microsoft Word, qui instruction, # include stdio.h, est juste va dire au compilateur, prenez le contenu de cet autre dossier, stdio.h, et collez-les ici. Maintenant, pourquoi je m'inquiète? Qu'avons-nous revendiquons est à l'intérieur de ce fichier stdio.h appelé, qui est stocké quelque part sur mon disque dur, ou dans ce cas, quelque part dans l'appareil CS50? Quelqu'un d'autre l'a mis là pour moi. Mais ce qu'il ya dedans? Ouais, c'est donc une déclaration d' une fonction appelée printf. Rappelle donc la fonction printf qui affiche les mots et caractères numéros sur l'écran à mon appel d'offres. Mais je n'ai pas l'écrire. CS50 n'a pas écrit cela. il ya des années Quelqu'un a écrit, et ils essentiellement nous a donné la recette pour elle dans un fichier appelé stdio.h. Alors que la première ligne donne juste me donner accès aux fonctions que quelqu'un d'autre écrit il ya des années, entre qui sont printf. Maintenant, la ligne suivante, je vais saluer mon part à, au moins jusqu'à la semaine prochaine. Mais pour l'instant, sachez que int main (void) est essentiellement l'équivalent de cette pièce de puzzle jaune lorsque drapeau vert cliqué. Le monde, il ya des années, a décidé que si vous écrivez un programme dans le langue appelée C, vous commencez votre programme avec une ligne qui ressemble à ça. Dans à peu près le temps d'une semaine, ça va faire ce sentiment est int, ce vide est. Mais pour l'instant, il suffit de penser comme cette pièce de puzzle jaune. Maintenant, à côté, nous avons une accolade suivie par un autre proche accolade, pour ainsi dire. Et nous verrons tout au long de ces des programmes en C, ainsi que JavaScript et PHP. Et ce juste encapsulent lignes connexes de code. L'accolade ouvrante essentiellement dit, voici un peu de code. Et l'accolade fermée, qui est inclinée dans l'autre sens, il suffit moyens, c'est tout pour le code correspondant. Ainsi, la ligne juteuse dans cette première programme est le dernier, printf, entre guillemets, bonjour tout le monde. Et j'ai appelé la chose entre citations que la dernière fois? Donc, c'est une chaîne. Et une chaîne est juste la techno expression d'une séquence de caractères, un mot, une phrase. Même une simple lettre pouvait être entre guillemets. Mais c'est une séquence de zéro un ou plusieurs caractères. Backslash-n, cependant, semble un peu étrange. Mais cela signifiait simplement quelque chose simple de l'ordinateur. Quoi de barre oblique inverse-n? Nouvelle ligne. Donc, c'est juste la séquence spéciale de caractères que le monde a décidé moyens mis un saut de ligne là, parce que le compilateur va réellement obtenir confus, généralement, si vous, très compréhensible, mais à tort, juste commencer à frapper sur Entrée pour mettre nouvelles lignes dans votre code. Vous devez être un peu plus explicite avec barre oblique inverse-n. Et nous verrons, il ya quelques autres tels modèles pour les caractères spéciaux. Par exemple, si vous voulez laisser votre esprit vagabonder à une affaire d'angle, suppose que je voulais imprimer une guillemet à l'écran pour une raison quelconque, cela semblerait être un peu problématique, non? Parce que si je mets des guillemets dans le milieu de «Bonjour tout le monde," quelle qu'en soit la pourquoi, pourquoi est-ce que semblent potentiellement problématique? Il brise la chaîne. Le compilateur est tout un programme. Un programme comme un compilateur va tout simplement à lire le code de haut en bas, de gauche à droite. Et si voit trois guillemets place de deux, il ne va pas savoir si vous voulez dire que la chose à gauche devrait être la chaîne, ou la chose à la droite ou la chose entière. C'est ambigu, et alors quelle typique compilateur faire est simplement de paniquer, et vous donner quelques message d'erreur, et faites-vous traiter le problème. Donc, étant donné que les anti-slash-n signifie une nouvelle ligne, quelles seraient vos instincts maintenant commencer à être si vous voulez inclure quelque chose anormale comme un double citer à l'intérieur de cette autre cité string? Backslash-guillemet. Et donc nous verrons ce type de motif aussi. Si vous voulez faire quelque chose d'un peu étrange, vous vous rendrez compte que l' solutions suivent souvent un schéma, et la barre oblique inverse désigne une séquence d'échappement. Et cela signifie quelque chose de spécial que nous devons représenter dans un manière différente. Quant à savoir comment représentez-vous une barre oblique inverse, eh bien, nous allons revenir à cela. Mais la réponse, elle aussi, est en fait un peu évident. Donc, nous allons maintenant vous présenter un autre constructions de programmation que vous avez vu dans Scratch. Vous avez probablement pris pour acquis déjà si vous avez déjà plongé dans problème réglé 0. Mais nous allons maintenant vous présenter la syntaxe C pour ceux-ci autrement assez intuitive idées, au moins certains d'entre eux. Donc, cette notion d'un état ou d' une branche, alors qu'auparavant nous représenté avec le code qui ressemblait de ce genre sur la gauche dans Scratch - si x est inférieur à y, dites-le - place maintenant dans C - permettez-moi aiguiser dans le cas le plus simple - nous allons simplement dire que, si, ouvrez parenthèse, quelque chose est vrai - un Expression booléenne va aller où je l'ai dit état - parenthèse fermante, puis faire ce qui est à l'intérieur de ces accolades. Donc, là aussi, les accolades sont un peu comme Scratch de Pièces de puzzle en forme de U. Faire ce qui est à l'intérieur de ces accolades. Dans ce cas, slash slash. Et remarquez que c'est un attaquant Slash, pas une barre oblique inverse. Barre oblique, barre oblique, pour ceux qui ont programmé avant, signifie simplement - c'est juste un commentaire. Un commentaire n'est pas une ligne de code, en tant que tel. C'est une ligne de l'anglais que vous, humaine, ont écrit vous-même pour peut-être vous rappeler de faire quelque chose, expliquer à vous-même, pour expliquer aux quelqu'un d'autre, ce que votre code est fait. C'est juste un commentaire descriptif. Maintenant, bien sûr, nous pouvons avoir un double sens bifurcation de la route, juste en faisant cela, un fourchette à trois voies de la route en faisant cela, et si vous continuez cette motif, vous pouvez avoir quatre voies, à cinq voies, fourchettes six voies de la route si vous avez besoin pour gérer, en effet, que de nombreuses conditions. Et puis notez le parallélisme ici - if (condition), else if (condition), et le seul qui soit un peu étrange, c'est le dernier, qui C'est juste que le reste. Mais encore une fois, ce n'est identique, conceptuellement, à ce que nous avons fait déjà, même si la syntaxe prendre un peu pour s'y habituer. Maintenant, dans cet exemple, il ya une autre syntaxe étrange. Nous voyons printf encore, parenthèse ouverte, et parenthèse fermante. Et à l'intérieur de là est une chaîne entre guillemets. Les parenthèses, dans le contexte de printf, allez sur la gauche et à droite de quoi? Qu'est-ce que nous décrivons cité chaîne comme plus généralement? Il s'agit donc d'un argument. Chaque fois que vous avez une fonction, comme printf, puis une parenthèse ouverte et une Fermer paren et quelque chose à l'intérieur de il, si c'est une chaîne ou un entier, ou toute autre chose, la chose en entre les parenthèses est appelé un argument. Et un argument influe seulement Le comportement de la fonction. Dans ce cas, il est assez clair comment. x