1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] DAVID MALAN: C'est CS50, et c'est le début de la semaine 1. 2 00:00:12,200 --> 00:00:15,520 Ce que nous avons pensé faire aujourd'hui, c'est de prendre un regard rétrospectif sur 3 00:00:15,520 --> 00:00:18,290 quelque chose que beaucoup d'entre vous ont probablement passé devant un certain 4 00:00:18,290 --> 00:00:20,570 temps et peut sembler un peu familier. 5 00:00:20,570 --> 00:00:23,720 Cette chose ici, cela est bien sûr dans le - 6 00:00:23,720 --> 00:00:24,155 PUBLIC: Science. 7 00:00:24,155 --> 00:00:26,030 DAVID MALAN: Centre des sciences. 8 00:00:26,030 --> 00:00:28,940 Donc, c'est en fait l'un des premiers ordinateurs 9 00:00:28,940 --> 00:00:30,220 sauvegarder des années 1940. 10 00:00:30,220 --> 00:00:33,790 Il a été l'un des premiers ordinateurs électromécaniques 11 00:00:33,790 --> 00:00:35,730 qui était capable de particulièrement longue, 12 00:00:35,730 --> 00:00:38,450 auto-entretenues calculs, et ce que nous voyons dans 13 00:00:38,450 --> 00:00:41,580 le centre des sciences est seulement un petit morceau de cette chose. 14 00:00:41,580 --> 00:00:44,170 Ce que nous avons pensé faire alors, c'est de prendre un regard rétrospectif sur une vidéo 15 00:00:44,170 --> 00:00:46,670 qui a été faite il ya quelque temps, l'introduction de cette 16 00:00:46,670 --> 00:00:47,520 chose au monde. 17 00:00:47,520 --> 00:00:50,200 Et vous verrez de la musique et de la voix qu'en effet ceux 18 00:00:50,200 --> 00:00:52,070 eu des moments très heureux. 19 00:00:54,885 --> 00:00:59,700 >> [LECTURE VIDEO] 20 00:00:59,700 --> 00:01:02,490 -Un triomphe d'habileté mathématique et mécanique est-ce 21 00:01:02,490 --> 00:01:06,340 grande nouvelle calculatrice automatique à l'Université Harvard. 22 00:01:06,340 --> 00:01:08,620 Problèmes complexes en mathématiques, à travers la mise 23 00:01:08,620 --> 00:01:12,420 Machine sous forme codée sur la bande, sont correctement réglés dans un 24 00:01:12,420 --> 00:01:15,200 infime fraction du temps nécessaire à l'alimentation humaine 25 00:01:15,200 --> 00:01:16,450 calcul. 26 00:01:27,050 --> 00:01:30,600 Conçu pour accélérer toutes les formes de culture mathématique et scientifique 27 00:01:30,600 --> 00:01:34,610 la recherche, le cerveau mécanique géant va travailler pour les États-Unis 28 00:01:34,610 --> 00:01:36,570 États-marine jusqu'à la fin de la guerre. 29 00:01:50,280 --> 00:01:52,980 >> DAVID MALAN: Ce que vous ignorez peut-être, c'est qu'il était en 30 00:01:52,980 --> 00:01:56,310 ce même dispositif que nous avons tous un terme maintenant prendre à peu près 31 00:01:56,310 --> 00:01:59,300 pour acquis a été inventé, que d'un bug. 32 00:01:59,300 --> 00:02:01,140 Ainsi, l'un des ingénieurs travaillant sur cet ordinateur 33 00:02:01,140 --> 00:02:05,280 littéralement trouvé un petit papillon dans la machine qui a abouti 34 00:02:05,280 --> 00:02:07,580 dans certains calculs incorrects. 35 00:02:07,580 --> 00:02:10,410 Et comme l'histoire raconte que la teigne a été enregistré dans ce journal 36 00:02:10,410 --> 00:02:14,180 revue ici, de retour de Septembre 9 1940-quelque chose, 37 00:02:14,180 --> 00:02:16,550 et ainsi est né pour le monde le terme "bug". 38 00:02:16,550 --> 00:02:19,880 Donc, nous considérons désormais comme des bugs toute sorte d'erreurs dans 39 00:02:19,880 --> 00:02:23,290 programmes, que ce soit l'homme ou, dans ce cas, les insectes. 40 00:02:23,290 --> 00:02:25,030 >> Ainsi, quelques annonces, que nous avancerons. 41 00:02:25,030 --> 00:02:29,160 Donc CS50 a une longue tradition d'offrir des déjeuners de toutes sortes sur 42 00:02:29,160 --> 00:02:31,600 la plupart des vendredis durant le semestre, où l'on prend de 30 à 43 00:02:31,600 --> 00:02:34,650 40 étudiants à feu et de glace sur la place pour les occasionnels 44 00:02:34,650 --> 00:02:36,390 bavardage, parler de l'informatique, 45 00:02:36,390 --> 00:02:37,420 parler de l'avenir. 46 00:02:37,420 --> 00:02:40,000 Nous invitons les anciens et amis de l'industrie pour discuter des 47 00:02:40,000 --> 00:02:40,690 étudiants ainsi. 48 00:02:40,690 --> 00:02:44,020 Vraiment vers une fin de faire ce qui est une classe assez large 49 00:02:44,020 --> 00:02:46,740 d'autant plus intime, au moins une fois pendant que pour 50 00:02:46,740 --> 00:02:47,710 sous-ensembles d'élèves. 51 00:02:47,710 --> 00:02:50,940 Donc, si vous souhaitez vous joindre à nous ce vendredi, 1:15 pm, allez à 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch à RSVP. 53 00:02:53,340 --> 00:02:55,840 Et nous allons le faire de façon récurrente, donc ne vous inquiétez pas si vous n'êtes pas 54 00:02:55,840 --> 00:02:57,930 parmi les 30 premiers ou cette semaine. 55 00:02:57,930 --> 00:02:59,070 >> Donc scribe note. 56 00:02:59,070 --> 00:03:01,500 Un mot sur les ressources qui vont maintenant commencer à être disponibles 57 00:03:01,500 --> 00:03:03,040 aux élèves de la classe. 58 00:03:03,040 --> 00:03:05,540 Pour que vos têtes ne doivent pas être en panne pendant les cours 59 00:03:05,540 --> 00:03:08,560 griffonner tout ce que je dis et ainsi de suite, ce que nous faisons 60 00:03:08,560 --> 00:03:10,765 est plutôt de fournir du personnel enseignant d'une 61 00:03:10,765 --> 00:03:11,920 ensemble canonique de notes. 62 00:03:11,920 --> 00:03:14,850 Nous avons donc l'un de nos compagnons d'enseignement, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 qui s'assoit chaque semaine, passe en revue les vidéos, puis 64 00:03:17,830 --> 00:03:19,730 écrit ce que nous pensons est assez 65 00:03:19,730 --> 00:03:21,840 ensemble de notes faisant autorité. 66 00:03:21,840 --> 00:03:24,180 Et Andrew aimait, aussi, de mettre en bas de page snarky 67 00:03:24,180 --> 00:03:24,820 le fond. 68 00:03:24,820 --> 00:03:27,300 Ainsi, vous aurez je l'espère profiter de ces comme un ouvrage de référence pour 69 00:03:27,300 --> 00:03:30,230 amusant, et aussi, venez quiz time, comme la possibilité d'examiner 70 00:03:30,230 --> 00:03:31,830 ce qui s'est passé dans les cours individuels. 71 00:03:31,830 --> 00:03:33,580 Donc, ceux qui sont liés sur la page des conférences. 72 00:03:33,580 --> 00:03:35,300 >> 0 Jeu de problème, quant à lui, est sorti. 73 00:03:35,300 --> 00:03:37,470 Et en termes de ressources disponibles pour vous - 74 00:03:37,470 --> 00:03:38,020 la procédure pas à pas. 75 00:03:38,020 --> 00:03:39,730 Milo a dirigé le premier vendredi. 76 00:03:39,730 --> 00:03:41,470 Il a été filmé, mis en ligne d'ici samedi. 77 00:03:41,470 --> 00:03:44,030 Et ainsi se rendre compte, si vous ne savez pas vraiment par où commencer, 78 00:03:44,030 --> 00:03:47,280 pour ce ou futur p-ensembles, toujours, en premier à l' 79 00:03:47,280 --> 00:03:49,300 procédure pas à pas ou de leur vidéo. 80 00:03:49,300 --> 00:03:52,950 Sectionnement est en cours; au cs50.net/section est l'endroit où vous 81 00:03:52,950 --> 00:03:54,540 doivent soumettre vos préférences, si vous n'avez pas 82 00:03:54,540 --> 00:03:55,880 déjà, par aujourd'hui. 83 00:03:55,880 --> 00:03:58,140 Parce sections débutera ce dimanche, lundi, 84 00:03:58,140 --> 00:03:58,760 et le mardi. 85 00:03:58,760 --> 00:04:02,470 Nous faisons sections de ces trois jours, chaque semaine de l' 86 00:04:02,470 --> 00:04:03,870 semestre pour la plupart. 87 00:04:03,870 --> 00:04:06,600 Et nous introduisons également, encore une fois, différentes pistes. 88 00:04:06,600 --> 00:04:08,270 Ainsi, il vous sera demandé sur le formulaire de sectionnement, si vous 89 00:04:08,270 --> 00:04:10,350 ne l'avez pas déjà vu, si vous êtes parmi ceux qui sont moins 90 00:04:10,350 --> 00:04:12,800 confortable, plus à l'aise, ou quelque part entre les deux. 91 00:04:12,800 --> 00:04:14,960 Et si vous êtes en quelque sorte sur la barrière, généralement quelque part dans 92 00:04:14,960 --> 00:04:18,160 entre ce que la plupart des étudiants se retrouvent vérification. 93 00:04:18,160 --> 00:04:19,579 Heures d'ouverture commencera ce soir. 94 00:04:19,579 --> 00:04:23,020 >> Donc Scratch est assez bas de gamme, même si c'est tout à fait naturel 95 00:04:23,020 --> 00:04:25,300 de se heurter à divers bugs, ou être incertains quant à la façon 96 00:04:25,300 --> 00:04:26,550 mettre en œuvre quelque chose. 97 00:04:26,550 --> 00:04:28,880 Alors rends compte que nous allons commencer les heures de bureau cette semaine. 98 00:04:28,880 --> 00:04:30,500 Ils seront à Annenberg lundi, mardi, mercredi, 99 00:04:30,500 --> 00:04:34,300 Jeudi 20h00-23h00 pendant les vacances de cerveau. 100 00:04:34,300 --> 00:04:38,160 Classmen supérieures peuvent entrer, et si jamais vous avez du mal à 101 00:04:38,160 --> 00:04:40,720 dans la porte, parce qu'ils vont être glissant, parlez à votre façon 102 00:04:40,720 --> 00:04:42,560 et expliquer que vous êtes avec CS50. 103 00:04:42,560 --> 00:04:45,230 Typiquement de 20 à 30 d'entre nous sur le personnel sera là pour vous aider 104 00:04:45,230 --> 00:04:46,190 vous sur une base individuelle. 105 00:04:46,190 --> 00:04:48,980 >> A l'arrivée l'idée est la suivante: vous apportez votre ordinateur portable, 106 00:04:48,980 --> 00:04:51,300 vous aurez votre chargeur, nous aurons les cordons d'alimentation supplémentaires, 107 00:04:51,300 --> 00:04:53,320 en particulier le long de la paroi sud de la Annenberg où 108 00:04:53,320 --> 00:04:55,080 il ya beaucoup de prises électriques. 109 00:04:55,080 --> 00:04:59,290 Et le principal point d'entrée pour les heures de bureau Q & A est d'aller à 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss et d'afficher 111 00:05:01,690 --> 00:05:02,580 votre question. 112 00:05:02,580 --> 00:05:05,600 Et de l'étiqueter avec pset pset 0 ou 1, quelle que soit la semaine 113 00:05:05,600 --> 00:05:06,810 pourrait arriver à être. 114 00:05:06,810 --> 00:05:09,240 Et puis, ce que nous allons faire est d'avoir un tableau des boursiers d'enseignement 115 00:05:09,240 --> 00:05:12,040 assistants de formation et, en général 8 ou 10 ou alors de nous, 116 00:05:12,040 --> 00:05:14,430 en passant par, en gardant un œil vigilant sur la planche, et 117 00:05:14,430 --> 00:05:16,810 cueillette de questions vraiment aussi vite que nous le pouvons, 118 00:05:16,810 --> 00:05:19,600 Vous parlez de messages connexes si vous n'avez pas trouvé ceux 119 00:05:19,600 --> 00:05:22,220 vous, les références en ligne, le cas échéant. 120 00:05:22,220 --> 00:05:24,280 Et puis, s'il ya des problèmes, car il ya inévitablement 121 00:05:24,280 --> 00:05:27,190 sera, ou il est tout simplement plus de sens pour asseoir sur une base individuelle, 122 00:05:27,190 --> 00:05:28,660 faire face aux problèmes avec quelqu'un. 123 00:05:28,660 --> 00:05:30,810 >> Ou vous juste d'entrer en heures de bureau vraiment 124 00:05:30,810 --> 00:05:31,640 besoin de cette mentalité. 125 00:05:31,640 --> 00:05:33,400 Vous ne voulez pas passer par le formulaire électronique, vous 126 00:05:33,400 --> 00:05:34,410 vraiment envie de rencontrer quelqu'un. 127 00:05:34,410 --> 00:05:37,240 Communiquez que pour nous, et ce qui va arriver, c'est quand votre 128 00:05:37,240 --> 00:05:40,620 question a été vu par un membre du personnel, et nous 129 00:05:40,620 --> 00:05:43,660 déterminer, eh oui, ce doit être envoyé à l'un des 20 ou 130 00:05:43,660 --> 00:05:47,800 30 membres de l'équipe ici localement, vous verrez en haut à gauche de cette 131 00:05:47,800 --> 00:05:51,590 Entrez peu sur le bouton Queue commence à clignoter sur cs50.net / 132 00:05:51,590 --> 00:05:52,165 discuter. 133 00:05:52,165 --> 00:05:55,260 Et cela vous dit que vous avez maintenant ont été invités, ainsi 134 00:05:55,260 --> 00:05:56,880 de parler, d'entrer dans la file d'attente. 135 00:05:56,880 --> 00:05:59,090 Et en cliquant sur ce bouton, votre nom apparaîtra alors sur 136 00:05:59,090 --> 00:06:02,660 un iPad que l'écran d'accueil CS50, l'un des chefs du cours, sera 137 00:06:02,660 --> 00:06:05,250 être tenue près de l'entrée de la Annenberg, qui sera ensuite 138 00:06:05,250 --> 00:06:08,630 voir aussi représentées ici, les étudiants qui ont des questions sur 139 00:06:08,630 --> 00:06:11,630 A gauche, les membres du personnel qui sont présents sur la droite. 140 00:06:11,630 --> 00:06:14,830 Et avec un clic de gauche et de droite, votre navigateur sera 141 00:06:14,830 --> 00:06:18,610 commence à clignoter dès que, par exemple, le professeur McGonnagal 142 00:06:18,610 --> 00:06:21,460 est prêt à vous voir à une table particulière Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Nous avons donc fait une partie de cette dernière année. 144 00:06:23,340 --> 00:06:25,430 Nous avons redémarré les heures de bureau et 145 00:06:25,430 --> 00:06:26,980 réimplémenté la plupart des logiciels. 146 00:06:26,980 --> 00:06:29,940 Alors rends compte que ce sera chaud cette semaine. 147 00:06:29,940 --> 00:06:32,970 Mais aussi se rendre compte aussi, au cours des années passées, comme vous avez pu entendre 148 00:06:32,970 --> 00:06:35,710 des amis, des heures de bureau avait en effet 50 à 149 00:06:35,710 --> 00:06:37,040 150 élèves à la fois. 150 00:06:37,040 --> 00:06:39,300 Et ce n'est tout simplement pas possible pour nous de gérer cette 151 00:06:39,300 --> 00:06:42,060 effectivement, sur une base individuelle, tout au long de la soirée. 152 00:06:42,060 --> 00:06:44,570 Et donc ce que nous allons vraiment essayer de faire de cette année est 153 00:06:44,570 --> 00:06:46,590 capitaliser sur le fait que beaucoup de questions sont 154 00:06:46,590 --> 00:06:49,050 fréquemment posées et peuvent souvent être mieux répondu 155 00:06:49,050 --> 00:06:50,030 de manière asynchrone. 156 00:06:50,030 --> 00:06:52,140 Ainsi, vous pouvez trier de réfléchir à la réponse du personnel, 157 00:06:52,140 --> 00:06:54,360 et nous pouvons réfléchir à votre code, sans chauffée 158 00:06:54,360 --> 00:06:57,050 pression nécessairement mal 159 00:06:57,050 --> 00:06:58,210 à travers le côté de l'autre. 160 00:06:58,210 --> 00:07:00,980 Donc, nous estimons qu'environ un tiers ou la moitié des questions 161 00:07:00,980 --> 00:07:03,500 seront envoyés en personne, et nous allons essayer de arrachez comme 162 00:07:03,500 --> 00:07:05,530 jusqu'à une moitié ou plus par voie électronique, 163 00:07:05,530 --> 00:07:06,710 pendant les heures de bureau. 164 00:07:06,710 --> 00:07:08,070 Et nous allons continuer à utiliser Discuter 165 00:07:08,070 --> 00:07:09,990 tout au long de la semaine ainsi. 166 00:07:09,990 --> 00:07:12,680 >> Et enfin, sachez que ce cours peut être suivi de réussite / échec. 167 00:07:12,680 --> 00:07:16,230 Donc, si vous êtes sur la clôture ou simplement penser que vous êtes vraiment 168 00:07:16,230 --> 00:07:18,650 pas sûr que ce soit dans le monde pour vous, ou c'est vraiment 169 00:07:18,650 --> 00:07:21,310 tout à fait étranger à vous, sachez que c'est une merveilleuse façon 170 00:07:21,310 --> 00:07:24,840 de gagner un peu de confiance avec qui faire un pas dans la 171 00:07:24,840 --> 00:07:26,780 classe, comme je l'ai fait franchement, il ya longtemps. 172 00:07:26,780 --> 00:07:28,630 Et alors cinq semaines pour trier sur la figure pour 173 00:07:28,630 --> 00:07:30,850 vous-même si vous voulez rester réussite / échec, passer à une lettre 174 00:07:30,850 --> 00:07:31,800 classe, ou analogue. 175 00:07:31,800 --> 00:07:34,050 Et généralement ce succès / échec ne, je pense, pour les étudiants est 176 00:07:34,050 --> 00:07:36,700 que, si vous mettez dans ces 10 heures, 20 heures, quel qu'il 177 00:07:36,700 --> 00:07:38,830 peut-être sur certains problèmes, et vous cogner la tête 178 00:07:38,830 --> 00:07:39,690 contre la paroi, 179 00:07:39,690 --> 00:07:41,750 et vous avez vraiment ne peux pas chasser quelque chose, et vous 180 00:07:41,750 --> 00:07:44,230 ont tellement d'autres choses que vous devez faire, honnêtement, ce que je 181 00:07:44,230 --> 00:07:46,070 pense réussite / échec est, il prend le bord au large de 182 00:07:46,070 --> 00:07:47,250 situations de ce genre. 183 00:07:47,250 --> 00:07:49,350 Lorsque vous avez pris la chose 90% du chemin. 184 00:07:49,350 --> 00:07:50,830 Vous savez, ce n'est pas tout à fait parfaite. 185 00:07:50,830 --> 00:07:52,950 Mais tu as beaucoup hors de lui, tout de même. 186 00:07:52,950 --> 00:07:55,440 Ainsi, considérer réussite / échec comme vous accordant que 187 00:07:55,440 --> 00:07:57,590 modèle mental, peut-être. 188 00:07:57,590 --> 00:08:00,680 >> Tout droit, la semaine dernière, nous avons donc plongé dans Scratch, et nous 189 00:08:00,680 --> 00:08:03,610 parlé de la programmation à un niveau assez élevé graphique. 190 00:08:03,610 --> 00:08:05,340 Et aujourd'hui, nous faisons la transition vers une langue 191 00:08:05,340 --> 00:08:08,300 appelé C, un langage de programmation de niveau inférieur au-dessus de 192 00:08:08,300 --> 00:08:11,260 que beaucoup de langues modernes sont désormais construits, dont certains 193 00:08:11,260 --> 00:08:13,010 de ceux que nous allons utiliser vers la fin du terme. 194 00:08:13,010 --> 00:08:15,530 Et syntaxiquement, à quoi ils ressemblent 195 00:08:15,530 --> 00:08:17,330 est tout assez similaire. 196 00:08:17,330 --> 00:08:19,080 Donc, nous allons commencer à faire cette transition ici. 197 00:08:19,080 --> 00:08:21,730 Donc, ce fut un programme de la semaine dernière qui était la plus simple des 198 00:08:21,730 --> 00:08:22,910 bonjour programmes mondiaux. 199 00:08:22,910 --> 00:08:25,560 Elle a simplement imprimé sur le monde de l'écran bonjour, avec un 200 00:08:25,560 --> 00:08:27,650 bulle peu sortir du chat. 201 00:08:27,650 --> 00:08:30,590 Eh bien, si nous commençons maintenant à traduire cela à un autre 202 00:08:30,590 --> 00:08:33,419 la langue, se rendre compte que les idées d'aujourd'hui et mercredi 203 00:08:33,419 --> 00:08:36,450 sont identiques, mais la syntaxe commence à changer. 204 00:08:36,450 --> 00:08:39,370 Ainsi, alors que la semaine dernière nous avons eu, lorsque le drapeau vert cliqué, disons 205 00:08:39,370 --> 00:08:40,340 Bonjour tout le monde. 206 00:08:40,340 --> 00:08:43,870 Aujourd'hui, nous allons avoir int, main, vide, printf, 207 00:08:43,870 --> 00:08:46,350 retour, avec une autre syntaxe là-dedans aussi. 208 00:08:46,350 --> 00:08:49,200 Les accolades et les parenthèses et les guillemets, et ainsi de suite. 209 00:08:49,200 --> 00:08:54,520 Mais se rendre compte que le noyau de l'idée ici est l'impression, 210 00:08:54,520 --> 00:08:58,470 et, finalement, le fait que le principal va maintenant être 211 00:08:58,470 --> 00:09:00,770 synonyme de départ d'un programme. 212 00:09:00,770 --> 00:09:04,250 Principal va être là où le drapeau vert marque le coup d'arrêt. 213 00:09:04,250 --> 00:09:06,390 >> Alors maintenant, nous allons démêler certains des blocs de construction ici 214 00:09:06,390 --> 00:09:08,650 avant de nous plonger dans des exemples concrets. 215 00:09:08,650 --> 00:09:11,620 Nous avons donc appelé cette semaine une dernière déclaration, par laquelle il est juste 216 00:09:11,620 --> 00:09:12,470 une instruction. 217 00:09:12,470 --> 00:09:15,660 Pour ce faire, - dans ce cas, dire bonjour monde. 218 00:09:15,660 --> 00:09:18,400 Eh bien, en C, si l'on regarde simplement cette ligne, c'est la façon dont nous sommes 219 00:09:18,400 --> 00:09:20,920 va commencer à exprimer ce que pièce de puzzle notamment: 220 00:09:20,920 --> 00:09:24,780 printf ("Bonjour le monde");. 221 00:09:24,780 --> 00:09:27,330 Et maintenant, nous allons taquiner les différencier de plus en plus au fil du temps, 222 00:09:27,330 --> 00:09:29,330 mais se rendent compte qu'il ya un modèle ici. 223 00:09:29,330 --> 00:09:31,870 Donc, un, nous avons cette chose appelée printf, qui est 224 00:09:31,870 --> 00:09:34,310 essentiellement analogue à la parole Say. 225 00:09:34,310 --> 00:09:35,800 C'est ce qu'il va faire. 226 00:09:35,800 --> 00:09:37,870 Printf, et f signifie ici «formaté». 227 00:09:37,870 --> 00:09:39,270 Donc, cela signifie juste que vous pouvez insérer 228 00:09:39,270 --> 00:09:41,600 divers détails esthétiques. 229 00:09:41,600 --> 00:09:43,770 Donc, je cite le début de ce que nous allons 230 00:09:43,770 --> 00:09:45,340 pour commencer à appeler une chaîne. 231 00:09:45,340 --> 00:09:47,110 Un mot, une phrase, une phrase. 232 00:09:47,110 --> 00:09:50,220 Une chaîne dans un langage de programmation est une séquence de zéro 233 00:09:50,220 --> 00:09:51,330 un ou plusieurs caractères. 234 00:09:51,330 --> 00:09:54,390 Donc h-e-l-l-o, virgule, et ainsi de suite est, 235 00:09:54,390 --> 00:09:56,290 entre guillemets, d'une chaîne. 236 00:09:56,290 --> 00:09:58,710 Et maintenant antislash n, un peu bizarre syntaxiquement, mais nous 237 00:09:58,710 --> 00:10:01,780 déjà défini que la semaine dernière, ce qui signifie quoi? 238 00:10:01,780 --> 00:10:02,630 C'est juste une nouvelle ligne. 239 00:10:02,630 --> 00:10:05,000 C'est juste une façon de faire comprendre à l'ordinateur que vous voulez que le 240 00:10:05,000 --> 00:10:07,700 équivalent de frapper la touche Entrée, mais vous n'avez pas 241 00:10:07,700 --> 00:10:10,460 voulez réellement appuyez sur Entrée et donc gâcher tout le 242 00:10:10,460 --> 00:10:12,130 la mise en forme de votre programme actuel. 243 00:10:12,130 --> 00:10:15,500 Maintenant, les parenthèses entourent cette chaîne, ouvert parenthèses et 244 00:10:15,500 --> 00:10:18,130 près parenthèse, et à l'intérieur de qui est notre chaîne. 245 00:10:18,130 --> 00:10:22,600 Parce que c'est parce que dans C, et d'autres programmes 246 00:10:22,600 --> 00:10:27,510 langues, des choses comme printf prendre des arguments, ou de prendre 247 00:10:27,510 --> 00:10:28,420 paramètres. 248 00:10:28,420 --> 00:10:31,490 >> Donc, commencer à réfléchir dès maintenant de ce bloc Say pourpre comme un 249 00:10:31,490 --> 00:10:34,890 fonction, en tant que procédé, en tant que procédure. 250 00:10:34,890 --> 00:10:36,890 Vous pouvez vraiment l'appeler comme vous voulez pour l'instant, mais 251 00:10:36,890 --> 00:10:39,260 C'est en quelque sorte un programme miniature qui ne fait qu'une seule 252 00:10:39,260 --> 00:10:41,480 chose, sur une seule ligne, pas moins. 253 00:10:41,480 --> 00:10:43,620 Donc printf est aussi ce que nous allons commencer à appeler un 254 00:10:43,620 --> 00:10:46,680 fonction et fonctions faire quelque chose - dans ce cas, 255 00:10:46,680 --> 00:10:49,320 imprime une chaîne formatée à l'écran - 256 00:10:49,320 --> 00:10:53,220 mais aussi des fonctions acceptent des arguments ou paramètres. 257 00:10:53,220 --> 00:10:55,880 Et par des arguments ou paramètres, merci, nous entendons 258 00:10:55,880 --> 00:11:01,220 que leur comportement peut être influencé par ce que vous passez dans 259 00:11:01,220 --> 00:11:03,420 à l'intérieur des parenthèses. 260 00:11:03,420 --> 00:11:06,460 Donc dans ce cas, les besoins printf qu'on leur dise quoi imprimer, et nous 261 00:11:06,460 --> 00:11:09,520 il suffit de passer dans, entre guillemets ici, la chaîne que nous 262 00:11:09,520 --> 00:11:11,270 effectivement à imprimer. 263 00:11:11,270 --> 00:11:14,060 Et le point-virgule à la fin de cette ligne est juste un 264 00:11:14,060 --> 00:11:18,020 nuisances historique de telle sorte qu'à la fin de la plupart des lignes de code, 265 00:11:18,020 --> 00:11:21,170 vous mettez un point-virgule pour faire des super clair à l'ordinateur 266 00:11:21,170 --> 00:11:23,020 que cette ligne de code se termine ici. 267 00:11:23,020 --> 00:11:25,600 Maintenant, c'est bien parce que comme nous le verrons dans les programmes obtenir plus d' 268 00:11:25,600 --> 00:11:29,030 complexe, le point-virgule fera super-humains claires pour nous, 269 00:11:29,030 --> 00:11:32,280 et aussi l'ordinateur, où les lignes de code de début et de fin. 270 00:11:32,280 --> 00:11:34,360 Sachez que certaines langues n'ont pas une 271 00:11:34,360 --> 00:11:35,045 de ces mêmes détails. 272 00:11:35,045 --> 00:11:37,870 Et en fait, en JavaScript, vous n'avez pas toujours besoin de quelque chose 273 00:11:37,870 --> 00:11:38,670 comme le point-virgule. 274 00:11:38,670 --> 00:11:40,210 Mais plus à ce sujet à venir. 275 00:11:40,210 --> 00:11:41,170 >> Donc boucles. 276 00:11:41,170 --> 00:11:43,520 Nous avions quelque chose comme ça, de manière très intuitive, évidente, ne 277 00:11:43,520 --> 00:11:44,860 quelque chose encore et encore et encore. 278 00:11:44,860 --> 00:11:47,720 Comme mettre des chaussettes, ou de dire bonjour, dans ce cas. 279 00:11:47,720 --> 00:11:51,090 Eh bien, à partir d'aujourd'hui dans C, nous avons pu exprimer cette Scratch 280 00:11:51,090 --> 00:11:54,970 bloquer comme while (true) printf ("Bonjour le monde"). 281 00:11:54,970 --> 00:11:57,630 Donc remarquerez que nous commençons à construire sur littéralement le casse-tête 282 00:11:57,630 --> 00:11:58,480 pièce de devant. 283 00:11:58,480 --> 00:12:01,310 Nous avons le même bloc violet, mais c'est à l'intérieur de cette 284 00:12:01,310 --> 00:12:04,880 Toujours entre crochets bloc, et la meilleure façon de traduire cette 285 00:12:04,880 --> 00:12:06,480 C est de la façon suivante. 286 00:12:06,480 --> 00:12:08,130 Il n'y a aucun mot-clé pour toujours. 287 00:12:08,130 --> 00:12:10,940 Vous ne pouvez pas taper f-o-r-e-v-e-r dans C. 288 00:12:10,940 --> 00:12:13,440 Donc le plus proche analogique est tout. 289 00:12:13,440 --> 00:12:17,050 >> Maintenant, while (true) semble un peu stupide parce que la valeur ne 290 00:12:17,050 --> 00:12:18,700 de changement toujours vrai? 291 00:12:18,700 --> 00:12:19,810 Vraisemblablement pas. 292 00:12:19,810 --> 00:12:22,770 C'est comme dire que tandis que l'un, tandis que sur tout vrai. 293 00:12:22,770 --> 00:12:25,430 C'est la même chose, c'est vrai c'est toujours le cas. 294 00:12:25,430 --> 00:12:29,860 Donc, cette boucle est effectivement induire ce type de boucle? 295 00:12:29,860 --> 00:12:31,210 Juste une boucle infinie, à droite. 296 00:12:31,210 --> 00:12:32,930 Une boucle Forever ou comme on disait la semaine dernière, 297 00:12:32,930 --> 00:12:33,870 juste une boucle infinie. 298 00:12:33,870 --> 00:12:35,250 Alors parfois, c'est mauvais. 299 00:12:35,250 --> 00:12:37,060 Parfois, c'est un bug, parfois, c'est pourquoi vous obtenez 300 00:12:37,060 --> 00:12:39,340 le ballon de plage de filage ou de sablier ou analogue. 301 00:12:39,340 --> 00:12:41,260 Mais dans ce cas, nous avons délibérément, quelle qu'en soit la 302 00:12:41,260 --> 00:12:43,040 pourquoi voulez imprimer la même chose 303 00:12:43,040 --> 00:12:43,970 et encore et encore. 304 00:12:43,970 --> 00:12:45,900 Ou dans le cas de comme une montre, vous voulez faire 305 00:12:45,900 --> 00:12:47,470 quelque chose encore et encore et encore. 306 00:12:47,470 --> 00:12:49,070 Donc boucles infinies peut avoir un sens. 307 00:12:49,070 --> 00:12:53,560 Et voilà comment en C nous pourrions traduire Toujours au code. 308 00:12:53,560 --> 00:12:55,570 >> Alors maintenant, celui-ci est un peu plus précis. 309 00:12:55,570 --> 00:12:58,880 Nous avions répéter 10 fois la déclaration suivante. 310 00:12:58,880 --> 00:13:02,490 Ainsi, alors que (vrai) ne fonctionne pas vraiment là, parce que c'est vrai 311 00:13:02,490 --> 00:13:03,590 toujours vrai. 312 00:13:03,590 --> 00:13:07,060 Donc, si nous regardons plutôt la version C, maintenant la syntaxe obtient un 313 00:13:07,060 --> 00:13:08,180 peu plus cryptique. 314 00:13:08,180 --> 00:13:11,380 Mais pour être honnête une fois que vous commencez à voir cela, il obtient tout 315 00:13:11,380 --> 00:13:12,600 assez familier rapidement. 316 00:13:12,600 --> 00:13:14,370 Donc, c'est ce qu'on appelle une boucle for. 317 00:13:14,370 --> 00:13:17,210 Une boucle for qui va indiquer à l'ordinateur de faire quelque chose 318 00:13:17,210 --> 00:13:20,710 encore et encore, aussi longtemps que 319 00:13:20,710 --> 00:13:21,850 ces choses sont vraies. 320 00:13:21,850 --> 00:13:23,370 Maintenant, qu'entendons-nous par là? 321 00:13:23,370 --> 00:13:25,470 Eh bien, il ya trois parties à une boucle for, et nous allons 322 00:13:25,470 --> 00:13:28,240 revenir sur ce point dans le contexte de réelle 323 00:13:28,240 --> 00:13:29,100 exemples dans un instant. 324 00:13:29,100 --> 00:13:31,650 Donc, ne vous inquiétez pas si ce n'est pas tout à fait sombrer dans tous à la fois. 325 00:13:31,650 --> 00:13:35,400 Mais int i = 0 est, longue histoire courte, en disant de me donner un 326 00:13:35,400 --> 00:13:38,290 variable qui est de type entier, alors donnez-moi un certain nombre 327 00:13:38,290 --> 00:13:40,890 J'ai appelé, et l'initialiser à 0. 328 00:13:40,890 --> 00:13:43,460 C'est me donner comme un x algébrique variable et 329 00:13:43,460 --> 00:13:44,580 l'initialiser à 0. 330 00:13:44,580 --> 00:13:46,250 Mais dans ce cas, nous l'avons appelé i. 331 00:13:46,250 --> 00:13:49,120 Puis, au milieu, il est dit i est inférieur à 10. 332 00:13:49,120 --> 00:13:52,150 C'est dire l'ordinateur ne les trucs ci-dessous si longtemps 333 00:13:52,150 --> 00:13:53,770 que i est inférieur à 10. 334 00:13:53,770 --> 00:13:55,370 Et, évidemment, il commence à moins de 10 parce 335 00:13:55,370 --> 00:13:56,550 il commence à 0. 336 00:13:56,550 --> 00:13:59,150 Puis enfin, vous pouvez peut-être deviner ce que je + + moyen. 337 00:13:59,150 --> 00:14:02,140 C'est un peu de syntaxe qui signifie simplement incrémenter i. 338 00:14:02,140 --> 00:14:05,270 Donc, ajouter 1 à i, encore et encore et encore. 339 00:14:05,270 --> 00:14:09,260 >> Et si comme nous le verrons cette boucle, cette syntaxe, plutôt, met en œuvre 340 00:14:09,260 --> 00:14:12,160 exactement la même chose, à vrai dire, dans Scratch était tellement 341 00:14:12,160 --> 00:14:13,250 beaucoup plus facile à exprimer. 342 00:14:13,250 --> 00:14:15,170 Répétez 10, et vous avez terminé. 343 00:14:15,170 --> 00:14:17,690 En C, et dans la plupart des langages de programmation, il faut être un 344 00:14:17,690 --> 00:14:20,190 peu plus instructive pour l'ordinateur et fait 345 00:14:20,190 --> 00:14:21,630 préciser quelque chose comme ça. 346 00:14:21,630 --> 00:14:23,730 Mais nous reviendrons sur cela et d'autre syntaxe. 347 00:14:23,730 --> 00:14:24,780 >> Qu'en est-il des variables? 348 00:14:24,780 --> 00:14:26,940 Dans Scratch nous avions quelque chose comme ces blocs orange, 349 00:14:26,940 --> 00:14:28,180 où je pourrais déclarer une variable. 350 00:14:28,180 --> 00:14:30,000 Nous allons l'appeler arbitrairement comptoir. 351 00:14:30,000 --> 00:14:31,880 Nous allons l'initialiser à 0, puis 352 00:14:31,880 --> 00:14:33,240 nous allons toujours faire quelque chose. 353 00:14:33,240 --> 00:14:35,760 Dans ce cas, dans Scratch je veux dire le compteur, de sorte que le 354 00:14:35,760 --> 00:14:38,230 chat va avoir une bulle peu qui parle 355 00:14:38,230 --> 00:14:40,010 le nombre qui se trouve dans cette variable. 356 00:14:40,010 --> 00:14:42,460 Et puis nous avons contre le changement de 1. 357 00:14:42,460 --> 00:14:45,760 Donc, tout cela est enveloppé à l'intérieur d'une serrure pour toujours. 358 00:14:45,760 --> 00:14:48,960 Nous avons donc déjà maintenant les blocs de construction C avec 359 00:14:48,960 --> 00:14:50,040 de translation de cela. 360 00:14:50,040 --> 00:14:51,650 >> Une façon nous pourrions le faire est la suivante. 361 00:14:51,650 --> 00:14:53,890 Donnez-moi un entier, appelez-le comptoir. 362 00:14:53,890 --> 00:14:55,190 L'initialiser à 0 363 00:14:55,190 --> 00:14:56,490 dans la première ligne y. 364 00:14:56,490 --> 00:14:59,390 While (true), alors je vais voler cette idée d'un instant 365 00:14:59,390 --> 00:15:01,300 Il ya, aller de l'avant et faire ce qui suit. 366 00:15:01,300 --> 00:15:04,880 Imprimer le compteur, puis incrémenter le compteur, 367 00:15:04,880 --> 00:15:06,930 encore, et encore, et encore. 368 00:15:06,930 --> 00:15:09,380 Ou encore, + + signifie simplement ajouter 1 à quelque chose. 369 00:15:09,380 --> 00:15:11,030 Mais il ya un nouveau morceau de syntaxe ici. 370 00:15:11,030 --> 00:15:15,730 Qu'est-ce qui saute comme pas dans nos exemples précédents? 371 00:15:15,730 --> 00:15:17,190 Oui, c'est d%. 372 00:15:17,190 --> 00:15:19,810 Ainsi, vous pouvez peut-être déduire ce que cela fait, franchement, sur la base 373 00:15:19,810 --> 00:15:21,410 sur ce que le bloc de Scratch fait. 374 00:15:21,410 --> 00:15:24,510 Mais encore une fois dans C, nous avons juste besoin d'être un peu plus particulier 375 00:15:24,510 --> 00:15:25,990 quand il s'agit de nous exprimer. 376 00:15:25,990 --> 00:15:30,560 >> Donc printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Eh bien la plupart de ce que nous pouvons jeter aussi familier. 378 00:15:32,320 --> 00:15:34,910 Les citations signifie simplement que c'est une chaîne, barre oblique inverse n 379 00:15:34,910 --> 00:15:35,970 est tout simplement une nouvelle ligne. 380 00:15:35,970 --> 00:15:38,860 Donc la seule chose nouvelle est ici% d. 381 00:15:38,860 --> 00:15:40,390 Et tout ce qui est est un espace réservé. 382 00:15:40,390 --> 00:15:43,510 % D va désigner un nombre décimal. 383 00:15:43,510 --> 00:15:47,820 Et l'ordinateur moyen% d, placer un nombre décimal ici. 384 00:15:47,820 --> 00:15:49,450 Eh bien, quel est le nombre voulez-vous y mettre? 385 00:15:49,450 --> 00:15:52,400 Eh bien, comme vous pouvez peut-être déduire, après la virgule que nous disons 386 00:15:52,400 --> 00:15:55,480 contre, c'est le nom d'une variable que nous avons déclaré ou 387 00:15:55,480 --> 00:15:57,260 créé quelques lignes plus haut. 388 00:15:57,260 --> 00:16:02,420 Donc, c'est juste voie C de brancher une variable dans un 389 00:16:02,420 --> 00:16:04,480 chaîne créée dynamiquement. 390 00:16:04,480 --> 00:16:07,350 Parce que, par contre, si j'avais fait quelque chose comme lieu 391 00:16:07,350 --> 00:16:12,470 ce, printf ("compteur"), ce qui serait cette 392 00:16:12,470 --> 00:16:15,220 programme plutôt que le faire, sans doute? 393 00:16:15,220 --> 00:16:17,260 Il va littéralement imprimer "compteur". 394 00:16:17,260 --> 00:16:18,750 Ce qui n'est pas l'effet que je veux. 395 00:16:18,750 --> 00:16:20,920 J'ai besoin de substituer dans une certaine valeur numérique. 396 00:16:20,920 --> 00:16:24,340 Nous allons donc voir ce que les fonctions puis, comme printf, peut prendre pas 397 00:16:24,340 --> 00:16:26,930 seuls quelques arguments simples, comme 398 00:16:26,930 --> 00:16:28,150 "Bonjour le monde". 399 00:16:28,150 --> 00:16:32,050 Ils peuvent prendre une virgule entre guillemets, puis certaines variables 400 00:16:32,050 --> 00:16:35,830 qui obtiendra branché, comme nous le verrons la chaîne précédente 401 00:16:35,830 --> 00:16:38,280 par l'intermédiaire de ces espaces réservés signe%. 402 00:16:38,280 --> 00:16:39,660 >> Eh bien que dire des expressions booléennes? 403 00:16:39,660 --> 00:16:42,200 Les expressions booléennes sont ces valeurs, vraies ou fausses. 404 00:16:42,200 --> 00:16:42,830 Oui ou non. 405 00:16:42,830 --> 00:16:44,020 1 ou 0. 406 00:16:44,020 --> 00:16:45,190 Sous ou hors tension. 407 00:16:45,190 --> 00:16:47,570 Ainsi, dans Scratch ils ressemblent à cela, et remarquez que le 408 00:16:47,570 --> 00:16:50,170 bloc inférieur ici est en fait la conjonction 409 00:16:50,170 --> 00:16:51,500 de deux blocs plus petits. 410 00:16:51,500 --> 00:16:53,610 Donc j'ai un peu glissé et déposé trois pièces de puzzle 411 00:16:53,610 --> 00:16:56,450 ensemble pour faire de ce morceau de puzzle plus là pour que je 412 00:16:56,450 --> 00:17:00,420 pourrait véhiculer l'idée que je veux que x soit inférieur à y et 413 00:17:00,420 --> 00:17:02,540 y soit inférieur à z. 414 00:17:02,540 --> 00:17:05,790 Et pour que je puisse traduire ces deux lignes distinctes, comme suit. 415 00:17:05,790 --> 00:17:08,650 Celui du haut peut être très trivialement traduit en C, 416 00:17:08,650 --> 00:17:10,069 avec juste x 00:17:11,990 Peut-être avec des parenthèses pour faire bonne mesure. 418 00:17:11,990 --> 00:17:15,520 Et puis en C, vous n'avez pas à écrire et à désigner le 419 00:17:15,520 --> 00:17:16,819 conjonction de quelque chose. 420 00:17:16,819 --> 00:17:19,585 Vous écrivez à la place. && 421 00:17:19,585 --> 00:17:22,849 Et comme nous allons le voir finalement, un et commercial unique qui arrive à 422 00:17:22,849 --> 00:17:23,880 signifie quelque chose de différent. 423 00:17:23,880 --> 00:17:27,530 Donc && indique simplement l'idée d'ET. 424 00:17:27,530 --> 00:17:30,040 >> Encore une fois, même si cela commence à ressembler assez complexe, 425 00:17:30,040 --> 00:17:32,560 l'un des objectifs de l'introduction de Scratch, outre 426 00:17:32,560 --> 00:17:34,810 simple fait d'avoir une sorte de plaisir sur la bretelle d'accès où vous pouvez faire 427 00:17:34,810 --> 00:17:36,590 quelque chose de très graphique et d'animation, et 428 00:17:36,590 --> 00:17:39,000 partageable et autres, est aussi à exprimer l'idée que 429 00:17:39,000 --> 00:17:42,010 toutes les idées que nous avons commencer à plonger dans l'aujourd'hui et au-delà 430 00:17:42,010 --> 00:17:44,300 ont été intégrées à même aussi simple que cela 431 00:17:44,300 --> 00:17:46,850 interface depuis le premier jour. 432 00:17:46,850 --> 00:17:47,790 Qu'en est-il celui-là? 433 00:17:47,790 --> 00:17:48,860 >> Ainsi, les conditions. 434 00:17:48,860 --> 00:17:50,590 Ainsi, le bloc Scratch sur la gauche, il semble 435 00:17:50,590 --> 00:17:51,610 un peu plus complexe. 436 00:17:51,610 --> 00:17:52,650 Mais c'est juste de se faire tracter et 437 00:17:52,650 --> 00:17:54,140 chute de morceaux connus. 438 00:17:54,140 --> 00:17:56,690 Si x est inférieur à y, dites-le. 439 00:17:56,690 --> 00:17:59,900 Sinon, si x est supérieur à y, dites-le. 440 00:17:59,900 --> 00:18:02,460 Sinon, on peut logiquement supposer qu'il déduit que 441 00:18:02,460 --> 00:18:03,580 ils doivent être égaux. 442 00:18:03,580 --> 00:18:05,220 Donc, dire qu'ils sont égaux. 443 00:18:05,220 --> 00:18:07,690 Maintenant en C sur la droite, exactement la même chose. 444 00:18:07,690 --> 00:18:09,730 Et remarquez que les accolades vont être 445 00:18:09,730 --> 00:18:12,190 fonction de C et d'autres langues qui font ce genre 446 00:18:12,190 --> 00:18:13,210 de l'encapsulation. 447 00:18:13,210 --> 00:18:15,470 Tout comme le bloc if est cette chose jaune c'est une sorte de 448 00:18:15,470 --> 00:18:17,770 saisissant le bloc violet à l'intérieur de celui-ci. 449 00:18:17,770 --> 00:18:19,480 De même sont ces bretelles - 450 00:18:19,480 --> 00:18:20,870 ces accolades - 451 00:18:20,870 --> 00:18:24,710 destiné à évoquer cette idée même d'embrasser un ou plusieurs 452 00:18:24,710 --> 00:18:27,680 lignes de code qui sont en retrait à l'intérieur d'eux. 453 00:18:27,680 --> 00:18:31,270 Ainsi, sur le côté droit ici, si x inférieur à y, printf 454 00:18:31,270 --> 00:18:32,270 ("X est inférieur à y"). 455 00:18:32,270 --> 00:18:34,980 Sinon, si x est supérieur à y, imprimez la même chose. 456 00:18:34,980 --> 00:18:38,360 Else print remarquer qu'ils sont égaux. 457 00:18:38,360 --> 00:18:41,750 >> Donc en bref, il ya une correspondance assez directe ou traduction 458 00:18:41,750 --> 00:18:44,720 de la langue que nous avons vu jusqu'à présent, y compris pour certains 459 00:18:44,720 --> 00:18:45,940 des fonctionnalités plus sophistiquées. 460 00:18:45,940 --> 00:18:48,680 Donc, vous pourriez ne pas utiliser cela pour votre projet, ou peut-être pas 461 00:18:48,680 --> 00:18:51,150 utiliser sur votre projet cette semaine. 462 00:18:51,150 --> 00:18:54,650 Mais nous avons ces choses appelées tableaux dans C. Dans Scratch, 463 00:18:54,650 --> 00:18:55,680 on les appelle des listes. 464 00:18:55,680 --> 00:18:59,370 Et nous avons vu ces derniers avec le RPG Fruitcraft la semaine dernière. 465 00:18:59,370 --> 00:19:01,320 Le petit bonhomme bleu qui se promenait autour, ramasser 466 00:19:01,320 --> 00:19:03,010 les cerises et les oranges, etc. 467 00:19:03,010 --> 00:19:05,110 Eh bien dans Scratch, qui a été mis en œuvre avec cette orange 468 00:19:05,110 --> 00:19:09,000 bloquer qui contient des mots, dans ce cas, nous sommes littéralement 469 00:19:09,000 --> 00:19:10,800 ajoutant "orange" à un 470 00:19:10,800 --> 00:19:12,460 variable appelée inventaire. 471 00:19:12,460 --> 00:19:14,910 Donc, en C, cette syntaxe va se faire un peu plus cryptique. 472 00:19:14,910 --> 00:19:17,250 Et nous y reviendrons la semaine prochaine et de faire plus 473 00:19:17,250 --> 00:19:21,060 des choses intéressantes dans le monde de la cryptographie avec elle. 474 00:19:21,060 --> 00:19:23,990 Mais au fond ici, ces deux lignes essentiellement 475 00:19:23,990 --> 00:19:27,550 traduire ce que nous faisons dans un Scratch bloquer là-haut. 476 00:19:27,550 --> 00:19:30,120 Mais plus à ce sujet à venir. 477 00:19:30,120 --> 00:19:34,120 >> Ainsi, le mettre ensemble, voici un programme en C, donc nous 478 00:19:34,120 --> 00:19:36,590 rapidement démêler quelques-uns des éléments de la syntaxe ici, mais 479 00:19:36,590 --> 00:19:40,300 puis nous allons réellement commencer à écrire du code, familiariser 480 00:19:40,300 --> 00:19:42,440 vous avec quelques-uns des outils que nous allons utiliser, et voir si nous 481 00:19:42,440 --> 00:19:45,400 peut maintenant s'appuyer sur certains de ces blocs de construction de base de 482 00:19:45,400 --> 00:19:49,150 la semaine dernière, maintenant syntaxiquement dans C. Donc en haut ici, ce 483 00:19:49,150 --> 00:19:51,380 C'est peut-être l'un des programmes les plus ennuyeux que vous pourriez 484 00:19:51,380 --> 00:19:53,130 écrire dans la plupart des langages de programmation. 485 00:19:53,130 --> 00:19:55,010 Mais c'est un peu a une signification particulière parce que c'est la 486 00:19:55,010 --> 00:19:58,120 programme canonique que tout informaticien écrit quand 487 00:19:58,120 --> 00:19:59,620 apprendre à quelqu'un un langage de programmation - 488 00:19:59,620 --> 00:20:01,230 un programme mondial bonjour. 489 00:20:01,230 --> 00:20:05,120 >> Ainsi, tout en haut, nous voyons cette notion de # include 490 00:20:05,120 --> 00:20:08,180 puis, en chevrons, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Nous allons revenir à cela, mais vraiment ce que 492 00:20:10,580 --> 00:20:13,770 signifie qu'il ya un fichier dans ce monde appelé norme 493 00:20:13,770 --> 00:20:17,670 I / O, point h stdio, et c'est juste un fichier texte qui 494 00:20:17,670 --> 00:20:19,240 quelqu'un a écrit ans. 495 00:20:19,240 --> 00:20:22,550 Et à l'intérieur de ce fichier texte sont tout un tas de 496 00:20:22,550 --> 00:20:25,840 fonctions ou méthodes ou procédures, que quelqu'un d'autre 497 00:20:25,840 --> 00:20:28,970 a écrit que nous sommes les bénéficiaires de parce que nous 498 00:20:28,970 --> 00:20:31,420 pouvez maintenant utiliser le code de cette personne. 499 00:20:31,420 --> 00:20:33,070 Les fonctions qu'il ou elle écrit. 500 00:20:33,070 --> 00:20:36,320 Dans ce cas, printf est pas quelque chose que j'ai écrit, c'est 501 00:20:36,320 --> 00:20:37,500 pas quelque chose qui CS50 écrit. 502 00:20:37,500 --> 00:20:40,290 C'est quelque chose que quelqu'un a écrit ans et mis dans un 503 00:20:40,290 --> 00:20:43,450 fichier appelé stdio.h puis, en passant, mis 504 00:20:43,450 --> 00:20:45,830 une autre partie de la fonction dans un autre fichier. 505 00:20:45,830 --> 00:20:46,940 Mais nous y arriverons. 506 00:20:46,940 --> 00:20:50,070 >> Donc # include est juste notre façon de dire, en 507 00:20:50,070 --> 00:20:53,110 C, donne-moi d'accéder aux fonctions que quelqu'un d'autre a écrit. 508 00:20:53,110 --> 00:20:55,490 Et dans ce cas, je me soucie parce que je veux printf. 509 00:20:55,490 --> 00:20:57,530 Maintenant, nous arrivons int main (void). 510 00:20:57,530 --> 00:21:00,160 Donc, c'est une de ces choses, franchement, c'est le jour 0, 511 00:21:00,160 --> 00:21:02,400 à peu près Je dois sorte de zone sur, parce que c'est juste 512 00:21:02,400 --> 00:21:03,260 pas intéressant 513 00:21:03,260 --> 00:21:04,780 intellectuellement, une partie de la syntaxe. 514 00:21:04,780 --> 00:21:07,940 Mais pour l'instant savons que les fonctions, autrement connu sous le nom 515 00:21:07,940 --> 00:21:11,660 procédures ou méthodes, produisent généralement une certaine valeur. 516 00:21:11,660 --> 00:21:12,520 Ils font quelque chose. 517 00:21:12,520 --> 00:21:13,810 Ils viennent avec une réponse. 518 00:21:13,810 --> 00:21:15,020 Ils produisent de sortie. 519 00:21:15,020 --> 00:21:18,780 Alors int côté principal est notre façon abrégée de dire 520 00:21:18,780 --> 00:21:21,380 que cette fonction, cette procédure, va finalement 521 00:21:21,380 --> 00:21:22,650 pour vous redonner un certain nombre. 522 00:21:22,650 --> 00:21:24,370 Et pourquoi cela est, nous y reviendrons. 523 00:21:24,370 --> 00:21:27,810 Principale se trouve à la norme mondiale par défaut pour le défaut 524 00:21:27,810 --> 00:21:30,990 fonction qui va se faire exécuter dans un programme C lorsque 525 00:21:30,990 --> 00:21:31,860 vous l'exécutez. 526 00:21:31,860 --> 00:21:34,160 Vide signifie juste que cette chose, main, ne prend pas 527 00:21:34,160 --> 00:21:35,270 arguments, dans ce cas. 528 00:21:35,270 --> 00:21:36,400 Je suis donc être super explicite. 529 00:21:36,400 --> 00:21:38,160 Il n'ya pas de cordes là-dedans, il n'y a pas de virgules. 530 00:21:38,160 --> 00:21:40,690 Vide signifie qu'aucun argument au menu principal. 531 00:21:40,690 --> 00:21:44,350 >> Maintenant, enfin, heureusement, les deux dernières lignes sont familiers. 532 00:21:44,350 --> 00:21:46,160 A l'intérieur des accolades, nous avons un printf 533 00:21:46,160 --> 00:21:47,620 et nous avons un retour. 534 00:21:47,620 --> 00:21:50,450 Et le retour est un peu regrettable que nous devons 535 00:21:50,450 --> 00:21:53,510 l'a mis là, car dans ce cas ce n'est pas faire tout ce qui 536 00:21:53,510 --> 00:21:54,600 beaucoup d'intérêt. 537 00:21:54,600 --> 00:21:58,790 Mais dans un programme informatique, lorsqu'une fonction retourne 0, 538 00:21:58,790 --> 00:22:00,610 cela signifie que tout va bien. 539 00:22:00,610 --> 00:22:01,820 Rien ne s'est passé. 540 00:22:01,820 --> 00:22:06,170 En revanche, si une fonction retourne 1, ou 1 négatif, ou 541 00:22:06,170 --> 00:22:11,670 1.337 négative, ou certains nombres aléatoires comme ça, que 542 00:22:11,670 --> 00:22:14,020 signifie généralement qu'une erreur s'est effectivement produite. 543 00:22:14,020 --> 00:22:16,150 Donc, si vous êtes sur votre Mac ou votre PC, si vous avez jamais vu 544 00:22:16,150 --> 00:22:18,590 une certaine message ennuyeux parce que votre ordinateur est en panne ou 545 00:22:18,590 --> 00:22:20,660 gelé, et il ya un message d'erreur cryptique, 546 00:22:20,660 --> 00:22:23,320 et puis un peu de code, le code système comme 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, un certain nombre, 548 00:22:25,110 --> 00:22:29,270 qui est généralement un détail inutile de dire 549 00:22:29,270 --> 00:22:32,110 plupart d'entre nous les humains, mais c'est ce que certaines fonctions ou certains 550 00:22:32,110 --> 00:22:34,890 programme a effectivement retournée, une valeur différente de zéro. 551 00:22:34,890 --> 00:22:38,540 Et l'avantage de ceci est que 0 signifie tout aussi bien, et 552 00:22:38,540 --> 00:22:40,470 alors vous avez essentiellement un nombre infini de choses que 553 00:22:40,470 --> 00:22:41,130 peut aller de travers. 554 00:22:41,130 --> 00:22:44,700 Ce qui explique pourquoi ils ont choisi de 0 pour une bonne et une valeur non nulle pour 555 00:22:44,700 --> 00:22:46,450 mauvais, comme nous le verrons bientôt. 556 00:22:46,450 --> 00:22:47,870 >> Allons donc de l'avant et écrire ceci. 557 00:22:47,870 --> 00:22:51,610 Ainsi, rappelons que l'autre jour, j'ai utilisé mon Mac pour ouvrir un 558 00:22:51,610 --> 00:22:53,970 fenêtre de terminal, puis j'ai ouvert éditeur de texte, comme 559 00:22:53,970 --> 00:22:55,900 TextEdit, et j'ai commencé à écrire un peu de code. 560 00:22:55,900 --> 00:22:56,580 Eh bien c'est très bien. 561 00:22:56,580 --> 00:22:58,636 Mais votre expérience va être différent sur un Mac, ou 562 00:22:58,636 --> 00:23:01,220 sur un ordinateur Solaris, un ordinateur Linux, quelle que soit exploitation 563 00:23:01,220 --> 00:23:02,810 système vous arrive d'utiliser. 564 00:23:02,810 --> 00:23:04,970 Et si dans le cours, ce qui nous place à utiliser est quelque chose de 565 00:23:04,970 --> 00:23:07,010 appelé l'Appliance CS50. 566 00:23:07,010 --> 00:23:10,420 Ainsi, l'appareil CS50 est un morceau de logiciel téléchargeable 567 00:23:10,420 --> 00:23:13,640 qui vous permet d'exécuter un système d'exploitation appelé Linux, 568 00:23:13,640 --> 00:23:16,810 spécifiquement Fedora Linux, sur votre Mac ou PC. 569 00:23:16,810 --> 00:23:20,810 Et vous faites cela en téléchargeant ce qu'on appelle un hyperviseur. 570 00:23:20,810 --> 00:23:23,100 Donc, tout cela sera documenté en 1 set problème. 571 00:23:23,100 --> 00:23:25,240 Et vous serez guidé vers ce que vous devez télécharger. 572 00:23:25,240 --> 00:23:27,510 Mais le résultat final, que vous ayez un Mac ou un PC, c'est vous 573 00:23:27,510 --> 00:23:29,080 télécharger des logiciels gratuit. 574 00:23:29,080 --> 00:23:32,340 Vous pouvez alors télécharger l'appliance CS50, et vous dire que 575 00:23:32,340 --> 00:23:33,960 logiciel libre - l'hyperviseur - 576 00:23:33,960 --> 00:23:38,080 pour exécuter le CS50 Appliance dans une fenêtre sur votre ordinateur. 577 00:23:38,080 --> 00:23:39,490 Et ce qui se passe est la suivante. 578 00:23:39,490 --> 00:23:43,660 >> J'ai maintenant, remarquez ici, ce qui semble être un ordinateur de bureau 579 00:23:43,660 --> 00:23:44,130 environnement. 580 00:23:44,130 --> 00:23:46,150 Et permettez-moi de réellement réduire cette fenêtre. 581 00:23:46,150 --> 00:23:49,640 Donc, c'est maintenant mon Mac, avec une petite fenêtre ici, et à l'intérieur 582 00:23:49,640 --> 00:23:51,300 de cette fenêtre se trouve être un complètement 583 00:23:51,300 --> 00:23:52,380 système d'exploitation différent. 584 00:23:52,380 --> 00:23:55,250 En effet, il ya ce menu de démarrage ici-bas, rappelle 585 00:23:55,250 --> 00:23:57,990 Windows, qui a tout un tas de sous-menus, y compris 586 00:23:57,990 --> 00:24:00,720 un lien vers le manuel CS50, Dropbox, etc. 587 00:24:00,720 --> 00:24:03,480 Et que cet environnement est désormais un environnement standard 588 00:24:03,480 --> 00:24:06,280 que chacun de nous peut maintenant utiliser, de sorte que peu importe ce que votre 589 00:24:06,280 --> 00:24:08,960 ordinateur, ce que vous avez installé, la version 590 00:24:08,960 --> 00:24:11,430 de Mac OS ou Windows que vous utilisez, nous avons maintenant la 591 00:24:11,430 --> 00:24:12,800 même environnement. 592 00:24:12,800 --> 00:24:15,850 Et maintenant, dans cet environnement, nous pouvons commencer à écrire un peu de code. 593 00:24:15,850 --> 00:24:18,480 >> Je vais donc aller de l'avant et d'ouvrir un programme appelé gedit. 594 00:24:18,480 --> 00:24:21,500 Ceci est comparable à notepad.exe, ou 595 00:24:21,500 --> 00:24:22,790 TextEdit sur Mac. 596 00:24:22,790 --> 00:24:25,390 Et ce n'est qu'un super-simple programme d'édition de texte 597 00:24:25,390 --> 00:24:27,500 qui ressemble à ceci au premier coup d'œil. 598 00:24:27,500 --> 00:24:30,640 Maintenant, tout en haut, j'ai une palette de blanc, au fond, je 599 00:24:30,640 --> 00:24:33,860 avoir cette fenêtre noire qui dit jharvard @ appareil. 600 00:24:33,860 --> 00:24:36,440 Et c'est parce que le compte d'utilisateur que nous avons pré-créé 601 00:24:36,440 --> 00:24:38,430 pour tout le monde s'appelle John Harvard. 602 00:24:38,430 --> 00:24:41,490 Il a un dossier dans lequel tous ses dossiers vont aller, et 603 00:24:41,490 --> 00:24:43,500 C'est ici où nous pouvons commencer à écrire du code. 604 00:24:43,500 --> 00:24:45,810 Alors laissez-moi aller de l'avant ici et zoomer un peu, et je suis 605 00:24:45,810 --> 00:24:51,550 va faire # include, int main (void), et 606 00:24:51,550 --> 00:24:57,470 alors je vais faire printf ("Bonjour le monde") 607 00:24:57,470 --> 00:24:59,490 , Retourne 0. 608 00:24:59,490 --> 00:25:01,400 Maintenant tout cela est tout à fait en noir et blanc. 609 00:25:01,400 --> 00:25:03,830 >> Permettez-moi aller de l'avant et de faire une chose à enseigner ce que je suis gedit 610 00:25:03,830 --> 00:25:04,510 en train de faire. 611 00:25:04,510 --> 00:25:06,140 Laissez-moi aller sur Enregistrer sous. 612 00:25:06,140 --> 00:25:08,560 Je vais choisir sur le côté gauche ici jharvard. 613 00:25:08,560 --> 00:25:11,010 Encore une fois, même si vous n'avez jamais utilisé Linux avant, franchement 614 00:25:11,010 --> 00:25:13,680 de nos jours, ils sont tous sombrer dans essentiellement la 615 00:25:13,680 --> 00:25:14,590 même type d'interface - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows et Linux. 617 00:25:16,030 --> 00:25:18,680 J'ai donc choisi le dossier de départ jharvard ici. 618 00:25:18,680 --> 00:25:21,120 Et je vais enregistrer ce fichier en tant que hello.c. 619 00:25:21,120 --> 00:25:24,260 Ainsi, tout en haut, j'ai tapé hello.c; la nomination d'un C 620 00:25:24,260 --> 00:25:26,520 programme avec l'extension. c est 621 00:25:26,520 --> 00:25:27,570 ce qui est une pratique courante. 622 00:25:27,570 --> 00:25:28,650 Et je suis tombé sur Enregistrer. 623 00:25:28,650 --> 00:25:32,510 Et maintenant, ce qui est bien, c'est que j'ai effectivement appris gedit, 624 00:25:32,510 --> 00:25:33,690 qu'il s'agit d'un programme C. 625 00:25:33,690 --> 00:25:36,470 Notez que mon texte en noir et blanc est maintenant un code couleur, ou 626 00:25:36,470 --> 00:25:39,330 la coloration syntaxique, qui tire juste mon attention sur le 627 00:25:39,330 --> 00:25:41,540 différentes parties selon le sens du programme. 628 00:25:41,540 --> 00:25:44,260 En haut à gauche là-bas, que mes programmes deviennent plus complexes, je suis 629 00:25:44,260 --> 00:25:47,060 va avoir un résumé de toutes les choses que j'ai écrites. 630 00:25:47,060 --> 00:25:48,050 Donc, c'est tout là-haut. 631 00:25:48,050 --> 00:25:52,350 Permettez-moi maintenant effectuer un zoom arrière et descendez à cette fenêtre de terminal. 632 00:25:52,350 --> 00:25:54,570 >> Donc, c'est peut-être nouveau pour beaucoup de gens. 633 00:25:54,570 --> 00:25:57,260 Si vous n'avez jamais utilisé un environnement de ligne de commande, vous n'avez jamais 634 00:25:57,260 --> 00:26:00,020 utilisée sous DOS, ou si vous n'avez jamais utilisé Linux, ou vous n'avez jamais ouvert 635 00:26:00,020 --> 00:26:02,550 Mac OS fenêtre de terminal, il ya beaucoup de choses que vous 636 00:26:02,550 --> 00:26:04,820 pourrait faire avec l'interface graphique, comme montrer du doigt, et en cliquant, et 637 00:26:04,820 --> 00:26:07,080 glissant et déplaçant, et autres, mais en général - 638 00:26:07,080 --> 00:26:09,360 certainement dans le monde de l'informatique - 639 00:26:09,360 --> 00:26:11,580 en utilisant une ligne de commande, où vous n'avez pas votre souris 640 00:26:11,580 --> 00:26:14,220 généralement, vous n'avez que votre clavier est en réalité beaucoup 641 00:26:14,220 --> 00:26:17,260 plus puissant que l'interface, une fois que vous s'acclimater à la 642 00:26:17,260 --> 00:26:18,580 diverses commandes. 643 00:26:18,580 --> 00:26:20,940 Et vous sorte de vous libérer de devoir pointer et cliquer 644 00:26:20,940 --> 00:26:21,690 à tout. 645 00:26:21,690 --> 00:26:23,890 Ainsi, dans gedit nous allons trier du avoir le meilleur des deux mondes. 646 00:26:23,890 --> 00:26:25,600 On peut faire glisser et déposer du texte, nous pouvons le voir 647 00:26:25,600 --> 00:26:26,840 agréable et un code de couleur. 648 00:26:26,840 --> 00:26:29,630 Mais quand vient le temps de lancer notre programme, nous allons parfois 649 00:26:29,630 --> 00:26:31,750 il suffit d'utiliser cette petite fenêtre ici. 650 00:26:31,750 --> 00:26:33,460 >> Je vais donc aller de l'avant et de le faire. 651 00:26:33,460 --> 00:26:36,420 Dans la fenêtre du bas en noir et blanc, je vais aller de l'avant 652 00:26:36,420 --> 00:26:37,890 et écrire bruit. 653 00:26:37,890 --> 00:26:40,130 Et clang est le nom d'un compilateur. 654 00:26:40,130 --> 00:26:43,310 C'est un programme qui convertit mon code source 655 00:26:43,310 --> 00:26:48,770 en, donc le code objet,. 656 00:26:48,770 --> 00:26:51,270 0 et de 1, que nous avons vu brièvement la semaine dernière. 657 00:26:51,270 --> 00:26:53,700 Rappelons que la semaine dernière, nous avons promis que nous allions 658 00:26:53,700 --> 00:26:55,920 passer de quelque chose comme ça - nous avons besoin d'être 659 00:26:55,920 --> 00:26:57,010 quelque chose comme ça - 660 00:26:57,010 --> 00:26:58,700 et ce n'est certainement pas quelque chose que l'homme va 661 00:26:58,700 --> 00:26:59,690 à faire manuellement. 662 00:26:59,690 --> 00:27:01,980 Ainsi, au lieu que nous allons utiliser un programme, et ce programme dans 663 00:27:01,980 --> 00:27:03,430 ce cas est appelé Clang. 664 00:27:03,430 --> 00:27:06,020 Et le nom de mon programme est hello.c. 665 00:27:06,020 --> 00:27:09,670 Ainsi, afin de compiler hello.c à partir du code source dans 666 00:27:09,670 --> 00:27:12,930 code objet, ou de 0 et de 1, cela devrait suffire pour faire juste 667 00:27:12,930 --> 00:27:14,820 ce et appuyez sur Entrée. 668 00:27:14,820 --> 00:27:16,850 >> Bon, rien ne semble avoir été le cas. 669 00:27:16,850 --> 00:27:20,450 Mais je sais maintenant, ou depuis la semaine dernière, que le nom par défaut de 670 00:27:20,450 --> 00:27:24,920 un programme, lorsqu'il est écrit en C, est follement appelé a.out. 671 00:27:24,920 --> 00:27:26,610 Nom le plus inintéressant que vous pourriez trouver. 672 00:27:26,610 --> 00:27:28,790 A est la première lettre de l'alphabet, est ce qui était 673 00:27:28,790 --> 00:27:29,960 sortie, mais ainsi soit-il. 674 00:27:29,960 --> 00:27:33,570 C'est mon programme, et maintenant point slash, comme nous le verrons, est 675 00:27:33,570 --> 00:27:36,170 en fait juste une sorte de fonction de sécurité, parce que 676 00:27:36,170 --> 00:27:38,250 a.out est un programme que j'ai écrit. 677 00:27:38,250 --> 00:27:39,650 Il n'est pas venu avec mon ordinateur, il est 678 00:27:39,650 --> 00:27:40,790 pas dans Program Files. 679 00:27:40,790 --> 00:27:42,910 Ce n'est pas dans le dossier Applications de Mac OS. 680 00:27:42,910 --> 00:27:45,740 J'ai besoin d'être explicite super avec l'ordinateur, et de dire 681 00:27:45,740 --> 00:27:49,030 ce programme, a.out, se trouve dans le dossier en cours, le 682 00:27:49,030 --> 00:27:50,260 répertoire courant. 683 00:27:50,260 --> 00:27:53,160 Et la façon dont vous représentez ce dans un environnement comme celui-ci 684 00:27:53,160 --> 00:27:57,070 est point représente le dossier où vous êtes; 685 00:27:57,070 --> 00:27:59,420 Et si. / A.out signifie simplement de fonctionner 686 00:27:59,420 --> 00:28:00,530 dans le dossier en cours. 687 00:28:00,530 --> 00:28:04,830 Et je lance ce avec la touche Entrée, et voila, mon tout premier programme. 688 00:28:04,830 --> 00:28:05,990 >> Maintenant, permettez-moi de prendre un peu de recul. 689 00:28:05,990 --> 00:28:08,280 Cette fenêtre est un peu petite, et se rendre compte que le fond 690 00:28:08,280 --> 00:28:10,340 à gauche de l'appareil est ici une autre icône. 691 00:28:10,340 --> 00:28:12,660 L'un est Chrome, qui devrait être assez familier, juste un web 692 00:28:12,660 --> 00:28:14,350 navigateur à l'intérieur de l'appareil. 693 00:28:14,350 --> 00:28:16,340 Et cette icône en noir et blanc est juste un 694 00:28:16,340 --> 00:28:17,720 fenêtre plus grande terminal. 695 00:28:17,720 --> 00:28:19,830 Donc, si ça devient un peu ennuyeux pour trier venons d' 696 00:28:19,830 --> 00:28:22,270 cette tranche minuscule d'une fenêtre avec laquelle se 697 00:28:22,270 --> 00:28:24,370 avec les programmes, nous pouvons le faire à la place. 698 00:28:24,370 --> 00:28:26,640 Et maintenant, permettez-moi de commencer à taper un peu plus tôt 699 00:28:26,640 --> 00:28:27,980 comme les commandes habituelles. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Donc ls est la commande pour l'inscription. 702 00:28:31,410 --> 00:28:33,900 Ainsi, dans un système Mac OS ou Windows, vous généralement le double-cliquez sur un 703 00:28:33,900 --> 00:28:36,510 dossier, puis, voilà, vous voyez tous les fichiers divers 704 00:28:36,510 --> 00:28:37,210 et dossiers. 705 00:28:37,210 --> 00:28:39,650 Dans un environnement de ligne de commande, où vous ne pouvez taper 706 00:28:39,650 --> 00:28:42,390 commandes ou du texte, ls est l'équivalent. 707 00:28:42,390 --> 00:28:44,380 Alors montrez-moi ce qu'il ya dans ce répertoire. 708 00:28:44,380 --> 00:28:46,540 >> Maintenant, il ya un tas de choses ici qui est à la fois un peu 709 00:28:46,540 --> 00:28:48,190 familier et un peu familier. 710 00:28:48,190 --> 00:28:50,740 Mais notez que, tout comme Windows et Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 a un dossier de bureau. 712 00:28:52,190 --> 00:28:54,520 Ainsi, toutes les icônes qui sont sur mon bureau se produire 713 00:28:54,520 --> 00:28:55,650 d'être dans ce dossier. 714 00:28:55,650 --> 00:28:57,250 Il s'agit d'un dossier de téléchargements, des trucs qui 715 00:28:57,250 --> 00:28:58,890 Chrome pourrait y mettre. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 Ainsi, l'appareil est livré avec un support intégré pour Dropbox 718 00:29:01,820 --> 00:29:04,500 de sorte que sur le semestre, vous pouvez synchroniser avec votre Dropbox 719 00:29:04,500 --> 00:29:06,420 compte afin que tous vos programmes sont sauvegardés. 720 00:29:06,420 --> 00:29:08,050 Ils sont accessibles sur votre autre ordinateur. 721 00:29:08,050 --> 00:29:09,780 Si quelque chose ne va jamais de mal avec l'appareil, vous pouvez 722 00:29:09,780 --> 00:29:11,340 très facilement récupérer de Dropbox. 723 00:29:11,340 --> 00:29:12,940 Donc, ce dossier est là pour ça. 724 00:29:12,940 --> 00:29:14,660 Il ya deux fichiers que j'ai faites - hello.c 725 00:29:14,660 --> 00:29:16,540 et a.out. 726 00:29:16,540 --> 00:29:18,530 Et puis vers la droite, il ya quelques autres dossiers que nous allons 727 00:29:18,530 --> 00:29:20,710 arriver à vers la fin de la session, avec le Web 728 00:29:20,710 --> 00:29:21,540 programmation. 729 00:29:21,540 --> 00:29:26,160 Alors, quand je fais. / A.out, Entrez, c'est dire aller 730 00:29:26,160 --> 00:29:29,460 dans le répertoire que je suis dans le répertoire courant, et exécutez le 731 00:29:29,460 --> 00:29:32,465 programme appelé a.out là. 732 00:29:32,465 --> 00:29:35,810 >> D'accord, c'est bien beau, mais ce n'est pas tout ce qui 733 00:29:35,810 --> 00:29:38,550 impérieuse d'écrire un programme appelé a.out aider. 734 00:29:38,550 --> 00:29:40,790 Nous pouvons donc faire un peu différemment. 735 00:29:40,790 --> 00:29:43,980 Donc, au lieu de simplement courir clang, hello.c, ajoutons 736 00:29:43,980 --> 00:29:46,850 ce qu'on appelle un argument de ligne de commande. 737 00:29:46,850 --> 00:29:50,730 Ainsi, un argument de ligne de commande ou un interrupteur dans ce cas, est tout simplement 738 00:29:50,730 --> 00:29:54,930 un autre mot ou une phrase que vous tapez à l'invite après 739 00:29:54,930 --> 00:29:56,290 le programme que vous souhaitez exécuter. 740 00:29:56,290 --> 00:29:59,970 Donc dans ce cas, clang est le programme que je veux courir, o- 741 00:29:59,970 --> 00:30:03,480 Sortie moyen d'un fichier qui n'est plus appelé a.out. 742 00:30:03,480 --> 00:30:07,510 Sortie d'un fichier appelé bonjour, et faire en compilant le 743 00:30:07,510 --> 00:30:10,200 dernier mot sur la ligne, hello.c. 744 00:30:10,200 --> 00:30:13,200 Donc en bref, il s'agit d'une amélioration très marginale, par lequel 745 00:30:13,200 --> 00:30:15,850 au lieu d'avoir ce fichier a.out bêtement nommé, 746 00:30:15,850 --> 00:30:21,430 Je peux maintenant faire clang-o bonjour, puis hello.c, et 747 00:30:21,430 --> 00:30:22,530 puis appuyez sur Entrée. 748 00:30:22,530 --> 00:30:25,510 Rien ne semble se passer, mais là encore, un peu comme avec 0 - lorsque 749 00:30:25,510 --> 00:30:28,510 rien ne semble arriver que signifie rien de mal est arrivé - 750 00:30:28,510 --> 00:30:31,460 nous allons donc faire ls maintenant Entrez, et en effet je maintenant 751 00:30:31,460 --> 00:30:32,780 un programme bonjour. 752 00:30:32,780 --> 00:30:38,510 Donc, si je tape bonjour maintenant, command not found. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Donc, tout à fait exact. 755 00:30:40,220 --> 00:30:43,170 Ainsi, parce que ce programme que j'ai écrit, et il n'est pas venu avec 756 00:30:43,170 --> 00:30:45,810 l'ordinateur,. / bonjour, Entrée, signifie 757 00:30:45,810 --> 00:30:47,350 Je suis maintenant en cours d'exécution bonjour. 758 00:30:47,350 --> 00:30:48,440 >> Donc, c'est tout là-bas. 759 00:30:48,440 --> 00:30:51,070 Maintenant, ce que nous finirons par arriver à la ligne de commande de plus en plus 760 00:30:51,070 --> 00:30:54,110 arguments qui nous permettent de faire plus, mais seulement pour ceux pour 761 00:30:54,110 --> 00:30:57,760 dont cela pourrait être vieux chapeau, permettez-moi de réellement entrer dans une 762 00:30:57,760 --> 00:31:01,910 répertoire ici et vous donner un avant-goût de la façon dont le monde nous 763 00:31:01,910 --> 00:31:05,770 pourrait aller sur l'implémentation Bonjour tout le monde. 764 00:31:05,770 --> 00:31:10,730 Permettez-moi de parler ici, et je vais l'ouvrir. 765 00:31:10,730 --> 00:31:13,090 Donc en fait, je vais vous expliquer ce que je fais, donc 766 00:31:13,090 --> 00:31:15,610 ce qui est utile. 767 00:31:15,610 --> 00:31:17,410 Laissez-moi revenir. 768 00:31:17,410 --> 00:31:19,620 >> Donc, je fais ça depuis longtemps. 769 00:31:19,620 --> 00:31:23,030 Donc remarquerez sur la droite il ya un couple de 770 00:31:23,030 --> 00:31:26,940 répertoires qui sont curieusement nommés source1m et source1w. 771 00:31:26,940 --> 00:31:28,830 Ceci est juste stupide convention que nous utilisons. 772 00:31:28,830 --> 00:31:31,825 Source signifie simplement que le code source, 1 signifie qu'il s'agit d'une semaine, et 773 00:31:31,825 --> 00:31:34,000 m signifie que c'est lundi, et w signifie que c'est mercredi. 774 00:31:34,000 --> 00:31:34,900 Donc, rien cryptique là. 775 00:31:34,900 --> 00:31:37,830 C'est juste la notation sténographique. 776 00:31:37,830 --> 00:31:39,860 Ces choses-là sont des dossiers bleus, autrement connu comme 777 00:31:39,860 --> 00:31:40,630 répertoires. 778 00:31:40,630 --> 00:31:43,870 Je veux aller dans ce dossier aujourd'hui, et sur un ordinateur normal 779 00:31:43,870 --> 00:31:45,710 Je ne pouvais tout simplement double-cliquer sur une icône de dossier et 780 00:31:45,710 --> 00:31:46,810 il ya tous mes fichiers. 781 00:31:46,810 --> 00:31:49,270 Mais dans un environnement de ligne de commande, je ne peux pas tout faire 782 00:31:49,270 --> 00:31:52,640 que, si au lieu, je dois changer de répertoire manuellement. 783 00:31:52,640 --> 00:31:57,900 Donc, si je tape cd puis source1m, Enter, vous remarquerez que 784 00:31:57,900 --> 00:32:01,180 mon prompt, la chose en blanc à gauche, vient de changer. 785 00:32:01,180 --> 00:32:03,690 Et si en effet, quand il vient d'être dit entre parenthèses, puis les 786 00:32:03,690 --> 00:32:06,450 gribouillis peu, le symbole tilde, qui voulait juste dire que j'étais 787 00:32:06,450 --> 00:32:08,800 dans le répertoire de John Harvard, ses Mes Documents, 788 00:32:08,800 --> 00:32:10,390 ses dossiers personnels. 789 00:32:10,390 --> 00:32:14,000 Mais maintenant, il est dit entre parenthèses ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Cela signifie juste que je suis dans un dossier appelé source1m 791 00:32:17,090 --> 00:32:19,160 c'est dans le répertoire de John Harvard. 792 00:32:19,160 --> 00:32:22,030 Donc, si je veux maintenant lister les fichiers dans ce dossier, facile 793 00:32:22,030 --> 00:32:25,300 question, je tape juste ls. 794 00:32:25,300 --> 00:32:28,860 Et maintenant je vois tous les fichiers que je pré-créé pour les 795 00:32:28,860 --> 00:32:31,020 conférence, qui tous, ou la plupart, se produire 796 00:32:31,020 --> 00:32:32,740 pour se terminer par. c. 797 00:32:32,740 --> 00:32:36,210 >> Alors laissez-moi aller de l'avant maintenant et exécuter gedit d'un programme appelé 798 00:32:36,210 --> 00:32:39,140 holloway.c, qui est écrit par un pirate aléatoire 799 00:32:39,140 --> 00:32:42,920 sur l'Internet, qui ressemble un peu à ce sujet. 800 00:32:42,920 --> 00:32:44,880 Et nous n'allons pas passer par celui-ci dans toute 801 00:32:44,880 --> 00:32:48,530 détail, mais pour ceux qui sont plus à l'aise, en particulier, si 802 00:32:48,530 --> 00:32:50,935 vous voulez faire une supposition quant à ce que ce programme fait ici. 803 00:32:57,950 --> 00:32:59,990 Rassurez-vous, si vous êtes plus ou moins confortable, 804 00:32:59,990 --> 00:33:01,655 nous ne sommes même pas en arriver à ce genre de chose avant la fin de 805 00:33:01,655 --> 00:33:02,160 ce semestre. 806 00:33:02,160 --> 00:33:05,390 C'est ce qui est un exemple d'un concours obscurci C, ce qui 807 00:33:05,390 --> 00:33:08,390 moyen écrire le programme le plus énigmatique peut-être vous cherchez 808 00:33:08,390 --> 00:33:10,820 peut faire mieux que d'autres gens intelligents, qui sont également 809 00:33:10,820 --> 00:33:13,010 d'essayer d'écrire des choses et de montrer qu'ils peuvent écrire 810 00:33:13,010 --> 00:33:14,280 des choses plus énigmatiques que vous. 811 00:33:14,280 --> 00:33:17,290 Donc, ce n'est pas un exemple d'un programme bien écrit de la 812 00:33:17,290 --> 00:33:21,260 point de vue du style, c'est un exemple d'un programme qui 813 00:33:21,260 --> 00:33:22,860 remporte un concours, pour les personnes qui tentent d' 814 00:33:22,860 --> 00:33:24,090 être vague et abstraite. 815 00:33:24,090 --> 00:33:27,670 >> Donc, si nous courons cette chose, laissez-moi aller dans ma fenêtre de terminal, 816 00:33:27,670 --> 00:33:28,110 pour ainsi dire. 817 00:33:28,110 --> 00:33:29,650 Ainsi, cet environnement en noir et blanc est appelé le 818 00:33:29,650 --> 00:33:31,160 fenêtre de terminal en général. 819 00:33:31,160 --> 00:33:32,600 Permettez-moi aller de l'avant et de le compiler. 820 00:33:32,600 --> 00:33:34,440 Je ne vais pas utiliser clang, parce que ce programme est un 821 00:33:34,440 --> 00:33:36,340 peu obscur et il a besoin d'un autre 822 00:33:36,340 --> 00:33:38,190 compilateur, l'un appelé du CCG. 823 00:33:38,190 --> 00:33:39,200 Mais il fait la même chose. 824 00:33:39,200 --> 00:33:41,130 Il prend le code source, le code objet. 825 00:33:41,130 --> 00:33:43,940 Et maintenant, si je n'ai a.out, ce programme vous 826 00:33:43,940 --> 00:33:46,065 viens de voir cela. 827 00:33:49,220 --> 00:33:51,170 Alors celui-là cette année a remporté ce concours. 828 00:33:51,170 --> 00:33:54,020 Quoi qu'il en soit, nous n'allons pas dans cette direction, en tant que tel. 829 00:33:54,020 --> 00:33:57,400 >> Donc, nous allons effectivement essayer de démêler maintenant ce que nous pouvons faire 830 00:33:57,400 --> 00:33:59,540 avec ces blocs de construction de base pour faire de plus en plus 831 00:33:59,540 --> 00:34:00,590 des programmes intéressants. 832 00:34:00,590 --> 00:34:02,800 Nous avons donc écrit un programme, nous avons exécuté un programme. 833 00:34:02,800 --> 00:34:05,780 Maintenant, nous pouvons simplifier et de ne plus avoir à écrire 834 00:34:05,780 --> 00:34:07,210 le cliquetis mot à l'invite. 835 00:34:07,210 --> 00:34:10,710 Il s'avère que nos programmes obtenir plus cryptique, nous pouvons, ou 836 00:34:10,710 --> 00:34:14,699 plus complexe, plutôt, nous pouvons exécuter cette commande. 837 00:34:14,699 --> 00:34:17,610 Permettez-moi de revenir à mon répertoire personnel, pour ainsi dire, permettez-moi 838 00:34:17,610 --> 00:34:20,750 remove - rm est la commande remove - Je vais retirer 839 00:34:20,750 --> 00:34:23,060 le fichier appelé a.out et bonjour. 840 00:34:23,060 --> 00:34:25,489 Et remarquez maintenant dans un environnement de ligne de commande, un peu comme dans 841 00:34:25,489 --> 00:34:27,800 une interface graphique, vous y êtes invité. Je ne peux pas cliquer sur un bouton bien, je 842 00:34:27,800 --> 00:34:31,040 avoir à taper y pour oui, y pour oui. 843 00:34:31,040 --> 00:34:33,460 Et maintenant, si je tape ls nouveau, notez que ceux verte 844 00:34:33,460 --> 00:34:35,469 programmes a.out - et bonjour - 845 00:34:35,469 --> 00:34:35,734 ont disparu. 846 00:34:35,734 --> 00:34:37,340 Méfiez-vous rm. 847 00:34:37,340 --> 00:34:39,739 Il peut faire de mauvaises choses, tout comme vous pouvez en faisant glisser 848 00:34:39,739 --> 00:34:40,810 choses à la poubelle. 849 00:34:40,810 --> 00:34:43,989 >> Alors maintenant, nous allons aller de l'avant - et je ne pouvais le faire - clang-o 850 00:34:43,989 --> 00:34:45,139 bonjour, bonjour - 851 00:34:45,139 --> 00:34:46,884 Je suis déjà ennuyé tapant cette commande. 852 00:34:46,884 --> 00:34:48,080 Même si j'ai tapé un peu vite. 853 00:34:48,080 --> 00:34:51,870 Nous pouvons donc plutôt faire prendre bonjour. 854 00:34:51,870 --> 00:34:53,880 Donc, assurez n'est pas un compilateur. 855 00:34:53,880 --> 00:34:57,720 C'est juste un programme convivial qui est livré avec Linux, dans ce 856 00:34:57,720 --> 00:34:59,070 cas - le système d'exploitation - 857 00:34:59,070 --> 00:35:02,480 qui automatise le processus d'élaboration des programmes. 858 00:35:02,480 --> 00:35:05,555 Ainsi, au lieu de se souvenir clang-o nom de fichier et 859 00:35:05,555 --> 00:35:08,190 puis ainsi de suite, surtout une fois que ces lignes s'allongent et 860 00:35:08,190 --> 00:35:10,110 plus, je peux faire il suffit d'écrire. 861 00:35:10,110 --> 00:35:12,030 Et cela va cracher tout un tas de trucs qui 862 00:35:12,030 --> 00:35:13,940 nous finirons par voir ce semestre. 863 00:35:13,940 --> 00:35:17,500 Mais remarquez maintenant si ls de type I, bonjour est de retour dans mon répertoire. 864 00:35:17,500 --> 00:35:19,850 Et en effet, je peux le lancer avec. / Bonjour. 865 00:35:19,850 --> 00:35:23,330 Donc, assurez automatise tout le processus d'exécution de ce qui était, 866 00:35:23,330 --> 00:35:26,910 dans ce cas, beaucoup plus long, de commandes plus complexes. 867 00:35:26,910 --> 00:35:29,060 Donc, nous allons commencer à utiliser la marque, juste parce que c'est beaucoup 868 00:35:29,060 --> 00:35:30,530 plus convivial. 869 00:35:30,530 --> 00:35:32,770 >> Mais maintenant, nous allons faire un programme plus intéressant 870 00:35:32,770 --> 00:35:34,650 que juste dire bonjour. 871 00:35:34,650 --> 00:35:38,680 Ainsi, dans les programmes que nous avons écrit jusqu'ici il n'y a principale. 872 00:35:38,680 --> 00:35:40,890 C'est juste la chose par défaut qui débute le tout hors tension. 873 00:35:40,890 --> 00:35:43,340 Mais il ya d'autres fonctions là-bas aussi, et 874 00:35:43,340 --> 00:35:45,890 stdio.h est la chose que nous avons vu dans la partie supérieure de notre 875 00:35:45,890 --> 00:35:48,480 fichier avant, et c'est ce qui est connu sous le nom de la bibliothèque standard. 876 00:35:48,480 --> 00:35:51,300 A l'intérieur de la bibliothèque standard est un tas de fonctions 877 00:35:51,300 --> 00:35:53,850 que quelqu'un d'autre a écrit, et nous pouvons commencer à utiliser ces 878 00:35:53,850 --> 00:35:55,050 fonctions d'écrire plus 879 00:35:55,050 --> 00:35:56,760 programmes intéressants nous-mêmes. 880 00:35:56,760 --> 00:35:58,370 >> Permettez-moi de revenir à l'appareil. 881 00:35:58,370 --> 00:35:59,820 Je vais fermer cette fenêtre de terminal. 882 00:35:59,820 --> 00:36:02,630 Je vais fermer les choses que nous avons écrit plus haut, et juste aller 883 00:36:02,630 --> 00:36:07,350 dans hello.c, et remarquez maintenant, je peux faire ce qui suit. 884 00:36:07,350 --> 00:36:09,730 Bonjour tout le monde n'est pas du tout intéressant, je tiens à 885 00:36:09,730 --> 00:36:11,770 personnaliser ce programme pour moi. 886 00:36:11,770 --> 00:36:13,440 Ainsi, au lieu de dire le monde, je vais 887 00:36:13,440 --> 00:36:14,830 aller de l'avant et de dire - 888 00:36:14,830 --> 00:36:16,880 Je pourrais taper David - mais ce n'est vraiment sorte de 889 00:36:16,880 --> 00:36:18,050 fondamentalement les mêmes. 890 00:36:18,050 --> 00:36:19,970 Mais nous allons essayer cette idée d'espace réservé. 891 00:36:19,970 --> 00:36:24,460 Rappelons que dans C, au lieu de printf, nous avions ces 892 00:36:24,460 --> 00:36:28,110 espaces réservés, et il ya plus de% d juste. 893 00:36:28,110 --> 00:36:31,150 Ainsi était% d, contrôle d'intégrité rapide. 894 00:36:31,150 --> 00:36:32,310 Bon, nombre décimal, c'est tout. 895 00:36:32,310 --> 00:36:33,860 Chiffres après la virgule, c'est tout. 896 00:36:33,860 --> 00:36:37,755 Donc, c%, que nous allons rencontrer, sera un personnage. 897 00:36:37,755 --> 00:36:40,530 Mettez un personnage ici, une lettre de a à z, 898 00:36:40,530 --> 00:36:41,600 signe de ponctuation ou. 899 00:36:41,600 --> 00:36:45,590 Un caractère unique,% f, quelqu'un sait d'autres langues? 900 00:36:45,590 --> 00:36:47,020 Ainsi, une valeur à virgule flottante. 901 00:36:47,020 --> 00:36:47,880 Un nombre réel. 902 00:36:47,880 --> 00:36:51,550 Donc pas un nombre décimal - il s'agit en fait d'un nombre réel avec 903 00:36:51,550 --> 00:36:54,130 un point décimal, et un certain nombre de chiffres à gauche 904 00:36:54,130 --> 00:36:55,520 et à droite de celui-ci. 905 00:36:55,520 --> 00:36:58,060 % S, ficelle. 906 00:36:58,060 --> 00:36:59,530 C'est celui que nous allons voir assez souvent. 907 00:36:59,530 --> 00:37:02,140 Une chaîne, encore une fois, c'est juste un mot, une phrase, une séquence de 908 00:37:02,140 --> 00:37:03,330 caractères individuels. 909 00:37:03,330 --> 00:37:06,730 Et enfin, lld? 910 00:37:06,730 --> 00:37:08,210 Il s'agit donc plus d'une affaire coin. 911 00:37:08,210 --> 00:37:09,850 Long, décimal longtemps. 912 00:37:09,850 --> 00:37:12,035 Donc, si vous voulez non seulement un nombre qui est ce grand, vous 913 00:37:12,035 --> 00:37:14,160 veulent un plus grand nombre, vous allez devoir indiquer à 914 00:37:14,160 --> 00:37:16,400 l'ordinateur sur lequel il est d'une taille particulière. 915 00:37:16,400 --> 00:37:17,610 >> Donc, nous allons modifier cela un peu petite. 916 00:37:17,610 --> 00:37:20,610 Plutôt que de coder en dur dans David, laissez-moi un peu 917 00:37:20,610 --> 00:37:22,460 dynamiquement dire s%. 918 00:37:22,460 --> 00:37:25,790 Donc, mettez% s ici, qui est un espace réservé pour une chaîne. 919 00:37:25,790 --> 00:37:30,500 Alors laissez-moi faire une virgule, puis «David» ici. 920 00:37:30,500 --> 00:37:32,770 Maintenant, ce n'est pas du tout intellectuellement intéressant, 921 00:37:32,770 --> 00:37:35,060 parce que tout ce que j'ai fait aujourd'hui est vraiment créer plus de travail pour 922 00:37:35,060 --> 00:37:35,790 l'ordinateur. 923 00:37:35,790 --> 00:37:39,660 Plutôt que d'indiquer à l'ordinateur ne présente tout à la fois, je suis maintenant 924 00:37:39,660 --> 00:37:43,760 en disant cela et insérer une chaîne ici un jour, virgule, 925 00:37:43,760 --> 00:37:44,950 C'est ici que chaîne. 926 00:37:44,950 --> 00:37:47,220 Ce n'est donc pas une meilleure amélioration, mais c'est au moins 927 00:37:47,220 --> 00:37:49,010 une étape vers un programme plus intéressant. 928 00:37:49,010 --> 00:37:51,240 Parce que maintenant, laissez-moi aller de l'avant et faire de cette fenêtre un peu 929 00:37:51,240 --> 00:37:56,850 plus, laissez-moi aller de l'avant et exécutez make bonjour. 930 00:37:56,850 --> 00:38:01,340 Et maintenant,. / A.out ne fonctionne pas, pourquoi? 931 00:38:03,880 --> 00:38:05,570 Très bien, maintenant il s'appelle bonjour. 932 00:38:05,570 --> 00:38:09,400 Donc, encore une fois faire, et aussi avec un bruit o-, rebaptisé 933 00:38:09,400 --> 00:38:11,120 programme pour avoir quelque chose de plus intéressant. 934 00:38:11,120 --> 00:38:13,060 Et voilà: maintenant, il dit bonjour David. 935 00:38:13,060 --> 00:38:14,590 >> Bon, encore un programme stupide. 936 00:38:14,590 --> 00:38:18,070 Alors maintenant, nous allons effectivement revenir ici et d'introduire la notion 937 00:38:18,070 --> 00:38:18,810 d'une variable. 938 00:38:18,810 --> 00:38:21,600 Ce ne serait pas bien si je pouvais déclarer une variable 939 00:38:21,600 --> 00:38:23,150 dont le type est une chaîne? 940 00:38:23,150 --> 00:38:26,720 Et la valeur de la variable provient en réalité de l'utilisateur 941 00:38:26,720 --> 00:38:27,810 lui-même. 942 00:38:27,810 --> 00:38:30,240 Ainsi arbitraire, je vais appeler ma variable s, ce qui est 943 00:38:30,240 --> 00:38:32,410 juste une convention courant quand vous avez une variable appelée 944 00:38:32,410 --> 00:38:33,250 la chaîne. 945 00:38:33,250 --> 00:38:35,670 Je vais faire signe égal, puis je vais appeler un 946 00:38:35,670 --> 00:38:38,030 fonction appelée GetString. 947 00:38:38,030 --> 00:38:40,830 Donc GetString n'est pas quelque chose qui est intégré à C. C'est 948 00:38:40,830 --> 00:38:43,330 une fonction que le personnel CS50 écrit, vraiment juste pour 949 00:38:43,330 --> 00:38:45,670 ces deux premières semaines, afin de simplifier le processus de 950 00:38:45,670 --> 00:38:49,450 obtenir les commentaires des utilisateurs et obtenir l'apport utilisateur sous la forme 951 00:38:49,450 --> 00:38:51,960 des chaînes ou des nombres, et autres. 952 00:38:51,960 --> 00:38:55,520 Donc GetString est comme printf, mais de toute évidence plutôt que 953 00:38:55,520 --> 00:38:58,700 imprimer ça va faire ce que son nom l'indique, obtenir une chaîne. 954 00:38:58,700 --> 00:39:00,970 Mais pour utiliser GetString, nous allons devoir faire un changement 955 00:39:00,970 --> 00:39:03,180 ici, au-delà de cela. 956 00:39:03,180 --> 00:39:07,170 Donc intuitivement, ce programme, nous l'espérons, va en quelque sorte 957 00:39:07,170 --> 00:39:09,700 obtenir une chaîne de l'utilisateur, et alors qu'est-ce qu'il va faire 958 00:39:09,700 --> 00:39:11,460 avec cette chaîne, appelée l? 959 00:39:15,060 --> 00:39:16,470 Il va tout simplement de l'imprimer, non? 960 00:39:16,470 --> 00:39:18,870 Toujours pas un programme stimulant parce que tout ce qui se passe 961 00:39:18,870 --> 00:39:22,160 à faire est de brancher cette valeur dans laquelle% s 962 00:39:22,160 --> 00:39:23,750 dit qu'il devrait aller. 963 00:39:23,750 --> 00:39:25,290 >> Nous allons donc au moins voir dans cette action. 964 00:39:25,290 --> 00:39:27,040 Permettez-moi de sauver et effectuer un zoom arrière. 965 00:39:27,040 --> 00:39:30,280 Maintenant, dans ma fenêtre de terminal ici-bas, la petite tranche d'un seul, 966 00:39:30,280 --> 00:39:32,760 Permettez-moi encore une fois faire prendre bonjour. 967 00:39:32,760 --> 00:39:35,160 D'accord, et ah, merde, j'ai reçu un tas d'erreurs. 968 00:39:35,160 --> 00:39:38,020 Permettez-moi de défiler vers le haut, et nous voyons notre premier - 969 00:39:38,020 --> 00:39:40,430 nous allons donc effectivement le faire dans une fenêtre encore plus grand si vous 970 00:39:40,430 --> 00:39:42,110 peut voir à quel point j'ai foiré - 971 00:39:42,110 --> 00:39:44,460 alors assurez-bonjour. 972 00:39:44,460 --> 00:39:46,540 D'accord, c'est une catastrophe, non? 973 00:39:46,540 --> 00:39:48,740 J'ai écrit trois lignes de code, et 974 00:39:48,740 --> 00:39:50,070 il m'a donné 12 erreurs. 975 00:39:50,070 --> 00:39:51,980 Alors, pourquoi est-ce? 976 00:39:51,980 --> 00:39:55,720 Donc, heureusement, souvent quand vous voyez beaucoup, beaucoup d'erreurs 977 00:39:55,720 --> 00:39:57,730 cracher à la fois, c'est vraiment juste parce que vous avez 978 00:39:57,730 --> 00:39:59,760 confondre l'ordinateur ici. 979 00:39:59,760 --> 00:40:02,330 Et il reste confuse au moment où il descend ici. 980 00:40:02,330 --> 00:40:04,400 Et il commence juste à faire trébucher, et trébuchant, et 981 00:40:04,400 --> 00:40:07,310 cracher plus de choses effrayant que s'applique réellement. 982 00:40:07,310 --> 00:40:10,120 Donc, en général, toujours commencer par le haut. 983 00:40:10,120 --> 00:40:13,320 >> Ainsi, l'exemple le plus haut de rouge, le 984 00:40:13,320 --> 00:40:14,740 message d'erreur est le suivant. 985 00:40:14,740 --> 00:40:17,750 Utilisation de chaîne de l'identificateur non déclaré, ai-je 986 00:40:17,750 --> 00:40:19,160 signifie standard? 987 00:40:19,160 --> 00:40:19,900 Je n'ai pas. 988 00:40:19,900 --> 00:40:24,180 Je voulais chaîne, mais c'est parce que, aussi, la chaîne de mots 989 00:40:24,180 --> 00:40:26,020 que je continuer à utiliser verbalement fait 990 00:40:26,020 --> 00:40:27,240 n'existe pas dans C supporte. 991 00:40:27,240 --> 00:40:29,470 C'est quelque chose que nous allons utiliser seulement pour la première semaine ou deux 992 00:40:29,470 --> 00:40:34,500 ici, mais il existe dans un fichier appelé cs50.h. 993 00:40:34,500 --> 00:40:37,110 Donc pour l'instant, de savoir qu'il ya cette autre bibliothèque que la 994 00:40:37,110 --> 00:40:39,330 Le personnel a écrit, il a été écrit plus récemment que 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Mais à l'intérieur de cs50.h est une définition, un synonyme de 997 00:40:45,020 --> 00:40:48,310 sortes, qui crée cette chaîne de mots. 998 00:40:48,310 --> 00:40:50,890 >> Alors maintenant, permettez-moi de revenir à ma fenêtre de terminal. 999 00:40:50,890 --> 00:40:53,200 Je vais effacer tout ce gâchis en appuyant sur Ctrl-L. Nous allons simplement 1000 00:40:53,200 --> 00:40:55,700 essuyer tout propre, et je vais aller de l'avant et de faire 1001 00:40:55,700 --> 00:40:57,860 Bonjour à nouveau, Entrée. 1002 00:40:57,860 --> 00:40:59,440 Donc ce qui s'est passé aujourd'hui? 1003 00:40:59,440 --> 00:41:01,150 Maintenant, toutes ces erreurs sont partis. 1004 00:41:01,150 --> 00:41:02,230 Alors qu'ai-je vraiment fait? 1005 00:41:02,230 --> 00:41:05,920 J'ai simplement appris l'ordinateur de cette chaîne existe, et il est 1006 00:41:05,920 --> 00:41:07,890 dans ce fichier appelé cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Alors arrêtez de vous plaindre, parce que maintenant vous savez où trouver 1008 00:41:10,930 --> 00:41:13,220 déclaration de cette fonction pour ainsi dire. 1009 00:41:13,220 --> 00:41:15,200 Là où elle existe dans le monde. 1010 00:41:15,200 --> 00:41:18,820 >> Alors maintenant, je vais aller de l'avant et exécutez bonjour. 1011 00:41:18,820 --> 00:41:22,300 Il me semble avoir une boucle infinie, rien ne se passe d'. 1012 00:41:25,530 --> 00:41:26,870 J'ai donc besoin de taper quelque chose ici, à droite. 1013 00:41:26,870 --> 00:41:29,650 La première ligne de code dans mon programme a été GetString. 1014 00:41:29,650 --> 00:41:31,750 Donc, il est littéralement m'attend pour obtenir une chaîne. 1015 00:41:31,750 --> 00:41:33,680 Dans ce sens, oui, c'est une boucle infinie. 1016 00:41:33,680 --> 00:41:36,520 Apparemment, dans GetString est le comportement par défaut que nous 1017 00:41:36,520 --> 00:41:37,510 écrit - le personnel - 1018 00:41:37,510 --> 00:41:39,550 qui dit simplement attendre et attendre et attendre et attendre et attendre, 1019 00:41:39,550 --> 00:41:42,550 jusqu'à ce que l'utilisateur vous donne une chaîne en tapant quelque chose po 1020 00:41:42,550 --> 00:41:46,000 Alors laissez-moi aller de l'avant et tapez D-un-v - i-d, Entrée. 1021 00:41:46,000 --> 00:41:47,420 Et ça y est, bonjour David. 1022 00:41:47,420 --> 00:41:50,430 >> Maintenant, est-ce vraiment l'impression qu'il s'agit seulement d'un acte? 1023 00:41:50,430 --> 00:41:52,810 Laissez-moi aller de l'avant et taper Tommy. 1024 00:41:52,810 --> 00:41:54,740 Entrez, d'accord, semble porter ses fruits. 1025 00:41:54,740 --> 00:41:59,130 Travaux pour Rob, œuvres pour Zamyla, travaille pour - okay. 1026 00:41:59,130 --> 00:42:01,000 Donc, il va travailler, le plus probable. 1027 00:42:01,000 --> 00:42:05,030 Donc, il devrait imprimer tout ce que nous réellement donner, 1028 00:42:05,030 --> 00:42:07,830 et l'on peut être un peu difficile ici. 1029 00:42:07,830 --> 00:42:12,130 Voyons voir si nous faisons quelque chose comme bonjour. 1030 00:42:12,130 --> 00:42:18,000 Peut aller là-bas, nous allons voir, copier, coller. 1031 00:42:18,000 --> 00:42:19,950 Je ne vais pas être en mesure de le coller plusieurs fois ici. 1032 00:42:19,950 --> 00:42:24,410 Colle, d'accord, Maj + Ctrl + V. Donc, ce qui pourrait 1033 00:42:24,410 --> 00:42:26,970 arriver que c'est mauvais ici? 1034 00:42:26,970 --> 00:42:27,770 >> Bon, alors, faute de segmentation. 1035 00:42:27,770 --> 00:42:29,710 Ainsi, certains d'entre vous ayant des antécédents antérieurs saurez que 1036 00:42:29,710 --> 00:42:32,710 généralement, ce qui donne beaucoup d'entrées ordinateurs quand ils sont 1037 00:42:32,710 --> 00:42:36,140 sans doute pas destiné à recevoir des noms longs comme celui-ci - de mauvaises 1038 00:42:36,140 --> 00:42:36,740 bouger les choses. 1039 00:42:36,740 --> 00:42:39,230 En effet, dans le monde du web, aussi, cela arrive assez souvent, 1040 00:42:39,230 --> 00:42:41,000 de sorte que lorsque vous concevez un site Web, lorsque vous êtes 1041 00:42:41,000 --> 00:42:43,850 conception Facebook, vous avez à prendre des décisions arbitraires des 1042 00:42:43,850 --> 00:42:45,370 avant, comme combien de temps quelqu'un 1043 00:42:45,370 --> 00:42:46,360 Facebook username être? 1044 00:42:46,360 --> 00:42:48,050 Ou combien de temps prénom d'une personne soit? 1045 00:42:48,050 --> 00:42:50,110 Combien de temps durera le numéro de téléphone de quelqu'un être, etc. 1046 00:42:50,110 --> 00:42:53,580 Et si les programmeurs faire des hypothèses douteuses, les programmes de briser 1047 00:42:53,580 --> 00:42:56,640 parce que vous essayez de leur donner plus de puissance, plus d'entrée 1048 00:42:56,640 --> 00:42:58,330 plutôt que ce qu'ils ont de la mémoire. 1049 00:42:58,330 --> 00:43:01,860 Ou RAM allouée pour elle, et si maintenant je la touche Entrée, 1050 00:43:01,860 --> 00:43:04,640 que le programme effectivement travaillées, parce que nous étions à la bibliothèque 1051 00:43:04,640 --> 00:43:06,790 et nous avons même anticipé ce cas particulier. 1052 00:43:06,790 --> 00:43:10,900 Mais sans doute ce semestre, vous allez écrire au moins un 1053 00:43:10,900 --> 00:43:13,280 programme qui va dire ces mots. 1054 00:43:13,280 --> 00:43:16,520 Rappelez-vous de cette semaine à partir de maintenant, peut-être dans deux jours. 1055 00:43:16,520 --> 00:43:18,760 Segmentation fault est une mauvaise chose. 1056 00:43:18,760 --> 00:43:21,920 Il fera référence à votre faire quelque chose que l'ordinateur 1057 00:43:21,920 --> 00:43:23,310 n'avait pas prévu. 1058 00:43:23,310 --> 00:43:25,810 Et dans ce cas, vous, le programmeur, ne s'attendait pas. 1059 00:43:25,810 --> 00:43:27,720 Tout comme ce que ce tas de chaussettes, il y avait divers 1060 00:43:27,720 --> 00:43:29,520 cas de coin, nous aurions pu rencontré. 1061 00:43:29,520 --> 00:43:32,340 De même, dans les programmes si vous ne prévoyez pas combien de temps est 1062 00:43:32,340 --> 00:43:33,310 le nom de quelqu'un va être. 1063 00:43:33,310 --> 00:43:35,890 Ou si j'ai un utilisateur malveillant et son nom est 1064 00:43:35,890 --> 00:43:37,230 en fait assez courte, mais ils sont juste essayer 1065 00:43:37,230 --> 00:43:37,960 de jouer avec moi? 1066 00:43:37,960 --> 00:43:40,490 Quel va être le comportement de mon programme? 1067 00:43:40,490 --> 00:43:43,930 Eh bien, dans ce cas, quelque chose pourrait en fait crasher. 1068 00:43:43,930 --> 00:43:44,750 >> Alors allons-y. 1069 00:43:44,750 --> 00:43:46,860 En 90 minutes, c'est depuis très longtemps 1070 00:43:46,860 --> 00:43:47,780 faire de la science informatique. 1071 00:43:47,780 --> 00:43:49,550 Pourquoi ne pas prendre l'habitude de prendre cinq minutes 1072 00:43:49,550 --> 00:43:51,520 casser ici, et quand nous reviendrons, nous allons plonger dans une certaine 1073 00:43:51,520 --> 00:43:53,430 des programmes plus complexes et convaincante? 1074 00:43:53,430 --> 00:43:54,680 Cinq minutes. 1075 00:43:56,910 --> 00:43:58,160 >> Très bien. 1076 00:44:01,138 --> 00:44:02,780 Ainsi, un bref commentaire. 1077 00:44:02,780 --> 00:44:05,590 On me dit que si ce n'était à l'écran avant, ce qui 1078 00:44:05,590 --> 00:44:08,880 est sorti de ma bouche était cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Ceci est correct. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Alors maintenant, vous pouvez essayer RSVPing pour cela à / déjeuner. 1081 00:44:16,030 --> 00:44:16,980 Mais nous allons le faire maintenant. 1082 00:44:16,980 --> 00:44:20,150 Donc, cela a été super rapide, super nouvelle pour beaucoup de gens. 1083 00:44:20,150 --> 00:44:21,560 Vieux chapeau pour certaines personnes. 1084 00:44:21,560 --> 00:44:24,930 Donc, nous allons revenir en arrière pour un instant, et de voir comment nous sommes arrivés à 1085 00:44:24,930 --> 00:44:29,350 Bonjour tout le monde cette sortie il ya quelques instants. 1086 00:44:29,350 --> 00:44:31,780 >> Alors d'abord, il ya ce Appliance CS50. 1087 00:44:31,780 --> 00:44:34,270 Encore une fois, un morceau de logiciel, problème set 1 va dire 1088 00:44:34,270 --> 00:44:36,610 vous comment le télécharger, où le télécharger, cliquez sur ce qu'il faut 1089 00:44:36,610 --> 00:44:37,430 et ainsi de suite. 1090 00:44:37,430 --> 00:44:39,670 Et puis une fois que vous suivez ces instructions, vous serez en mesure 1091 00:44:39,670 --> 00:44:42,840 pour maximiser votre fenêtre, et votre Mac ou votre PC aura l'air un 1092 00:44:42,840 --> 00:44:43,910 quelque chose comme ça. 1093 00:44:43,910 --> 00:44:47,170 Un fond noir, un dossier d'accueil en haut où tous les 1094 00:44:47,170 --> 00:44:49,850 vos fichiers vont, une poubelle en haut à gauche, 1095 00:44:49,850 --> 00:44:51,130 un menu en bas. 1096 00:44:51,130 --> 00:44:54,010 Encore une fois, assez similaire dans l'esprit à Mac OS ou Windows, 1097 00:44:54,010 --> 00:44:56,040 même si elle se trouve être Linux. 1098 00:44:56,040 --> 00:44:58,120 Qu'avons-nous donc faire à côté? 1099 00:44:58,120 --> 00:44:59,580 Eh bien, nous avons commencé à écrire des programmes. 1100 00:44:59,580 --> 00:45:02,260 Et de rappeler que la semaine dernière que tout ce qu'il faut pour écrire une 1101 00:45:02,260 --> 00:45:04,970 programme est un éditeur de texte simple, 1102 00:45:04,970 --> 00:45:06,550 comme Notepad ou TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Franchement, vous pouvez même utiliser Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Mais les mauvaises choses finira par arriver, parce que c'est une très 1105 00:45:11,170 --> 00:45:13,930 lourde solution pour avoir écrit un programme, plus il va 1106 00:45:13,930 --> 00:45:15,400 l'enregistrer dans le format de fichier incorrect. 1107 00:45:15,400 --> 00:45:18,150 Mais c'est juste un éditeur de texte, un traitement de texte, est tout ce qui est 1108 00:45:18,150 --> 00:45:19,390 nécessaire d'écrire un programme. 1109 00:45:19,390 --> 00:45:23,420 >> Ainsi, dans l'appareil CS50, nous pouvons le faire d'une manière simple. 1110 00:45:23,420 --> 00:45:25,580 Nous pouvons vous suffit de cliquer sur cette icône en bas à gauche. 1111 00:45:25,580 --> 00:45:28,790 Et encore une fois, le problème mis en 1 vous conseillons de cela, et voilà - 1112 00:45:28,790 --> 00:45:31,210 vous obtenez cette interface en noir et blanc où l'on peut commencer à 1113 00:45:31,210 --> 00:45:32,160 l'écriture de code. 1114 00:45:32,160 --> 00:45:34,960 Donc, nous allons commencer à écrire un programme super simple à nouveau. 1115 00:45:34,960 --> 00:45:38,890 Je vais monter sur Fichier, Enregistrer, et je vais appeler 1116 00:45:38,890 --> 00:45:42,870 cette, disons, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 Et je ne fais que raconter en cliquant sur jharvard, mettez- 1118 00:45:45,410 --> 00:45:46,750 dans son répertoire personnel, je ne m'inquiète pas vraiment 1119 00:45:46,750 --> 00:45:47,980 où celui-ci va. 1120 00:45:47,980 --> 00:45:49,090 Et puis sur Enregistrer. 1121 00:45:49,090 --> 00:45:50,880 Et maintenant, je peux commencer à écrire mon programme. 1122 00:45:50,880 --> 00:45:53,560 Et je me souviens de l'heure que je dois écrire int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom sur en haut à gauche. 1125 00:45:57,000 --> 00:46:02,670 Et puis je veux dire printf, en prendre deux. 1126 00:46:02,670 --> 00:46:05,690 Et maintenant, un saut de ligne, citation étroites, close 1127 00:46:05,690 --> 00:46:07,820 parenthèses, virgules. 1128 00:46:07,820 --> 00:46:10,560 Et puis je descends ici pour ma fenêtre de terminal qui est 1129 00:46:10,560 --> 00:46:12,840 intégré dans gedit, juste pour plus de commodité. 1130 00:46:12,840 --> 00:46:15,200 Et je vais aller de l'avant et de faire écrire bonjour, mais pas 1131 00:46:15,200 --> 00:46:17,500 bonjour seul, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Donc, mon fichier s'appelle hello2.c. Mon fichier donc 1133 00:46:20,490 --> 00:46:23,510 doit être appelée hello2, dans ce cas. 1134 00:46:23,510 --> 00:46:26,490 Bon sang, qu'est-ce que j'ai fait de mal? 1135 00:46:26,490 --> 00:46:29,490 D'accord, donc j'ai clairement omis une ligne, si vous vous rappelez ce que 1136 00:46:29,490 --> 00:46:31,020 programmes précédents ressembler. 1137 00:46:31,020 --> 00:46:32,480 Mais nous allons voir si nous ne pouvons pas taquiner cet appart. 1138 00:46:32,480 --> 00:46:35,310 Malheureusement, la plupart des gens qui écrivent les programmes avec lesquels 1139 00:46:35,310 --> 00:46:38,820 nous écrivons programmes ne simplifie pas les choses très bien. 1140 00:46:38,820 --> 00:46:41,520 Donc, nous devons genre de survoler ce n'est pas tout à faire 1141 00:46:41,520 --> 00:46:44,050 sentir ici et voir si nous pouvons comprendre ce qui ne va pas. 1142 00:46:44,050 --> 00:46:46,700 La toute première ligne il dit implicitement en déclarant C 1143 00:46:46,700 --> 00:46:49,310 fonction de bibliothèque printf avec le type int. 1144 00:46:49,310 --> 00:46:51,210 OK, j'ai compris une partie de cela. 1145 00:46:51,210 --> 00:46:54,570 Mais il semble faire allusion au fait que j'ai utilisé printf 1146 00:46:54,570 --> 00:46:55,700 mal, en quelque sorte. 1147 00:46:55,700 --> 00:46:56,930 Et quel sens est-ce mal? 1148 00:46:56,930 --> 00:46:59,970 Je ne voulais pas apprendre à l'ordinateur que c'est dans un fichier 1149 00:46:59,970 --> 00:47:01,420 appelé stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Maintenant je n'ai plus qu'à simplement mémoriser maintenant que c'est printf 1151 00:47:04,120 --> 00:47:06,540 dans stdio.h, et en effet il y aura d'autres 1152 00:47:06,540 --> 00:47:08,900 fonctions dans ce même fichier que nous allons nous habituer. 1153 00:47:08,900 --> 00:47:12,490 >> Alors maintenant, laissez-moi aller de l'avant et appuyez sur Ctrl-L pour dégager simplement que 1154 00:47:12,490 --> 00:47:16,050 de là, réexécutez: make hello2, et le tour est joué. 1155 00:47:16,050 --> 00:47:19,490 Et de nouveau cette commande, plus complexe que nous allons vous expliquer pour 1156 00:47:19,490 --> 00:47:20,520 aujourd'hui fins. 1157 00:47:20,520 --> 00:47:23,570 Mais il n'a exécuté clang, clang, et prend le code source et 1158 00:47:23,570 --> 00:47:24,870 crache 0 et de 1. 1159 00:47:24,870 --> 00:47:28,610 Et ceux 0 et de 1 dans ce cas sont appelés quoi? 1160 00:47:28,610 --> 00:47:29,470 Ok, code objet. 1161 00:47:29,470 --> 00:47:32,210 Et le fichier qu'ils sont en appelle, alors, 1162 00:47:32,210 --> 00:47:33,820 hello2, dans ce cas. 1163 00:47:33,820 --> 00:47:37,040 Parce que mon fichier texte était hello2.c, Entrée. 1164 00:47:37,040 --> 00:47:39,820 Et maintenant je prendre deux points d'exclamation, exclamation 1165 00:47:39,820 --> 00:47:41,880 point, point d'exclamation. 1166 00:47:41,880 --> 00:47:45,430 D'accord, donc nous avons maintenant la possibilité d'obtenir des chaînes, 1167 00:47:45,430 --> 00:47:46,280 apparemment. 1168 00:47:46,280 --> 00:47:48,190 Eh bien, quoi d'autre pouvons-nous obtenir auprès des utilisateurs? 1169 00:47:48,190 --> 00:47:51,010 >> Eh bien dans la bibliothèque CS50, il ya d'autres fonctions qui 1170 00:47:51,010 --> 00:47:53,300 allons simplifier notre vie en ces premiers jours. 1171 00:47:53,300 --> 00:47:56,350 GetChar, GetDouble, GetFloat, getInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Eh bien, arrachez le plus facile de ces premiers. 1174 00:47:59,550 --> 00:48:01,430 GetString fait littéralement cela. 1175 00:48:01,430 --> 00:48:04,210 Il se trouve juste là, attendant que l'utilisateur de taper quelque chose, 1176 00:48:04,210 --> 00:48:07,170 et dès que je tape quelque chose dans et appuyez sur Entrée, il 1177 00:48:07,170 --> 00:48:08,860 fait quelque chose avec cette valeur. 1178 00:48:08,860 --> 00:48:11,700 Donc, revenons à cet exemple pour voir exactement ce que 1179 00:48:11,700 --> 00:48:12,950 GetString faisait. 1180 00:48:12,950 --> 00:48:17,445 Permettez-moi aller de l'avant et d'ouvrir à gedit, hello.c, et de rappeler 1181 00:48:17,445 --> 00:48:20,590 que juste avant la pause, c'est là que nous nous sommes quittés. 1182 00:48:20,590 --> 00:48:23,240 >> Donc, nous allons maintenant taquiner cette part dans un peu plus de détails. 1183 00:48:23,240 --> 00:48:27,190 Ainsi, sur la ligne 6, il ya deux choses 1184 00:48:27,190 --> 00:48:28,450 passe en ce moment. 1185 00:48:28,450 --> 00:48:32,630 Le signe égal est la séparation de la première moitié et la seconde moitié. 1186 00:48:32,630 --> 00:48:34,670 Ainsi, sur le côté gauche du signe égal, nous sommes 1187 00:48:34,670 --> 00:48:35,580 dire la chaîne s. 1188 00:48:35,580 --> 00:48:37,580 Et puis, juste termes simples, ce qui est une chaîne s 1189 00:48:37,580 --> 00:48:41,040 faire, pensez-vous? 1190 00:48:41,040 --> 00:48:42,990 Il s'agit de créer un quoi? 1191 00:48:42,990 --> 00:48:44,930 Donc, c'est la création d'une chaîne appelée s. 1192 00:48:44,930 --> 00:48:46,370 Maintenant, qu'est-ce que cela signifie vraiment? 1193 00:48:46,370 --> 00:48:51,540 Eh bien, c'est réserver de l'espace pour une chaîne appelée s. 1194 00:48:51,540 --> 00:48:52,490 Ce n'est pas tout à fait raison. 1195 00:48:52,490 --> 00:48:53,120 Quel est ce fait? 1196 00:48:53,120 --> 00:48:55,400 Ordinateurs ainsi, comme vous le savez, avoir des disques durs, c'est là que 1197 00:48:55,400 --> 00:48:56,300 vos fichiers sont stockés. 1198 00:48:56,300 --> 00:48:59,100 Ordinateurs de RAM, et c'est là que les programmes sont chargés 1199 00:48:59,100 --> 00:49:00,240 alors qu'ils sont en cours d'exécution. 1200 00:49:00,240 --> 00:49:02,470 Ainsi, lorsque vous double-cliquez sur une icône et Microsoft Word s'ouvre 1201 00:49:02,470 --> 00:49:06,380 up, Microsoft Word est en cours d'exécution, pour ainsi dire, dans la mémoire RAM, ce qui est 1202 00:49:06,380 --> 00:49:08,160 la partie électronique de votre ordinateur. 1203 00:49:08,160 --> 00:49:10,660 Pas le physique, la partie mécanique qui est la filature, où 1204 00:49:10,660 --> 00:49:12,640 les données sont généralement stockées à long terme. 1205 00:49:12,640 --> 00:49:15,810 Ainsi, la chaîne s est à peu près dire à l'ordinateur me donne 1206 00:49:15,810 --> 00:49:18,150 suffisamment de mémoire vive pour s'adapter à une chaîne. 1207 00:49:18,150 --> 00:49:20,450 Maintenant que c'est un peu trop simpliste, car 1208 00:49:20,450 --> 00:49:22,300 Quelle est la taille de la chaîne va être? 1209 00:49:22,300 --> 00:49:24,410 Eh bien, nous ne savons pas réellement encore, dans les semaines à venir 1210 00:49:24,410 --> 00:49:27,290 nous allons effectivement retirer la couche qui est une chaîne et 1211 00:49:27,290 --> 00:49:28,510 nous allons vous dire ce qu'il est vraiment. 1212 00:49:28,510 --> 00:49:31,050 String, pour l'instant, c'est juste une belle simplification de notre monde. 1213 00:49:31,050 --> 00:49:35,700 Mais la chaîne s déclare une chaîne appelée s, pour l'instant. 1214 00:49:35,700 --> 00:49:36,520 Déclare une chaîne. 1215 00:49:36,520 --> 00:49:39,310 Il se réserve un peu d'espace dans la mémoire RAM pour la chaîne de l'utilisateur 1216 00:49:39,310 --> 00:49:40,150 sur le point d'entrer. 1217 00:49:40,150 --> 00:49:41,840 >> Maintenant, nous allons regarder dans le droit du signe égal. 1218 00:49:41,840 --> 00:49:44,110 Ainsi, il est dit GetString (). 1219 00:49:44,110 --> 00:49:45,070 Et un peu de raison vérifier. 1220 00:49:45,070 --> 00:49:47,940 Le fait qu'il n'y a rien à l'intérieur des parenthèses 1221 00:49:47,940 --> 00:49:50,810 implique qu'en est-il GetString? 1222 00:49:50,810 --> 00:49:52,180 Il ne prend aucun argument. 1223 00:49:52,180 --> 00:49:55,290 Autrement dit, vous ne pouvez pas influer sur son comportement en aucune façon. 1224 00:49:55,290 --> 00:49:58,940 Chaque fois que vous l'utilisez, il obtiendra une chaîne et c'est tout. 1225 00:49:58,940 --> 00:50:02,210 En revanche, printf, je l'espère son comportement ne 1226 00:50:02,210 --> 00:50:03,010 changer à chaque fois. 1227 00:50:03,010 --> 00:50:05,230 Sinon, c'est une fonction d'impression assez inutile si 1228 00:50:05,230 --> 00:50:06,480 il fait la même chose. 1229 00:50:06,480 --> 00:50:07,970 Si l'impression est toujours David ou quelque chose 1230 00:50:07,970 --> 00:50:09,500 arbitraire tout le temps. 1231 00:50:09,500 --> 00:50:11,540 Ainsi fait printf logique d'avoir un argument. 1232 00:50:11,540 --> 00:50:14,240 GetString n'a pas vraiment besoin d'un argument, parce que je voulais 1233 00:50:14,240 --> 00:50:16,700 pour obtenir une chaîne de l'utilisateur et c'est l'utilisateur qui va 1234 00:50:16,700 --> 00:50:19,580 pour alimenter le dynamisme en tapant dans des lettres différentes 1235 00:50:19,580 --> 00:50:20,850 à chaque fois au niveau du clavier. 1236 00:50:20,850 --> 00:50:23,140 >> Alors qu'est-ce GetString ne finalement? 1237 00:50:23,140 --> 00:50:25,080 Pensez-y comme cette petite boîte noire. 1238 00:50:25,080 --> 00:50:29,340 Et cette boîte noire ne prend pas d'entrée, mais quand vous taper sur 1239 00:50:29,340 --> 00:50:33,240 elle, elle recrache une chaîne que l'utilisateur a tapé po 1240 00:50:33,240 --> 00:50:36,660 Et le fait qu'il y ait un signe égal il signifie prendre 1241 00:50:36,660 --> 00:50:39,890 ce qui est cracher sur le droit et de le stocker à l'intérieur 1242 00:50:39,890 --> 00:50:41,390 ce qui est sur la gauche. 1243 00:50:41,390 --> 00:50:43,470 Donc signe égal ici, il ne fait pas dire 1244 00:50:43,470 --> 00:50:46,490 l'égalité, plutôt techniquement s'entend d'une cession. 1245 00:50:46,490 --> 00:50:49,330 Prendre la valeur sur la droite, et le mettre dans l' 1246 00:50:49,330 --> 00:50:51,050 variable de gauche. 1247 00:50:51,050 --> 00:50:52,820 Donc, c'est tout ce qui se passe là-bas. 1248 00:50:52,820 --> 00:50:55,640 >> Maintenant, à la ligne 7, nous faisons appel printf. 1249 00:50:55,640 --> 00:50:58,170 Donc j'espère obtenir printf est un peu ennuyeux par moment. 1250 00:50:58,170 --> 00:50:59,530 Donc imprimer une chaîne formatée. 1251 00:50:59,530 --> 00:51:00,440 Quelle chaîne? 1252 00:51:00,440 --> 00:51:05,460 Imprimer, "h-f-l-l-o, s% 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 Bon, alors qu'est-ce que je veux plug-in pour% s? 1255 00:51:10,470 --> 00:51:12,960 Littéralement, tout ce qui est stocké dans l'art. 1256 00:51:12,960 --> 00:51:15,570 Donc dans ce cas, cocher peu de raison, combien arguments ne 1257 00:51:15,570 --> 00:51:16,820 printf prendre? 1258 00:51:19,860 --> 00:51:21,110 Bon, j'ai entendu un. 1259 00:51:23,840 --> 00:51:26,330 J'ai entendu un nouveau. 1260 00:51:26,330 --> 00:51:27,730 Deux, j'ai entendu deux. 1261 00:51:27,730 --> 00:51:29,920 Et que diriez-vous trois? 1262 00:51:29,920 --> 00:51:30,450 Okay, trois? 1263 00:51:30,450 --> 00:51:30,930 Excellent. 1264 00:51:30,930 --> 00:51:33,170 Trois réponses possibles, une seule d'entre elles est correcte. 1265 00:51:33,170 --> 00:51:36,390 Donc arguments à nouveau influencer le comportement d'une fonction. 1266 00:51:36,390 --> 00:51:39,380 Dans le passé, printf ne prendre qu'un seul argument. 1267 00:51:39,380 --> 00:51:42,260 "Bonjour le monde" était un argument unique. 1268 00:51:42,260 --> 00:51:45,190 Cependant, maintenant, remarquez où cette virgule est. 1269 00:51:45,190 --> 00:51:49,600 Cette virgule est en dehors de la citation / Ils ont dit, ce qui signifie 1270 00:51:49,600 --> 00:51:52,170 printf hey, voici un second argument. 1271 00:51:52,170 --> 00:51:54,240 >> Donc virgules dans la plupart des langages de programmation 1272 00:51:54,240 --> 00:51:57,300 plusieurs arguments distincts. 1273 00:51:57,300 --> 00:51:59,600 Donc la réponse est ici certainement pas, parce 1274 00:51:59,600 --> 00:52:00,390 il ya cette virgule. 1275 00:52:00,390 --> 00:52:03,680 Donc, au minimum, printf est apparemment en prenant deux 1276 00:52:03,680 --> 00:52:04,940 arguments cette fois. 1277 00:52:04,940 --> 00:52:07,050 Mais l'occasion d'une question piège, voici ce que 1278 00:52:07,050 --> 00:52:07,990 à propos de cette virgule? 1279 00:52:07,990 --> 00:52:11,260 Est-ce à dire que il ya en fait trois arguments? 1280 00:52:11,260 --> 00:52:13,820 Ceci, ceci et cela. 1281 00:52:13,820 --> 00:52:18,820 Donc, non, parce que cette virgule est à l'intérieur des guillemets, ce qui 1282 00:52:18,820 --> 00:52:20,890 veut dire que c'est vraiment juste une esthétique de l'anglais. 1283 00:52:20,890 --> 00:52:23,180 Cela n'a rien à voir avec le nombre de 1284 00:52:23,180 --> 00:52:24,890 arguments dans ce programme. 1285 00:52:24,890 --> 00:52:27,670 Donc, cette virgule est à l'extérieur des guillemets. 1286 00:52:27,670 --> 00:52:28,850 Et elle renvoie 0. 1287 00:52:28,850 --> 00:52:30,980 Pour l'instant nous allons juste une sorte de prendre celui-ci sur la foi de 1288 00:52:30,980 --> 00:52:34,460 aujourd'hui, et il suffit de savoir que lorsque les fonctions sont fait exécuter 1289 00:52:34,460 --> 00:52:37,950 lignes de code, ils doivent généralement retourner une valeur. 1290 00:52:37,950 --> 00:52:42,010 Dans ce cas, tout simplement parce principal doit retourner un int, 1291 00:52:42,010 --> 00:52:44,320 c'est juste la façon dont le langage C fonctionne. 1292 00:52:44,320 --> 00:52:47,040 >> Donc, parce que rien ne s'est mal passé, se sent comme ce programme de 1293 00:52:47,040 --> 00:52:49,960 bien, je viens codé en dur dans le retour 0. 1294 00:52:49,960 --> 00:52:52,980 Mais en revanche, et je vais écrire cela dans le code pseudo 1295 00:52:52,980 --> 00:52:55,020 maintenant, un peu comme Joseph l'a fait quand nous avons fait la chaussette 1296 00:52:55,020 --> 00:52:56,220 Par exemple la semaine dernière. 1297 00:52:56,220 --> 00:53:00,440 Si quelque chose s'est mal passé - ce n'est pas le code réel - a 1298 00:53:00,440 --> 00:53:06,570 mal, puis revenir, disons, 1. 1299 00:53:06,570 --> 00:53:08,770 Else return 0. 1300 00:53:08,770 --> 00:53:10,070 C'est donc là que nous allons à présent. 1301 00:53:10,070 --> 00:53:12,090 Ce n'est pas réel du code C, juste pseudocode. 1302 00:53:12,090 --> 00:53:14,010 Mais c'est la façon dont vous pourriez retourner 1303 00:53:14,010 --> 00:53:15,580 différentes valeurs possibles. 1304 00:53:15,580 --> 00:53:19,520 Mais pour l'instant je vais juste aller de l'avant et retourner 0. 1305 00:53:19,520 --> 00:53:24,410 Tout droit, toute question à ce jour sur la syntaxe, la fonctionnalité, 1306 00:53:24,410 --> 00:53:25,000 ou autres? 1307 00:53:25,000 --> 00:53:26,280 Oui, à l'arrière. 1308 00:53:26,280 --> 00:53:27,530 >> PUBLIC: [Inaudible] 1309 00:53:30,510 --> 00:53:32,210 DAVID MALAN: Pouvez-vous parler un peu plus fort? 1310 00:53:32,210 --> 00:53:34,325 Pourquoi ce retour 0 programme, et? 1311 00:53:34,325 --> 00:53:35,575 PUBLIC: [Inaudible] 1312 00:53:39,910 --> 00:53:43,450 DAVID MALAN: Oh, c'est parce que je suis paresseux, je suis désolé. 1313 00:53:43,450 --> 00:53:48,290 Aucune réponse de bons résultats scolaires, retourne 0. 1314 00:53:48,290 --> 00:53:52,690 Je peux sorte de sauver ce, en disant techniquement C, si principale 1315 00:53:52,690 --> 00:53:55,900 ne renvoient pas explicitement une valeur 0 sera retourné 1316 00:53:55,900 --> 00:53:57,730 automatiquement pour vous. 1317 00:53:57,730 --> 00:54:00,290 Ce qui est vrai, je ne suis pas seulement couvrir. 1318 00:54:00,290 --> 00:54:03,270 Mais, je l'aurais fait comme ça. 1319 00:54:03,270 --> 00:54:05,250 Pas de plats à emporter intéressant que celui d'autre que mon erreur. 1320 00:54:05,250 --> 00:54:06,170 Ouais? 1321 00:54:06,170 --> 00:54:08,470 >> PUBLIC: Habituellement, lorsque vous entrez dans le vide, signifie que vous 1322 00:54:08,470 --> 00:54:10,770 ne reviennent pas quelque chose. 1323 00:54:10,770 --> 00:54:11,420 DAVID MALAN: C'est exact. 1324 00:54:11,420 --> 00:54:15,800 Si au contraire, vous devez spécifier avant le nom d'une fonction, par 1325 00:54:15,800 --> 00:54:18,590 Par exemple ici, nulle, alors la fonction 1326 00:54:18,590 --> 00:54:20,480 ne retourne rien. 1327 00:54:20,480 --> 00:54:25,210 Et par conséquent, je dirais simplement, le retour ou rien du tout, 1328 00:54:25,210 --> 00:54:26,730 et qui serait compatible. 1329 00:54:26,730 --> 00:54:27,750 Et nous allons revenir à cela. 1330 00:54:27,750 --> 00:54:31,030 Et juste pour info, l'une des prises avec l'apprentissage 1331 00:54:31,030 --> 00:54:33,450 programmation dans un monde qui a des centaines de livres et de 1332 00:54:33,450 --> 00:54:36,180 des centaines de sites Web dehors là est que vous aurez toujours 1333 00:54:36,180 --> 00:54:38,220 voir syntaxe différente dans différents livres 1334 00:54:38,220 --> 00:54:40,220 par des personnes différentes. 1335 00:54:40,220 --> 00:54:42,100 Rendons compte que nous ferons de notre mieux dans les sections et conférences à 1336 00:54:42,100 --> 00:54:42,960 cohérente. 1337 00:54:42,960 --> 00:54:46,660 Mais parfois, vous verrez la syntaxe contradictoires. 1338 00:54:46,660 --> 00:54:48,540 Donc, chaque fois dans le doute, il suffit de demander. 1339 00:54:48,540 --> 00:54:51,100 Et en général, nous allons prendre soin de conférences et des sections à 1340 00:54:51,100 --> 00:54:53,710 presque toujours présents dans le droit chemin. 1341 00:54:53,710 --> 00:54:56,070 Et je dis presque toujours, car bon exemple. 1342 00:54:56,070 --> 00:54:56,860 D'autres questions? 1343 00:54:56,860 --> 00:55:01,590 >> PUBLIC: Est-ce que% s existent en dehors de l'appareil? 1344 00:55:01,590 --> 00:55:03,710 DAVID MALAN: Est-ce que% s existent en dehors de l'appareil? 1345 00:55:03,710 --> 00:55:04,180 Oui. 1346 00:55:04,180 --> 00:55:07,760 Donc,% s doit faire avec C. Le fait que nous l'utilisons dans 1347 00:55:07,760 --> 00:55:10,290 l'appareil a fondamentalement rien à voir avec l' 1348 00:55:10,290 --> 00:55:12,080 caractéristiques de la langue que nous utilisons. 1349 00:55:12,080 --> 00:55:15,990 En effet, la semaine dernière, lorsque nous avons utilisé mon Mac, j'ai écrit 1350 00:55:15,990 --> 00:55:17,160 Code C sur mon Mac. 1351 00:55:17,160 --> 00:55:20,020 J'aurais pu utiliser% s sur mon Mac, et vous pouvez l'utiliser sur 1352 00:55:20,020 --> 00:55:22,400 votre ordinateur Windows si vous installez un compilateur, comme 1353 00:55:22,400 --> 00:55:24,070 Visual Studio de Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Donc,% s. 1355 00:55:24,990 --> 00:55:27,860 Tout ce que nous faisons à l'intérieur de cette fenêtre doit aujourd'hui 1356 00:55:27,860 --> 00:55:31,140 faire avec rien C. Et fondamentalement à voir avec la 1357 00:55:31,140 --> 00:55:33,450 système d'exploitation en question. 1358 00:55:33,450 --> 00:55:35,900 En revanche, la fenêtre du terminal noir et blanc - quand 1359 00:55:35,900 --> 00:55:40,160 Je tape des choses comme ls et rm, et cd - 1360 00:55:40,160 --> 00:55:42,020 qui a à voir avec le système d'exploitation et 1361 00:55:42,020 --> 00:55:43,562 naviguer autour. 1362 00:55:43,562 --> 00:55:44,546 Ouais. 1363 00:55:44,546 --> 00:55:46,520 PUBLIC: Je parlais de la bibliothèque, la bibliothèque CS50. 1364 00:55:46,520 --> 00:55:49,960 DAVID MALAN: D'accord, donc si vous entendez le mot clé string, qui 1365 00:55:49,960 --> 00:55:52,460 n'existe que dans la bibliothèque CS50, c'est exact. 1366 00:55:52,460 --> 00:55:55,350 Cela n'existe pas en C lui-même, et même dans un couple 1367 00:55:55,350 --> 00:55:58,220 semaines, nous allons jeter la bibliothèque CS50 et commencer à 1368 00:55:58,220 --> 00:56:02,290 faire les choses à partir de rien nous-mêmes, pour ainsi dire. 1369 00:56:02,290 --> 00:56:02,940 D'autres questions? 1370 00:56:02,940 --> 00:56:04,577 Ouais. 1371 00:56:04,577 --> 00:56:05,827 >> PUBLIC: [Inaudible] 1372 00:56:09,470 --> 00:56:10,160 DAVID MALAN: Bonne question. 1373 00:56:10,160 --> 00:56:11,720 Sont le cas commandes sensibles? 1374 00:56:11,720 --> 00:56:13,710 Et permettez-moi de faire ici une distinction. 1375 00:56:13,710 --> 00:56:15,840 Ainsi, les commandes sont généralement les choses que nous allons écrire au 1376 00:56:15,840 --> 00:56:17,940 inférieure de la fenêtre, dans la fenêtre du terminal. 1377 00:56:17,940 --> 00:56:21,770 Tout ce qui ici serait déclarations ou code C. 1378 00:56:21,770 --> 00:56:24,490 Mais dans les deux cas, la réponse est la même, oui. 1379 00:56:24,490 --> 00:56:27,800 Ces deux environnements, le code C dans le haut et le 1380 00:56:27,800 --> 00:56:29,910 fonctionne en ligne de commande du système à l' 1381 00:56:29,910 --> 00:56:31,440 bas, sont sensibles à la casse. 1382 00:56:31,440 --> 00:56:33,830 Donc, vous devez miser au capital GetString G, 1383 00:56:33,830 --> 00:56:37,050 du capital S. Vous devez écrire printf en minuscules. 1384 00:56:37,050 --> 00:56:39,520 Vous devez taper ls en minuscules. 1385 00:56:39,520 --> 00:56:43,260 Ainsi, dans presque toutes les situations de ce semestre, le cas sera, dans 1386 00:56:43,260 --> 00:56:44,820 fait, la matière. 1387 00:56:44,820 --> 00:56:46,148 Oui. 1388 00:56:46,148 --> 00:56:47,398 >> PUBLIC: [Inaudible] 1389 00:56:54,770 --> 00:56:56,480 DAVID MALAN: Ah, d'accord, si nous avions un fichier 1390 00:56:56,480 --> 00:56:57,840 appelé hello.d. 1391 00:56:57,840 --> 00:57:00,090 Ainsi, il s'avère D est un langage de programmation. 1392 00:57:00,090 --> 00:57:02,790 Et si dans certains cas, nous pourrions écrire un programme en 1393 00:57:02,790 --> 00:57:06,190 ce fichier et l'avoir compilé de cette façon. 1394 00:57:06,190 --> 00:57:09,090 Nous pouvons, et en fait, réponse courte, c'est que je ne sais pas. 1395 00:57:09,090 --> 00:57:10,440 Donc, nous allons le faire. 1396 00:57:10,440 --> 00:57:13,040 Laissez-moi aller de l'avant et créer un nouveau fichier. 1397 00:57:13,040 --> 00:57:15,580 Et le spin ici, honnêtement, en général, est chaque fois qu'un doute 1398 00:57:15,580 --> 00:57:18,130 ce semestre, et vous avez votre appareil ou ordinateur 1399 00:57:18,130 --> 00:57:20,030 ouvrir, aller de l'avant et essayer quelque chose. 1400 00:57:20,030 --> 00:57:23,740 Donc, je vais enregistrer un fichier appelé hello.d. 1401 00:57:23,740 --> 00:57:25,010 Sauvegardez ce fichier. 1402 00:57:25,010 --> 00:57:29,070 Et je vais exécuter la commande make bonjour Entrée. 1403 00:57:29,070 --> 00:57:31,660 Il semble en déduire que c était plus probable 1404 00:57:31,660 --> 00:57:35,920 à d, dans le cas présent. 1405 00:57:35,920 --> 00:57:38,046 D'autres questions. 1406 00:57:38,046 --> 00:57:40,456 Ouais. 1407 00:57:40,456 --> 00:57:41,706 >> PUBLIC: [Inaudible] 1408 00:57:48,170 --> 00:57:49,837 DAVID MALAN: D'accord, disons que, une fois de plus. 1409 00:57:49,837 --> 00:57:51,087 PUBLIC: [Inaudible] 1410 00:58:04,250 --> 00:58:05,780 DAVID MALAN: Comment feriez-vous pour que le diagnostic ou 1411 00:58:05,780 --> 00:58:06,380 dépannage cela? 1412 00:58:06,380 --> 00:58:08,800 Donc, très probablement, parce qu'ils sont des langues différentes, 1413 00:58:08,800 --> 00:58:10,280 plus probable que vous obtiendrez un complètement 1414 00:58:10,280 --> 00:58:11,580 programme différent fourni en sortie. 1415 00:58:11,580 --> 00:58:14,140 Vous obtiendrez des messages d'erreur complètement différentes. 1416 00:58:14,140 --> 00:58:16,750 Et aussi juste en termes de conception, il serait sans doute une 1417 00:58:16,750 --> 00:58:19,140 décision mauvaise conception d'écrire deux différents 1418 00:58:19,140 --> 00:58:21,510 langues avec des fichiers portant le même nom, près de 1419 00:58:21,510 --> 00:58:23,000 le répertoire exactement la même, à l'aide d'un 1420 00:58:23,000 --> 00:58:24,550 automatique des outils comme make. 1421 00:58:24,550 --> 00:58:27,750 Donc, je peux aussi pousser en arrière et dire en 15 ans de le faire, 1422 00:58:27,750 --> 00:58:29,190 jamais fait cette erreur. 1423 00:58:29,190 --> 00:58:30,030 Pourrait se produire. 1424 00:58:30,030 --> 00:58:31,190 Mais il ya juste différents, je pense, 1425 00:58:31,190 --> 00:58:33,180 défenses logistiques en place. 1426 00:58:33,180 --> 00:58:35,440 Ainsi que les messages d'erreur qui s'ensuivraient, qui serait 1427 00:58:35,440 --> 00:58:37,260 éventuellement révéler quel est le problème. 1428 00:58:37,260 --> 00:58:39,120 Mais un cas d'angle possible. 1429 00:58:39,120 --> 00:58:41,730 >> Très bien, nous allons donc présenter que quelques autres 1430 00:58:41,730 --> 00:58:45,600 Caractéristiques ici maintenant, afin que nous puissions commencer à construire en plus 1431 00:58:45,600 --> 00:58:47,140 en plus du programme complexe. 1432 00:58:47,140 --> 00:58:49,000 Alors tout d'abord, les mathématiques. 1433 00:58:49,000 --> 00:58:51,520 Ainsi, des exemples mathématiques sont juste un peu facile dans la première semaine. 1434 00:58:51,520 --> 00:58:53,560 Cela ne veut pas dire que toute la programmation est d'environ 1435 00:58:53,560 --> 00:58:54,390 mathématiques. 1436 00:58:54,390 --> 00:58:57,890 Certes, la compréhension de diverses caractéristiques de 1437 00:58:57,890 --> 00:58:59,610 mathématiques, l'algèbre, en particulier, est 1438 00:58:59,610 --> 00:59:00,330 tout à fait pertinent ici. 1439 00:59:00,330 --> 00:59:03,010 Dans les classes supérieures de niveau CS, algèbre linéaire, 1440 00:59:03,010 --> 00:59:03,920 calcul, et analogues. 1441 00:59:03,920 --> 00:59:06,500 Mais réaliser la plupart de ce que nous ferons ce semestre réduit pas 1442 00:59:06,500 --> 00:59:09,230 aux mathématiques, et certainement pas à l'arithmétique, en soi, mais vraiment 1443 00:59:09,230 --> 00:59:11,570 juste la logique et à une réflexion approfondie. 1444 00:59:11,570 --> 00:59:14,310 Et si ce lien que l'informatique a longtemps eu, 1445 00:59:14,310 --> 00:59:16,570 en particulier au niveau secondaire, en mathématiques, est une 1446 00:59:16,570 --> 00:59:17,370 peu trompeur. 1447 00:59:17,370 --> 00:59:20,090 Parce que la plupart des programmes que nous allons écrire, vraiment, sont 1448 00:59:20,090 --> 00:59:23,290 sorte de niveau supérieur et de se concentrer sur la résolution des problèmes qui, 1449 00:59:23,290 --> 00:59:26,410 Certes, peut-être utiliser une addition, soustraction, et divers 1450 00:59:26,410 --> 00:59:28,650 formules mathématiques ou similaires, 1451 00:59:28,650 --> 00:59:30,860 mais à la fin de la journée, il s'agit de penser et de ne pas 1452 00:59:30,860 --> 00:59:33,240 tout mettre en œuvre ce que vous auriez pu faire le comme un TI 1453 00:59:33,240 --> 00:59:35,050 calculatrice à l'école secondaire. 1454 00:59:35,050 --> 00:59:38,410 >> Donc, avec cela dit, nous allons maintenant faire quelque chose avec ces 1455 00:59:38,410 --> 00:59:40,980 opérateurs mathématiques qui existent afin que nous puissions aller 1456 00:59:40,980 --> 00:59:43,950 sur certains des aspects sous-jacents de la programmation, ou en 1457 00:59:43,950 --> 00:59:48,930 ce cas C. Il ya donc, comme la bibliothèque CS50 suggéré, 1458 00:59:48,930 --> 00:59:51,520 et aujourd'hui, nous n'utilisons que GetString - et dans un moment 1459 00:59:51,520 --> 00:59:52,940 peut-être une autre fonction - 1460 00:59:52,940 --> 00:59:55,380 mais il existe différents types de données dans un ordinateur. 1461 00:59:55,380 --> 00:59:58,550 A la fin de la journée, les ordinateurs ne savent 0 et de 1. 1462 00:59:58,550 --> 01:00:01,880 Mais rappelons que la semaine dernière, nous avons parlé du système binaire 1463 01:00:01,880 --> 01:00:05,000 dans la représentation de chiffres, comme le nombre 0, et 1, et 2, 1464 01:00:05,000 --> 01:00:07,480 sur tout le chemin jusqu'à 8, selon la vidéo Nate. 1465 01:00:07,480 --> 01:00:08,840 Et puis nous pouvons compter beaucoup plus élevé que nous 1466 01:00:08,840 --> 01:00:10,000 fait sur scène ici. 1467 01:00:10,000 --> 01:00:15,660 Mais si vous voulez représenter non seulement des chiffres, des lettres, 1468 01:00:15,660 --> 01:00:18,240 nous, les humains, avons pour arriver à une certaine arbitraire 1469 01:00:18,240 --> 01:00:21,180 conventions, de sorte que si, à la fin de la journée tout mon ordinateur 1470 01:00:21,180 --> 01:00:24,260 a la capacité d'exprimer des 0 et des 1, et nous ferions mieux de 1471 01:00:24,260 --> 01:00:27,990 commencer à normaliser les modes de 0 et de 1 qui représentent 1472 01:00:27,990 --> 01:00:28,800 choses différentes. 1473 01:00:28,800 --> 01:00:32,370 Un motif de 0 et de 1 qui représente la lettre a. 1474 01:00:32,370 --> 01:00:34,840 Modèles de 0 et de 1 qui représentent la lettre z. 1475 01:00:34,840 --> 01:00:37,600 Modèles de 0 et de 1 qui représentent la couleur bleue, ou 1476 01:00:37,600 --> 01:00:38,600 rouge, ou analogue. 1477 01:00:38,600 --> 01:00:42,360 Nous devons utiliser tous ces 0 et de 1 à s'exprimer dans 1478 01:00:42,360 --> 01:00:45,140 contextes différents, de différentes manières qui ne sont pas 1479 01:00:45,140 --> 01:00:46,470 nécessairement numérique. 1480 01:00:46,470 --> 01:00:51,150 >> Donc, en termes de représentation, C a différents types de données, 1481 01:00:51,150 --> 01:00:52,550 et nous avons vu un de ces jusqu'ici. 1482 01:00:52,550 --> 01:00:54,940 Nous avons vu int et notez ce n'est pas sur l'écran 1483 01:00:54,940 --> 01:00:56,140 en ce moment est une chaîne. 1484 01:00:56,140 --> 01:00:58,550 String ne pas, en fait, existent dans C. Encore une fois, c'est un 1485 01:00:58,550 --> 01:01:00,610 simplification que nous présentons pour la première fois 1486 01:01:00,610 --> 01:01:01,570 quelques semaines. 1487 01:01:01,570 --> 01:01:03,770 Un char est un caractère individuel. 1488 01:01:03,770 --> 01:01:07,050 Un flotteur est un nombre réel, avec un point décimal et le nombre de 1489 01:01:07,050 --> 01:01:09,066 la gauche et la droite. 1490 01:01:09,066 --> 01:01:16,040 Un double est ce qui, pour ceux avec un fond de retour avant? 1491 01:01:16,040 --> 01:01:19,720 Ainsi, un double est deux fois quelque chose. 1492 01:01:19,720 --> 01:01:21,240 Ajoute deux fois autant de précision. 1493 01:01:21,240 --> 01:01:22,440 Alors qu'est-ce que cela signifie? 1494 01:01:22,440 --> 01:01:26,090 Ainsi, dans chacun de ces cas, le monde a en quelque sorte standardisé 1495 01:01:26,090 --> 01:01:27,960 le nombre de bits utilisés pour représenter 1496 01:01:27,960 --> 01:01:29,160 chacune de ces choses. 1497 01:01:29,160 --> 01:01:31,590 Donc, si vous avez regardé la vidéo ASCII Nate déjà pour une partie 1498 01:01:31,590 --> 01:01:36,170 de pset 0, ou plus tard cette semaine, vous, vous le savez sans doute 1499 01:01:36,170 --> 01:01:37,450 que ASCII - 1500 01:01:37,450 --> 01:01:38,610 représentations de caractères - 1501 01:01:38,610 --> 01:01:40,670 utiliser le nombre de bits? 1502 01:01:40,670 --> 01:01:43,410 Et vous pourriez me souviens même de notre démo la semaine dernière de la façon dont 1503 01:01:43,410 --> 01:01:45,500 beaucoup de gens étaient sur scène. 1504 01:01:45,500 --> 01:01:46,840 Donc, 7 ou 8, généralement. 1505 01:01:46,840 --> 01:01:49,230 Donc, en général 8, et il ya quelque chose qui s'appelle tel que prorogé 1506 01:01:49,230 --> 01:01:51,240 ASCII qui utilise tous les 8 bits, au lieu de 7. 1507 01:01:51,240 --> 01:01:54,710 Mais en général, nous parlons en puissances de 2, alors dans ce cas, 8. 1508 01:01:54,710 --> 01:01:58,900 Ainsi, un char dans un langage de programmation est généralement 8 bits. 1509 01:01:58,900 --> 01:02:02,550 Ainsi, un int est généralement de 32 bits. 1510 01:02:02,550 --> 01:02:04,810 Un flotteur est généralement 32 bits. 1511 01:02:04,810 --> 01:02:08,060 Un double est généralement de 64 bits. 1512 01:02:08,060 --> 01:02:08,870 Et qu'est-ce que ça veut dire? 1513 01:02:08,870 --> 01:02:11,500 Cela signifie que vous pouvez représenter des chiffres plus élevés, ou dans le cas 1514 01:02:11,500 --> 01:02:15,490 des nombres réels, vous pouvez avoir un nombre beaucoup plus après la 1515 01:02:15,490 --> 01:02:16,240 décimale. 1516 01:02:16,240 --> 01:02:18,980 Une précision beaucoup plus, dans ce cas. 1517 01:02:18,980 --> 01:02:21,780 Maintenant un long long est malheureusement nommé. 1518 01:02:21,780 --> 01:02:24,340 Il ya donc un int qui est de 32 bits. 1519 01:02:24,340 --> 01:02:29,800 Il ya une longue ce qui est, non, 32 bits. 1520 01:02:29,800 --> 01:02:32,610 Et un long long qui est de 64 bits. 1521 01:02:32,610 --> 01:02:34,830 Toutefois, certains de ceux qui sont sensibles au contexte, elle dépend 1522 01:02:34,830 --> 01:02:36,190 quel type d'ordinateur que vous avez. 1523 01:02:36,190 --> 01:02:40,510 Donc, en général, nous allons spécifier dans un devoir ou à un quiz où 1524 01:02:40,510 --> 01:02:41,180 il importe réellement. 1525 01:02:41,180 --> 01:02:43,080 Mais le fait est qu'il ya tous ces différents 1526 01:02:43,080 --> 01:02:44,250 représentations ici. 1527 01:02:44,250 --> 01:02:45,950 >> Donc, nous allons réellement plonger dans un programme. 1528 01:02:45,950 --> 01:02:48,300 Plutôt que d'écrire celui-ci à partir de zéro, laissez-moi aller de l'avant 1529 01:02:48,300 --> 01:02:50,940 et d'ouvrir le code source à partir d'aujourd'hui - qui est 1530 01:02:50,940 --> 01:02:54,980 en ligne - si vous voulez bricoler en ligne, ou le retour sur 1531 01:02:54,980 --> 01:02:57,120 Mercredi avec l'appareil sur votre ordinateur, les instructions 1532 01:02:57,120 --> 01:02:59,160 pour qui reliera la page d'accueil du cours. 1533 01:02:59,160 --> 01:03:00,830 Voici un programme super simple. 1534 01:03:00,830 --> 01:03:02,520 Mais il a un petit quelque chose de nouveau au sommet qui 1535 01:03:02,520 --> 01:03:03,650 nous n'avions pas auparavant. 1536 01:03:03,650 --> 01:03:05,800 Un tas de lignes bleues de texte. 1537 01:03:05,800 --> 01:03:08,410 Ainsi, ces lignes bleues représentent commentaires. 1538 01:03:08,410 --> 01:03:10,620 Il est donc très utile dans un programme pour être capable d'écrire 1539 01:03:10,620 --> 01:03:13,160 quelques commentaires pour vous-même, ou à des collègues ou des amis, ou 1540 01:03:13,160 --> 01:03:15,700 boursiers d'enseignement, ce genre de décrire ce qui se passe dans 1541 01:03:15,700 --> 01:03:18,500 ce fichier, mais n'ont rien à voir avec le code C lui-même. 1542 01:03:18,500 --> 01:03:20,860 Rien à voir avec le programme fonctionnel, c'est juste 1543 01:03:20,860 --> 01:03:21,760 esthétique. 1544 01:03:21,760 --> 01:03:24,580 Ainsi, la manière de le faire en C est vous commencez généralement votre 1545 01:03:24,580 --> 01:03:29,860 commentaires / *, et vous finissez vos commentaires 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 Et si vous êtes vraiment anal et aime dessiner genre de photos, 1548 01:03:34,140 --> 01:03:35,870 alors vous mettre beaucoup de stars, tu ferais un 1549 01:03:35,870 --> 01:03:36,970 petite boîte comme ça. 1550 01:03:36,970 --> 01:03:37,990 Mais rien de tout ce qui compte. 1551 01:03:37,990 --> 01:03:40,230 La seule chose qui importe, c'est la toute première 1552 01:03:40,230 --> 01:03:41,620 et le. dernier 1553 01:03:41,620 --> 01:03:43,820 C'est ce qu'on appelle un commentaire multi-ligne. 1554 01:03:43,820 --> 01:03:46,610 Et c'est juste convention humaine font souvent les étoiles et la boîte 1555 01:03:46,610 --> 01:03:48,420 choses comme ça si vous avez beaucoup de temps libre. 1556 01:03:48,420 --> 01:03:51,550 >> Ainsi, après que vous avez écrit dans certains commentaires, en général, se 1557 01:03:51,550 --> 01:03:53,160 les entrailles mêmes du programme. 1558 01:03:53,160 --> 01:03:55,630 Voici notre familiariser # include. 1559 01:03:55,630 --> 01:04:00,410 Et juste rapide, cela est nécessaire ou pas nécessaire? 1560 01:04:00,410 --> 01:04:02,860 PUBLIC: Nécessaire. 1561 01:04:02,860 --> 01:04:04,390 DAVID MALAN: Donc ce n'est pas vraiment nécessaire. 1562 01:04:04,390 --> 01:04:07,070 Alors pourquoi, cependant, n'est-il pas nécessaire? 1563 01:04:07,070 --> 01:04:08,170 Il n'y a donc pas de printf. 1564 01:04:08,170 --> 01:04:08,510 En effet. 1565 01:04:08,510 --> 01:04:10,470 Tout ce que nous faisons dans ce programme sont les mathématiques. 1566 01:04:10,470 --> 01:04:11,640 Pour que je puisse le supprimer. 1567 01:04:11,640 --> 01:04:14,330 Donc, vous n'avez pas toujours besoin d'inclure quoi que ce soit 1568 01:04:14,330 --> 01:04:15,420 le début d'un programme. 1569 01:04:15,420 --> 01:04:17,020 >> Donc, nous allons simplifier un peu ceci. 1570 01:04:17,020 --> 01:04:18,650 Et remarquez maintenant ce que ce programme fait. 1571 01:04:18,650 --> 01:04:19,920 Pas beaucoup d'intérêt. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Eh bien, ce qui est ce que ça fait? 1574 01:04:22,550 --> 01:04:25,130 Eh bien, pensez à le modèle mental d'avant. 1575 01:04:25,130 --> 01:04:27,500 Le côté gauche de cette expression fait quoi? 1576 01:04:31,440 --> 01:04:32,830 Créer un espace pour un entier. 1577 01:04:32,830 --> 01:04:33,930 Alors, combien d'espace? 1578 01:04:33,930 --> 01:04:36,980 Eh bien, nous connaissez maintenant qu'il est 32 bits. 1579 01:04:36,980 --> 01:04:40,070 Auparavant, une chaîne de 32 bits était techniquement, mais plus 1580 01:04:40,070 --> 01:04:40,950 à ce sujet dans l'avenir. 1581 01:04:40,950 --> 01:04:42,240 Mais un int est de 32 bits. 1582 01:04:42,240 --> 01:04:45,590 Donc, cette expression à gauche ici, int x juste dit hey 1583 01:04:45,590 --> 01:04:48,490 système d'exploitation, donne-moi 32 bits de RAM - 1584 01:04:48,490 --> 01:04:50,450 autrement connu comme 4 octets de RAM - 1585 01:04:50,450 --> 01:04:53,930 de sorte que je peux mettre un entier dans cet espace. 1586 01:04:53,930 --> 01:04:55,330 Que entier vouliez-vous dire? 1587 01:04:55,330 --> 01:04:56,640 Eh bien, le numéro 1. 1588 01:04:56,640 --> 01:04:59,530 int y obtient 2, fait exactement la même chose, même si le 1589 01:04:59,530 --> 01:05:02,160 nombre est plus grand, en termes de grandeur. 1590 01:05:02,160 --> 01:05:04,790 Le nombre lui-même est encore seulement 32 bits. 1591 01:05:04,790 --> 01:05:06,520 C'est juste le motif de bits est différente de 1592 01:05:06,520 --> 01:05:08,260 représentent 1 contre 2. 1593 01:05:08,260 --> 01:05:11,980 int z dit maintenant me donner un autre 32 bits, appelez-z, et mettre le 1594 01:05:11,980 --> 01:05:14,210 somme de 1 et 2 à l'intérieur. 1595 01:05:14,210 --> 01:05:18,050 De sorte que maintenant z est probablement stocker la valeur 3, 1596 01:05:18,050 --> 01:05:19,360 et elle renvoie 0. 1597 01:05:19,360 --> 01:05:23,020 >> Maintenant ce programme, faut-il faire quelque chose d'intéressant? 1598 01:05:23,020 --> 01:05:26,170 Ainsi, il ne fait pas quelque chose d'intéressant, en tout 1599 01:05:26,170 --> 01:05:28,450 sens, parce que pourquoi? C'est faire peu de maths. 1600 01:05:28,450 --> 01:05:30,590 Mais ce n'est pas de retourner la réponse, c'est vrai. 1601 01:05:30,590 --> 01:05:31,790 Il est de retour 0. 1602 01:05:31,790 --> 01:05:33,440 Ce n'est pas l'impression de la réponse. 1603 01:05:33,440 --> 01:05:35,760 Alors ce programme est fondamentalement inutile, car il 1604 01:05:35,760 --> 01:05:36,350 actuelle. 1605 01:05:36,350 --> 01:05:37,220 C'est faire peu de travail. 1606 01:05:37,220 --> 01:05:39,530 Ça va prendre un certain nombre de secondes ou microsecondes, à 1607 01:05:39,530 --> 01:05:41,510 courir, mais il n'est pas en train de faire quoi que ce soit 1608 01:05:41,510 --> 01:05:42,770 utile pour l'humain. 1609 01:05:42,770 --> 01:05:46,810 >> Donc, nous allons maintenant ouvrir effectivement math2, où maintenant je suis en fait 1610 01:05:46,810 --> 01:05:48,250 l'impression du résultat. 1611 01:05:48,250 --> 01:05:51,260 Donc, cela aussi peut être déduit de nos exemples précédents. 1612 01:05:51,260 --> 01:05:54,320 Si je veux faire un peu de mathématiques simples, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z est 1 plus 2 maintenant. 1614 01:05:56,820 --> 01:05:59,240 Que cela va-t imprimer évidemment? 1615 01:05:59,240 --> 01:06:00,120 Juste 3. 1616 01:06:00,120 --> 01:06:01,590 Ainsi, la santé mentale vérification rapide. 1617 01:06:01,590 --> 01:06:03,830 Permettez-moi de passer dans ce répertoire. 1618 01:06:03,830 --> 01:06:06,480 Donc cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Laissez-moi aller de l'avant et de taper make math2. 1620 01:06:09,370 --> 01:06:11,510 Aucun message d'erreur est sorti, alors laissez-moi courir - 1621 01:06:11,510 --> 01:06:14,800 pas a.out, laissez-moi courir math2. Entrée. 1622 01:06:14,800 --> 01:06:16,750 Et en effet, il imprimé 3. 1623 01:06:16,750 --> 01:06:18,460 Eh bien nous allons jeter un oeil à une variante de cette. 1624 01:06:18,460 --> 01:06:23,870 En math3.c, nous avons maintenant cet exemple ici. 1625 01:06:23,870 --> 01:06:26,540 >> Alors celui-là est assez intéressant. 1626 01:06:26,540 --> 01:06:32,000 Ainsi, dans celui-là, la réponse va obtenir 1 divisé par 10, 1627 01:06:32,000 --> 01:06:33,910 et remarquez que j'ai déclaré comme un flotteur. 1628 01:06:33,910 --> 01:06:35,200 Pourquoi dois-je veux que ce soit un flotteur? 1629 01:06:35,200 --> 01:06:36,110 Eh bien, c'est une fraction. 1630 01:06:36,110 --> 01:06:37,140 Il va y avoir un nombre réel. 1631 01:06:37,140 --> 01:06:40,970 Donc, ça va être de 0,1, je l'espère - 10%, dans ce cas. 1632 01:06:40,970 --> 01:06:42,610 Et qu'est-ce que je puis souhaitez imprimer? 1633 01:06:42,610 --> 01:06:43,440 Eh bien, cette réponse. 1634 01:06:43,440 --> 01:06:44,760 Eh bien, nous allons taquiner ces dehors d'abord. 1635 01:06:44,760 --> 01:06:47,020 Ainsi, sur le côté gauche, déclarer une 1636 01:06:47,020 --> 01:06:49,410 flotter, appelez-le répondre. 1637 01:06:49,410 --> 01:06:52,280 Sur le côté droit, ne 1 divisé par 10 et le mettre 1638 01:06:52,280 --> 01:06:54,370 répondre à l'intérieur de la variable. 1639 01:06:54,370 --> 01:06:56,410 Or, cette ligne ressemble un peu plus cryptique. 1640 01:06:56,410 --> 01:06:59,440 Mais remarquez certains traits familiers. % Signifie ici est un 1641 01:06:59,440 --> 01:07:00,490 espace réservé. 1642 01:07:00,490 --> 01:07:03,230 f signifie ici est une valeur à virgule flottante, juste un réel 1643 01:07:03,230 --> 01:07:05,490 nombre, quelque chose avec un point décimal. 1644 01:07:05,490 --> 01:07:07,330 0,2 signifie quoi? 1645 01:07:07,330 --> 01:07:10,740 Quelqu'un sait d'expérience antérieure? 1646 01:07:10,740 --> 01:07:12,010 Deux décimales. 1647 01:07:12,010 --> 01:07:14,050 Donc, nous n'avons pas vu cela avant, mais c'est juste une façon de 1648 01:07:14,050 --> 01:07:16,360 l'exercice d'un peu plus de contrôle sur printf et 1649 01:07:16,360 --> 01:07:20,840 dicton ne me donnez pas 30 points après la virgule, 1650 01:07:20,840 --> 01:07:22,490 au lieu de me donner seulement 2. 1651 01:07:22,490 --> 01:07:23,960 >> Et puis nous allons aller de l'avant et de lancer ça. 1652 01:07:23,960 --> 01:07:30,160 Donc, assurez-maths 3, et maintenant laissez-moi courir mathématiques 3 et Entrée. 1653 01:07:30,160 --> 01:07:34,630 Et ce n'est pas juste. 1654 01:07:34,630 --> 01:07:37,390 Il semble que nous avons rencontré notre premier bug authentique. 1655 01:07:37,390 --> 01:07:39,400 Eh bien, peut-être que je n'ai tout simplement pas regarder d'assez près. 1656 01:07:39,400 --> 01:07:41,960 Alors laissez-moi monter ici, et laissez-moi mettre 20 décimal 1657 01:07:41,960 --> 01:07:43,300 endroits point là. 1658 01:07:43,300 --> 01:07:47,950 Et permettez-moi de compiler cela, assurez-math3, exécutez. 1659 01:07:47,950 --> 01:07:50,960 Sûr que 1 divisé par 10 n'est pas 0. 1660 01:07:50,960 --> 01:07:54,270 Alors qu'est-ce qui se passe? 1661 01:07:54,270 --> 01:07:56,740 Bon d'accord, donc en fait il n'a pas à voir avec cela. 1662 01:07:56,740 --> 01:07:57,600 C'est une bonne idée. 1663 01:07:57,600 --> 01:07:59,140 C'est vraiment juste une coïncidence 1664 01:07:59,140 --> 01:08:00,220 que nous faisons cela. 1665 01:08:00,220 --> 01:08:02,010 Mais juste pour prouver que ce n'est pas ça, je vais 1666 01:08:02,010 --> 01:08:03,160 retourner quelque chose au hasard. 1667 01:08:03,160 --> 01:08:05,160 Ne faites pas ça à la maison, parce que c'est tout simplement faux. 1668 01:08:05,160 --> 01:08:08,000 Mais assurez-math3, permettez-moi de le faire fonctionner. 1669 01:08:08,000 --> 01:08:10,690 N'a donc rien à voir avec ce que je suis de retour, il suffit de faire 1670 01:08:10,690 --> 01:08:11,940 avec ce que je suis d'impression. 1671 01:08:11,940 --> 01:08:14,150 Mais je l'ai entendu ici-bas. 1672 01:08:14,150 --> 01:08:15,270 Quoi? 1673 01:08:15,270 --> 01:08:17,524 PUBLIC: Nous avons donc besoin d'écrire les nombres dans 1674 01:08:17,524 --> 01:08:19,680 la division comme - 1675 01:08:19,680 --> 01:08:20,319 >> DAVID MALAN: Ok bon. 1676 01:08:20,319 --> 01:08:22,810 Nous avons donc besoin d'écrire du nombre de participants dans la 1677 01:08:22,810 --> 01:08:25,979 division ici en virgule flottante se valorise. 1678 01:08:25,979 --> 01:08:29,359 Donc le problème est ici comme précédemment: C, comme avec beaucoup de 1679 01:08:29,359 --> 01:08:31,819 langues, de types de données différents. 1680 01:08:31,819 --> 01:08:34,600 Et ces types de données, par exemple, sont-elles ici. 1681 01:08:34,600 --> 01:08:37,430 Et les types de données en question ici, quand je tape 1, puis-je 1682 01:08:37,430 --> 01:08:40,870 type 10, sont probablement ce que les types de données? 1683 01:08:40,870 --> 01:08:42,170 Donc c'est probablement un int, pas vrai? 1684 01:08:42,170 --> 01:08:44,149 Ce n'est certainement pas un flotteur parce qu'il n'y a aucune décimale 1685 01:08:44,149 --> 01:08:45,460 point ou quelque chose comme ça. 1686 01:08:45,460 --> 01:08:48,270 Alors, vraiment, j'ai un int divisé par un entier. 1687 01:08:48,270 --> 01:08:52,160 >> Donc, la chose intéressante à propos des mathématiques et un ordinateur est 1688 01:08:52,160 --> 01:08:54,840 si vous faites division en utilisant des nombres entiers - 1689 01:08:54,840 --> 01:08:57,310 1 divisé par 10, est oui 0,1. 1690 01:08:57,310 --> 01:09:01,420 Toutefois, lorsque vous êtes en divisant un entier par un entier, le 1691 01:09:01,420 --> 01:09:06,859 réponse doit également être un entier juste parce que, pour l'instant. 1692 01:09:06,859 --> 01:09:08,630 Et quelle est la conséquence alors? 1693 01:09:08,630 --> 01:09:13,640 Eh bien, si la réponse est 1 divisé par 10 est égal à 0,1, ce qui 1694 01:09:13,640 --> 01:09:15,680 l'ordinateur va faire, c'est que je n'ai aucune idée de comment 1695 01:09:15,680 --> 01:09:19,270 représentent 0,1, parce que c'est une valeur à virgule flottante, et non une 1696 01:09:19,270 --> 01:09:21,910 entier, ça va couper tout ce qui suit le 1697 01:09:21,910 --> 01:09:27,470 point décimal et juste vous montrer le 0 au début. 1698 01:09:27,470 --> 01:09:29,540 Et le fait que c'est l'impression en virgule flottante 1699 01:09:29,540 --> 01:09:31,200 valeur, c'est juste une chose esthétique. 1700 01:09:31,200 --> 01:09:34,279 C'est parce que je suis obliger l'ordinateur pour imprimer cela comme un 1701 01:09:34,279 --> 01:09:35,229 valeur du point flottant. 1702 01:09:35,229 --> 01:09:37,720 Et en effet, je l'ai déclaré comme un flotteur, mais le calcul est 1703 01:09:37,720 --> 01:09:39,010 passe par ici. 1704 01:09:39,010 --> 01:09:41,859 >> Permettez-moi de corriger ce fait d'une manière assez facile. 1705 01:09:41,859 --> 01:09:45,250 Pourquoi ne pas simplement faire 10,0 et 1,0, même si 1706 01:09:45,250 --> 01:09:47,609 techniquement je pourrais sortir avec juste faire un. 1707 01:09:47,609 --> 01:09:50,630 Maintenant, laissez-moi aller de l'avant et de faire math3. 1708 01:09:50,630 --> 01:09:56,350 Permettez-moi aller de l'avant et de maintenant exécuter math3, Entrée. 1709 01:09:56,350 --> 01:09:57,500 Et maintenant, oh boy. 1710 01:09:57,500 --> 01:10:00,050 Maintenant, nous avons un problème tout à fait nouveau. 1711 01:10:00,050 --> 01:10:05,600 Il vaudrait donc mieux, à droite, nous sommes plus proche de 0,1, mais ce qui est clairement 1712 01:10:05,600 --> 01:10:06,240 ne va pas ici? 1713 01:10:06,240 --> 01:10:08,260 À moins que nous avons menti à vous pendant des années, non? 1714 01:10:08,260 --> 01:10:13,660 1 divisé par 10 est en fait pas tout à fait 0,1, alors c'est quoi 1715 01:10:13,660 --> 01:10:14,700 passe vraiment ici? 1716 01:10:14,700 --> 01:10:16,420 Eh bien vous pouvez sorte de raison dans cette logique. 1717 01:10:16,420 --> 01:10:19,200 Si un ordinateur ne dispose que d'une quantité limitée de RAM pour commencer 1718 01:10:19,200 --> 01:10:23,530 avec, et même un ordinateur utilise seulement 32 bits pour une 1719 01:10:23,530 --> 01:10:26,200 flotter valeur du point, il va de soi que, avec un 1720 01:10:26,200 --> 01:10:29,870 nombre fini de bits, 32 dans ce cas, oui, vous pouvez 1721 01:10:29,870 --> 01:10:31,050 représentent beaucoup de choses. 1722 01:10:31,050 --> 01:10:33,220 Il est en fait quatre milliards de valeurs différentes peuvent être 1723 01:10:33,220 --> 01:10:38,040 représentés avec 32 bits, 2 au 32, mais c'est encore finie. 1724 01:10:38,040 --> 01:10:40,730 Donc, le problème est qu'il ya un nombre infini de réel 1725 01:10:40,730 --> 01:10:41,370 chiffres, à droite. 1726 01:10:41,370 --> 01:10:43,560 Si vous me donnez un nombre réel, je peux toujours trouver vous un 1727 01:10:43,560 --> 01:10:46,080 un peu plus grand, un peu moins, simplement en ajustant le 1728 01:10:46,080 --> 01:10:47,970 chiffres qui sont après la virgule. 1729 01:10:47,970 --> 01:10:50,870 Donc, si vous n'avez pas un nombre infini de bits, vous 1730 01:10:50,870 --> 01:10:52,940 ne peut probablement représenter un infini 1731 01:10:52,940 --> 01:10:54,800 nombre de nombres réels. 1732 01:10:54,800 --> 01:10:58,090 >> Il ya donc cette imprécision inhérente à l'informatique, et 1733 01:10:58,090 --> 01:11:00,930 ceci obtient trébucher tout le temps, même dans le plus simple des 1734 01:11:00,930 --> 01:11:02,260 programmes de ce genre. 1735 01:11:02,260 --> 01:11:05,640 Mais aussi dans certains problèmes mondiaux réels ainsi. 1736 01:11:05,640 --> 01:11:07,790 En effet, prenons un moment pour juste jeter un oeil à 1737 01:11:07,790 --> 01:11:09,530 quelque chose qui s'est réellement passé dans la réalité. 1738 01:11:09,530 --> 01:11:11,620 Nous allons regarder juste les deux premières minutes, puis 1739 01:11:11,620 --> 01:11:13,270 nous publierons en ligne lien. 1740 01:11:13,270 --> 01:11:16,700 Mais cela est un témoignage de tout ce qui peut aller mal, tout à fait 1741 01:11:16,700 --> 01:11:19,680 honnêtement, d'une manière très tragique quand ces choses ne sont pas 1742 01:11:19,680 --> 01:11:23,870 apprécié ou seulement nous, les humains font des erreurs quand il s'agit de 1743 01:11:23,870 --> 01:11:26,792 ces sortes de détails de mise en oeuvre des ordinateurs modernes. 1744 01:11:26,792 --> 01:11:27,284 >> [JEU VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -Nous allons maintenant revenir à des catastrophes d'ingénierie sur Modern Marvels. 1746 01:11:30,730 --> 01:11:32,200 Ordinateurs. 1747 01:11:32,200 --> 01:11:34,920 Nous avons tous appris à accepter les problèmes souvent frustrantes 1748 01:11:34,920 --> 01:11:36,750 qui vont avec eux. 1749 01:11:36,750 --> 01:11:40,690 Bugs, virus, logiciels et défauts sont à petits prix 1750 01:11:40,690 --> 01:11:42,550 payer pour la commodité. 1751 01:11:42,550 --> 01:11:45,170 Mais dans le domaine militaire à grande vitesse et de haute technologie et de l'espace 1752 01:11:45,170 --> 01:11:48,450 programmer des applications, le plus petit problème peut être 1753 01:11:48,450 --> 01:11:52,220 amplifié en cas de catastrophe. 1754 01:11:52,220 --> 01:11:56,780 Le 4 Juin 1996, les scientifiques se prépare à lancer un drone 1755 01:11:56,780 --> 01:11:58,430 Fusée Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 Il portait satellites scientifiques destinés à 1757 01:12:00,750 --> 01:12:03,580 établir avec précision comment le champ magnétique de la terre 1758 01:12:03,580 --> 01:12:06,900 interagit avec les vents solaires. 1759 01:12:06,900 --> 01:12:10,330 La fusée a été construit pour l'Agence spatiale européenne et 1760 01:12:10,330 --> 01:12:13,450 a décollé de son usine sur la côte de la Guyane française. 1761 01:12:13,450 --> 01:12:16,970 >> -À environ environ 37 secondes après le vol, ils ont d'abord 1762 01:12:16,970 --> 01:12:19,700 quelque chose n'allait pas remarqué, que les buses sont 1763 01:12:19,700 --> 01:12:21,590 pivoter d'une manière qu'ils ne devriez vraiment pas. 1764 01:12:21,590 --> 01:12:25,020 Environ 40 secondes après le vol du véhicule, il est évident 1765 01:12:25,020 --> 01:12:27,340 était en difficulté, et c'est là qu'ils ont pris la décision de 1766 01:12:27,340 --> 01:12:28,136 le détruire. 1767 01:12:28,136 --> 01:12:31,450 Un agent de sécurité large avec les tripes énormes appuyé sur la 1768 01:12:31,450 --> 01:12:34,160 bouton, fait exploser la fusée avant qu'elle puisse devenir un 1769 01:12:34,160 --> 01:12:37,470 danger pour la sécurité publique. 1770 01:12:37,470 --> 01:12:40,750 >> -Ce fut le voyage inaugural d'Ariane 5, et son 1771 01:12:40,750 --> 01:12:43,990 destruction a eu lieu en raison d'un défaut intégrée dans le 1772 01:12:43,990 --> 01:12:45,480 fusée logiciel. 1773 01:12:45,480 --> 01:12:47,660 >> -Le problème sur le lanceur Ariane était qu'il y avait un certain nombre qui 1774 01:12:47,660 --> 01:12:51,245 nécessite 64 bits pour exprimer et ils voulaient le convertir 1775 01:12:51,245 --> 01:12:53,010 pour un nombre de 16 bits. 1776 01:12:53,010 --> 01:12:54,900 Ils ont supposé que le nombre n'a jamais été 1777 01:12:54,900 --> 01:12:56,280 va être très grand, 1778 01:12:56,280 --> 01:12:59,920 que la plupart de ces chiffres dans le numéro 64 bits sont 0. 1779 01:12:59,920 --> 01:13:01,860 Ils ont eu tort. 1780 01:13:01,860 --> 01:13:04,550 >> -Le incapacité d'un logiciel d'accepter le 1781 01:13:04,550 --> 01:13:07,730 type de numéro généré par un autre est à l'origine de 1782 01:13:07,730 --> 01:13:08,930 l'échec. 1783 01:13:08,930 --> 01:13:11,490 Le développement de logiciels est devenu une partie très coûteux de 1784 01:13:11,490 --> 01:13:13,280 nouvelle technologie. 1785 01:13:13,280 --> 01:13:16,530 La fusée Ariane 4 avait été très fructueuse. 1786 01:13:16,530 --> 01:13:19,100 Ainsi, la plupart des logiciels créés pour elle a également été utilisée 1787 01:13:19,100 --> 01:13:21,050 dans le lanceur Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -Le problème fondamental est que le lanceur Ariane 5 a été plus rapide, 1789 01:13:25,530 --> 01:13:27,280 accéléré plus rapidement. 1790 01:13:27,280 --> 01:13:30,590 Et le logiciel n'avait pas prévu cela. 1791 01:13:30,590 --> 01:13:33,060 >> -La destruction de la fusée était un grand financier 1792 01:13:33,060 --> 01:13:37,670 en cas de catastrophe, tous dus à une erreur de logiciel minute. 1793 01:13:37,670 --> 01:13:40,750 Mais ce n'était pas la première fois que des problèmes de conversion de données a eu 1794 01:13:40,750 --> 01:13:43,680 en proie à la technologie moderne des fusées. 1795 01:13:43,680 --> 01:13:44,390 >> DAVID MALAN: Nous allons en rester là. 1796 01:13:44,390 --> 01:13:46,870 Mais cela témoigne de combien applicable même quelques-uns des 1797 01:13:46,870 --> 01:13:48,750 ces détails plus bas niveau que nous avons commencé à 1798 01:13:48,750 --> 01:13:50,040 explorer aujourd'hui. 1799 01:13:50,040 --> 01:13:52,510 Donc, même si vous êtes un peu distrait peut-être par quelques-uns des 1800 01:13:52,510 --> 01:13:55,240 la syntaxe et arcanisme ici, se rendre compte que plus de la 1801 01:13:55,240 --> 01:13:57,690 terme, nous allons se concentrer seulement sur la façon dont cela est applicable à 1802 01:13:57,690 --> 01:13:59,530 bien au-delà des mondes CS. 1803 01:13:59,530 --> 01:14:00,780 Nous vous voir mercredi.