1 00:00:00,000 --> 00:00:12,410 >> [Jouer de la musique] 2 00:00:12,410 --> 00:00:12,830 >> DAVID MALAN: Très bien. 3 00:00:12,830 --> 00:00:13,370 Bienvenue. 4 00:00:13,370 --> 00:00:16,510 C'est CS50, et c'est Une semaine, s'est poursuivie. 5 00:00:16,510 --> 00:00:20,050 Donc l'une des raisons pour lesquelles nous avons été en passant autour des technologies comme 6 00:00:20,050 --> 00:00:24,120 Google Glass est qu'ils viennent avec quelque chose de connu comme un API, une 7 00:00:24,120 --> 00:00:25,980 Interface de programmation d'applications. 8 00:00:25,980 --> 00:00:28,830 Et ce que cela signifie est que, avec l' fichiers droit et avec le droit 9 00:00:28,830 --> 00:00:32,850 documentation, vous pouvez réellement écrire logiciels pour appareils même genre. 10 00:00:32,850 --> 00:00:36,200 >> Et donc ce que nous avons à l'esprit vers semestres fin est, si un projet 11 00:00:36,200 --> 00:00:39,310 impliquant, par exemple, Google pourrait verre appel, nous verrons ce que nous pouvons faire dans 12 00:00:39,310 --> 00:00:42,220 Conditions de vous accrocher avec certains loaner matériel ainsi que l' 13 00:00:42,220 --> 00:00:46,500 API accessible au public afin que vous puissiez réellement commencer à créer des logiciels 14 00:00:46,500 --> 00:00:48,630 qui fonctionne sur le même verre Google. 15 00:00:48,630 --> 00:00:51,710 >> Un autre dispositif que nous avons joué avec du retard que nous avons pensé que peut-être 16 00:00:51,710 --> 00:00:53,910 plaisir à la fin de semestre est cette petite chose ici. 17 00:00:53,910 --> 00:00:56,860 Ça s'appelle Leap Motion et ce que vous voir est techniquement une 18 00:00:56,860 --> 00:01:00,280 publicité pour l'appareil, mais il ne parle de ce que ce particulier 19 00:01:00,280 --> 00:01:01,240 dispositif est capable de. 20 00:01:01,240 --> 00:01:05,550 Et, aussi, est livré avec une API via que vous pouvez écrire du logiciel pour 21 00:01:05,550 --> 00:01:10,545 contrôler votre ordinateur de façon tout à fait comme ce film d'une minute ici. 22 00:01:10,545 --> 00:01:12,070 >> [LECTURE VIDEO] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [FIN LECTURE VIDÉO] 25 00:02:08,590 --> 00:02:11,190 >> Alors maintenant, ce dispositif arrive à être mis en œuvre comme un petit USB 26 00:02:11,190 --> 00:02:14,290 connecteur que vous pouvez brancher sur votre ordinateur, mais je ne serais pas surpris 27 00:02:14,290 --> 00:02:17,930 si avant longtemps, nous avons ce genre de technologies dans le prochain lot d'ordinateurs 28 00:02:17,930 --> 00:02:20,510 et Mac afin que vous puissiez, en effet, interagir avec lui en 29 00:02:20,510 --> 00:02:21,650 d'une manière comme cela. 30 00:02:21,650 --> 00:02:24,250 En fait, ce que j'ai pensé que je ferais aussi, c'est J'ai tiré une petite démonstration 31 00:02:24,250 --> 00:02:25,860 programme qui vient avec ce logiciel. 32 00:02:25,860 --> 00:02:28,700 Alors j'ai mis le petit capteur en face de mon ordinateur portable. 33 00:02:28,700 --> 00:02:32,420 >> Et comme vous pouvez le voir, il réalise déjà que ma main est là 34 00:02:32,420 --> 00:02:33,400 contrôler. 35 00:02:33,400 --> 00:02:37,900 Et tout cela ne demande est merveille petites choses comme ça. 36 00:02:37,900 --> 00:02:41,080 Mais vous pouvez voir que, en effet, J'ai cinq doigts là-bas. 37 00:02:41,080 --> 00:02:44,270 Si nous pouvons lui faire faire tous les 10, vous pouvez imaginer un piano soignée 38 00:02:44,270 --> 00:02:45,390 l'application ou analogue. 39 00:02:45,390 --> 00:02:47,820 Donc, si vous voulez venir après la classe aujourd'hui et de jouer avec ce que 40 00:02:47,820 --> 00:02:49,720 Eh bien, vous êtes invités à. 41 00:02:49,720 --> 00:02:52,930 Donc plus sur ce vers la fin de semestre. 42 00:02:52,930 --> 00:02:54,420 >> Ainsi, un couple d'administration annonces. 43 00:02:54,420 --> 00:02:58,690 Un, faire partie de ce vendredi à midi au cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Cette URL est en cours de page d'accueil ainsi. 45 00:03:01,260 --> 00:03:04,010 Dans l'intervalle, cependant, supersections fera ses débuts ce dimanche. 46 00:03:04,010 --> 00:03:07,800 Supersections sont une chose une seule fois, car il nous faut un certain temps pour travailler 47 00:03:07,800 --> 00:03:09,470 savoir qui est dans quelle section et où. 48 00:03:09,470 --> 00:03:12,280 >> Donc, ce dimanche, il y aura une section pour ceux qui sont moins à l'aise, 49 00:03:12,280 --> 00:03:14,040 une section pour ceux plus à l'aise. 50 00:03:14,040 --> 00:03:16,110 Et ceux d'entre vous quelque part dans entre sont invités à aller à 51 00:03:16,110 --> 00:03:17,850 ou les deux ou aucun des deux. 52 00:03:17,850 --> 00:03:19,150 Ces deux seront filmés. 53 00:03:19,150 --> 00:03:22,740 Ils vont être dans un plus grand auditorium de une section devrait normalement être po 54 00:03:22,740 --> 00:03:26,110 Mais le but ici est de vous équiper avec un peu de réconfort avec un problème réglé, 55 00:03:26,110 --> 00:03:29,910 avec C, avec l'appareil CS50, cette week-end, avant même que vous trouvez sur votre 56 00:03:29,910 --> 00:03:31,050 affectation de la section officielle. 57 00:03:31,050 --> 00:03:34,700 Donc, vous allez rencontrer votre TF et votre petit groupe de sectionmates dans environ 58 00:03:34,700 --> 00:03:36,350 le temps d'une semaine. 59 00:03:36,350 --> 00:03:38,200 >> Les heures de bureau, quant à lui, ont été en cours. 60 00:03:38,200 --> 00:03:41,020 Faire profiter d'eux ce soir ou demain soir, si vous le souhaitez. 61 00:03:41,020 --> 00:03:43,460 ensemble du problème 0 est dû le vendredi. 62 00:03:43,460 --> 00:03:46,680 C'est un jour plus tard que l' régulièrement programmée jeudi. 63 00:03:46,680 --> 00:03:50,410 Mais avec le jeu de problème 1, vous verrez qu 'il comporte un certain échauffement 64 00:03:50,410 --> 00:03:52,770 exercices avec laquelle vous vous peut prolonger votre 65 00:03:52,770 --> 00:03:54,660 Jeudi échéance au vendredi. 66 00:03:54,660 --> 00:03:58,410 ensemble du problème 1, quant à lui, fera ses débuts sur le site Web du cours prochain 67 00:03:58,410 --> 00:04:02,000 Vendredi, si vous voulez vous plonger dans comme je l'ai fait une fois en retard 68 00:04:02,000 --> 00:04:04,370 Vendredi soir dans votre chambre. 69 00:04:04,370 --> 00:04:07,660 >> Alors cs50.net/appliance est le lieu où vous pouvez obtenir l'appareil CS50 70 00:04:07,660 --> 00:04:09,040 que nous avons commencé en utilisant le lundi. 71 00:04:09,040 --> 00:04:10,140 Nous utiliserons un peu plus aujourd'hui. 72 00:04:10,140 --> 00:04:14,040 Mais rassurez-vous que le problème réglé 1 spécification vous guidera à travers 73 00:04:14,040 --> 00:04:16,490 précisément les étapes que vous devez pour obtenir cette place et fonctionne. 74 00:04:16,490 --> 00:04:22,120 Ne vous inquiétez donc pas de faire ça avant Pset 1 si vous ne souhaitez pas. 75 00:04:22,120 --> 00:04:22,660 >> Très bien. 76 00:04:22,660 --> 00:04:27,180 Nous avons donc examiné lundi au code source, mais dans le cadre d'une nouvelle 77 00:04:27,180 --> 00:04:30,895 langage de programmation, à savoir C, et C, Contrairement aux rayures, n'est pas graphique. 78 00:04:30,895 --> 00:04:32,270 Ce n'est pas des pièces de puzzle. 79 00:04:32,270 --> 00:04:34,450 C'est syntaxe plus proche de l'anglais. 80 00:04:34,450 --> 00:04:37,140 Et il ya quelques étapes en fait, l'écriture et l'exécution d'un 81 00:04:37,140 --> 00:04:41,650 programme en C, car en plus de la source code comme ceci, vous besoin de quelque chose 82 00:04:41,650 --> 00:04:42,890 appelé un compilateur. 83 00:04:42,890 --> 00:04:46,682 Et en termes simples, ce qui fait un compilateur pour nous? 84 00:04:46,682 --> 00:04:47,650 Ouais. 85 00:04:47,650 --> 00:04:51,040 >> ETUDIANT: Il convertit le code que vous écrivez à 0 et de 1. 86 00:04:51,040 --> 00:04:51,151 >> DAVID MALAN: Bon. 87 00:04:51,151 --> 00:04:53,580 Donc, il convertit le code nous écrivons à 0 et de 1. 88 00:04:53,580 --> 00:04:57,730 Il convertit les soi-disant code source à code objet, dont le dernier est 89 00:04:57,730 --> 00:04:59,140 un petit quelque chose de ce genre. 90 00:04:59,140 --> 00:05:02,860 Et c'est votre CPU, le cerveau des votre ordinateur, qu'en raison de la 91 00:05:02,860 --> 00:05:06,280 personnes qui ont créé ces ordinateurs, savoir ce que ces séquences 92 00:05:06,280 --> 00:05:07,460 de moyenne 0 et de 1. 93 00:05:07,460 --> 00:05:08,640 >> Peut-être que cela signifie impression. 94 00:05:08,640 --> 00:05:10,265 Peut-être que cela veut dire plus. 95 00:05:10,265 --> 00:05:11,610 Peut-être que cela signifie soustraction. 96 00:05:11,610 --> 00:05:13,350 Peut-être que cela signifie afficher un graphique. 97 00:05:13,350 --> 00:05:16,870 Il ya des motifs de bits prédéfinis que le monde a décidé de dire 98 00:05:16,870 --> 00:05:17,700 certaines choses. 99 00:05:17,700 --> 00:05:20,760 Mais pour la plupart, dans ce cours, nous allons travailler à un niveau supérieur, et 100 00:05:20,760 --> 00:05:24,180 nous tenons pour acquis qu'il existe des choses comme les compilateurs qui peuvent 101 00:05:24,180 --> 00:05:27,670 rendre notre fonction de code source dans la façon dont nous entendons. 102 00:05:27,670 --> 00:05:31,660 >> Ainsi, le programme que nous avons écrit la première semaine dernière puis a commencé à bâbord, afin de 103 00:05:31,660 --> 00:05:33,920 parler, à C cette dernière Lundi était présent. 104 00:05:33,920 --> 00:05:35,700 Lorsque drapeau vert cliqué, dire bonjour. 105 00:05:35,700 --> 00:05:37,430 Ce fut, bien sûr, écrit dans Scratch. 106 00:05:37,430 --> 00:05:40,710 Et je prétendais que l'équivalent programme en C avait l'air un peu 107 00:05:40,710 --> 00:05:41,520 quelque chose comme ça. 108 00:05:41,520 --> 00:05:45,050 >> Alors que je pensais que nous ferions dans un premier temps est, nous allons démêler ce qui ressemble, à première 109 00:05:45,050 --> 00:05:48,790 coup d'œil, il est vrai, comme assez obscur la syntaxe, mais vous allez commencer à remarquer 110 00:05:48,790 --> 00:05:50,160 modèles assez rapidement. 111 00:05:50,160 --> 00:05:53,770 Ce que nous allons faire aujourd'hui, c'est aussi fournir vous avec un modèle mental pour certains 112 00:05:53,770 --> 00:05:57,280 canonique, certaines constructions standards dans la programmation. 113 00:05:57,280 --> 00:06:00,420 Et puis nous obtenons réellement nos mains sale avec quelques exemples ainsi. 114 00:06:00,420 --> 00:06:04,140 >> Donc, pour ceux d'entre vous plus à l'aise, se rendre compte que cette semaine, puis prochaine 115 00:06:04,140 --> 00:06:05,940 semaine peut très bien être un peu de révision. 116 00:06:05,940 --> 00:06:08,810 Mais surtout quand l'édition pirate de problème ensemble 1 sort sur le 117 00:06:08,810 --> 00:06:12,330 le site Web de cours le vendredi, je ne pense vous verrez que même si vous remplissez 118 00:06:12,330 --> 00:06:15,390 quelques blancs au cours de la prochaine semaine ou deux, vous allez commencer à avoir de plus en plus 119 00:06:15,390 --> 00:06:18,410 contestée et rencontrer nouveaux et plus récents choses. 120 00:06:18,410 --> 00:06:21,310 >> Donc, nous allons taquiner ce programme à part quelques lignes à la fois. 121 00:06:21,310 --> 00:06:24,140 Au sommet, nous avons ce que c'est techniquement appelé 122 00:06:24,140 --> 00:06:25,950 directive de préprocesseur. 123 00:06:25,950 --> 00:06:30,510 C'est juste une ligne de code qui dit à inclure le contenu d'un fichier, 124 00:06:30,510 --> 00:06:35,080 J'ai appelé standard / N, l'entrée standard - ou, désolé, E / S standard, standard 125 00:06:35,080 --> 00:06:38,670 d'entrée / sortie,. h, à l'intérieur de mon propre programme. 126 00:06:38,670 --> 00:06:41,670 >> Donc, en d'autres termes, si j'ai écrit ce programme avec un simple éditeur de texte comme 127 00:06:41,670 --> 00:06:45,260 gedit, l'équivalent de plus simple quelque chose comme Microsoft Word, qui 128 00:06:45,260 --> 00:06:50,970 instruction, # include stdio.h, est juste va dire au compilateur, prenez le 129 00:06:50,970 --> 00:06:56,080 contenu de cet autre dossier, stdio.h, et collez-les ici. 130 00:06:56,080 --> 00:06:57,090 >> Maintenant, pourquoi je m'inquiète? 131 00:06:57,090 --> 00:07:01,850 Qu'avons-nous revendiquons est à l'intérieur de ce fichier stdio.h appelé, qui est stocké 132 00:07:01,850 --> 00:07:05,490 quelque part sur mon disque dur, ou dans ce cas, quelque part dans l'appareil CS50? 133 00:07:05,490 --> 00:07:06,635 Quelqu'un d'autre l'a mis là pour moi. 134 00:07:06,635 --> 00:07:09,910 Mais ce qu'il ya dedans? 135 00:07:09,910 --> 00:07:13,020 >> Ouais, c'est donc une déclaration d' une fonction appelée printf. 136 00:07:13,020 --> 00:07:17,400 Rappelle donc la fonction printf qui affiche les mots et caractères 137 00:07:17,400 --> 00:07:20,160 numéros sur l'écran à mon appel d'offres. 138 00:07:20,160 --> 00:07:21,220 Mais je n'ai pas l'écrire. 139 00:07:21,220 --> 00:07:22,230 CS50 n'a pas écrit cela. 140 00:07:22,230 --> 00:07:26,990 il ya des années Quelqu'un a écrit, et ils essentiellement nous a donné la recette pour elle 141 00:07:26,990 --> 00:07:29,110 dans un fichier appelé stdio.h. 142 00:07:29,110 --> 00:07:33,240 Alors que la première ligne donne juste me donner accès aux fonctions que quelqu'un d'autre 143 00:07:33,240 --> 00:07:36,500 écrit il ya des années, entre qui sont printf. 144 00:07:36,500 --> 00:07:39,450 >> Maintenant, la ligne suivante, je vais saluer mon part à, au moins jusqu'à la semaine prochaine. 145 00:07:39,450 --> 00:07:43,620 Mais pour l'instant, sachez que int main (void) est essentiellement l'équivalent de cette 146 00:07:43,620 --> 00:07:46,310 pièce de puzzle jaune lorsque drapeau vert cliqué. 147 00:07:46,310 --> 00:07:49,510 Le monde, il ya des années, a décidé que si vous écrivez un programme dans le 148 00:07:49,510 --> 00:07:53,150 langue appelée C, vous commencez votre programme avec une ligne 149 00:07:53,150 --> 00:07:54,410 qui ressemble à ça. 150 00:07:54,410 --> 00:07:57,650 Dans à peu près le temps d'une semaine, ça va faire ce sentiment est int, ce vide est. 151 00:07:57,650 --> 00:08:00,840 Mais pour l'instant, il suffit de penser comme cette pièce de puzzle jaune. 152 00:08:00,840 --> 00:08:04,550 >> Maintenant, à côté, nous avons une accolade suivie par un autre proche accolade, 153 00:08:04,550 --> 00:08:05,240 pour ainsi dire. 154 00:08:05,240 --> 00:08:07,430 Et nous verrons tout au long de ces des programmes en C, ainsi que 155 00:08:07,430 --> 00:08:08,930 JavaScript et PHP. 156 00:08:08,930 --> 00:08:11,345 Et ce juste encapsulent lignes connexes de code. 157 00:08:11,345 --> 00:08:14,600 L'accolade ouvrante essentiellement dit, voici un peu de code. 158 00:08:14,600 --> 00:08:17,590 Et l'accolade fermée, qui est inclinée dans l'autre sens, il suffit 159 00:08:17,590 --> 00:08:19,920 moyens, c'est tout pour le code correspondant. 160 00:08:19,920 --> 00:08:22,970 >> Ainsi, la ligne juteuse dans cette première programme est le dernier, printf, 161 00:08:22,970 --> 00:08:25,080 entre guillemets, bonjour tout le monde. 162 00:08:25,080 --> 00:08:30,670 Et j'ai appelé la chose entre citations que la dernière fois? 163 00:08:30,670 --> 00:08:31,285 Donc, c'est une chaîne. 164 00:08:31,285 --> 00:08:35,309 Et une chaîne est juste la techno expression d'une séquence de 165 00:08:35,309 --> 00:08:37,169 caractères, un mot, une phrase. 166 00:08:37,169 --> 00:08:39,380 Même une simple lettre pouvait être entre guillemets. 167 00:08:39,380 --> 00:08:41,840 Mais c'est une séquence de zéro un ou plusieurs caractères. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, cependant, semble un peu étrange. 169 00:08:43,650 --> 00:08:46,290 Mais cela signifiait simplement quelque chose simple de l'ordinateur. 170 00:08:46,290 --> 00:08:48,060 Quoi de barre oblique inverse-n? 171 00:08:48,060 --> 00:08:48,570 Nouvelle ligne. 172 00:08:48,570 --> 00:08:52,490 Donc, c'est juste la séquence spéciale de caractères que le monde a décidé 173 00:08:52,490 --> 00:08:56,880 moyens mis un saut de ligne là, parce que le compilateur va réellement obtenir 174 00:08:56,880 --> 00:09:02,280 confus, généralement, si vous, très compréhensible, mais à tort, juste 175 00:09:02,280 --> 00:09:04,570 commencer à frapper sur Entrée pour mettre nouvelles lignes dans votre code. 176 00:09:04,570 --> 00:09:07,150 Vous devez être un peu plus explicite avec barre oblique inverse-n. 177 00:09:07,150 --> 00:09:10,540 >> Et nous verrons, il ya quelques autres tels modèles pour les caractères spéciaux. 178 00:09:10,540 --> 00:09:14,340 Par exemple, si vous voulez laisser votre esprit vagabonder à une affaire d'angle, 179 00:09:14,340 --> 00:09:18,080 suppose que je voulais imprimer une guillemet à l'écran pour 180 00:09:18,080 --> 00:09:21,840 une raison quelconque, cela semblerait être un peu problématique, non? 181 00:09:21,840 --> 00:09:24,990 Parce que si je mets des guillemets dans le milieu de «Bonjour tout le monde," quelle qu'en soit la 182 00:09:24,990 --> 00:09:30,120 pourquoi, pourquoi est-ce que semblent potentiellement problématique? 183 00:09:30,120 --> 00:09:32,180 Il brise la chaîne. 184 00:09:32,180 --> 00:09:34,700 >> Le compilateur est tout un programme. 185 00:09:34,700 --> 00:09:37,210 Un programme comme un compilateur va tout simplement à lire le code de haut en bas, 186 00:09:37,210 --> 00:09:37,990 de gauche à droite. 187 00:09:37,990 --> 00:09:41,850 Et si voit trois guillemets place de deux, il ne va pas savoir 188 00:09:41,850 --> 00:09:45,210 si vous voulez dire que la chose à gauche devrait être la chaîne, ou la chose à 189 00:09:45,210 --> 00:09:46,570 la droite ou la chose entière. 190 00:09:46,570 --> 00:09:50,560 C'est ambigu, et alors quelle typique compilateur faire est simplement de paniquer, 191 00:09:50,560 --> 00:09:53,710 et vous donner quelques message d'erreur, et faites-vous traiter le problème. 192 00:09:53,710 --> 00:09:58,120 >> Donc, étant donné que les anti-slash-n signifie une nouvelle ligne, quelles seraient vos instincts maintenant 193 00:09:58,120 --> 00:10:02,610 commencer à être si vous voulez inclure quelque chose anormale comme un double 194 00:10:02,610 --> 00:10:06,210 citer à l'intérieur de cette autre cité string? 195 00:10:06,210 --> 00:10:07,640 Backslash-guillemet. 196 00:10:07,640 --> 00:10:09,630 Et donc nous verrons ce type de motif aussi. 197 00:10:09,630 --> 00:10:12,490 >> Si vous voulez faire quelque chose d'un peu étrange, vous vous rendrez compte que l' 198 00:10:12,490 --> 00:10:15,060 solutions suivent souvent un schéma, et la barre oblique inverse 199 00:10:15,060 --> 00:10:17,150 désigne une séquence d'échappement. 200 00:10:17,150 --> 00:10:20,320 Et cela signifie quelque chose de spécial que nous devons représenter dans un 201 00:10:20,320 --> 00:10:21,060 manière différente. 202 00:10:21,060 --> 00:10:23,830 Quant à savoir comment représentez-vous une barre oblique inverse, eh bien, nous allons 203 00:10:23,830 --> 00:10:24,550 revenir à cela. 204 00:10:24,550 --> 00:10:26,930 Mais la réponse, elle aussi, est en fait un peu évident. 205 00:10:26,930 --> 00:10:31,080 >> Donc, nous allons maintenant vous présenter un autre constructions de programmation 206 00:10:31,080 --> 00:10:31,915 que vous avez vu dans Scratch. 207 00:10:31,915 --> 00:10:34,790 Vous avez probablement pris pour acquis déjà si vous avez déjà plongé dans 208 00:10:34,790 --> 00:10:36,060 problème réglé 0. 209 00:10:36,060 --> 00:10:40,950 Mais nous allons maintenant vous présenter la syntaxe C pour ceux-ci autrement assez intuitive 210 00:10:40,950 --> 00:10:42,300 idées, au moins certains d'entre eux. 211 00:10:42,300 --> 00:10:45,570 >> Donc, cette notion d'un état ou d' une branche, alors qu'auparavant nous 212 00:10:45,570 --> 00:10:49,330 représenté avec le code qui ressemblait de ce genre sur la gauche dans Scratch - 213 00:10:49,330 --> 00:10:52,200 si x est inférieur à y, dites-le - 214 00:10:52,200 --> 00:10:56,760 place maintenant dans C - permettez-moi aiguiser dans le cas le plus simple - 215 00:10:56,760 --> 00:11:01,235 nous allons simplement dire que, si, ouvrez parenthèse, quelque chose est vrai - un 216 00:11:01,235 --> 00:11:04,190 Expression booléenne va aller où je l'ai dit état - 217 00:11:04,190 --> 00:11:08,170 parenthèse fermante, puis faire ce qui est à l'intérieur de ces accolades. 218 00:11:08,170 --> 00:11:11,020 >> Donc, là aussi, les accolades sont un peu comme Scratch de 219 00:11:11,020 --> 00:11:12,460 Pièces de puzzle en forme de U. 220 00:11:12,460 --> 00:11:14,890 Faire ce qui est à l'intérieur de ces accolades. 221 00:11:14,890 --> 00:11:16,790 Dans ce cas, slash slash. 222 00:11:16,790 --> 00:11:19,720 Et remarquez que c'est un attaquant Slash, pas une barre oblique inverse. 223 00:11:19,720 --> 00:11:21,440 Barre oblique, barre oblique, pour ceux qui ont programmé 224 00:11:21,440 --> 00:11:23,370 avant, signifie simplement - 225 00:11:23,370 --> 00:11:24,190 c'est juste un commentaire. 226 00:11:24,190 --> 00:11:26,630 Un commentaire n'est pas une ligne de code, en tant que tel. 227 00:11:26,630 --> 00:11:30,200 C'est une ligne de l'anglais que vous, humaine, ont écrit vous-même pour 228 00:11:30,200 --> 00:11:33,540 peut-être vous rappeler de faire quelque chose, expliquer à vous-même, pour expliquer aux 229 00:11:33,540 --> 00:11:35,260 quelqu'un d'autre, ce que votre code est fait. 230 00:11:35,260 --> 00:11:37,050 C'est juste un commentaire descriptif. 231 00:11:37,050 --> 00:11:40,880 >> Maintenant, bien sûr, nous pouvons avoir un double sens bifurcation de la route, juste en faisant cela, un 232 00:11:40,880 --> 00:11:43,930 fourchette à trois voies de la route en faisant cela, et si vous continuez cette 233 00:11:43,930 --> 00:11:47,570 motif, vous pouvez avoir quatre voies, à cinq voies, fourchettes six voies de la route si 234 00:11:47,570 --> 00:11:50,150 vous avez besoin pour gérer, en effet, que de nombreuses conditions. 235 00:11:50,150 --> 00:11:52,010 Et puis notez le parallélisme ici - 236 00:11:52,010 --> 00:11:55,070 if (condition), else if (condition), et le seul qui soit un peu 237 00:11:55,070 --> 00:11:58,010 étrange, c'est le dernier, qui C'est juste que le reste. 238 00:11:58,010 --> 00:12:01,170 Mais encore une fois, ce n'est identique, conceptuellement, à ce que nous avons fait 239 00:12:01,170 --> 00:12:04,690 déjà, même si la syntaxe prendre un peu pour s'y habituer. 240 00:12:04,690 --> 00:12:07,730 >> Maintenant, dans cet exemple, il ya une autre syntaxe étrange. 241 00:12:07,730 --> 00:12:11,220 Nous voyons printf encore, parenthèse ouverte, et parenthèse fermante. 242 00:12:11,220 --> 00:12:13,190 Et à l'intérieur de là est une chaîne entre guillemets. 243 00:12:13,190 --> 00:12:17,060 Les parenthèses, dans le contexte de printf, allez sur la gauche 244 00:12:17,060 --> 00:12:18,160 et à droite de quoi? 245 00:12:18,160 --> 00:12:22,190 Qu'est-ce que nous décrivons cité chaîne comme plus généralement? 246 00:12:22,190 --> 00:12:23,320 >> Il s'agit donc d'un argument. 247 00:12:23,320 --> 00:12:26,620 Chaque fois que vous avez une fonction, comme printf, puis une parenthèse ouverte et une 248 00:12:26,620 --> 00:12:30,330 Fermer paren et quelque chose à l'intérieur de il, si c'est une chaîne ou un 249 00:12:30,330 --> 00:12:34,420 entier, ou toute autre chose, la chose en entre les parenthèses est appelé 250 00:12:34,420 --> 00:12:35,110 un argument. 251 00:12:35,110 --> 00:12:37,910 >> Et un argument influe seulement Le comportement de la fonction. 252 00:12:37,910 --> 00:12:39,990 Dans ce cas, il est assez clair comment. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 Et printf va imprimer exactement cela. 255 00:12:47,720 --> 00:12:51,590 Parce que sûrement, il ya des années-personnes qui œuvre printf n'avait aucune idée 256 00:12:51,590 --> 00:12:55,000 ce que nous successeurs humains ont été va utiliser printf pour. 257 00:12:55,000 --> 00:12:58,610 Voilà pourquoi arguments existent, influer sur le comportement après une fonction de 258 00:12:58,610 --> 00:12:59,450 été écrit. 259 00:12:59,450 --> 00:13:00,780 >> Maintenant, expression booléenne. 260 00:13:00,780 --> 00:13:02,470 Nous avons vu ces derniers avant de Scratch. 261 00:13:02,470 --> 00:13:06,680 Il s'avère en C, vous pouvez également "ou" ensemble, pour ainsi dire. 262 00:13:06,680 --> 00:13:10,930 Deux barres verticales signifie que ce bloc du code, ce faire, la volonté 263 00:13:10,930 --> 00:13:15,350 exécuter, si la première condition est vraie ou la seconde condition est vraie. 264 00:13:15,350 --> 00:13:17,710 Et même si vous ne pourriez pas avoir fait ceci dans Scratch, vous pourriez en effet 265 00:13:17,710 --> 00:13:20,580 faire dans Scratch, et vous pouvez aussi s'exprimer différemment - 266 00:13:20,580 --> 00:13:25,300 si la première condition et la seconde état sont vraies, alors faire ce qui est 267 00:13:25,300 --> 00:13:27,160 à l'intérieur des accolades. 268 00:13:27,160 --> 00:13:31,210 >> Et soit dit en passant, la raison pour laquelle il ya un double esperluette et un double 269 00:13:31,210 --> 00:13:34,610 barre verticale, nous verrons la suite qu'une seule barre verticale et une 270 00:13:34,610 --> 00:13:38,710 esperluette simple effectivement avoir des ce qui signifie en C. Donc pour l'instant, 271 00:13:38,710 --> 00:13:41,840 que la duplication des symboles est intentionnel. 272 00:13:41,840 --> 00:13:45,070 >> Donc, nous allons introduire, brièvement, cette autre bit de la syntaxe. 273 00:13:45,070 --> 00:13:48,940 Ce n'est pas tout reporter sur Scratch, mais je prétends que je peux 274 00:13:48,940 --> 00:13:55,190 mettre en œuvre la notion d'une autre si, si Sinon, si bien, si else aide 275 00:13:55,190 --> 00:13:56,760 quelque chose qui s'appelle une instruction switch. 276 00:13:56,760 --> 00:14:00,820 Et la seule raison pour laquelle cela existe vraiment est de vous donner, le programmeur, un 277 00:14:00,820 --> 00:14:05,470 manière légèrement différente de la résolution de certains problème, même si logiquement il 278 00:14:05,470 --> 00:14:07,340 ne vous donne pas de nouvelles fonctionnalités. 279 00:14:07,340 --> 00:14:08,530 >> Je veux dire par cela. 280 00:14:08,530 --> 00:14:13,330 Quand vous dites interrupteur, puis un espace, et ensuite une paire de parenthèses, à l'intérieur 281 00:14:13,330 --> 00:14:14,570 qui va une expression - 282 00:14:14,570 --> 00:14:18,010 et c'est peut-être un peu non évidente au début, mais ce n'est pas un argument, 283 00:14:18,010 --> 00:14:20,680 techniquement, parce interrupteur n'est pas une fonction. 284 00:14:20,680 --> 00:14:24,230 Donc pour l'instant, supposons simplement que nous utilisons parenthèses dans différents endroits 285 00:14:24,230 --> 00:14:25,250 pour des raisons différentes. 286 00:14:25,250 --> 00:14:29,310 >> Alors mettez expression signifie que je peux mettre une variable à l'intérieur de ceux 287 00:14:29,310 --> 00:14:31,350 où il est dit entre parenthèses expression. 288 00:14:31,350 --> 00:14:33,090 Et puis, si cette variable - 289 00:14:33,090 --> 00:14:35,400 supposons que ça s'appelle x, et c'est juste un entier - 290 00:14:35,400 --> 00:14:38,900 Je peux ensuite énumérer dans mon diaporama ici quelque chose comme ça. 291 00:14:38,900 --> 00:14:41,690 Si x est ma variable, et je vouloir faire quelque chose si x 292 00:14:41,690 --> 00:14:43,480 égale à 1, je peux le faire. 293 00:14:43,480 --> 00:14:46,660 >> Si je veux au lieu de faire quelque chose si x est 2, je peux le faire. 294 00:14:46,660 --> 00:14:50,390 Sinon, si je veux faire autre chose entièrement, je peux avoir un cas de défaut 295 00:14:50,390 --> 00:14:52,750 auquel cas je fais autre chose. 296 00:14:52,750 --> 00:14:58,730 Donc, dans ce sens, c'est équivalent à un si x est égal à égal à 1, sinon si d'autre, 297 00:14:58,730 --> 00:15:01,150 mais je dis cela maintenant juste parce que nous verrons à nouveau. 298 00:15:01,150 --> 00:15:03,720 Mais pour l'instant, il suffit de savoir qu'il existe. 299 00:15:03,720 --> 00:15:04,220 >> Très bien. 300 00:15:04,220 --> 00:15:07,660 Donc, ces deux derniers sont un peu plus complexe à première vue, mais ils ne 301 00:15:07,660 --> 00:15:09,385 quelque chose d'assez simple. 302 00:15:09,385 --> 00:15:14,410 Une boucle en C est un morceau de code qui fait juste quelque chose de nouveau et 303 00:15:14,410 --> 00:15:15,330 encore et encore. 304 00:15:15,330 --> 00:15:17,590 Et la seule chose ennuyeuse à ce sujet est c'est que c'est un peu cryptique 305 00:15:17,590 --> 00:15:21,380 de vous exprimer dans cette cyclique modèle, mais le monde standardisé 306 00:15:21,380 --> 00:15:22,450 de la façon suivante. 307 00:15:22,450 --> 00:15:25,760 >> Lorsque vous utilisez une boucle for, vous avez une paire de parenthèses nouveau. 308 00:15:25,760 --> 00:15:27,570 Et remarquez les deux points-virgules là-dedans. 309 00:15:27,570 --> 00:15:34,380 Ces deux points-virgules séparés trois expressions différentes à l'intérieur de l' 310 00:15:34,380 --> 00:15:35,020 entre parenthèses. 311 00:15:35,020 --> 00:15:37,170 L'un est le soi-disant initialisations. 312 00:15:37,170 --> 00:15:38,830 L'une est la condition dite. 313 00:15:38,830 --> 00:15:40,210 Et on est soi-disant mises à jour. 314 00:15:40,210 --> 00:15:43,240 >> Regarda dans l'abstrait, c'est complètement non évidente, nous allons donc regarder 315 00:15:43,240 --> 00:15:44,630 un exemple concret. 316 00:15:44,630 --> 00:15:46,720 Dans Scratch nous avions un bloc de répétition. 317 00:15:46,720 --> 00:15:50,670 Et ce bloc a dit répéter 10 fois, dire "Bonjour tout le monde." Permettez-moi de réclame pour 318 00:15:50,670 --> 00:15:53,810 maintenant, et nous allons revenir à cela, et Cela, aussi, va devenir plus familier avec 319 00:15:53,810 --> 00:15:57,345 vous d'ici peu, l'équivalent C code pourrait être dit cela - 320 00:15:57,345 --> 00:16:02,320 une instruction for et un espace, une paire d' parenthèses, notez les points-virgules dans 321 00:16:02,320 --> 00:16:05,730 là, qui séparent trois groupes distincts choses, l'initialisation, l' 322 00:16:05,730 --> 00:16:07,320 état, et la mise à jour. 323 00:16:07,320 --> 00:16:08,840 >> Et essayer de deviner ce que le premier on fait. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 En termes simples, rugueux, ce qui est que faire pour nous, sans doute? 326 00:16:15,120 --> 00:16:15,590 Donc oui. 327 00:16:15,590 --> 00:16:19,630 C'est déclarant une variable appelée i, et il le donne quelle valeur? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Donc, il s'agit de créer une variable appelée i, mémoriser la valeur 0 en elle. 330 00:16:24,280 --> 00:16:26,420 C'est ce qu'on appelle l'initialisation. 331 00:16:26,420 --> 00:16:29,360 >> Bon, maintenant, je réclamé avant que la chose milieu, i 332 00:16:29,360 --> 00:16:31,760 <10, est la condition. 333 00:16:31,760 --> 00:16:32,730 Alors qu'est-ce fait? 334 00:16:32,730 --> 00:16:36,560 Eh bien, ce que la boucle fait quand un programme avec une boucle est exécutée, est 335 00:16:36,560 --> 00:16:41,050 chaque fois que l'ordinateur fonctionne grâce cette boucle, de haut en bas, en haut à 336 00:16:41,050 --> 00:16:43,740 bas, tout comme vous les gars fait quand compter vous-mêmes et assis, 337 00:16:43,740 --> 00:16:47,090 encore et encore et encore, l'ordinateur va 338 00:16:47,090 --> 00:16:48,560 pour vérifier cette condition. 339 00:16:48,560 --> 00:16:51,140 Et si i est inférieur à 10, il va le faire à nouveau. 340 00:16:51,140 --> 00:16:53,100 Si i est inférieur à 10, il va le faire à nouveau. 341 00:16:53,100 --> 00:16:55,030 Si i est inférieur à dix, il va le faire à nouveau. 342 00:16:55,030 --> 00:16:57,330 Alors que semble suggérer que j'espère que je change. 343 00:16:57,330 --> 00:16:59,010 Sinon, nous aurions une boucle infinie. 344 00:16:59,010 --> 00:17:02,590 Et en effet, je change, parce que le dernière chose après la virgule il 345 00:17:02,590 --> 00:17:05,569 la syntaxe quelque peu énigmatique de i + +. 346 00:17:05,569 --> 00:17:07,630 Mais ceux d'entre vous qui avez fait cette avant, cela signifie juste 347 00:17:07,630 --> 00:17:08,609 tout simplement quoi? 348 00:17:08,609 --> 00:17:09,730 >> ÉTUDIANTS: [interposition VOIX]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID MALAN: Ajoutez 1 à i. 350 00:17:10,740 --> 00:17:11,819 Incrémenter i. 351 00:17:11,819 --> 00:17:13,910 Donc, nous avons vu un jeu de rayures pièce pour que, en fait. 352 00:17:13,910 --> 00:17:18,230 Il ne ressemblait pas à i + +, mais juste moyens, tout simplement, l'accroissement de la 353 00:17:18,230 --> 00:17:24,040 Value I de 1 à chaque fois que vous faites cela. 354 00:17:24,040 --> 00:17:26,910 Donc, littéralement, vous commencez par i initialiser à 0. 355 00:17:26,910 --> 00:17:29,520 Vous vérifiez ensuite votre condition. 356 00:17:29,520 --> 00:17:31,070 Est de 0 à moins de 10? 357 00:17:31,070 --> 00:17:31,730 Oui. 358 00:17:31,730 --> 00:17:32,910 Nous passons par la boucle. 359 00:17:32,910 --> 00:17:35,150 >> La prochaine chose que je réclame l'ordinateur de allons faire, c'est que ça va 360 00:17:35,150 --> 00:17:35,910 pour incrémenter i. 361 00:17:35,910 --> 00:17:37,080 Donc, je passe à 1. 362 00:17:37,080 --> 00:17:37,940 Il vérifie l'état. 363 00:17:37,940 --> 00:17:39,290 Est de 1 à moins de 10? 364 00:17:39,290 --> 00:17:39,930 Bien sûr. 365 00:17:39,930 --> 00:17:41,030 Donc le fait encore. 366 00:17:41,030 --> 00:17:43,580 Puis il incrémente i + + à 2. 367 00:17:43,580 --> 00:17:44,610 Est de 2 à moins de 10? 368 00:17:44,610 --> 00:17:45,230 Oui. 369 00:17:45,230 --> 00:17:46,670 Et encore et encore et encore. 370 00:17:46,670 --> 00:17:50,070 Et finalement, en raison de la plus-plussing, nous arrivons à i est égal à 10. 371 00:17:50,070 --> 00:17:51,675 Est de 10 à moins de 10? 372 00:17:51,675 --> 00:17:52,990 Eh bien, évidemment pas. 373 00:17:52,990 --> 00:17:55,320 Et c'est le moment où la boucle s'arrête juste. 374 00:17:55,320 --> 00:17:58,320 Et si vous avez plus de code sur l' écran vers le bas ci-dessous, l'ordinateur 375 00:17:58,320 --> 00:18:01,620 produit pour exécuter ce code à la place. 376 00:18:01,620 --> 00:18:05,380 >> Encore une fois, même si cela va à regarder et se sentir un peu étrange au 377 00:18:05,380 --> 00:18:07,830 première, certainement pour ceux d'entre vous qui n'ont jamais programmé auparavant, il 378 00:18:07,830 --> 00:18:11,640 réduit littéralement conceptuellement pour ce qui est par ailleurs un très 379 00:18:11,640 --> 00:18:14,330 casse-tête simple pièce en Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Très bien, je l'ai promis qu'il y aurait d'autres analogues de Scratch. 381 00:18:19,130 --> 00:18:20,060 Il ya celui-là aussi. 382 00:18:20,060 --> 00:18:21,700 Et nous avons vu brièvement sur cette dernière fois. 383 00:18:21,700 --> 00:18:23,530 Mais rappelez-vous toujours l' bloquer à zéro? 384 00:18:23,530 --> 00:18:25,490 Il fait juste quelque chose pour toujours? 385 00:18:25,490 --> 00:18:27,470 Je prétendais que vous pourriez mettre en œuvre ce de cette manière. 386 00:18:27,470 --> 00:18:29,740 Et vous pouvez réellement mettre en œuvre cette dans un tas de façons différentes. 387 00:18:29,740 --> 00:18:34,260 >> Mais la boucle while est juste un autre façon C de vous exprimer. 388 00:18:34,260 --> 00:18:37,080 A la fin de la journée, vous ne pouvez pas faire n'importe quoi avec une boucle while que vous 389 00:18:37,080 --> 00:18:38,360 ne peut pas avec une boucle for. 390 00:18:38,360 --> 00:18:41,430 Ils sont donc à la fin de l' jour fonctionnellement les mêmes. 391 00:18:41,430 --> 00:18:43,840 Mais il vous permet de vous exprimer un peu différemment dans 392 00:18:43,840 --> 00:18:44,850 de la façon suivante. 393 00:18:44,850 --> 00:18:49,720 >> Avec la boucle while, c'est ce qui est en parenthèses qui est à nouveau contrôlées et 394 00:18:49,720 --> 00:18:51,050 encore et encore. 395 00:18:51,050 --> 00:18:55,100 Et dès que cette expression est fausse, puis l'exécution de la boucle s'arrête, 396 00:18:55,100 --> 00:18:57,890 et que l'ordinateur procède à exécuter tout autre code 397 00:18:57,890 --> 00:18:59,230 avoir dans votre fichier. 398 00:18:59,230 --> 00:19:02,180 >> Mais ce qui est intéressant ici, c'est que je me suis littéralement tapé vrai. 399 00:19:02,180 --> 00:19:06,680 Et vrai, c'est un type de valeur booléenne, une valeur vraie ou fausse. 400 00:19:06,680 --> 00:19:09,750 Ainsi pourrait jamais devenir vrai false si j'ai littéralement 401 00:19:09,750 --> 00:19:11,970 codé en dur dans mon programme? 402 00:19:11,970 --> 00:19:12,470 Donc pas. 403 00:19:12,470 --> 00:19:13,730 C'est un peu étrange que je l'ai fait. 404 00:19:13,730 --> 00:19:15,190 Mais vrai, c'est vrai. 405 00:19:15,190 --> 00:19:16,320 Il n'ya pas de plus-plussing. 406 00:19:16,320 --> 00:19:17,820 Il n'y a aucune utilisation de variables ici. 407 00:19:17,820 --> 00:19:22,740 Donc, parce que je codé en dur tout en vrai, ce boucle va toujours à évaluer 408 00:19:22,740 --> 00:19:24,090 encore et encore et encore. 409 00:19:24,090 --> 00:19:27,660 >> Alors, combien de fois est mondialement bonjour aller à imprimer sur l'écran? 410 00:19:27,660 --> 00:19:28,170 Toujours. 411 00:19:28,170 --> 00:19:31,980 Un nombre infini de fois jusqu'à ce que le batterie meurt ou d'autres externes 412 00:19:31,980 --> 00:19:32,730 événement se produit. 413 00:19:32,730 --> 00:19:35,880 Donc, ce n'est probablement pas le meilleur programme à écrire, parce que si l'utilisateur 414 00:19:35,880 --> 00:19:38,660 ne peut jamais quitter votre programme, c'est probablement pas ce que vous vouliez. 415 00:19:38,660 --> 00:19:41,070 >> Mais parfois, les programmes devraient avoir une boucle infinie. 416 00:19:41,070 --> 00:19:44,050 Par exemple, si votre ordinateur est équipé d'un horloge sur lui, il serait certainement 417 00:19:44,050 --> 00:19:48,130 bien si votre horloge ne garder mise à jour lui-même pour toujours, mais une fois 418 00:19:48,130 --> 00:19:50,500 deuxième ou une fois par minute ou quelque chose comme ça. 419 00:19:50,500 --> 00:19:53,690 Ainsi, même les boucles infinies ont leur place. 420 00:19:53,690 --> 00:19:54,360 >> Très bien. 421 00:19:54,360 --> 00:19:55,190 Enfin, celui-ci. 422 00:19:55,190 --> 00:19:57,770 Et celui-ci est un peu différent fonctionnellement, et nous y reviendrons 423 00:19:57,770 --> 00:19:59,460 c'est probablement dans Pset 1. 424 00:19:59,460 --> 00:20:02,370 Mais il ya un autre type de boucle appelé une boucle Do While. 425 00:20:02,370 --> 00:20:07,100 Et la seule différence entre un faire en boucle et, disons, une boucle while, 426 00:20:07,100 --> 00:20:11,120 c'est que la condition est vérifiée pas avant d'exécuter le code, mais après 427 00:20:11,120 --> 00:20:12,080 vous exécutez le code. 428 00:20:12,080 --> 00:20:15,380 Alors au sommet pour le tout boucle, alors que le faire pendant 429 00:20:15,380 --> 00:20:16,560 vérifie au fond. 430 00:20:16,560 --> 00:20:21,370 >> Et cela signifie simplement que la boucle while exécutons habituellement plus de temps 431 00:20:21,370 --> 00:20:24,630 ou moins de fois que la boucle while? 432 00:20:24,630 --> 00:20:30,810 Potentiellement plus de temps, parce que faire while dit clairement ce faire, 433 00:20:30,810 --> 00:20:34,600 seulement après quoi vous vérifiez si l'état de l'intérieur de l' 434 00:20:34,600 --> 00:20:35,980 parenthèses est vrai. 435 00:20:35,980 --> 00:20:37,940 >> Nous allons donc voir ce nouveau probablement dans Pset 1. 436 00:20:37,940 --> 00:20:41,150 Si jamais vous voulez faire quelque chose à moins une fois et puis peut-être un peu plus 437 00:20:41,150 --> 00:20:43,350 fois, c'est une bonne construire à utiliser. 438 00:20:43,350 --> 00:20:46,970 Mais une boucle while, en revanche, sera vérifier son état premier. 439 00:20:46,970 --> 00:20:50,660 Et c'est tout pour les boucles en C, ne tandis que, de temps, et pour les boucles. 440 00:20:50,660 --> 00:20:54,700 Et encore, ils correspondent assez bien de retour à zéro, sauf celui-ci ne 441 00:20:54,700 --> 00:20:57,350 tout à fait le même analogique dans Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Eh bien, que diriez-vous, maintenant, les variables? 443 00:20:58,880 --> 00:21:02,600 Voilà donc comment j'ai déclaré une variable syntaxiquement l'autre jour. 444 00:21:02,600 --> 00:21:06,440 J'ai eu un int, ce que je prétendais est un nombre entier. 445 00:21:06,440 --> 00:21:09,690 J'ai ensuite eu un appelé variable compteur, et puis un point-virgule. 446 00:21:09,690 --> 00:21:11,070 Alors, quelle est cette ligne de code fait? 447 00:21:11,070 --> 00:21:14,540 C'est, tout simplement, en déclarant une variable - 448 00:21:14,540 --> 00:21:17,940 c'est-à-poser l'ordinateur, donnez-moi un peu de mémoire, donne-moi quelques morceaux - dans 449 00:21:17,940 --> 00:21:19,450 ce que je peux stocker quoi? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 Et le point-virgule signifie simplement fin de ligne de code. 452 00:21:23,570 --> 00:21:25,500 >> Maintenant, la deuxième ligne est probablement assez facile à deviner. 453 00:21:25,500 --> 00:21:29,710 Qu'est-ce compteur = 0; faire? 454 00:21:29,710 --> 00:21:31,690 C'est attribuant 0 à contrer. 455 00:21:31,690 --> 00:21:33,470 Et si c'est l'autre chose C'est un peu gênant 456 00:21:33,470 --> 00:21:34,540 par rapport à, disons, l'algèbre. 457 00:21:34,540 --> 00:21:39,110 Alors que dans l'algèbre, signifie le signe égal égaux, ici en C, à l'égal 458 00:21:39,110 --> 00:21:40,470 Signe moyens d'affectation. 459 00:21:40,470 --> 00:21:45,380 Cela signifie donc mis ce qui est sur la droite dans ce qui est sur la gauche. 460 00:21:45,380 --> 00:21:49,030 Et nous allons voir un autre symbole, est égal égaux, lorsque nous voulons tester réellement 461 00:21:49,030 --> 00:21:50,570 pour la qualité, un peu ennuyant. 462 00:21:50,570 --> 00:21:52,590 >> Mais c'est un peu inefficace. 463 00:21:52,590 --> 00:21:55,090 C'est un peu ennuyeux que j'ai de déclarer une variable et 464 00:21:55,090 --> 00:21:56,110 puis de lui donner une valeur. 465 00:21:56,110 --> 00:21:59,380 Donc C permet de réellement nous simplifions cette et il suffit de faire tout cela à la fois. 466 00:21:59,380 --> 00:22:01,330 Vous pouvez déclarer la variable sur la gauche. 467 00:22:01,330 --> 00:22:04,590 Vous pouvez toujours faire la mission sur le droit de mettre ce signe égal 468 00:22:04,590 --> 00:22:05,030 au milieu. 469 00:22:05,030 --> 00:22:08,740 Ainsi, à la fin de la journée, ces deux sont équivalent, mais celui-ci, franchement, 470 00:22:08,740 --> 00:22:11,840 est probablement la meilleure habitude à prendre juste parce que c'est un peu moins 471 00:22:11,840 --> 00:22:15,040 code, c'est un peu plus facile à lire, et il resserre juste en haut 472 00:22:15,040 --> 00:22:17,470 votre code, pour ainsi dire. 473 00:22:17,470 --> 00:22:22,120 >> Vous avez des questions à ce jour sur les boucles, sur les variables, les conditions, sur 474 00:22:22,120 --> 00:22:27,001 Booléens, soit techniquement ou conceptuellement? 475 00:22:27,001 --> 00:22:28,010 Très bien. 476 00:22:28,010 --> 00:22:30,690 Alors maintenant, cette prochaine on obtient une peu plus intéressant. 477 00:22:30,690 --> 00:22:34,790 Et c'est l'exemple que je mets en place la dernière temps que de simples cartes un exemple de Scratch 478 00:22:34,790 --> 00:22:35,820 vers C. 479 00:22:35,820 --> 00:22:36,580 >> Donc une fonction. 480 00:22:36,580 --> 00:22:38,110 En termes simples, ce qui est une fonction? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Vous avez à être plus audacieux avec votre réponse. 483 00:22:44,350 --> 00:22:45,020 Qu'est-ce qu'une fonction? 484 00:22:45,020 --> 00:22:46,320 >> ETUDIANT: Est-ce quelque chose. 485 00:22:46,320 --> 00:22:46,780 >> DAVID MALAN: Qu'est-ce que c'est? 486 00:22:46,780 --> 00:22:48,000 >> ETUDIANT: Est-ce quelque chose. 487 00:22:48,000 --> 00:22:48,710 >> DAVID MALAN: Est-ce quelque chose. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Nous allons commencer par là. 490 00:22:49,590 --> 00:22:51,270 Ainsi, une fonction fait quelque chose. 491 00:22:51,270 --> 00:22:55,160 Donc, c'est un morceau de code qui est essentiellement mis en œuvre ailleurs que 492 00:22:55,160 --> 00:22:56,620 effectivement fait quelque chose. 493 00:22:56,620 --> 00:23:00,180 Maintenant, ce qui est intéressant à propos d'une fonction est qu'il peut prendre l'entrée, 494 00:23:00,180 --> 00:23:02,710 et il peut produire une sortie. 495 00:23:02,710 --> 00:23:05,090 Et nous allons effectivement prendre un coup d'oeil. 496 00:23:05,090 --> 00:23:09,030 >> Donc, l'homme derrière le rideau était délibérée il ya un instant. 497 00:23:09,030 --> 00:23:10,320 Ici, nous avons une table. 498 00:23:10,320 --> 00:23:13,010 Mais supposons que cette réalité représente une grosse boîte. 499 00:23:13,010 --> 00:23:14,940 Il s'agit donc d'un soi-disant boîte noire. 500 00:23:14,940 --> 00:23:19,800 Et en général, dans la conception, dans l'ordinateur la science, les boîtes noires se réfèrent seulement à 501 00:23:19,800 --> 00:23:22,510 morceaux de fonctionnalité que quelqu'un a mis en place, et vous n'avez pas 502 00:23:22,510 --> 00:23:26,140 vous soucier de comment il est nécessairement mis en place sous le capot. 503 00:23:26,140 --> 00:23:28,960 Vous venez de veiller à ce que cette boîte noire, que nous allons maintenant commencer à appeler un 504 00:23:28,960 --> 00:23:30,730 fonction, fait quelque chose. 505 00:23:30,730 --> 00:23:34,710 >> Ainsi, par exemple, si cette boîte noire la scène représente ici printf, un 506 00:23:34,710 --> 00:23:38,040 fonction, je sais par exemples précédents qui prend une ou plusieurs printf 507 00:23:38,040 --> 00:23:40,910 arguments, et la première de celles arguments doivent être une chaîne, comme 508 00:23:40,910 --> 00:23:44,780 "Bonjour tout le monde." Eh bien, si je suis la personne l'écriture du programme, et je veux 509 00:23:44,780 --> 00:23:50,460 d'utiliser printf, I, par exemple, pourrait prenez un morceau de papier blanc ici et un 510 00:23:50,460 --> 00:23:55,060 marqueur noir et écrire sur elle - 511 00:23:55,060 --> 00:23:56,580 J'ai mal orthographié «monde» - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Donc, je vais prendre mon marqueur noir et je vais écrire, aussi grand et lisible que possible sur 514 00:24:04,220 --> 00:24:07,260 ce bout de papier: «Bonjour, monde», et maintenant je prétends que c'est mon argument. 515 00:24:07,260 --> 00:24:09,740 Il s'agit d'une chaîne représentée avec un morceau de papier blanc. 516 00:24:09,740 --> 00:24:13,030 Et mon entrée maintenant à la fonction printf va être présent. 517 00:24:13,030 --> 00:24:18,250 Je suis tellement appelle printf, en passant cet argument en entrée à elle. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> Et maintenant, je ne sais pas comment la personne qui wrote printf fait il ya des années, mais 520 00:24:26,740 --> 00:24:31,110 Je ne sais de sa documentation son but dans la vie est d'imprimer ce que je 521 00:24:31,110 --> 00:24:34,410 fournir comme entrée. 522 00:24:34,410 --> 00:24:40,630 Et donc, même si cette mise en œuvre est à mon insu 523 00:24:40,630 --> 00:24:44,170 sous le capot, maintenant Je vois, oh, c'est fait. 524 00:24:44,170 --> 00:24:45,740 Il a imprimé quelque chose sur l'écran. 525 00:24:45,740 --> 00:24:49,070 Et maintenant contrôler le programme, s'il ya étaient plus de lignes de code, serait 526 00:24:49,070 --> 00:24:51,070 sont maintenant retournées à moi. 527 00:24:51,070 --> 00:24:52,290 Et donc le fait que Colton - 528 00:24:52,290 --> 00:24:55,370 bénisse son cœur, se cache ici sous une table en face de vous tous - 529 00:24:55,370 --> 00:24:59,530 est délibéré parce que je ne sais pas et je n'aime pas la façon printf est 530 00:24:59,530 --> 00:25:00,100 mis en œuvre. 531 00:25:00,100 --> 00:25:03,390 Je sais juste que, encore une fois, de son documentation, ce qu'il fait et comment je 532 00:25:03,390 --> 00:25:05,040 suis censé utiliser. 533 00:25:05,040 --> 00:25:09,140 >> Maintenant, rappelons que pourrait obtenir printf un peu plus sophistiqué. 534 00:25:09,140 --> 00:25:12,220 Encore une fois, nous parlons simplement de la équivalent du bloc de Say de Scratch. 535 00:25:12,220 --> 00:25:14,230 Mais j'ai aussi fait la dernière fois. 536 00:25:14,230 --> 00:25:17,270 Je voulais faire mon programme bonjour une peu plus dynamique et pas seulement difficile 537 00:25:17,270 --> 00:25:19,740 Code quelque chose comme «monde», et certainement pas coder en dur quelque chose 538 00:25:19,740 --> 00:25:22,520 arbitraire comme D-A-V-I-D dans le programme. 539 00:25:22,520 --> 00:25:27,510 Je voulais demander à l'utilisateur son nom, puis faire quelque chose avec 540 00:25:27,510 --> 00:25:29,720 cette chaîne qu'ils fournissent. 541 00:25:29,720 --> 00:25:32,690 >> Donc, il ya quelque chose d'un peu différent ici. printf, il ya un instant, 542 00:25:32,690 --> 00:25:35,860 n'a, en effet, faire quelque chose, mais il n'a retourné rien pour moi. 543 00:25:35,860 --> 00:25:36,020 Droite? 544 00:25:36,020 --> 00:25:38,910 Colton ne pas me donner quelque chose arrière, aucun morceau de papier. 545 00:25:38,910 --> 00:25:40,320 Il y avait juste un effet secondaire. 546 00:25:40,320 --> 00:25:44,510 Mon fournir "Bonjour tout le monde" comme un argument pour Colton a abouti à la 547 00:25:44,510 --> 00:25:48,420 effet secondaire d'un mot, des mots, apparaissant sur l'écran. 548 00:25:48,420 --> 00:25:51,350 >> GetString, cependant, est un peu différents. GetString est également 549 00:25:51,350 --> 00:25:54,590 fonction, mais elle renvoie une certaine valeur. 550 00:25:54,590 --> 00:25:56,370 Il n'a pas seulement une effet secondaire esthétique. 551 00:25:56,370 --> 00:26:00,230 Il me donne en fait, la personne appelant ou utilisation de la fonction, 552 00:26:00,230 --> 00:26:01,320 quelque chose en retour. 553 00:26:01,320 --> 00:26:05,740 Donc dans ce cas, est GetString appelé avec GetString ouvert 554 00:26:05,740 --> 00:26:07,510 paren, près parenthèse. 555 00:26:07,510 --> 00:26:11,370 Est-ce que GetString, par conséquent, prendre aucun argument ou l'entrée? 556 00:26:11,370 --> 00:26:12,340 Non, il ne semble pas. 557 00:26:12,340 --> 00:26:14,460 Son but dans la vie est juste pour obtenir une chaîne. 558 00:26:14,460 --> 00:26:16,910 Il n'a pas besoin de plus de détails que cela. 559 00:26:16,910 --> 00:26:20,430 Alors laissez-moi aller de l'avant et de prétendre que, encore une fois, cette boîte noire n'est pas printf, 560 00:26:20,430 --> 00:26:25,160 mais GetString, et laissez-moi, la personne la rédaction de ce programme, appelez ou utiliser 561 00:26:25,160 --> 00:26:29,720 getString en écrivant simplement G-E-T-S-T-R-I-N-G, ouvert paren, près 562 00:26:29,720 --> 00:26:32,170 paren, GetString. 563 00:26:32,170 --> 00:26:36,920 >> Maintenant, je n'ai aucune idée de comment le personnel CS50 œuvre GetString, mais je sais que 564 00:26:36,920 --> 00:26:41,240 si j'attends assez longtemps, il va faire son chose sous le capot, peut-être à l'aide 565 00:26:41,240 --> 00:26:44,940 certaines variables, peut-être en utilisant une conditions, peut-être en utilisant des boucles, 566 00:26:44,940 --> 00:26:48,170 peut-être utiliser certaines fonctions, peut-être l'aide - 567 00:26:48,170 --> 00:26:52,290 juste essayer de décrochage - peut-être à l'aide quelques autres fonctionnalités de programmation. 568 00:26:52,290 --> 00:26:55,350 Mais si j'attends assez longtemps - en réalité, dans l'ordinateur, ce qui se passe 569 00:26:55,350 --> 00:26:56,270 super rapide - 570 00:26:56,270 --> 00:26:59,910 si j'attends assez longtemps, cette fonction GetString va obtenir une chaîne 571 00:26:59,910 --> 00:27:04,060 de l'utilisateur, qui est sans doute en train de taper le sur son clavier, et 572 00:27:04,060 --> 00:27:08,090 Ensuite, lorsque vous GetString n'est fait obtenir ces caractères à partir de l'utilisateur 573 00:27:08,090 --> 00:27:14,080 et les stocker dans une chaîne, qui fonction, GetString, va avoir 574 00:27:14,080 --> 00:27:17,990 prêt pour moi quelque sortie qui je suis va extraire au moyen de l' 575 00:27:17,990 --> 00:27:19,470 opérateur d'affectation. 576 00:27:19,470 --> 00:27:25,390 >> Et si je pars, en effet, à la sortie ici, Obosi a généreusement 577 00:27:25,390 --> 00:27:29,900 participé, sans savoir ce à avancer, en écrivant son nom sur cette 578 00:27:29,900 --> 00:27:33,100 variable, représente une chaîne. 579 00:27:33,100 --> 00:27:35,640 Maintenant, signifie l'opérateur d'affectation, même si cela peut paraître un peu 580 00:27:35,640 --> 00:27:38,790 redondante, je fais réellement besoin de faire mon propre exemplaire. 581 00:27:38,790 --> 00:27:40,700 Parce que sur la main gauche côté - oups! - 582 00:27:40,700 --> 00:27:45,760 Remarquez que j'ai essentiellement chaîne nom sur le côté gauche. 583 00:27:45,760 --> 00:27:48,280 Donc, je vais aussi faire ma propre copie. 584 00:27:48,280 --> 00:27:50,990 Et c'est un peu un mensonge, parce que nous le verrons dans une semaine ou deux de 585 00:27:50,990 --> 00:27:54,100 temps que les chaînes ne sont pas réellement ce qu'ils semblent être. 586 00:27:54,100 --> 00:27:56,700 >> Mais pour l'instant, voici la valeur de retour. 587 00:27:56,700 --> 00:28:00,160 Voici ma propre copie de celui-ci après en utilisant l'opérateur d'affectation. 588 00:28:00,160 --> 00:28:01,790 Et maintenant, qu'est-ce que je veux faire maintenant? 589 00:28:01,790 --> 00:28:04,080 Nous avons maintenant la deuxième de deux lignes de code. 590 00:28:04,080 --> 00:28:05,640 Donc, je voudrais maintenant appeler printf. 591 00:28:05,640 --> 00:28:08,500 Imaginons maintenant que le noir boîte est à nouveau d'être 592 00:28:08,500 --> 00:28:10,210 printf et non GetString. 593 00:28:10,210 --> 00:28:12,200 >> Printf cette fois va prendre combien d'arguments? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Alors regardez, c'est comme deux. 596 00:28:16,770 --> 00:28:18,860 Il ya deux virgules là-dedans, mais un de ces virgules, c'est 597 00:28:18,860 --> 00:28:20,220 à l'intérieur des guillemets. 598 00:28:20,220 --> 00:28:23,190 Donc, le premier argument est littéralement va être présent. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, une virgule pour cent s, barre oblique inverse-n. 600 00:28:31,850 --> 00:28:36,560 Et maintenant, je suis fournissant pas un argument, mais deux arguments de printf. 601 00:28:36,560 --> 00:28:39,530 >> Et qu'est-ce qui printf censé faire avec ces deux entrées après je passe dans 602 00:28:39,530 --> 00:28:42,050 comme arguments? 603 00:28:42,050 --> 00:28:45,360 Il est censé prendre la deuxième de eux, que j'ai appelé nom, de sorte que le 604 00:28:45,360 --> 00:28:48,660 deuxième morceau de papier que j'ai écrit sur il ya un moment est appelé nom. 605 00:28:48,660 --> 00:28:53,550 Il va bouchon de la valeur à l'intérieur de cette variable dans l'espace réservé, 606 00:28:53,550 --> 00:28:58,310 % S, de sorte que, encore une fois, dans un moment de temps, nous allons voir un effet secondaire de l' 607 00:28:58,310 --> 00:29:04,180 après avoir invité les printf, où maintenant nous voir pas "Bonjour tout le monde», mais «bonjour, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Ainsi, une salve d'applaudissements à la fois de nos bénévoles, dont un seul savaient 610 00:29:08,730 --> 00:29:12,010 ce ne serait arrivé. 611 00:29:12,010 --> 00:29:12,990 Très bien. 612 00:29:12,990 --> 00:29:16,480 Alors, peut-être, simple que cela était, Certes, si vous êtes déjà familier 613 00:29:16,480 --> 00:29:20,190 à ce titre, j'espère que vous ne serez jamais oublier que visuel particulier de la façon dont 614 00:29:20,190 --> 00:29:21,220 fonctions fonctionnent. 615 00:29:21,220 --> 00:29:23,000 >> Il n'y a donc plus que GetString. 616 00:29:23,000 --> 00:29:26,020 A l'intérieur de la bibliothèque CS50, il ya une tout un tas de fonctions, qui 617 00:29:26,020 --> 00:29:29,510 sont capitalisés juste à préciser que nous écrivions ces fonctions. 618 00:29:29,510 --> 00:29:33,610 Typiquement, dans C, presque tous les autres fonction que vous utilisez est minuscule. 619 00:29:33,610 --> 00:29:36,190 Mais nous utilisons délibérément majuscules juste à préciser que ces 620 00:29:36,190 --> 00:29:39,880 sont des roues de formation de toutes sortes que nous allons utiliser pour quelques semaines 621 00:29:39,880 --> 00:29:42,890 simplifier le processus d'obtention entrée de l'utilisateur. 622 00:29:42,890 --> 00:29:46,740 >> La bibliothèque CS50 ne fait rien que vous vous ne pouviez pas faire par 623 00:29:46,740 --> 00:29:50,230 juste en utilisant le code C à partir d'un manuel oldschool. 624 00:29:50,230 --> 00:29:53,310 Mais, encore une fois, nous les utilisons comme la formation roues de toutes sortes pour juste un couple de 625 00:29:53,310 --> 00:29:57,250 semaines de sorte que nous pouvons nous débarrasser de la complexité que vous allez bientôt comprendre 626 00:29:57,250 --> 00:30:00,460 vous de faire quelque chose comme relativement simple que d'obtenir 627 00:30:00,460 --> 00:30:02,080 entrée d'un utilisateur. 628 00:30:02,080 --> 00:30:05,540 >> Sache donc que vous aurez accès à getChar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 doubler. 630 00:30:06,050 --> 00:30:07,050 Chose - puis GetFloat. 631 00:30:07,050 --> 00:30:07,600 Qu'est-ce qu'un flotteur? 632 00:30:07,600 --> 00:30:09,382 Commençons là. 633 00:30:09,382 --> 00:30:10,600 >> ETUDIANT: [inaudible]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID MALAN: Ouais. 635 00:30:10,790 --> 00:30:12,120 C'est un nombre avec un point décimal. 636 00:30:12,120 --> 00:30:15,930 Ainsi, alors que l'int est un entier, qui est juste un nombre de 0 à 9, 637 00:30:15,930 --> 00:30:18,940 un certain nombre de répétitions de celui-ci, un flotteur est quelque chose 638 00:30:18,940 --> 00:30:20,100 avec un point décimal. 639 00:30:20,100 --> 00:30:26,090 Et un double, quant à lui, est aussi un nombre avec un point décimal, mais plus 640 00:30:26,090 --> 00:30:28,160 chiffres après la virgule moment-là, potentiellement. 641 00:30:28,160 --> 00:30:30,040 >> Donc, nous allons revenir à cette avant longtemps. 642 00:30:30,040 --> 00:30:34,560 Mais généralement, chacun de ces types de les données, chacun de ces types de variables 643 00:30:34,560 --> 00:30:39,380 qu'une bibliothèque comme la nôtre peut revenir à vous, utiliser des numéros de bits à 644 00:30:39,380 --> 00:30:40,290 stocker des informations. 645 00:30:40,290 --> 00:30:43,910 Typiquement, un Char, ce qui signifie tout simplement un caractère, utilise 8 bits. 646 00:30:43,910 --> 00:30:47,490 Et c'est en fait conforme à notre octet de bénévoles de la semaine dernière qui 647 00:30:47,490 --> 00:30:50,410 est venu et a représenté une Caractère ASCII à la fois. 648 00:30:50,410 --> 00:30:51,850 Ainsi, un Char est de 8 bits. 649 00:30:51,850 --> 00:30:54,430 >> Un flotteur se trouve être 32 bits, typiquement. 650 00:30:54,430 --> 00:30:59,230 Et un double, comme vous pouvez le deviner, est en fait 64 bits, ce qui est un peu plus, 651 00:30:59,230 --> 00:31:01,360 ce qui signifie que vous pouvez avoir plus nombres ou plus de précision. 652 00:31:01,360 --> 00:31:03,000 Mais encore une fois, plus une autre fois. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, en attendant, si stupidement nommé, c'est vraiment juste une 654 00:31:06,550 --> 00:31:10,770 entier qui est deux fois plus grand, deux fois plus de long, ce qui peut, en tant que régulière 655 00:31:10,770 --> 00:31:12,940 entier, 64 bits au lieu de 32. 656 00:31:12,940 --> 00:31:14,560 Et GetString nous utilisons. 657 00:31:14,560 --> 00:31:18,870 >> Mais il s'avère que, dans la bibliothèque CS50, qui est mis en œuvre, comme nous le verrons, dans 658 00:31:18,870 --> 00:31:23,560 la forme des deux fichiers, l'un qui est appelé cs50.h, a deux autres 659 00:31:23,560 --> 00:31:24,770 Les types de données qu'il contient. 660 00:31:24,770 --> 00:31:29,700 Booléens n'existent pas en C. Vous pouvez les simuler en utilisant simplement 0 et de 1 661 00:31:29,700 --> 00:31:30,850 tout au long de vos programmes. 662 00:31:30,850 --> 00:31:35,500 Mais nous avons dans la bibliothèque CS50 avons créé les symboles «vrai» et «faux» 663 00:31:35,500 --> 00:31:38,580 pour représenter 1 et 0 si vous ne le faites pas avoir à coder en dur quelque chose 664 00:31:38,580 --> 00:31:39,810 littéralement comme 1 et 0. 665 00:31:39,810 --> 00:31:40,980 Mais nous verrons ceux de nouveau. 666 00:31:40,980 --> 00:31:42,330 >> String, aussi, n'existe pas. 667 00:31:42,330 --> 00:31:44,520 Et c'est pourquoi je l'ai mentionné, c'est un peu d'un mensonge pour l'instant. 668 00:31:44,520 --> 00:31:46,660 Mais peler que nous allons couche avant longtemps. 669 00:31:46,660 --> 00:31:49,540 Mais pour l'instant, une chaîne est un séquence de caractères. 670 00:31:49,540 --> 00:31:51,790 >> Pendant ce temps, en C, en effet vous avoir des types de données différents. 671 00:31:51,790 --> 00:31:53,200 Notez ce sont minuscules. 672 00:31:53,200 --> 00:31:56,960 Ainsi, les fonctions que vous avez vu il ya un instant sont des fonctions écrites par CS50 que 673 00:31:56,960 --> 00:32:02,310 sera de retour pour vous une valeur qui tombe dans une de ces catégories. 674 00:32:02,310 --> 00:32:06,730 >> A feuilles de triche couple juste à planter la graine ici. ne printf juste 675 00:32:06,730 --> 00:32:08,600 prendre% s comme espaces réservés. 676 00:32:08,600 --> 00:32:13,490 Il faut% d pour les entiers décimaux, ou% i ne fonctionnerait aussi bien. 677 00:32:13,490 --> 00:32:19,450 % F est valeurs à virgule flottante. % C est pour un char, si vous voulez juste brancher une 678 00:32:19,450 --> 00:32:23,510 caractère dans une chaîne préformaté comme nous avons fait, vous pouvez utiliser% c. 679 00:32:23,510 --> 00:32:28,490 >> Et puis, un peu agaçante,% LLD est pour une longue entier décimal de long, 680 00:32:28,490 --> 00:32:31,050 ce qui signifie que si vous avez besoin d'un vraiment grand nombre et que vous utilisez quelque chose 681 00:32:31,050 --> 00:32:35,450 appelé un long long, que nous viendrons retour à un ensemble de processeurs, vous pouvez utiliser% LLD à 682 00:32:35,450 --> 00:32:40,700 dire printf, branchez un très gros entier compris ici au moyen de son deuxième ou 683 00:32:40,700 --> 00:32:41,830 un autre argument. 684 00:32:41,830 --> 00:32:45,700 >> Et enfin, j'ai promis que Il ya quelques autres évasion 685 00:32:45,700 --> 00:32:47,670 séquences qui soutient printf. 686 00:32:47,670 --> 00:32:49,160 Nous avons vu des anti-slash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r vous pouvez voir. 688 00:32:50,510 --> 00:32:51,780 C'est en quelque sorte une chose de la vieille école. 689 00:32:51,780 --> 00:32:55,920 Si vous avez déjà utilisé une machine à écrire de véritables ans Il ya et vous avez tiré sur la manivelle 690 00:32:55,920 --> 00:32:59,810 qui non seulement tourné la roue à déplacer la programmation, il a également déplacé le 691 00:32:59,810 --> 00:33:03,730 Tout ça tout le chemin du retour vers la gauche, eh bien, barre oblique inverse-r juste 692 00:33:03,730 --> 00:33:06,480 se déplace essentiellement le dos du curseur au début de la ligne 693 00:33:06,480 --> 00:33:07,830 sans le déplacer vers le bas. 694 00:33:07,830 --> 00:33:09,780 Mais encore une fois, de plus à ce sujet, peut-être, à l'avenir. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-citation, anti-slash-guillemet, backslash-backslash est l' 696 00:33:13,670 --> 00:33:16,600 solution à la toute petite énigme Je le mentionnais plus tôt. 697 00:33:16,600 --> 00:33:18,920 Et backslash-0 est en fait très intéressant. 698 00:33:18,920 --> 00:33:21,470 Mais nous y reviendrons que d'ici peu. 699 00:33:21,470 --> 00:33:25,640 >> Alors, laissez-moi aller dans, maintenant, le CS50 appareil, et nous allons effectivement faire un 700 00:33:25,640 --> 00:33:28,930 monter rapidement en température avec un des exemples nous n'avons déjà et ensuite passer à 701 00:33:28,930 --> 00:33:31,160 quelque chose d'un peu plus complexe. 702 00:33:31,160 --> 00:33:34,980 Donc, si j'ouvre mon programme appelé gedit - 703 00:33:34,980 --> 00:33:36,840 c'est mon éditeur graphique. 704 00:33:36,840 --> 00:33:38,460 Et je peux le faire - 705 00:33:38,460 --> 00:33:39,820 Permettez-moi de conclure cette fenêtre là-bas - 706 00:33:39,820 --> 00:33:42,720 par le biais de cette icône ici-bas, gedit, en bas à gauche 707 00:33:42,720 --> 00:33:44,170 coin à côté du menu. 708 00:33:44,170 --> 00:33:48,670 >> Je vais aller de l'avant et faire progresser, et sauvegarder cet exemple dans, disons, John 709 00:33:48,670 --> 00:33:49,660 Le dossier de Harvard. 710 00:33:49,660 --> 00:33:52,690 Le dossier de John Harvard est juste sa maison répertoire où tous ses dossiers vivent 711 00:33:52,690 --> 00:33:53,340 par défaut. 712 00:33:53,340 --> 00:33:58,410 Et je vais l'enregistrer comme un fichier appelé bonjour-0.c. 713 00:33:58,410 --> 00:34:01,260 Et j'ai choisi ce nom tellement il s'aligne avec l'exemple de code sur le 714 00:34:01,260 --> 00:34:04,210 le site Web de cours et dans l' YouTube des vidéos en ligne. 715 00:34:04,210 --> 00:34:06,320 >> Alors maintenant, je vais commencer à écrire mon premier programme. 716 00:34:06,320 --> 00:34:08,469 Permettez-moi de zoom avant pour la lisibilité. 717 00:34:08,469 --> 00:34:12,760 Et je vais aller de l'avant et de dire int void main, ce qui est juste comme ça 718 00:34:12,760 --> 00:34:14,900 jaune morceau de puzzle qui démarre un programme. 719 00:34:14,900 --> 00:34:18,290 J'ai pris l'habitude au cours de la années de l'ouverture de mon accolade, puis 720 00:34:18,290 --> 00:34:22,000 également fermer et ensuite revenir à où je veux mettre mon code, il suffit 721 00:34:22,000 --> 00:34:24,630 parce qu'il m'aide à garder tout équilibrée, d'autant plus que mon 722 00:34:24,630 --> 00:34:25,880 programme devient longue. 723 00:34:25,880 --> 00:34:29,239 >> Et maintenant, ici, je vais aller de l'avant et dire, printf, GUILLEMETS, 724 00:34:29,239 --> 00:34:34,330 Bonjour tout le monde, anti-slash-n, fermez la citation, Fermer parenthèses, virgules. 725 00:34:34,330 --> 00:34:38,100 Donc, je ne fais que répéter ce que nous avons été prise pour acquis jusqu'à présent. 726 00:34:38,100 --> 00:34:39,270 Maintenant, je vais effectuer un zoom arrière. 727 00:34:39,270 --> 00:34:43,030 >> Et cette fenêtre de terminal ici-bas, ce j'ai la permission de faire dans ce noir 728 00:34:43,030 --> 00:34:44,389 et la fenêtre blanche? 729 00:34:44,389 --> 00:34:46,977 Que puis-je l'utiliser? 730 00:34:46,977 --> 00:34:49,770 Donc, c'est là que j'ai exécuter des commandes et où je peux compiler choses. 731 00:34:49,770 --> 00:34:50,620 Et je vais garder les choses simples. 732 00:34:50,620 --> 00:34:52,780 Je vais utiliser un programme Faire appelé, ce qui n'est pas 733 00:34:52,780 --> 00:34:54,020 techniquement un compilateur. 734 00:34:54,020 --> 00:34:56,360 Appelée Clang du compilateur, mais nous reviendrons à cela dans un 735 00:34:56,360 --> 00:34:57,190 semaine ou deux de son temps. 736 00:34:57,190 --> 00:35:03,410 >> Pour l'instant, je vais juste faire taper bonjour-0, mais ceux d'entre vous qui étaient 737 00:35:03,410 --> 00:35:07,050 comparer dans votre esprit ce que je viens tapé à ce que j'aurais tapé peut 738 00:35:07,050 --> 00:35:10,180 sais déjà que je l'ai fait quelque chose qui cloche. 739 00:35:10,180 --> 00:35:12,160 Maintenant, il ya clairement certaines erreurs. 740 00:35:12,160 --> 00:35:16,742 Avant même que je regarde ce qu'ils sont, tout réflexions sur ce que j'ai fait de mal? 741 00:35:16,742 --> 00:35:18,590 >> ÉTUDIANTS: [interposition VOIX]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID MALAN: Ouais. 743 00:35:18,840 --> 00:35:20,640 Il me manque le fichier d'en-tête de la bibliothèque. 744 00:35:20,640 --> 00:35:24,240 Chacun de ces fichiers. H sont appelés tête fichiers, et ils collectivement 745 00:35:24,240 --> 00:35:25,680 appartiennent à ce qu'on appelle des bibliothèques. 746 00:35:25,680 --> 00:35:28,030 Les bibliothèques sont juste des morceaux de code que d'autres personnes ont écrit. 747 00:35:28,030 --> 00:35:32,140 Donc [la norme? i?] bibliothèque est l'une collection de fichiers contenant du code 748 00:35:32,140 --> 00:35:33,330 que d'autres personnes ont écrit. 749 00:35:33,330 --> 00:35:34,820 >> Donc, je suis absent que. 750 00:35:34,820 --> 00:35:36,520 Alors pourquoi je reçois une erreur? 751 00:35:36,520 --> 00:35:40,840 Eh bien, permettez-moi de revenir en arrière dans ma fenêtre de terminal ici. 752 00:35:40,840 --> 00:35:44,310 Et malheureusement, en C, comme dans beaucoup d' langages de programmation, en particulier 753 00:35:44,310 --> 00:35:47,830 si c'est tout nouveau pour vous, l'erreur messages sont précis, mais ils sont aussi 754 00:35:47,830 --> 00:35:48,620 assez énigmatique. 755 00:35:48,620 --> 00:35:51,720 Et l'erreur ici, en rouge, est "Fonction de bibliothèque déclarant implicitement 756 00:35:51,720 --> 00:35:57,660 printf avec le type ", puis il défile à la ligne suivante, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Il devient vraiment écrasante rapidement. 758 00:36:00,220 --> 00:36:04,420 >> Mais ce que vous devriez commencer à le faire, si, encore une fois, de nouveau à tout cela, c'est juste pour 759 00:36:04,420 --> 00:36:06,010 commencer à chercher des mots-clés. 760 00:36:06,010 --> 00:36:08,770 De toute évidence, je ne pourrais pas comprendre la moitié des mots que je vois pour l'instant. 761 00:36:08,770 --> 00:36:10,140 Vous aurez, si, dans le délai d'une semaine. 762 00:36:10,140 --> 00:36:11,230 Mais je vois printf. 763 00:36:11,230 --> 00:36:14,310 Et cela devrait commencer, avant longtemps, à vous rafraîchir la mémoire, tout droit, printf. 764 00:36:14,310 --> 00:36:15,210 Quelque chose ne va pas avec printf. 765 00:36:15,210 --> 00:36:16,580 Ai-je l'épelle mal? 766 00:36:16,580 --> 00:36:18,130 Non, il ne ressemble pas - oh. 767 00:36:18,130 --> 00:36:21,350 Je ne peux pas l'utiliser à moins que j'enseigne le compilateur qu'il existe. 768 00:36:21,350 --> 00:36:25,220 Et donc, encore une fois, allez avec vos instincts, même si vous ne comprenez pas réellement 769 00:36:25,220 --> 00:36:26,510 les messages d'erreur réels. 770 00:36:26,510 --> 00:36:30,240 >> Et en effet, la solution consiste à simplement inclure dans la partie supérieure du dossier 771 00:36:30,240 --> 00:36:34,340 comme ça, de le réenregistrer mon dossier avec Contrôle-S ou le menu Fichier. 772 00:36:34,340 --> 00:36:36,730 Et si je vais maintenant revenir ici-bas, Je vais effacer cela. 773 00:36:36,730 --> 00:36:39,150 Control-L est juste une belle façon pour effacer l'écran. 774 00:36:39,150 --> 00:36:44,870 Et puis je vais taper "make bonjour 0 "Entrez, et maintenant je vois encore un 775 00:36:44,870 --> 00:36:47,710 séquence de symboles cryptiques, mais Nous reviendrons à cette question. 776 00:36:47,710 --> 00:36:49,230 C'est ce que font est fait pour vous. 777 00:36:49,230 --> 00:36:52,590 Il est l'automatisation du processus de prise de une commande assez ennuyeux impliquant 778 00:36:52,590 --> 00:36:54,050 Clang, le compilateur réelle. 779 00:36:54,050 --> 00:36:57,460 Mais le fait que je suis pas d'erreurs signifie que cette chose devrait fonctionner. 780 00:36:57,460 --> 00:37:00,630 >> Donc, je vais maintenant faire - laissez-moi un zoom avant encore - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Entrez, et en effet, je vois "Bonjour tout le monde." Donc, nous allons maintenant renforcer 782 00:37:07,070 --> 00:37:12,105 cette très légèrement juste à reproduire les mesures que nous voulions. 783 00:37:12,105 --> 00:37:15,370 Je vais renommer ce avec Enregistrer sous pour hello1.c. 784 00:37:15,370 --> 00:37:20,300 Et maintenant, je vais déclarer une variable appelé nom, de sorte nom de chaîne, 785 00:37:20,300 --> 00:37:23,420 et je vais y mettre le valeur entre guillemets 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D close-quote-virgule. 787 00:37:27,030 --> 00:37:31,150 Et maintenant, je vais remplacer "monde" avec quel espace réservé pour une chaîne? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> Et maintenant, combien d'arguments devraient printf prendre ce temps? 790 00:37:35,040 --> 00:37:35,700 Donc deux. 791 00:37:35,700 --> 00:37:37,090 Donc, je vais dehors des guillemets. 792 00:37:37,090 --> 00:37:39,330 Je tape "nom" après une virgule. 793 00:37:39,330 --> 00:37:41,550 Mais j'ai fait quelque chose d'autre tort cette fois. 794 00:37:41,550 --> 00:37:43,940 Mais supposons que je n'ai pas réaliser encore. 795 00:37:43,940 --> 00:37:44,910 Lâchez-moi ici. 796 00:37:44,910 --> 00:37:48,850 >> Et remarquez aussi, je suis un peu ennuyés de taper "make bonjour 0" tous les 797 00:37:48,850 --> 00:37:50,180 temps, «faire» et tout cela. 798 00:37:50,180 --> 00:37:53,270 Ainsi, il s'avère que, dans Linus vous pouvez souvent frapper la flèche vers le haut sur votre 799 00:37:53,270 --> 00:37:56,850 clavier, et vous pouvez réellement faire défiler à travers toutes les commandes que j'ai 800 00:37:56,850 --> 00:37:58,830 exécuté précédent tout à l'heure. 801 00:37:58,830 --> 00:38:02,040 Donc, si je fais ça, Haut, Haut, il ya rendre bonjour 0. 802 00:38:02,040 --> 00:38:02,610 Je ne veux pas que. 803 00:38:02,610 --> 00:38:05,450 Je veux juste changer cela en bonjour 1 cette fois, Entrée. 804 00:38:05,450 --> 00:38:07,620 Finalement, cette volonté vous faire gagner du temps. 805 00:38:07,620 --> 00:38:08,150 >> Très bien. 806 00:38:08,150 --> 00:38:09,520 Malheureusement, il ya une erreur. 807 00:38:09,520 --> 00:38:10,980 Permettez-moi de défiler vers le haut. 808 00:38:10,980 --> 00:38:13,120 Cela ressemble j'ai vraiment massacré ce programme. 809 00:38:13,120 --> 00:38:16,530 Je veux dire, mon dieu, c'est deux lignes de code, et ses 10 lignes d'erreurs. 810 00:38:16,530 --> 00:38:18,800 Mais regardez le dessus en premier. 811 00:38:18,800 --> 00:38:21,640 L'utilisation de chaîne de l'identificateur non déclaré. 812 00:38:21,640 --> 00:38:23,270 Est-ce que je veux dire norme i n? 813 00:38:23,270 --> 00:38:23,930 Non, je ne l'ai pas. 814 00:38:23,930 --> 00:38:24,940 Je voulais chaîne. 815 00:38:24,940 --> 00:38:29,390 >> Mais où est la variable de chaîne type déclaré, DD nous disons? 816 00:38:29,390 --> 00:38:30,730 C'est donc dans le CS50 la bibliothèque. 817 00:38:30,730 --> 00:38:33,740 Donc, il ne suffit pas, dans ces premiers quelques semaines, juste à utiliser 818 00:38:33,740 --> 00:38:34,860 ce qui nous donne C. 819 00:38:34,860 --> 00:38:38,120 Je vais aussi aller ici, et je pourrait mettre au-dessus ou au-dessous, mais je vais 820 00:38:38,120 --> 00:38:40,340 il suffit de garder alphabétique de garder les choses ordonnée. 821 00:38:40,340 --> 00:38:43,470 Je vais inclure cs50.h, qui est pré-installé pour 822 00:38:43,470 --> 00:38:44,900 vous sur l'appareil CS50. 823 00:38:44,900 --> 00:38:47,640 Et il est open source, de sorte que même les personnes sur l'Internet peuvent utiliser sur leur 824 00:38:47,640 --> 00:38:48,450 propres ordinateurs. 825 00:38:48,450 --> 00:38:50,700 Mais il est livré avec l'appareil CS50. 826 00:38:50,700 --> 00:38:55,320 >> Alors maintenant, je vais revenir et de recompiler cela avec faire bonjour 1. 827 00:38:55,320 --> 00:38:55,710 Merde. 828 00:38:55,710 --> 00:38:57,240 Encore une autre erreur. 829 00:38:57,240 --> 00:38:59,370 Permettez-moi de remonter jusqu'à la première, cependant. 830 00:38:59,370 --> 00:39:00,630 Celui-ci est un peu complexe. 831 00:39:00,630 --> 00:39:03,830 Multi-caractère caractère constant. 832 00:39:03,830 --> 00:39:04,890 Cela ne veut pas m'aider. 833 00:39:04,890 --> 00:39:08,220 Mais remarquez, Clang est au moins un peu peu décent, où avec un peu 834 00:39:08,220 --> 00:39:11,890 vert caret symbole, c'est dire c'est là que j'ai merdé. 835 00:39:11,890 --> 00:39:16,160 Pourquoi est-il du doigt, avec ce petit Green Arrow, à la citation prochain single 836 00:39:16,160 --> 00:39:18,290 à mon nom? 837 00:39:18,290 --> 00:39:20,880 >> Donc, c'est une des choses que vous venez de s'y habituer, surtout si vous avez été 838 00:39:20,880 --> 00:39:23,980 la programmation en Python ou JavaScript, ou d'autres langues où ce détail 839 00:39:23,980 --> 00:39:24,560 n'a pas d'importance. 840 00:39:24,560 --> 00:39:25,740 En C, ce qui importe. 841 00:39:25,740 --> 00:39:29,520 Si vous déclarez une chaîne, qui est une séquence de 0 ou plusieurs caractères, 842 00:39:29,520 --> 00:39:32,280 vous devez réellement utiliser des guillemets doubles. 843 00:39:32,280 --> 00:39:36,670 Donc j'ai réellement besoin de changer ce retour pour ouvrir citation, fermez la citation, avec 844 00:39:36,670 --> 00:39:37,800 guillemets. 845 00:39:37,800 --> 00:39:41,610 Les guillemets simples ont leur place, mais seulement lorsque vous utilisez individuel 846 00:39:41,610 --> 00:39:44,100 caractères, mais plus sur cela une autre fois. 847 00:39:44,100 --> 00:39:46,550 Pour l'instant, les guillemets sont nécessaires. 848 00:39:46,550 --> 00:39:50,460 >> Alors maintenant, permettez-moi de revenir à mon terminal fenêtre, assurez-bonjour 1. 849 00:39:50,460 --> 00:39:51,450 Et qui est confiant? 850 00:39:51,450 --> 00:39:53,800 Est ce programme va maintenant pour compiler correctement? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Donc, trois d'entre nous pensent cela. 854 00:39:59,780 --> 00:40:00,280 Très bien. 855 00:40:00,280 --> 00:40:01,190 Entrée. 856 00:40:01,190 --> 00:40:02,440 Et il a effectivement fait. 857 00:40:02,440 --> 00:40:05,130 Donc il n'y a pas d'erreurs cette fois, même si ce programme a obtenu un peu 858 00:40:05,130 --> 00:40:05,840 plus complexe. 859 00:40:05,840 --> 00:40:10,110 Si je le fais maintenant dot slash bonjour 1, Entrée, il va dire "bonjour, David." 860 00:40:10,110 --> 00:40:11,750 >> Mais faisons la troisième itération De ce fait, lorsque l' 861 00:40:11,750 --> 00:40:13,380 programme est vraiment dynamique. 862 00:40:13,380 --> 00:40:16,770 Permettez-moi d'aller de l'avant et de modifier le fichier nom, juste par souci de cohérence avec l' 863 00:40:16,770 --> 00:40:20,410 fichiers que vous aurez à disposition à vous ensuite en ligne. 864 00:40:20,410 --> 00:40:21,620 Entrée. 865 00:40:21,620 --> 00:40:25,510 Et maintenant, je vais y aller et pas stocker "David" codé en dur ici. 866 00:40:25,510 --> 00:40:28,826 Que pouvais-je faire pour très simplement améliorer ce programme? 867 00:40:28,826 --> 00:40:30,520 >> Je pourrais appeler GetString. 868 00:40:30,520 --> 00:40:33,240 C'est peut-être un peu ce que non évidente est sur le point d'arriver, donc je vais 869 00:40:33,240 --> 00:40:38,470 ajouter réellement une autre ligne, printf, et dire nom, du côlon, près devis, il suffit 870 00:40:38,470 --> 00:40:40,790 pour donner à l'utilisateur une invite sur l'écran. 871 00:40:40,790 --> 00:40:42,980 Et maintenant, je vais aller ici, et je suis vais utiliser mon raccourci clavier. 872 00:40:42,980 --> 00:40:47,680 Je vais aller vers le haut, vers le haut, et changer bonjour bonjour 1 à 2, Entrée. 873 00:40:47,680 --> 00:40:49,260 Et heureusement, je fais des progrès. 874 00:40:49,260 --> 00:40:52,720 >> Et maintenant, je vais aller jusqu'à au point slash bonjour et 875 00:40:52,720 --> 00:40:54,690 changer cela à 2, Entrée. 876 00:40:54,690 --> 00:40:55,650 Et maintenant, mon programme - 877 00:40:55,650 --> 00:40:57,700 Je vais zoomer - est d'obtenir un peu plus joli. 878 00:40:57,700 --> 00:41:02,190 Nom va être, disons Rob cette fois, Enter, bonjour, Rob. 879 00:41:02,190 --> 00:41:03,260 Nous pouvons le faire à nouveau. 880 00:41:03,260 --> 00:41:05,360 Nom, Lauren, Entrée. 881 00:41:05,360 --> 00:41:07,820 Nom, Joseph, Entrée. 882 00:41:07,820 --> 00:41:11,596 Nom, nous allons essayer d'être difficile, Entrée. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Ce n'est pas vraiment un bug. 885 00:41:14,680 --> 00:41:16,090 Donc, c'est juste un peu laid. 886 00:41:16,090 --> 00:41:18,640 Alors peut-être que nous pourrions résoudre ce dans le futur, pas maintenant. 887 00:41:18,640 --> 00:41:20,840 >> Mais comment voulez-vous instinctivement aller sur la lutte 888 00:41:20,840 --> 00:41:21,990 ce défi particulier? 889 00:41:21,990 --> 00:41:23,710 Il semble tout simplement stupide. 890 00:41:23,710 --> 00:41:27,320 Comment évitez-vous les choses air stupide? 891 00:41:27,320 --> 00:41:29,890 Donc, nous pourrions le faire, OK, j'ai entendu un couple des choses, une condition et une boucle. 892 00:41:29,890 --> 00:41:33,340 Nous pourrions utiliser, un, un état, pour vérifier quelle est la longueur de la chaîne 893 00:41:33,340 --> 00:41:34,190 l'utilisateur nous a donné? 894 00:41:34,190 --> 00:41:37,100 Et si c'est 0, c'est juste GUILLEMETS, ils ont juste frappé sur Entrée, puis 895 00:41:37,100 --> 00:41:38,930 peut-être que je devrais crier à eux et les inciter à nouveau. 896 00:41:38,930 --> 00:41:39,970 Mais comment une invite de nouveau? 897 00:41:39,970 --> 00:41:44,230 Eh bien, j'ai aussi entendu boucle, et je ne pouvais le faire encore et encore et encore 898 00:41:44,230 --> 00:41:47,010 inviter l'utilisateur à la même chose. 899 00:41:47,010 --> 00:41:48,880 >> Eh bien, nous allons faire un autre exemple d'utiliser un autre 900 00:41:48,880 --> 00:41:50,620 la fonction dans la bibliothèque CS50. 901 00:41:50,620 --> 00:41:52,330 Permettez-moi de clore ce dossier. 902 00:41:52,330 --> 00:41:53,510 Permettez-moi d'en créer un nouveau. 903 00:41:53,510 --> 00:41:58,510 Et je vais l'appeler adder.c, juste parce que il est facile de faire des calculs simples, 904 00:41:58,510 --> 00:42:00,890 même si ce sera complètement décevante avec ce que vous pourriez faire 905 00:42:00,890 --> 00:42:02,250 avec n'importe quel ordinateur moderne. 906 00:42:02,250 --> 00:42:03,750 >> Mais permettez-moi d'aller de l'avant maintenant et - 907 00:42:03,750 --> 00:42:10,680 J'ai appris ma leçon dernière fois - comprendre cs50.h, include stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, qui, pour l'instant, je vais juste prenons sur une foi aveugle, mais nous supposerons 909 00:42:14,170 --> 00:42:16,380 qui va comprendre ce que cela signifie avant longtemps. 910 00:42:16,380 --> 00:42:21,030 Et je vais vous dire quelque chose comme "donnez-moi un int." 911 00:42:21,030 --> 00:42:22,140 >> Et maintenant, comment puis-je obtenir un int? 912 00:42:22,140 --> 00:42:26,820 Je tiens à déclarer en fin de compte une variable appelé x de type int et 913 00:42:26,820 --> 00:42:29,240 stocker en elle un nombre entier de l'utilisateur. 914 00:42:29,240 --> 00:42:29,970 Donc, c'était une bouchée. 915 00:42:29,970 --> 00:42:35,680 Mais si quelqu'un veut proposer, comment puis-je déclarer un entier appelé x? 916 00:42:35,680 --> 00:42:36,310 X Int. 917 00:42:36,310 --> 00:42:37,430 >> Donc, c'est vraiment aussi simple que cela. 918 00:42:37,430 --> 00:42:38,240 Donnez-moi un int. 919 00:42:38,240 --> 00:42:39,070 Appelez-x. 920 00:42:39,070 --> 00:42:40,580 Maintenant, j'utilise l'opérateur d'affectation. 921 00:42:40,580 --> 00:42:43,400 Et comment puis-je stocker de l' une valeur donnée de l'utilisateur? 922 00:42:43,400 --> 00:42:47,310 Je ne veux pas appeler GetString, évidemment, mais plutôt getint. 923 00:42:47,310 --> 00:42:49,060 Tous les arguments? 924 00:42:49,060 --> 00:42:49,350 No. 925 00:42:49,350 --> 00:42:51,870 Donc, il est ouvert paren, près paren immédiatement, puis un 926 00:42:51,870 --> 00:42:53,440 virgule termine la ligne. 927 00:42:53,440 --> 00:42:54,930 >> Maintenant, laissez-moi faire ça à nouveau. 928 00:42:54,930 --> 00:42:57,070 Donnez-moi un autre int. 929 00:42:57,070 --> 00:43:01,850 Cette fois, je vais le faire int, nous allons appelez-y, égale getint. 930 00:43:01,850 --> 00:43:05,060 Et maintenant, laissez-moi faire quelque chose de super-simples comme un peu de maths. 931 00:43:05,060 --> 00:43:14,340 Donc, printf, la somme des% d est la espace réservé pour un int. 932 00:43:14,340 --> 00:43:20,030 Et% d, période, barre oblique inverse-n. 933 00:43:20,030 --> 00:43:20,360 >> Très bien. 934 00:43:20,360 --> 00:43:21,670 Ce n'est donc pas réellement mathématiques. 935 00:43:21,670 --> 00:43:25,500 Mais si je veux dire la somme de cette valeur, plus cette valeur est égale à cette 936 00:43:25,500 --> 00:43:29,320 autre valeur, combien d'arguments en Je totale devrait être de donner printf, 937 00:43:29,320 --> 00:43:30,520 en fin de compte? 938 00:43:30,520 --> 00:43:31,420 Donc, quatre, non? 939 00:43:31,420 --> 00:43:33,790 Cette chaîne, puis les trois valeurs. 940 00:43:33,790 --> 00:43:37,560 Alors x est le premier que je veux être branché à la première% d. 941 00:43:37,560 --> 00:43:39,270 Y va être le prochain. 942 00:43:39,270 --> 00:43:42,030 >> Et maintenant, j'ai un peu envie de dire z, z, mais n'existe pas. 943 00:43:42,030 --> 00:43:43,190 Mais ce n'est pas une grosse affaire. 944 00:43:43,190 --> 00:43:45,440 Parce que feriez-vous instinctivement, surtout si vous avez eu une 945 00:43:45,440 --> 00:43:47,820 calculatrice graphique, qu'est-ce que vous tapez? 946 00:43:47,820 --> 00:43:48,760 Que diriez-x + y? 947 00:43:48,760 --> 00:43:50,200 Donc ce n'est pas une variable réelle. 948 00:43:50,200 --> 00:43:51,820 C'est juste la somme de deux d'autres variables. 949 00:43:51,820 --> 00:43:53,170 Et c'est tout à fait légitime. 950 00:43:53,170 --> 00:43:56,630 C comprend certainement simple, arithmétique comme ça. 951 00:43:56,630 --> 00:43:58,450 >> Virgule, sauver. 952 00:43:58,450 --> 00:44:02,080 Maintenant, laissez-moi descendre ici et taper make sommateur, Entrée. 953 00:44:02,080 --> 00:44:04,100 Aucune erreur, donc c'est trop progrès. 954 00:44:04,100 --> 00:44:04,890 Tapez sommateur. 955 00:44:04,890 --> 00:44:07,100 Et un autre raccourci clavier, si vous commencez à vous ennuyer 956 00:44:07,100 --> 00:44:08,760 avec toutes les commandes - 957 00:44:08,760 --> 00:44:12,650 si vous commencez à taper une commande, comme dot slash annonce, et c'est là que votre 958 00:44:12,650 --> 00:44:16,020 ennui coups de pied, vous pouvez généralement frapper Tab d'avoir l'ordinateur terminer le 959 00:44:16,020 --> 00:44:20,510 reste de la phrase pour vous, si ce n'est pas ce ambiguë devrait venir après annonce. 960 00:44:20,510 --> 00:44:23,950 >> Alors laissez-moi aller de l'avant maintenant et vous cliquez sur Entrée. 961 00:44:23,950 --> 00:44:27,490 Donnez-moi un int, 1, 2, et Heureusement, il est 3. 962 00:44:27,490 --> 00:44:29,900 Mais comme toujours, les programmes de test ne doit pas réduire à 963 00:44:29,900 --> 00:44:30,820 juste essayer une fois. 964 00:44:30,820 --> 00:44:35,560 Permettez-moi de juger une affaire d'angle, comme négative 1, donnez-moi 1, et que l'on 965 00:44:35,560 --> 00:44:36,210 vérifie aussi bien. 966 00:44:36,210 --> 00:44:38,870 Et je veux sans doute faire un peu plus des tests rigoureux, mais je suis assez 967 00:44:38,870 --> 00:44:40,630 à l'aise avec où c'est à. 968 00:44:40,630 --> 00:44:43,110 >> Eh bien, maintenant nous allons essayer un autre programme que cette fois utilise un 969 00:44:43,110 --> 00:44:44,620 peu d'autres syntaxes. 970 00:44:44,620 --> 00:44:46,100 Permettez-moi de créer un nouveau fichier. 971 00:44:46,100 --> 00:44:51,050 Je vais appeler cette conditions0.c d'aligner avec un peu de code échantillon en ligne. 972 00:44:51,050 --> 00:44:55,550 Et permettez-moi d'aller de l'avant et de faire inclure cs50.h, comprendre 973 00:44:55,550 --> 00:45:00,320 stdio.h, dans void main - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Nous y voilà. 976 00:45:01,850 --> 00:45:03,010 Nous avons notre passe-partout standard. 977 00:45:03,010 --> 00:45:08,170 >> Et cette fois, je vais dire printf, "Je voudrais un int, s'il vous plaît," juste pour 978 00:45:08,170 --> 00:45:10,030 faire le un peu rapide plus convivial. 979 00:45:10,030 --> 00:45:11,620 Et maintenant, je veux obtenir un Int de l'utilisateur. 980 00:45:11,620 --> 00:45:15,010 Je vais l'appeler n ce moment, juste parce que n ressemble nombre. 981 00:45:15,010 --> 00:45:18,140 getint, et maintenant, qu'est-ce que Je veux faire avec elle? 982 00:45:18,140 --> 00:45:21,640 Eh bien, si n est - et je vais zoomer - 983 00:45:21,640 --> 00:45:25,930 si n est supérieur à 0, je veux faire ce qui suit - 984 00:45:25,930 --> 00:45:36,060 printf "Vous avez choisi un nombre positif." Sinon, je vais taper printf "Vous 985 00:45:36,060 --> 00:45:37,870 ramassé un négatif 986 00:45:37,870 --> 00:45:39,650 nombre. "Très bien. 987 00:45:39,650 --> 00:45:44,410 Donc ce programme, même si je l'ai fait rapide, regarde droit syntaxiquement. 988 00:45:44,410 --> 00:45:45,010 Je vais essayer ça. 989 00:45:45,010 --> 00:45:46,890 Faire état 0. 990 00:45:46,890 --> 00:45:47,710 Semble fonctionner. 991 00:45:47,710 --> 00:45:49,230 État 0, entrez. 992 00:45:49,230 --> 00:45:51,910 Donnons-lui un int de 50 ans. 993 00:45:51,910 --> 00:45:53,160 J'ai choisi un nombre positif. 994 00:45:53,160 --> 00:45:54,230 Essayons encore une fois. 995 00:45:54,230 --> 00:45:54,930 État 0. 996 00:45:54,930 --> 00:45:56,260 Négatif 50. 997 00:45:56,260 --> 00:45:57,290 J'ai choisi un nombre négatif. 998 00:45:57,290 --> 00:46:00,350 >> Mais maintenant, permettez-moi de choisir ce que nous allons continuer à appeler un cas d'angle, ce qui est plus 999 00:46:00,350 --> 00:46:04,702 un cas intéressant que vous pensez pourrait vous donner quelques ennuis, 0. 1000 00:46:04,702 --> 00:46:07,940 Maintenant, je suis sûr que c'est l'un des les cas de coin où zéro est 1001 00:46:07,940 --> 00:46:12,330 ni positive ni négative, de sorte que mon programme, bien que dans la syntaxe 1002 00:46:12,330 --> 00:46:15,440 corriger - il compile, il fonctionne - n'est pas logiquement correct. 1003 00:46:15,440 --> 00:46:21,050 Alors quelle est la solution simple ici si je veux à détecter, si je veux traiter n 1004 00:46:21,050 --> 00:46:23,840 est égal à 0 séparément? 1005 00:46:23,840 --> 00:46:32,980 >> Donc, si n est égal à 0, alors que je veux dire quelque chose comme printf "Vous avez choisi 0". 1006 00:46:32,980 --> 00:46:33,990 Je vais essayer maintenant. 1007 00:46:33,990 --> 00:46:38,320 Permettez-moi de revenir ici, désactivez ma fenêtre, et recompiler. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Une erreur générer. 1010 00:46:39,770 --> 00:46:41,630 Mais je ne vous veux vérifier si n est égal à 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Encore une fois, une autre chose stupide pour s'habituer à, signe égal est 1013 00:46:47,720 --> 00:46:48,910 l'opérateur d'affectation. 1014 00:46:48,910 --> 00:46:52,240 C'est en fait erreur en ce que techniquement, même si le compilateur 1015 00:46:52,240 --> 00:46:56,450 m'a protégé de moi-même, nous serions techniquement être la copie 0 à n, qui 1016 00:46:56,450 --> 00:46:57,590 n'est pas ce que je veux. 1017 00:46:57,590 --> 00:47:00,950 Je veux tester pour l'égalité à égale égale. 1018 00:47:00,950 --> 00:47:03,390 Et que maintenant peut-être ma meilleure solution. 1019 00:47:03,390 --> 00:47:07,810 >> Permettez-moi en fait réenregistrer ce que, par exemple, conditions1, être nouvelle et améliorée. 1020 00:47:07,810 --> 00:47:10,480 Alors maintenant, si je recompiler, il serait conditions - 1021 00:47:10,480 --> 00:47:16,960 whoops - faire conditions1 point slash conditions1, Enter, «Je voudrais un int, 1022 00:47:16,960 --> 00:47:18,760 s'il vous plaît. "Je vais aller avant et tapez 50. 1023 00:47:18,760 --> 00:47:19,660 Il est toujours bon. 1024 00:47:19,660 --> 00:47:21,200 Négatif 50, encore bon. 1025 00:47:21,200 --> 00:47:24,920 0, et, en effet, détecté que j'ai ramassé 0. 1026 00:47:24,920 --> 00:47:28,200 >> Alors, que puis-je faire maintenant avec ça? 1027 00:47:28,200 --> 00:47:32,280 Eh bien, nous pouvons certainement faire de plus en plus choses complexes. 1028 00:47:32,280 --> 00:47:37,240 Mais ce que je voudrais proposer est que nous nous retrouvons sur cette note ici. 1029 00:47:37,240 --> 00:47:41,680 Si nous tirer vers le haut, vous verrez peut-être, une caricature de vos préférées 1030 00:47:41,680 --> 00:47:43,326 jusqu'à aujourd'hui, vous pourriez jamais avoir compris. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 Et c'est à peu près la qualité du rire vous devriez obtenir avec des blagues CS. 1033 00:47:49,520 --> 00:47:51,060 Donc, c'est à peu près droit. 1034 00:47:51,060 --> 00:47:54,900 >> Mais plus convaincante, je pensais nous donner un petit teaser pour lundi. 1035 00:47:54,900 --> 00:47:56,430 Nous avons donc commencé à utiliser des entiers. 1036 00:47:56,430 --> 00:47:57,510 Nous avons parlé à des flotteurs. 1037 00:47:57,510 --> 00:48:00,120 Nous avons même parlé de doubles, qui, encore une fois, vous donner des chiffres 1038 00:48:00,120 --> 00:48:01,390 après décimales. 1039 00:48:01,390 --> 00:48:04,230 >> Mais il s'avère que les flotteurs et doubles, et, vraiment, ordinateurs, 1040 00:48:04,230 --> 00:48:08,470 fondamentalement, ne peut pas exprimer certaines valeurs de précision. 1041 00:48:08,470 --> 00:48:12,840 Nous savons, par les classes de mathématiques que vous pouvez n'importe quel nombre de chiffres après la 1042 00:48:12,840 --> 00:48:13,510 point décimal. 1043 00:48:13,510 --> 00:48:16,460 Et vous pouvez même mettre une barre verticale à-dire ceux durer éternellement. 1044 00:48:16,460 --> 00:48:18,810 >> Malheureusement, vous ne pouvez pas vraiment faire que dans un ordinateur. 1045 00:48:18,810 --> 00:48:20,400 Et si les cas d'angle se posent. 1046 00:48:20,400 --> 00:48:23,120 Par exemple, supposons que vous êtes faire quelque chose financière. 1047 00:48:23,120 --> 00:48:25,700 Vous faites mathématiques avec des pourcentages, et 1048 00:48:25,700 --> 00:48:27,030 avec des dollars et des cents. 1049 00:48:27,030 --> 00:48:29,230 Et ces cents ne sont pas line up nécessairement. 1050 00:48:29,230 --> 00:48:34,120 Eh bien, il s'avère que les fractions d' pennies peuvent commencer à s'accumuler lorsque 1051 00:48:34,120 --> 00:48:37,250 modélisé par un système d'ordinateur de telle manière que intelligent 1052 00:48:37,250 --> 00:48:39,100 les humains peuvent prendre l'avantage. 1053 00:48:39,100 --> 00:48:42,650 >> Et ceux d'entre vous qui n'ont pas vu, je serais vous donner 30 secondes de teaser 1054 00:48:42,650 --> 00:48:48,290 un film magnifique connu comme espace de bureau, qui va peindre une image d'un 1055 00:48:48,290 --> 00:48:51,205 problème que nous allons aborder première chose le lundi. 1056 00:48:51,205 --> 00:48:53,960 Si nous pouvions augmenter le volume un peu, je vous donne 30 1057 00:48:53,960 --> 00:48:55,495 secondes d'espace de bureau. 1058 00:48:55,495 --> 00:48:55,770 >> [LECTURE VIDEO] 1059 00:48:55,770 --> 00:48:59,000 >> -Je veux dire, vous, vous ne l'avez pas fait preuve d' et vous arrivez à garder votre emploi. 1060 00:48:59,000 --> 00:49:00,620 >> -En fait, je suis promu. 1061 00:49:00,620 --> 00:49:03,240 >> -Je pourrais programmer un virus qui serais RIP lieu big time. 1062 00:49:03,240 --> 00:49:04,430 >> -Eh bien, comment ça marche? 1063 00:49:04,430 --> 00:49:06,782 >> -Chaque fois qu'il ya une transaction bancaire où l'intérêt est calculé, et il 1064 00:49:06,782 --> 00:49:10,160 des milliers par jour, l'ordinateur s'arrête avec ces fractions de cent. 1065 00:49:10,160 --> 00:49:12,030 >> -Mais je ne vais pas faire quelque chose d'illégal. 1066 00:49:12,030 --> 00:49:12,660 >> -Illégale? 1067 00:49:12,660 --> 00:49:15,075 Samir, c'est l'Amérique. 1068 00:49:15,075 --> 00:49:16,570 >> -Nous devons jure devant Dieu. 1069 00:49:16,570 --> 00:49:19,070 >> -Si personne ne sait à ce sujet mais nous, d'accord? 1070 00:49:19,070 --> 00:49:21,920 Aucun membre de la famille, aucun copines, personne. 1071 00:49:21,920 --> 00:49:22,700 >> -Bien sûr. 1072 00:49:22,700 --> 00:49:23,320 >> -Accord. 1073 00:49:23,320 --> 00:49:24,280 >> -Ne vous inquietez pas, mec. 1074 00:49:24,280 --> 00:49:25,640 Je ne dirai rien non plus. 1075 00:49:25,640 --> 00:49:26,504 >> [FIN LECTURE VIDÉO] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID MALAN: Donc, ce n'est donc CS50, qui avait de l'espace de bureau, et tout cela va 1077 00:49:30,030 --> 00:49:31,465 sens lundi. 1078 00:49:31,465 --> 00:49:33,940 Rendez-vous ensuite. 1079 00:49:33,940 --> 00:49:37,880 >> Narrateur: Lors de la prochaine CS50, Rob ajuste à être hors la 1080 00:49:37,880 --> 00:49:39,130 Plan de repas Harvard. 1081 00:49:39,130 --> 00:49:56,160