1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [LECTURE VIDÉO] 3 00:00:16,626 --> 00:00:19,410 >> -A Triomphe des mathématiques et l'habileté mécanique 4 00:00:19,410 --> 00:00:23,270 est cette grande nouvelle automatique calculatrice à l'Université Harvard. 5 00:00:23,270 --> 00:00:27,140 Problèmes complexes en mathématiques mettre dans la machine sous forme codée 6 00:00:27,140 --> 00:00:31,710 sur bande sont résolus de façon précise dans un fraction de minute du temps nécessaire 7 00:00:31,710 --> 00:00:32,819 pour le calcul humain. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Conçu pour accélérer toutes les formes de la recherche mathématique et scientifique, 10 00:00:48,220 --> 00:00:53,840 le cerveau mécanique géant va travailler pour la Marine des États-Unis jusqu'à la fin de la guerre. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [FIN LECTURE] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. Malan: Ce, est CS50. 14 00:01:08,590 --> 00:01:10,590 Le passé était un lieu magique place, mais si vous avez déjà 15 00:01:10,590 --> 00:01:13,366 se demandait ce que ce dispositif est à Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 il est en effet partie de la Harvard Mark I, et il est 17 00:01:16,150 --> 00:01:18,710 sur l'écran il y maintenant pour les dernières années de nombreux. 18 00:01:18,710 --> 00:01:20,590 Et ce que vous verrez intégré dans le jeu de problème 19 00:01:20,590 --> 00:01:24,416 l'un est un regard derrière les coulisses à ce que ce dispositif a fait, et fait, 20 00:01:24,416 --> 00:01:27,540 du professeur Harry Lewis, qui est en la science de service informatique ici. 21 00:01:27,540 --> 00:01:29,440 Donc, plus que dans un peu. 22 00:01:29,440 --> 00:01:33,990 >> Mais aujourd'hui, nous commençons à la transition de la semaine dernière à cela, 23 00:01:33,990 --> 00:01:37,290 et nous allons faire mention d'une photographie ici 24 00:01:37,290 --> 00:01:38,630 qui est en fait assez célèbre. 25 00:01:38,630 --> 00:01:42,270 Est-ce que quelqu'un sait ce que cela ici est sur l'écran? 26 00:01:42,270 --> 00:01:43,880 Au moins selon le mythe. 27 00:01:43,880 --> 00:01:44,837 Ouais. 28 00:01:44,837 --> 00:01:45,920 AUDIENCE: Le premier virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. Malan: il était donc censément le premier bogue dans un ordinateur. 30 00:01:49,570 --> 00:01:52,490 Maintenant, en réalité, le mot bug, pour une erreur dans un programme, 31 00:01:52,490 --> 00:01:55,250 a été avec nous pendant un certain temps dans le monde physique, 32 00:01:55,250 --> 00:01:58,190 et ce fut l'un des premiers documentés fois où quelqu'un fait 33 00:01:58,190 --> 00:02:02,280 cueilli un grand papillon de la marque Ordinateur II, le mettre dans le liant, 34 00:02:02,280 --> 00:02:05,006 puis enregistrées il que le premier bogue connu 35 00:02:05,006 --> 00:02:06,630 avoir été effectivement trouvé physiquement. 36 00:02:06,630 --> 00:02:10,104 Ainsi donc été conclu que dans la tradition d'aujourd'hui. 37 00:02:10,104 --> 00:02:12,020 Tout, depuis la dernière la semaine est disponible en ligne. 38 00:02:12,020 --> 00:02:14,840 En particulier les ressources que vous pourriez pas nécessairement remarquer, en particulier 39 00:02:14,840 --> 00:02:15,881 si venir ici en personne. 40 00:02:15,881 --> 00:02:20,230 Donc, l'un des boursiers de l'enseignement tous les année fait un ensemble canonique de notes, 41 00:02:20,230 --> 00:02:22,010 de sorte que vous ne devez pas garder votre tête vers le bas, en essayant 42 00:02:22,010 --> 00:02:24,410 pour transcrire la plupart rien cela pourrait arriver ici dans la classe. 43 00:02:24,410 --> 00:02:25,940 Donc réaliser que ceux qui soi-disant [? Scribd?] Notes 44 00:02:25,940 --> 00:02:29,350 sont en ligne, certainement les diapositives et code source que nous utilisons en classe. 45 00:02:29,350 --> 00:02:31,436 Nous faisons plein transcriptions textuelles disponible aussi bien. 46 00:02:31,436 --> 00:02:34,310 Donc, si vous vous souvenez vaguement quelque terme, et que vous voulez le chercher un peu 47 00:02:34,310 --> 00:02:37,280 plus facilement, se rendre compte que tous les de qui est consultable en ligne. 48 00:02:37,280 --> 00:02:38,930 Ainsi que soluces ainsi. 49 00:02:38,930 --> 00:02:42,710 En effet, aujourd'hui, nous commençons à regarder un langage de programmation de niveau inférieur, 50 00:02:42,710 --> 00:02:45,290 qui sera bientôt connu de nous comme C, et il est très facile 51 00:02:45,290 --> 00:02:48,820 en quelque sorte de se perdre après quelques moments de temps, puis sorte de merveille 52 00:02:48,820 --> 00:02:52,370 comment nous avons obtenu à un peu plus exemple complexe de la plus simple. 53 00:02:52,370 --> 00:02:54,975 Et donc nous allons réaliser la cerise ramasser pendant la classe certaine 54 00:02:54,975 --> 00:02:57,850 des exemples représentatifs, mais se rendre compte que bien plus est également 55 00:02:57,850 --> 00:03:01,140 disponible en ligne afin que vous puissiez travailler à travers elle, à votre rythme, 56 00:03:01,140 --> 00:03:02,950 Cependant, vous êtes plus à l'aise. 57 00:03:02,950 --> 00:03:05,200 >> Mais nous nous sommes quittés avec programmes qui étaient exactement cela. 58 00:03:05,200 --> 00:03:09,690 Donc, je clique sur le drapeau vert, et qu'est-ce que ce programme fait? 59 00:03:09,690 --> 00:03:10,710 Dit, bonjour, monde. 60 00:03:10,710 --> 00:03:13,180 Il rend le chat dire bonjour dans son petit monde 61 00:03:13,180 --> 00:03:15,990 sur le côté supérieur gauche de l'interface utilisateur de Scratch. 62 00:03:15,990 --> 00:03:18,810 Mais nous avons commencé à introduire des une certaine terminologie de la semaine dernière. 63 00:03:18,810 --> 00:03:23,614 Et donc, ce genre de choses nous avons appelé quoi? 64 00:03:23,614 --> 00:03:25,280 Quel pourrait être le terme générique pour cela? 65 00:03:25,280 --> 00:03:26,266 Ouais. 66 00:03:26,266 --> 00:03:28,210 Une méthode ou une déclaration. 67 00:03:28,210 --> 00:03:29,280 Bien sûr, il est une action. 68 00:03:29,280 --> 00:03:30,140 Pour ce faire. 69 00:03:30,140 --> 00:03:32,400 Et pourtant, il y avait d'autres formes à zéro, 70 00:03:32,400 --> 00:03:35,360 Outre ces soi-disant déclaration, ils étaient aussi 71 00:03:35,360 --> 00:03:38,221 ce genre de choses, que nous avons appelés quoi? 72 00:03:38,221 --> 00:03:38,720 Ouais. 73 00:03:38,720 --> 00:03:39,634 Ainsi, une boucle. 74 00:03:39,634 --> 00:03:42,050 Et dans ce cas, cette chose répétitions, évidemment, 10 fois. 75 00:03:42,050 --> 00:03:43,040 Il ya un bloc toujours. 76 00:03:43,040 --> 00:03:44,164 Il ya quelques autres. 77 00:03:44,164 --> 00:03:48,309 Et aujourd'hui, nous allons voir comment traduire ce à un monde plus moderne, 78 00:03:48,309 --> 00:03:50,850 si vous voulez, même si elle est va apparaître au premier coup d'œil 79 00:03:50,850 --> 00:03:52,024 être beaucoup plus mystérieux. 80 00:03:52,024 --> 00:03:53,190 Mais ceux qui étaient boucles effet. 81 00:03:53,190 --> 00:03:56,182 Et puis, nous avons des choses comme ce qui a eu cette forme, 82 00:03:56,182 --> 00:03:57,515 et essentiellement posées. 83 00:03:57,515 --> 00:03:58,890 Et nous avons parlé ces derniers comme quoi? 84 00:03:58,890 --> 00:03:59,762 >> AUDIENCE: expression booléenne. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. Malan: Ouais. 86 00:04:00,320 --> 00:04:01,340 Expression booléenne. 87 00:04:01,340 --> 00:04:04,502 Quelque chose qui est vrai ou faux, oui ou non, un ou zéro, 88 00:04:04,502 --> 00:04:05,960 mais vous voulez voir dans le monde. 89 00:04:05,960 --> 00:04:08,335 Mais nous avons appelé ceux booléenne expressions, et nous les brancher 90 00:04:08,335 --> 00:04:09,900 dans des conditions, ou les branches. 91 00:04:09,900 --> 00:04:12,170 Et dans le monde de Scratch, tout bien 92 00:04:12,170 --> 00:04:15,460 verrouillages en termes de sa forme, si elle est logique de le faire, 93 00:04:15,460 --> 00:04:18,490 mais vous ne devez pas arrêter à un faire une chose conditionnellement, 94 00:04:18,490 --> 00:04:20,450 vous pouvez avoir une proverbiale bifurcation de la route 95 00:04:20,450 --> 00:04:24,040 et à faire ceci ou cela si la condition est vraie ou non. 96 00:04:24,040 --> 00:04:26,040 Et puis, comme vous le verrez, si vous avez pas déjà fait, 97 00:04:26,040 --> 00:04:27,480 Vous pouvez même imbriquer ces blocs. 98 00:04:27,480 --> 00:04:32,110 Donc Scratch pousse à remplir les formes que vous pouvez y insérer, 99 00:04:32,110 --> 00:04:35,330 de sorte que vous pouvez réellement exprimer plus toute logique que vous pourriez faire. 100 00:04:35,330 --> 00:04:38,220 >> Maintenant, quelques mots de l'annonce à la fois ici et New Haven. 101 00:04:38,220 --> 00:04:39,370 Donc sectionnement commence aujourd'hui. 102 00:04:39,370 --> 00:04:42,120 L'URL de ce est sur le parcours de site, pour ceux qui ne connaissent. 103 00:04:42,120 --> 00:04:43,970 Les articles seront une occasion de se réunir 104 00:04:43,970 --> 00:04:46,553 dans un environnement beaucoup plus intime de [? Sanders?] Permet, 105 00:04:46,553 --> 00:04:50,347 avec 10 à 20 camarades de classe avec un enseignant chercheur à différentes pistes, 106 00:04:50,347 --> 00:04:51,930 et des rythmes différents, si vous le souhaitez. 107 00:04:51,930 --> 00:04:54,080 En effet, les offres de cours différentes sections 108 00:04:54,080 --> 00:04:57,340 pour ceux qui sont moins à l'aise, plus confortable, et quelque part entre les deux, 109 00:04:57,340 --> 00:04:59,860 et le rôle de base ici, est il n'y a pas de définition officielle, 110 00:04:59,860 --> 00:05:04,600 mais si vous êtes moins à l'aise, vous savez ce genre de. 111 00:05:04,600 --> 00:05:07,470 Vous êtes un peu intrépide sur le idée de mettre le pied, peut-être, de retour 112 00:05:07,470 --> 00:05:10,130 dans la salle de classe, ou montrant jusqu'à une section entre les deux. 113 00:05:10,130 --> 00:05:12,770 Si vous avez été la programmation puisque vous étaient six ans, plus confortable, 114 00:05:12,770 --> 00:05:13,400 peut-être pour vous. 115 00:05:13,400 --> 00:05:16,150 Et si elle est une sorte de pile ou face, qui est exactement ce que l'entre- 116 00:05:16,150 --> 00:05:17,190 est censé être. 117 00:05:17,190 --> 00:05:18,410 >> Maintenant, dans l'intervalle, pour une classe de cette taille, 118 00:05:18,410 --> 00:05:21,326 il nous faut un certain temps à l'article tout le monde, de sorte que nous avons dite, 119 00:05:21,326 --> 00:05:24,030 super-sections, à venir jusqu'à ce week-end et le début de la semaine prochaine, 120 00:05:24,030 --> 00:05:26,570 alors jetez un oeil sur le site de cours pour ceux qui sont bien entendu de largeur, 121 00:05:26,570 --> 00:05:28,610 et aussi filmé pour ceux qui ne peut pas les faire. 122 00:05:28,610 --> 00:05:33,470 Et sections elles-mêmes vont commencer dans la troisième semaine de CS50 index zéro. 123 00:05:33,470 --> 00:05:35,880 Problème réglé 0 est déjà sur le site Web du cours. 124 00:05:35,880 --> 00:05:40,010 Et de réaliser que vous ne possédez neuf jours de retard ce semestre. 125 00:05:40,010 --> 00:05:43,240 Donc, ceci est une mise à niveau de la dernière année, lorsque nous avons eu cinq jours de retard. 126 00:05:43,240 --> 00:05:46,210 >> Donc, si vous vous demandez, nous avons neuf ensembles de problèmes. 127 00:05:46,210 --> 00:05:53,200 Vous avez neuf jours de retard, dont chacun vous ne pouvez passer une semaine sur. 128 00:05:53,200 --> 00:05:56,089 Cela fait efficacement tous le problème définit raison vendredi 129 00:05:56,089 --> 00:05:58,630 mais l'objectif est de mettre un peu peu de pression psychologique 130 00:05:58,630 --> 00:06:01,100 sur vous pour essayer d'obtenir choses jeudi 131 00:06:01,100 --> 00:06:03,960 parce que, comme vous allez bientôt découvrir, pour le meilleur ou pour le pire, la plupart 132 00:06:03,960 --> 00:06:07,820 tout dans le monde du logiciel se termine prendre beaucoup plus de temps que vous prévoyez. 133 00:06:07,820 --> 00:06:10,620 Considérons donc une sorte d'occasion d'aider 134 00:06:10,620 --> 00:06:13,880 vous prendre pour cible jeudi mais prendre le confort en ce que, oui, 135 00:06:13,880 --> 00:06:14,950 tout est dû vendredi. 136 00:06:14,950 --> 00:06:17,590 Et si vous soumettez les sur Jeudi qui est merveilleux. 137 00:06:17,590 --> 00:06:21,020 Il n'y a pas de points bonus ou supplémentaire crédit pour respecter ce délai. 138 00:06:21,020 --> 00:06:23,250 Il est censé être seulement une béquille. 139 00:06:23,250 --> 00:06:25,810 >> Et les heures de bureau, à la fois ici et à New Haven, 140 00:06:25,810 --> 00:06:28,840 en personne, si vous souhaitez rencontrer un de nos cours 141 00:06:28,840 --> 00:06:31,060 enseignement boursiers et les CA d'assistance. 142 00:06:31,060 --> 00:06:31,640 >> Bien. 143 00:06:31,640 --> 00:06:33,110 Alors maintenant, nous allons faire cela plus réel. 144 00:06:33,110 --> 00:06:35,470 Et pour un moment, il va commencer pour obtenir un peu plus obscur, mais très 145 00:06:35,470 --> 00:06:37,310 rapidement vendredi et la semaine prochaine, nous serons 146 00:06:37,310 --> 00:06:41,230 capable de faire beaucoup plus que nous pourrions à ce jour dans Scratch. 147 00:06:41,230 --> 00:06:44,350 Donc, nous avons introduit le dernier code semaine, quoique picturale. 148 00:06:44,350 --> 00:06:45,620 Il était des pièces de puzzle. 149 00:06:45,620 --> 00:06:48,800 Et nous avons formalisé qu'il est ce qu'on appelle le code source, 150 00:06:48,800 --> 00:06:50,330 mais qui ne ressemblerait-il? 151 00:06:50,330 --> 00:06:52,550 Eh bien, il avait l'air un peu quelque chose comme ca. 152 00:06:52,550 --> 00:06:55,410 Et, en fait, juste sorte de taquiner où nous pouvons aller avec cela. 153 00:06:55,410 --> 00:06:57,800 Je vais aller de l'avant et ouvrir une fenêtre ici, 154 00:06:57,800 --> 00:06:59,810 et je vais juste de choisir un nouveau fichier. 155 00:06:59,810 --> 00:07:03,200 Et je vais enregistrer ce fichier comme quelque chose comme bonjour dot c. 156 00:07:03,200 --> 00:07:05,700 Plus de détails sur ce choix de mots dans un instant. 157 00:07:05,700 --> 00:07:08,630 Et voilà comment quelqu'un pourrait aller sur l'écriture d'un programme. 158 00:07:08,630 --> 00:07:13,990 Inclure I / S standard dot h, int main vide, puis ouverte accolade, à proximité 159 00:07:13,990 --> 00:07:19,430 accolade, printf Bonjour tout le monde par des virgules, n barre oblique inverse, point-virgule, Enregistrer, fait. 160 00:07:19,430 --> 00:07:19,930 D'ACCORD. 161 00:07:19,930 --> 00:07:21,670 Je l'ai écrit mon premier programme, mais ça va 162 00:07:21,670 --> 00:07:23,878 être incroyablement underwhelmed parce que quand je fait 163 00:07:23,878 --> 00:07:27,352 exécuter ce programme, bien sûr, en écrivant d'abord faire bonjour, 164 00:07:27,352 --> 00:07:30,310 puis dot slash bonjour, et nous allons passer par cette beaucoup plus en détail 165 00:07:30,310 --> 00:07:31,730 dans un moment, voilà tout ce qu'il fait. 166 00:07:31,730 --> 00:07:33,270 Ne pas ouvrir des pop toutes les fenêtres. 167 00:07:33,270 --> 00:07:35,070 Il ne fait rien particulièrement de fantaisie. 168 00:07:35,070 --> 00:07:38,830 Tout ce qu'il fait est ce que je disais à faisons, mais comment pouvons-nous en arriver là? 169 00:07:38,830 --> 00:07:40,560 Et comment pouvons-nous construire sur cela? 170 00:07:40,560 --> 00:07:43,430 Eh bien, nous allons introduire quelques différents concepts ici. 171 00:07:43,430 --> 00:07:47,170 >> Donc un, nous sommes sur le point de commencer utilisant un programme appelé un compilateur. 172 00:07:47,170 --> 00:07:51,470 Il existe un compilateur pour Mac OS, Windows, Linux, un nombre quelconque de systèmes d'exploitation, 173 00:07:51,470 --> 00:07:54,540 et nous allons bientôt vous présenter le environnement que nous allons utiliser, 174 00:07:54,540 --> 00:07:57,410 mais un compilateur est juste un général terme pour un morceau de logiciel 175 00:07:57,410 --> 00:08:01,940 qui prend le code source et produit code objet de celle-ci. 176 00:08:01,940 --> 00:08:03,940 En d'autres termes, si vous avoir comme entrée source 177 00:08:03,940 --> 00:08:08,250 code, quelque chose comme ce que je viens tapé, il produit finalement code objet. 178 00:08:08,250 --> 00:08:11,780 Et code objet est vraiment juste une façon élégante de dire qu'il émet 179 00:08:11,780 --> 00:08:12,926 de zéro et de un. 180 00:08:12,926 --> 00:08:14,800 En d'autres termes, la source code, même si elle est 181 00:08:14,800 --> 00:08:17,240 aller chercher un peu mystérieux, et un peu moins convivial 182 00:08:17,240 --> 00:08:19,590 que Scratch, à première vue, il est au moins quelque chose 183 00:08:19,590 --> 00:08:21,120 que nous, les humains peuvent comprendre. 184 00:08:21,120 --> 00:08:24,360 Ce genre de ressemble et ressemble Anglais, même si elle est très succinct. 185 00:08:24,360 --> 00:08:28,040 Alors que la programmation en zéros et son, comme nos prédécesseurs avaient à faire, 186 00:08:28,040 --> 00:08:30,920 il ya quelques années, était pas un défi particulièrement amusant. 187 00:08:30,920 --> 00:08:33,710 Et pourtant, voici ce que le ordinateur comprend encore. 188 00:08:33,710 --> 00:08:37,010 Donc compilateur nous reçoit de code source en code objet. 189 00:08:37,010 --> 00:08:39,860 Il est comme l'ouverture d'un fichier avec le compilateur, et lorsque vous l'enregistrez, 190 00:08:39,860 --> 00:08:41,419 vous obtenez ces zéros et de uns. 191 00:08:41,419 --> 00:08:43,419 Donc, nous allons voir comment faire que dans un instant. 192 00:08:43,419 --> 00:08:47,400 >> Mais nous allons maintenant essayer de fournir une pont entre la semaine dernière et ce, 193 00:08:47,400 --> 00:08:50,660 de sorte que même si nous sommes raccrochés sur des choses comme des accolades, 194 00:08:50,660 --> 00:08:54,100 et des points-virgules, et les parenthèses, et tous ces intellectuellement intéressante 195 00:08:54,100 --> 00:08:57,620 aspects de la programmation, que très déclencher naturellement les gens dès le début, 196 00:08:57,620 --> 00:09:00,930 rendre compte que toutes les idées aujourd'hui, sont les mêmes que dernier. 197 00:09:00,930 --> 00:09:03,975 Donc dernière, nous avons vu cet exemple ici, le programme Bonjour tout le monde. 198 00:09:03,975 --> 00:09:07,500 Eh bien, à partir d'aujourd'hui, si nous voulons de mettre en œuvre ce même programme, 199 00:09:07,500 --> 00:09:10,800 il va à regarder un petit quelque chose comme ça. 200 00:09:10,800 --> 00:09:14,040 Et nous allons vous expliquer avant longtemps ce que int, et principale, et non avenu, et tout cela 201 00:09:14,040 --> 00:09:18,770 est, mais au moins je vois ici déjà familier Bonjour tout le monde. 202 00:09:18,770 --> 00:09:20,860 >> Pendant ce temps, des choses comme fonction, dire bonjour, 203 00:09:20,860 --> 00:09:23,570 est très va simplement être un très simple déclaration de ce genre. 204 00:09:23,570 --> 00:09:26,930 Printf Bonjour tout le monde, avec une certaine cite, avec une barre oblique inverse, 205 00:09:26,930 --> 00:09:29,780 avec un point-virgule, mais plus sur celui à venir. 206 00:09:29,780 --> 00:09:34,066 Loops, quant à lui, ceci est une boucle qui, bien sûr, dit bonjour monde pour toujours, 207 00:09:34,066 --> 00:09:36,690 et celui-ci va chercher un peu étrange que dans le dernier, 208 00:09:36,690 --> 00:09:39,530 mais si je dis quelque chose comme, tout en vrai, je 209 00:09:39,530 --> 00:09:44,050 peut ensuite imprimer Bonjour tout le monde encore et encore et encore et encore. 210 00:09:44,050 --> 00:09:46,660 Et puis, comme vous pouvez genre de commencer à déduire ici, 211 00:09:46,660 --> 00:09:49,070 cette convention d'utilisation accolades est une sorte 212 00:09:49,070 --> 00:09:52,050 comme d'embrasser la ligne en retrait du code là. 213 00:09:52,050 --> 00:09:55,840 La ligne de printf du code beaucoup comme la pièce de puzzle jaune au-dessus. 214 00:09:55,840 --> 00:09:58,740 Donc, on ne va pas dire toujours, nous allons dire tout vrai, 215 00:09:58,740 --> 00:10:01,020 mais nous allons voir pourquoi ce qui est dans juste un peu. 216 00:10:01,020 --> 00:10:04,210 >> Pendant ce temps, si nous avons une boucle comme ça, où vous répétez quelque chose d'un fini 217 00:10:04,210 --> 00:10:07,730 nombre de fois, celui-là aussi il est va prendre un peu pour s'y habituer 218 00:10:07,730 --> 00:10:12,820 , mais il va dire pour int i obtient zéro, i moins de 10, i ++, 219 00:10:12,820 --> 00:10:14,056 puis printf nouveau. 220 00:10:14,056 --> 00:10:15,430 Mais il va y avoir des motifs. 221 00:10:15,430 --> 00:10:18,434 Et pour ceux d'entre vous connaissent avec AP Computer Science, ou Java, 222 00:10:18,434 --> 00:10:21,100 ou tout nombre d'autres langues, la quasi-totalité de ces constructions 223 00:10:21,100 --> 00:10:23,820 jusqu'à présent devrait se pencher essentiellement familier. 224 00:10:23,820 --> 00:10:24,680 >> Donc variable. 225 00:10:24,680 --> 00:10:29,270 Alors, voici un extrait de Scratch simple définit une variable appelée compteur à zéro, 226 00:10:29,270 --> 00:10:33,150 puis dit toujours le compteur, et alors il change le compteur d'une unité. 227 00:10:33,150 --> 00:10:37,030 Alors il commence par zéro, et puis un, deux, trois. 228 00:10:37,030 --> 00:10:42,560 Eh bien, comment pourrions-nous présenter que dans ce nouveau langage un peu de la même façon? 229 00:10:42,560 --> 00:10:45,460 Int compteur est égale zéro, tandis que vrai, qui 230 00:10:45,460 --> 00:10:48,100 est que même idée d'avant de faire quelque chose pour toujours, 231 00:10:48,100 --> 00:10:49,530 et je vais juste à printf. 232 00:10:49,530 --> 00:10:53,310 Et maintenant, ça devient un peu étrange, i pour cent, mais plus sur cela à venir, 233 00:10:53,310 --> 00:10:55,140 mais ces idées sont exactement les mêmes. 234 00:10:55,140 --> 00:10:58,820 Nous avons maintenant juste d'adhérer à la syntaxe que l'ordinateur est 235 00:10:58,820 --> 00:11:00,010 va exiger de nous. 236 00:11:00,010 --> 00:11:04,620 >> Expression booléenne, quelque chose comme sx inférieur à y, x ou inférieur à y, 237 00:11:04,620 --> 00:11:06,354 y et z inférieure. 238 00:11:06,354 --> 00:11:09,270 Il va chercher un petit quelque chose comme ça, avec entre parenthèses seulement 239 00:11:09,270 --> 00:11:13,020 comme en mathématiques pour faire bonne mesure juste faire en sorte que l'ordre des opérations 240 00:11:13,020 --> 00:11:14,750 est que nous avons l'intention. 241 00:11:14,750 --> 00:11:15,600 Et maintenant, les conditions. 242 00:11:15,600 --> 00:11:21,220 Donc, si x inférieur à y, disons x est inférieur à y, sinon si x est supérieur à y, 243 00:11:21,220 --> 00:11:26,020 dire x est supérieur à y, sinon logiquement, x doit être égal à y. 244 00:11:26,020 --> 00:11:28,710 Donc, vous pourriez mettre en œuvre quelque chose comme ça dans Scratch, 245 00:11:28,710 --> 00:11:31,230 ou vous pourriez mettre en œuvre dans cette syntaxe. 246 00:11:31,230 --> 00:11:35,090 Et encore, les accolades sont des sortes de nous donnant la même forme que le puzzle 247 00:11:35,090 --> 00:11:40,750 morceaux, mais la syntaxe, maintenant, est peut-être à partir de suivre certaines tendances. 248 00:11:40,750 --> 00:11:42,910 >> Alors, qu'est-ce que cela nous donne ici? 249 00:11:42,910 --> 00:11:45,260 Donc, nous sommes à l'époque de notre programme principal. 250 00:11:45,260 --> 00:11:47,930 Voyons effectivement, maintenant, faire quelque chose avec elle. 251 00:11:47,930 --> 00:11:50,660 Ainsi, dans cette première ligne nous voyons forte comprennent, 252 00:11:50,660 --> 00:11:53,160 E / S standard, point h, et puis un certain angle bizarre 253 00:11:53,160 --> 00:11:57,330 supports en dessous. int main vide, puis printf Bonjour tout le monde. 254 00:11:57,330 --> 00:11:58,200 Il suffit donc de faire un pas. 255 00:11:58,200 --> 00:12:02,440 Quelqu'un qui n'a jamais programmé avant, expliquer au moins une de ces lignes. 256 00:12:02,440 --> 00:12:04,490 En utilisant peut-être quelques-uns des le jargon de la semaine dernière. 257 00:12:04,490 --> 00:12:06,942 Quel est printf, par exemple? 258 00:12:06,942 --> 00:12:07,442 Ouais. 259 00:12:07,442 --> 00:12:08,410 >> AUDIENCE: [inaudible] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. Malan: Ouais. 261 00:12:08,610 --> 00:12:11,380 Il est une fonction, ou une déclaration, de la terminologie de la semaine dernière. 262 00:12:11,380 --> 00:12:13,470 Et il est une action qui fait quelque chose. 263 00:12:13,470 --> 00:12:15,855 Maintenant cette fonction, ou cette déclaration, le fait 264 00:12:15,855 --> 00:12:17,550 il semble prendre un certain type d'entrée? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 Et dans quel sens le fait semblent prendre d'entrée, le cas échéant? 267 00:12:24,380 --> 00:12:26,180 Entrée, ce que je veux dire par là? 268 00:12:26,180 --> 00:12:26,720 Ouais. 269 00:12:26,720 --> 00:12:27,595 >> AUDIENCE: [inaudible] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. Malan: Ouais. 272 00:12:31,440 --> 00:12:34,890 Donc gratter quelques pièces du puzzle où vous pouvez paramétrer cela. 273 00:12:34,890 --> 00:12:37,980 Vous pourriez dire la répétition bloquer combien de fois pour répéter, 274 00:12:37,980 --> 00:12:40,320 donc ça a été une entrée sortes, et tout comme Scratch 275 00:12:40,320 --> 00:12:43,060 avait un petit espace réservé blanc pour le numéro que vous voulez taper, 276 00:12:43,060 --> 00:12:45,810 Donc, ne nous utilisons dans ce texte entre parenthèses du monde 277 00:12:45,810 --> 00:12:49,910 pour nous donner cette forme circulaire dans lequel nous pouvons brancher notre entrée. 278 00:12:49,910 --> 00:12:53,180 Après tout, il ya des dizaines d'années lorsque cette langue, appelé C, 279 00:12:53,180 --> 00:12:55,950 a été inventé nul il est prévu de nous, 280 00:12:55,950 --> 00:12:59,420 ces quelques années plus tard, nous avions veulent une fonction qui dit bonjour. 281 00:12:59,420 --> 00:12:59,920 Droit? 282 00:12:59,920 --> 00:13:02,880 Ce serait bien si il y avait un pièce du puzzle, ou quelques mots clés, 283 00:13:02,880 --> 00:13:05,502 on appelle ça bonjour, que littéralement juste dit bonjour. 284 00:13:05,502 --> 00:13:06,460 Mais nous ne devons pas cela. 285 00:13:06,460 --> 00:13:09,320 Nous pouvons avoir quelque chose de beaucoup plus faible niveau, comme une impression générique 286 00:13:09,320 --> 00:13:12,760 commande, qui accepte une entrée, et gravures que nous voulons. 287 00:13:12,760 --> 00:13:14,960 Donc remarquerez maintenant le motif qui va commencer à émerger. 288 00:13:14,960 --> 00:13:19,310 Paren ouvrir, fermer la parenthèse est apparemment embrassant l'entrée, 289 00:13:19,310 --> 00:13:21,770 et puis je vois double- citations sur les deux extrémités. 290 00:13:21,770 --> 00:13:25,110 Il est toujours bizarre barre oblique inverse n, mais nous espérons que maintenant vous 291 00:13:25,110 --> 00:13:29,900 peuvent commencer à visualiser au moins que printf prend dans une certaine forme d'entrée. 292 00:13:29,900 --> 00:13:31,850 Pas aussi convivial que Scratch, mais il est juste 293 00:13:31,850 --> 00:13:34,920 comme avoir branché une certaine valeur il. 294 00:13:34,920 --> 00:13:38,306 >> Bon, maintenant de laisser effectivement faire quelque chose avec cela. 295 00:13:38,306 --> 00:13:40,930 Donc, certains d'entre vous savent peut-être à partir de ayant magasiné la classe avant, 296 00:13:40,930 --> 00:13:42,638 bavardé avec des amis, que pendant de nombreuses années 297 00:13:42,638 --> 00:13:44,590 nous avons utilisé ce qu'on appelle l'appareil de CS50. 298 00:13:44,590 --> 00:13:49,160 Ce fut un terme décrivant une technologie appelée la machine virtuelle, qui 299 00:13:49,160 --> 00:13:51,870 est un morceau de logiciel que votre prédécesseurs seraient télécharger off 300 00:13:51,870 --> 00:13:53,360 le site Web de cours gratuitement. 301 00:13:53,360 --> 00:13:56,550 Ils seraient également télécharger un morceau gratuitement logiciel appelé un hyperviseur, 302 00:13:56,550 --> 00:14:00,590 quelque chose appelé comme VMware, ou VirtualBox, ou un nombre quelconque 303 00:14:00,590 --> 00:14:04,450 d'autres outils, et sur leur Mac ou PC ou quel que soit l'ordinateur qu'ils avaient l'année dernière 304 00:14:04,450 --> 00:14:06,620 et dans les années passées, ils doublerait cliquez sur une icône 305 00:14:06,620 --> 00:14:08,860 pour exécuter ce logiciel appelé l'hyperviseur. 306 00:14:08,860 --> 00:14:12,220 Et puis à l'intérieur de ce programme ils ouvrir l'appareil de CS50. 307 00:14:12,220 --> 00:14:14,710 Et l'effet est que si un prédécesseur de la vôtre 308 00:14:14,710 --> 00:14:17,780 a été fonctionnant sous Mac OS ou Windows, il ou elle a ensuite 309 00:14:17,780 --> 00:14:22,910 ensuite eu une nouvelle fenêtre sur leur écran exécutant l'environnement de CS50. 310 00:14:22,910 --> 00:14:27,370 Donc, une machine virtuelle vous permet d'exécuter un système d'exploitation à l'intérieur d'un autre, 311 00:14:27,370 --> 00:14:28,785 et que est exactement ce que nous avons fait. 312 00:14:28,785 --> 00:14:31,410 Tout au long de la plupart des cours nous utiliser un système d'exploitation appelé 313 00:14:31,410 --> 00:14:34,070 Linux, en particulier Ubuntu Linux, et ce 314 00:14:34,070 --> 00:14:37,590 est une très belle façon dans les années passées de faire en sorte que tout le monde dans le cadre 315 00:14:37,590 --> 00:14:38,840 juste eu le même environnement. 316 00:14:38,840 --> 00:14:41,339 Et vous pouvez utiliser tout type de ordinateur que vous voulez vraiment. 317 00:14:41,339 --> 00:14:43,930 Parmi les inconvénients, cependant, étaient il était comme deux gigaoctets 318 00:14:43,930 --> 00:14:45,480 pour télécharger cette chose. 319 00:14:45,480 --> 00:14:50,310 Il ne fonctionne pas nécessairement hyper bien sur les personnes dont les ordinateurs que peut-être seulement 320 00:14:50,310 --> 00:14:54,570 eu un concert ou plus de RAM, ou non trop de gigahertz de vitesse du CPU, 321 00:14:54,570 --> 00:14:56,750 et ainsi de cette année, pour cela et d'autres raisons, 322 00:14:56,750 --> 00:14:59,140 Avons-nous été transition à cet environnement. 323 00:14:59,140 --> 00:15:03,730 Le soi-disant CS50 IDE, qui est basés sur des logiciels open source, 324 00:15:03,730 --> 00:15:07,380 et une plate-forme supportée qu'une société appelée Cloud9 325 00:15:07,380 --> 00:15:11,110 supports en Europe, que nous permet d'avoir l'essentiel 326 00:15:11,110 --> 00:15:15,770 ce même milieu que dans l'exacte les années passées, mais dans le nuage dite. 327 00:15:15,770 --> 00:15:17,532 >> Alors, quel est le nuage? 328 00:15:17,532 --> 00:15:20,480 Vous avez probablement cliqué son icône sur votre Mac ou PC. 329 00:15:20,480 --> 00:15:22,210 Quel est le nuage? 330 00:15:22,210 --> 00:15:22,709 Ouais? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Un peu plus fort. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Ouais. 335 00:15:31,010 --> 00:15:33,770 Il est juste un tas d'ordinateurs ailleurs que les données de stocker et exécuter, 336 00:15:33,770 --> 00:15:34,880 logiciels et autres. 337 00:15:34,880 --> 00:15:39,390 Donc, il est vraiment juste pour le mot de jure de décrire [? être louées?] 338 00:15:39,390 --> 00:15:40,930 ordinateurs qui vivent ailleurs. 339 00:15:40,930 --> 00:15:42,810 Que vous, vous-même, ne possèdent pas nécessairement. 340 00:15:42,810 --> 00:15:45,256 Ainsi, lorsque vos données ou votre programmes, sont dans le nuage, 341 00:15:45,256 --> 00:15:47,630 cela signifie simplement qu'il est sur quelqu'un Else les ordinateurs ailleurs, 342 00:15:47,630 --> 00:15:50,510 et non, le plus probable, sur votre ordinateur portable ou de bureau physique. 343 00:15:50,510 --> 00:15:52,990 Et est donc ce que CS50 IDE est maintenant. 344 00:15:52,990 --> 00:15:55,670 >> Désormais, vous allez à un certain URL qui vous fera découvrir 345 00:15:55,670 --> 00:16:00,090 pour, en problème posé 1, plus tard cette semaine, ce sera ensuite, lors de la connexion, 346 00:16:00,090 --> 00:16:01,480 vous donner cet environnement. 347 00:16:01,480 --> 00:16:03,896 Et bien comme Scratch avait un quelques différents panneaux concernés, 348 00:16:03,896 --> 00:16:06,030 il en va de l'IDE de CS50 ont exactement cela. 349 00:16:06,030 --> 00:16:09,480 Sur le côté supérieur gauche ici, vous êtes aller voir un navigateur de fichiers familier. 350 00:16:09,480 --> 00:16:11,930 Donc, l'un des fichiers que vous mettre dans cet environnement 351 00:16:11,930 --> 00:16:13,346 allez juste pour y être inscrites. 352 00:16:13,346 --> 00:16:14,350 Les fichiers et dossiers. 353 00:16:14,350 --> 00:16:16,790 En haut à droite ici, vous allez voir un lieu 354 00:16:16,790 --> 00:16:18,420 où vous pouvez réellement écrire votre code. 355 00:16:18,420 --> 00:16:21,860 Dans un premier temps en C, plus tard dans la terme en PHP et JavaScript, 356 00:16:21,860 --> 00:16:24,739 et, peut-être pour la finale de projets, Ruby ou Java ou Python 357 00:16:24,739 --> 00:16:27,280 ou un certain nombre de langues sont soutenu dans cet environnement. 358 00:16:27,280 --> 00:16:30,130 Il est pas du tout attaché à CS50 spécifiquement. 359 00:16:30,130 --> 00:16:33,390 >> Et puis, dans le coin en bas à ici, surtout pour ceux plus à l'aise, 360 00:16:33,390 --> 00:16:35,590 vous avez quelque chose appelé une fenêtre de terminal. 361 00:16:35,590 --> 00:16:38,770 Et cette fenêtre de terminal permet d'exécuter toute commande que vous 362 00:16:38,770 --> 00:16:40,860 veulent dans cet environnement de cloud. 363 00:16:40,860 --> 00:16:42,860 Il vous permet d'installer aucun logiciel supplémentaire 364 00:16:42,860 --> 00:16:46,810 que vous voulez parce que vous avez dite racines, ou des privilèges d'administrateur. 365 00:16:46,810 --> 00:16:49,930 Donc, en d'autres termes, même si cette est finalement hébergé dans le nuage, 366 00:16:49,930 --> 00:16:52,400 et même si nous avons simplifié dans une certaine mesure 367 00:16:52,400 --> 00:16:57,110 Par défaut, l'introduction de la lettre, grâce à Dan Armendariz, et Dino, 368 00:16:57,110 --> 00:17:01,070 et Dan Bradley de l'équipe de CS50 sur passé de nombreux mois, un moins à l'aise 369 00:17:01,070 --> 00:17:05,140 mode qui cache beaucoup de la distractions abord déroutant. 370 00:17:05,140 --> 00:17:10,119 Tout existe à représentent un système informatique typique 371 00:17:10,119 --> 00:17:12,319 que vous pouvez utiliser dans le monde réel. 372 00:17:12,319 --> 00:17:15,640 >> Alors, que signifie tout cela, et que pouvons-nous réellement faire avec elle? 373 00:17:15,640 --> 00:17:19,124 Disons effectivement jeter un coup d'oeil à un programme. 374 00:17:19,124 --> 00:17:21,290 Donc, je vais ouvrir le environnement réel ici, 375 00:17:21,290 --> 00:17:23,894 qui est juste notre Chrome navigateur, qui pourrait être Firefox, 376 00:17:23,894 --> 00:17:26,640 pourrait être Internet Explorer, ou un autre navigateur ainsi. 377 00:17:26,640 --> 00:17:28,400 Il est plein projeté ici pour le moment. 378 00:17:28,400 --> 00:17:31,580 Et je veux vraiment taquiner Outre ce que ce programme était. 379 00:17:31,580 --> 00:17:36,170 Donc, nous allons jeter un coup d'oeil, en zoomant jusqu'à haut, à ce que je faisais, et comment je suis arrivé ici. 380 00:17:36,170 --> 00:17:38,315 Alors, voici ceux exacte mêmes lignes de code. 381 00:17:38,315 --> 00:17:40,440 Donc ceci est la déclaration, comme vous l'avez mentionné plus tôt. 382 00:17:40,440 --> 00:17:42,580 La fonction qui vous dit bonjour. 383 00:17:42,580 --> 00:17:45,870 Les accolades, sur quatre lignes et la ligne de six, 384 00:17:45,870 --> 00:17:49,290 vraisemblablement genre d'enveloppe cette ligne de l'associer 385 00:17:49,290 --> 00:17:50,890 avec l'essence de mon programme. 386 00:17:50,890 --> 00:17:54,890 Donc, en effet, ce mot-clé, qui est là-haut sur la ligne trois, 387 00:17:54,890 --> 00:17:59,450 vous pouvez penser que l'équivalent des que lorsque le drapeau vert a cliqué, 388 00:17:59,450 --> 00:18:01,080 bloquer dans Scratch. 389 00:18:01,080 --> 00:18:05,280 Voilà donc tout ce que nous avons ici, est quand drapeau vert cliqué, l'impression, ou dire, 390 00:18:05,280 --> 00:18:06,700 Bonjour le monde. 391 00:18:06,700 --> 00:18:11,210 >> Mais prenons une supposition, maintenant, à ce cette première ligne, plus obscur, est. 392 00:18:11,210 --> 00:18:15,100 Forte comprennent, angle ouvert support, E / S standard dot h, 393 00:18:15,100 --> 00:18:17,320 fermer équerre. 394 00:18:17,320 --> 00:18:19,850 Qu'est-ce que peut-être le faire, surtout si vous avez programmé 395 00:18:19,850 --> 00:18:21,390 avant dans une autre langue. 396 00:18:21,390 --> 00:18:21,890 Ouais? 397 00:18:21,890 --> 00:18:22,765 >> AUDIENCE: [inaudible] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. Malan: Ouais. 400 00:18:25,970 --> 00:18:26,470 Exactement. 401 00:18:26,470 --> 00:18:29,455 Donc, cela est en vous donnant accès à un bibliothèque, pour ainsi dire, de fonctions. 402 00:18:29,455 --> 00:18:31,830 Et une bibliothèque de fonctions est fonctions que quelqu'un d'autre 403 00:18:31,830 --> 00:18:34,406 écrit, soit récemment ou il ya longtemps, de sorte que vous 404 00:18:34,406 --> 00:18:35,780 ne pas avoir à réinventer la roue. 405 00:18:35,780 --> 00:18:39,020 Par exemple, nous ne faisons pas avoir à connaître, en 2015, 406 00:18:39,020 --> 00:18:42,280 comment écrire du code qui met un personnage sur mon écran. 407 00:18:42,280 --> 00:18:44,820 Quelqu'un d'autre a pensé que avec la fonction printf 408 00:18:44,820 --> 00:18:47,280 de sorte que je peux trier du abstraite que l'écart de, ou couche 409 00:18:47,280 --> 00:18:49,350 sur le dessus de son code, et maintenant il suffit de prendre 410 00:18:49,350 --> 00:18:52,760 pour acquis que tout programme que je écrire peut imprimer quelque chose à l'écran. 411 00:18:52,760 --> 00:18:58,150 Donc, cette première ligne il dans la première étape inclut le fichier soi-disant tête 412 00:18:58,150 --> 00:18:59,980 pour la bibliothèque standard. 413 00:18:59,980 --> 00:19:02,630 Alors le voir, la langue dans que nous sommes en train de travailler 414 00:19:02,630 --> 00:19:05,010 eu une bibliothèque standard avec beaucoup de fonctions. 415 00:19:05,010 --> 00:19:07,240 Printf est l'un d'eux, et que la première ligne de code 416 00:19:07,240 --> 00:19:10,040 des moyens de me donner accès à ces fonctions, de façon que je 417 00:19:10,040 --> 00:19:12,300 ne pas avoir à réinventer cette roue. 418 00:19:12,300 --> 00:19:15,940 >> Passons maintenant à la fenêtre du bas et fais exactement ce que je faisais avant. 419 00:19:15,940 --> 00:19:18,520 Il ya un moment, quand je étais sifflant à travers le code, 420 00:19:18,520 --> 00:19:24,540 tapant pour la première fois, Très vite, je tapé, fais bonjour. 421 00:19:24,540 --> 00:19:28,250 Ce qui était tout au sujet aurait-vous deviner? 422 00:19:28,250 --> 00:19:29,150 Que faisais-je? 423 00:19:29,150 --> 00:19:29,649 Ouais? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Ça ne fait rien. 426 00:19:32,310 --> 00:19:32,970 C'est bon. 427 00:19:32,970 --> 00:19:33,492 Ouais. 428 00:19:33,492 --> 00:19:34,450 AUDIENCE: le compiler. 429 00:19:34,450 --> 00:19:34,700 DAVID J. Malan: Ouais. 430 00:19:34,700 --> 00:19:35,770 Il a été tout simplement compiler. 431 00:19:35,770 --> 00:19:36,270 Droit? 432 00:19:36,270 --> 00:19:39,280 Même si cela est totalement inconnu pour vous, il est assez l'anglais comme. 433 00:19:39,280 --> 00:19:41,155 Il est certainement pas zéros et ceux, donc je encore 434 00:19:41,155 --> 00:19:44,220 besoin de courir à travers cette soi-disant programme, un compilateur, qui va 435 00:19:44,220 --> 00:19:46,060 de le prendre comme entrée et produire une sortie. 436 00:19:46,060 --> 00:19:48,270 Et au moins, pour l'instant, dans cet environnement Linux, 437 00:19:48,270 --> 00:19:51,030 mais ce ne sont pas une condition préalable, ceci est juste où nous allons commencer, 438 00:19:51,030 --> 00:19:53,960 vous interagissez généralement avec systèmes informatiques de ce genre 439 00:19:53,960 --> 00:19:55,770 par une ligne dite de commande. 440 00:19:55,770 --> 00:19:57,790 Donc, avec un clignotement prompte et votre clavier, 441 00:19:57,790 --> 00:20:01,630 et pas tellement votre souris, et non tellement les fenêtres et les icônes et les menus, 442 00:20:01,630 --> 00:20:02,980 plutôt tout est textuelle. 443 00:20:02,980 --> 00:20:06,180 Et même si cela se sent, au premier coup d'oeil, peut-être, comme un pas en arrière, 444 00:20:06,180 --> 00:20:08,437 il est en fait beaucoup plus moyen puissant et expressif 445 00:20:08,437 --> 00:20:10,270 de commande d'un ordinateur d'autant plus que vous, 446 00:20:10,270 --> 00:20:12,950 vous-même, deviennent plus confortable de moins. 447 00:20:12,950 --> 00:20:16,790 Il va vous permettre de faire un grand nombre plus de choses que ce que Microsoft 448 00:20:16,790 --> 00:20:20,390 ou Apple vous permet de faire avec leur système d'exploitation graphique. 449 00:20:20,390 --> 00:20:23,270 >> Donc, quand je frappe Entrez, maintenant, rien ne se passe cette fois- 450 00:20:23,270 --> 00:20:25,960 car apparemment le bonjour programme est à jour. 451 00:20:25,960 --> 00:20:28,250 Et ce qui était la commande Je courais après cela? 452 00:20:28,250 --> 00:20:32,370 Dot slash bonjour, et bonjour monde. 453 00:20:32,370 --> 00:20:34,350 Prenons maintenant une étape sauvegarder pour un instant. 454 00:20:34,350 --> 00:20:39,510 Il se trouve que faire bonjour est juste un de façon simplifiée de compiler un programme. 455 00:20:39,510 --> 00:20:41,670 Présentons tout un morceau de jargon, 456 00:20:41,670 --> 00:20:43,470 mais alors éloigner de lui, car il est pas 457 00:20:43,470 --> 00:20:46,640 tout ce qui intéressant pour les besoins d'aujourd'hui. 458 00:20:46,640 --> 00:20:51,000 Le compilateur nous allons commencer à utiliser Clang est appelé, pour le langage C. 459 00:20:51,000 --> 00:20:54,280 Et cela est un programme qui est lancé juste comme nous l'avons fait à la ligne de commande il. 460 00:20:54,280 --> 00:20:56,580 Et si je veux compiler un programme que je 461 00:20:56,580 --> 00:21:00,790 ont écrit dans un fichier appelé bonjour dot c, je viens de taper littéralement clang bonjour c 462 00:21:00,790 --> 00:21:02,100 entrer. 463 00:21:02,100 --> 00:21:04,880 >> La chose drôle est, pour des raisons historiques, 464 00:21:04,880 --> 00:21:07,750 si je ne précise pas les nom du programme 465 00:21:07,750 --> 00:21:11,690 que je veux à la sortie, si je ne fais pas spécifier un nom de fichier pour ces zéros 466 00:21:11,690 --> 00:21:14,990 et ceux, très bizarre il ya des années Convention a été adoptée 467 00:21:14,990 --> 00:21:17,390 où il sentait une sorte de bonne réponse à l'époque, 468 00:21:17,390 --> 00:21:21,650 bien disons juste arbitrairement appellent la premier programme nous compiler un point sur. 469 00:21:21,650 --> 00:21:22,900 A vient en premier dans l'alphabet. 470 00:21:22,900 --> 00:21:23,920 Out, il est la sortie. 471 00:21:23,920 --> 00:21:26,210 Donc, nous allons appeler le programme Par défaut, un point sur. 472 00:21:26,210 --> 00:21:29,550 Et cela est très bien, parce que si je veux exécuter le programme dans ce texte sur la base 473 00:21:29,550 --> 00:21:33,590 environnement, je tape juste dot slash un point sur entrer. 474 00:21:33,590 --> 00:21:35,250 Et il irait exactement comme avant. 475 00:21:35,250 --> 00:21:36,880 Voyons donc ce que très vite. 476 00:21:36,880 --> 00:21:40,370 >> Donc, si je reviens à ma code source dans CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 et je le fais à la place, clang bonjour bébé c entrer, avis rien ne semble se passer, 478 00:21:47,860 --> 00:21:49,790 mais presque toujours dans cet environnement Linux, 479 00:21:49,790 --> 00:21:53,310 quand rien de mauvais ne semble se produire, que signifie quelque chose de bien réellement passé. 480 00:21:53,310 --> 00:21:56,270 Si vous ne voyez pas une erreur message, tout est probablement bien. 481 00:21:56,270 --> 00:22:01,930 Et en effet, si je fais maintenant dot slash un point à entrer, je lance mon ai même programme. 482 00:22:01,930 --> 00:22:04,610 Je dois toujours le programme bonjour à partir plus tôt car en effet, il est 483 00:22:04,610 --> 00:22:07,430 va être tellement plus agréable tout taper make lieu de se souvenir 484 00:22:07,430 --> 00:22:10,240 ces incantations de commandes, mais nous allons voir comment nous 485 00:22:10,240 --> 00:22:12,890 pourrait améliorer cela, néanmoins. 486 00:22:12,890 --> 00:22:15,340 >> Donc, ceci est la commande pour compiler le code. 487 00:22:15,340 --> 00:22:19,100 Ceci est la commande à exécuter le code compilé par la suite. 488 00:22:19,100 --> 00:22:20,546 Comment puis-je spécifier un nom de fichier? 489 00:22:20,546 --> 00:22:22,670 Eh bien nous allons introduire simplement une pièce de plus de jargon. 490 00:22:22,670 --> 00:22:24,461 Lorsque vous êtes dans cette environnement basé sur le texte, 491 00:22:24,461 --> 00:22:27,400 vous allez vouloir spécifier choses appelées arguments de ligne de commande. 492 00:22:27,400 --> 00:22:31,380 Qui est juste une façon élégante de dire, d'autres termes à l'invite qui 493 00:22:31,380 --> 00:22:33,860 modifier le comportement de tout programme que vous utilisez. 494 00:22:33,860 --> 00:22:37,320 Donc spécifiquement le programme que je suis course, en tapant le nom clang, 495 00:22:37,320 --> 00:22:38,504 est le programme appelé Clang. 496 00:22:38,504 --> 00:22:40,920 Donc, cela est ou la vieille école équivalent d'un double-clic 497 00:22:40,920 --> 00:22:42,860 sur Microsoft Word ou l'icône de certains programmes. 498 00:22:42,860 --> 00:22:46,360 Je place juste en tapant son nom, mais dans cette version de la commande, 499 00:22:46,360 --> 00:22:51,334 Je dois ensuite tableau de bord o espace bonjour bonjour espace dot c. 500 00:22:51,334 --> 00:22:53,500 Donc même si vous avez jamais joué dans ce monde avant, 501 00:22:53,500 --> 00:22:58,160 il suffit de prendre une conjecture ce ne dash o bonjour faire? 502 00:22:58,160 --> 00:23:00,620 Ou qu'est-ce que dire clang faire? 503 00:23:00,620 --> 00:23:01,386 Ouais. 504 00:23:01,386 --> 00:23:02,455 >> AUDIENCE: [inaudible] 505 00:23:02,455 --> 00:23:03,330 DAVID J. Malan: Ouais. 506 00:23:03,330 --> 00:23:08,614 Il établit simplement la sortie du fichier à bonjour au lieu de la plus bête sur un point. 507 00:23:08,614 --> 00:23:09,780 Et, en effet, nous allons essayer. 508 00:23:09,780 --> 00:23:14,250 Donc, si je fais maintenant, première nous allons le faire, r m bonjour. 509 00:23:14,250 --> 00:23:15,590 Voilà supprimer. 510 00:23:15,590 --> 00:23:18,450 Et il va dire supprimer bonjour fichier régulier, qui 511 00:23:18,450 --> 00:23:22,210 est inutilement obscur, mais il vient des moyens voulez-vous supprimer le fichier, 512 00:23:22,210 --> 00:23:23,230 et je type Y pour oui. 513 00:23:23,230 --> 00:23:27,340 Et remarquez, si vous étiez en regardant en haut à gauche, il ne disparaît de là-haut. 514 00:23:27,340 --> 00:23:32,180 Permettez-moi maintenant fais clang tableau de bord o, et Je vais aller de l'avant et faire bonjour, 515 00:23:32,180 --> 00:23:34,890 dans toutes les casquettes, bonjour dot c. 516 00:23:34,890 --> 00:23:37,775 Maintenant, si je fais slash dot bonjour, ce que vous attendez-vous? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Peut-être qu'il est sensible à la casse. 519 00:23:42,430 --> 00:23:43,070 Peut-être pas. 520 00:23:43,070 --> 00:23:44,030 Voyons. 521 00:23:44,030 --> 00:23:45,230 Aucun fichier ou répertoire de ce nom. 522 00:23:45,230 --> 00:23:47,438 Et nous pouvons sorte de tricher en simplement en regardant en haut à gauche. 523 00:23:47,438 --> 00:23:49,630 Qu'ai-je de toute évidence enregistrer le programme? 524 00:23:49,630 --> 00:23:51,070 Tous les bouchons bonjour. 525 00:23:51,070 --> 00:23:53,020 Donc, en effet, que se passe- pour faire la difference. 526 00:23:53,020 --> 00:23:54,540 Alors maintenant Bonjour tout le monde est de retour. 527 00:23:54,540 --> 00:23:56,969 Maintenant, tout cela est bel et bon, et tout abrutissante très, 528 00:23:56,969 --> 00:23:59,760 en quelque sorte de nous enliser dans ces les détails, mais les comprendre 529 00:23:59,760 --> 00:24:00,500 est bon. 530 00:24:00,500 --> 00:24:02,675 >> Taper sur ceux-ci de plus en plus longues incantations 531 00:24:02,675 --> 00:24:05,980 ne va pas être particulièrement amusant, alors les gens dans le monde 532 00:24:05,980 --> 00:24:08,260 inventé un autre programme, il ya quelques années, appelé 533 00:24:08,260 --> 00:24:12,190 faire, que tout simplement vous permet de taper make, 534 00:24:12,190 --> 00:24:14,530 le nom du programme vous voulez faire, et de faire 535 00:24:14,530 --> 00:24:18,580 est intelligent en ce qu'il va chercher dans le dossier en cours, alias répertoire, 536 00:24:18,580 --> 00:24:21,440 et si vous avez un fichier appelé bonjour point c, 537 00:24:21,440 --> 00:24:25,800 qui est le fichier, il compilera pour vous dans un programme appelé bonjour. 538 00:24:25,800 --> 00:24:29,950 Donc, il est un moyen beaucoup plus simple de faire les commandes les plus cryptiques 539 00:24:29,950 --> 00:24:30,800 que nous avons fait plus tôt. 540 00:24:30,800 --> 00:24:34,080 Et nous avons pré-configuré CS50 IDE de savoir 541 00:24:34,080 --> 00:24:38,560 qu'il devrait faire dash o et un certain nombre de d'autres drapeaux, ou des arguments de ligne de commande, 542 00:24:38,560 --> 00:24:40,670 que nous verrons avant longtemps. 543 00:24:40,670 --> 00:24:43,700 >> Mais nous allons maintenant faire effectivement quelque chose de plus intéressant. 544 00:24:43,700 --> 00:24:46,950 Juste en tapant sur Bonjour tout le monde tout le temps est pas tout à fait convaincante. 545 00:24:46,950 --> 00:24:52,280 Alors laissez-moi aller de l'avant et le changement ce programme et de dire bonjour David. 546 00:24:52,280 --> 00:24:54,120 Maintenant, je vais descendre ici. 547 00:24:54,120 --> 00:24:57,360 Je vais aller de l'avant et de faire faire bonjour. 548 00:24:57,360 --> 00:25:00,652 Et encore maintenant vous voir faire est de vous montrer le plus 549 00:25:00,652 --> 00:25:03,360 séquence de commandes qu'il est faire parce que nous avons pré-configuré 550 00:25:03,360 --> 00:25:05,200 de cette façon, mais nous devez vous inquiétez pas pour l'instant 551 00:25:05,200 --> 00:25:10,735 ce qu'il fait autre que ce qu'il est dot compilation slash bonjour, bonjour monde. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 Qu'est-ce qui ne va pas? 554 00:25:15,510 --> 00:25:16,177 Ouais. 555 00:25:16,177 --> 00:25:17,370 >> AUDIENCE: [inaudible] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. Malan: Oui. 557 00:25:18,203 --> 00:25:19,600 Donc, erreur noobie. 558 00:25:19,600 --> 00:25:22,394 Je remarque ce est super subtil, mais l'astérisque ici, dans l'onglet, 559 00:25:22,394 --> 00:25:25,060 signifie simplement que vous ne l'avez pas sauvé, et les navigateurs et d'autres programmes 560 00:25:25,060 --> 00:25:25,930 le faire parfois. 561 00:25:25,930 --> 00:25:27,939 Donc, le contrôle ou la commande s s devraient enregistrer. 562 00:25:27,939 --> 00:25:29,730 Maintenant, laissez-moi aller de l'avant et re-exécuter le programme. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Recompilé. 565 00:25:34,260 --> 00:25:36,050 Droit, il est donc un processus en plusieurs étapes. 566 00:25:36,050 --> 00:25:39,400 Aucune de ce qui est particulièrement complexe, mais chaque fois que nous changeons le fichier, 567 00:25:39,400 --> 00:25:43,450 nous avons besoin de changer la résultante zéros et de uns, et slash dot bonjour. 568 00:25:43,450 --> 00:25:43,950 Ouah. 569 00:25:43,950 --> 00:25:46,450 Donc, ce qui est très décevant que nous simplement affichées cela. 570 00:25:46,450 --> 00:25:48,360 Faisons les choses un peu plus dynamique, maintenant. 571 00:25:48,360 --> 00:25:52,280 >> Eh bien il se trouve, qui aiment Scratch, C prend en charge les variables. 572 00:25:52,280 --> 00:25:54,790 Et il se trouve si vous voulez d'avoir une variable qui stocke, 573 00:25:54,790 --> 00:25:57,300 pas un nombre, comme nous généralement fait avec Scratch, 574 00:25:57,300 --> 00:26:01,300 mais comme un mot ou un une phrase, ou un nom, vous 575 00:26:01,300 --> 00:26:04,837 peut spécifier une variable être de type chaîne. 576 00:26:04,837 --> 00:26:06,670 Donc, nous allons voir plus de ceux-ci dans un instant, 577 00:26:06,670 --> 00:26:09,090 mais il se trouve que C, et beaucoup de langues comme elle, 578 00:26:09,090 --> 00:26:11,240 avoir des types très spécifiques de variables. 579 00:26:11,240 --> 00:26:13,810 Il ne suffit pas comme l'algèbre, où vous obtenez un x, a y et z 580 00:26:13,810 --> 00:26:16,940 et ceux qui sont juste toujours chiffres, dans un langage de programmation 581 00:26:16,940 --> 00:26:20,030 vous pouvez stocker des numéros, vous pouvez stocker les caractères individuels, 582 00:26:20,030 --> 00:26:24,619 vous pouvez stocker des mots entiers, vous pourriez stocker des images, des fichiers entiers saines entières, 583 00:26:24,619 --> 00:26:25,160 et analogues. 584 00:26:25,160 --> 00:26:28,362 Nous avons donc besoin de préciser ce le type de notre variable est. 585 00:26:28,362 --> 00:26:31,570 Et, par convention, je vais appeler mon s variables juste parce qu'il est succincte, 586 00:26:31,570 --> 00:26:33,510 et s signifie chaîne. 587 00:26:33,510 --> 00:26:36,400 >> Et puis je vais stocker à l'intérieur de cette variable, 588 00:26:36,400 --> 00:26:39,570 Tout comme avec Scratch quand je utiliser le bloc de jeu, 589 00:26:39,570 --> 00:26:41,950 Je vais utiliser la opérateur d'affectation en C, 590 00:26:41,950 --> 00:26:45,290 qui bien assez est l'égal signe, mais le signe égal fait cela. 591 00:26:45,290 --> 00:26:53,220 Il se déplace quelque chose de la droite dans le côté gauche de l'expression. 592 00:26:53,220 --> 00:26:57,170 Donc ce que je l'ai fait, pour être clair dans ligne de cinq, est je l'ai déclaré une variable. 593 00:26:57,170 --> 00:27:01,284 Je l'ai dit l'ordinateur, donnez-moi mémoire pour une variable, il s appelle, 594 00:27:01,284 --> 00:27:03,950 et je sais d'avance que je vais être de mettre une chaîne en elle. 595 00:27:03,950 --> 00:27:05,950 Et une chaîne est juste un séquence de caractères. 596 00:27:05,950 --> 00:27:09,190 Il est un mot, ou une phrase ou un paragraphe, mais il est une séquence de caractères. 597 00:27:09,190 --> 00:27:10,610 Il est pas des numéros. 598 00:27:10,610 --> 00:27:13,800 Qu'est-ce que la chaîne que je vais être que la mise en variable? 599 00:27:13,800 --> 00:27:16,185 Eh bien, apparemment citer Ils ont dit, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Maintenant, remarquez le modèle qui est en émergence. 601 00:27:17,810 --> 00:27:19,260 Il ya une expression de la main gauche. 602 00:27:19,260 --> 00:27:21,810 Il ya une expression de la main droite, séparés par le signe égal. 603 00:27:21,810 --> 00:27:24,390 Et il suffit de prendre une supposition, si néanmoins familier, 604 00:27:24,390 --> 00:27:27,430 avec ce que le point-virgule est fait. 605 00:27:27,430 --> 00:27:28,865 Que fait-il sans doute pour nous? 606 00:27:28,865 --> 00:27:29,365 Ouais? 607 00:27:29,365 --> 00:27:29,840 >> AUDIENCE: [inaudible] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. Malan: Ouais. 609 00:27:29,980 --> 00:27:31,170 Il est juste fermeture de la ligne. 610 00:27:31,170 --> 00:27:31,669 Droit? 611 00:27:31,669 --> 00:27:34,260 Les ordinateurs veulent être crûment dit, littéralement, ce qu'il faut faire. 612 00:27:34,260 --> 00:27:36,343 Comme le beurre d'arachide et gelée exemple sandwich, 613 00:27:36,343 --> 00:27:39,360 si vous ne spécifiez pas exactement ce que vous avez l'intention, 614 00:27:39,360 --> 00:27:42,190 il pourrait être laissé au jugement ou d'erreurs. 615 00:27:42,190 --> 00:27:44,890 Le point-virgule signifie, Voilà pour cette commande. 616 00:27:44,890 --> 00:27:48,310 Il est d'être super précis, et il est une chose très facile de laisser éteint. 617 00:27:48,310 --> 00:27:52,240 Alors maintenant, ce programme ne semble pas se comporter différemment jusqu'à ce que je 618 00:27:52,240 --> 00:27:53,500 le rendre plus dynamique. 619 00:27:53,500 --> 00:27:57,107 Ainsi, plutôt que dur pourrait mon propre nommer, permettez-moi de mettre une valeur d'espace réservé. 620 00:27:57,107 --> 00:28:00,190 Et il se trouve que, et je sais ce d'avoir lire la documentation, 621 00:28:00,190 --> 00:28:04,080 et utilisé la fonction pendant des années, que printf a été conçu pour être dynamique. 622 00:28:04,080 --> 00:28:07,510 Vous ne devez pas savoir à l'avance ce que les mots que vous voulez mettre dedans. 623 00:28:07,510 --> 00:28:11,290 Vous pouvez avoir une place espace réservé, comme pour cent s, qui 624 00:28:11,290 --> 00:28:15,500 va dire la ordinateur, mettre une chaîne ici. 625 00:28:15,500 --> 00:28:17,740 >> Quelle chaîne voulons-nous mettre là? 626 00:28:17,740 --> 00:28:22,430 Will se trouve que entre ces parenthèses, qui se souviennent, délimitent 627 00:28:22,430 --> 00:28:28,020 l'entrée à une fonction, si vous avez virgule liste de choses séparé ici, 628 00:28:28,020 --> 00:28:31,790 nous passons en fait dans plusieurs entrées à une fonction. 629 00:28:31,790 --> 00:28:33,901 Donc, tout comme certains Scratch blocs, vous ne pourriez pas 630 00:28:33,901 --> 00:28:36,150 ont joué avec eux pendant vos projets ou encore à tous, 631 00:28:36,150 --> 00:28:38,250 certains blocs Scratch disposent de deux entrées. 632 00:28:38,250 --> 00:28:41,220 Deux cases blanches que vous pouvez taper des chiffres ou des mots dans. 633 00:28:41,220 --> 00:28:45,210 Donc, pour ne C ont des fonctions comme printf qui peut prendre deux entrées. 634 00:28:45,210 --> 00:28:48,050 Et encore, cette virgule on les sépare. 635 00:28:48,050 --> 00:28:51,070 Donc, en anglais, à nouveau, même si vous avez jamais programmé auparavant, 636 00:28:51,070 --> 00:28:55,320 en ce que la logique est une fonction printf, prend deux entrées, dont l'une 637 00:28:55,320 --> 00:28:58,810 est un espace réservé, que feriez-vous espérer printf va faire avec cette entrée? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Il va dire bonjour Hannah, je l'espère. 640 00:29:03,220 --> 00:29:05,274 Donc, pour ce faire, nous devons sauver. 641 00:29:05,274 --> 00:29:06,190 Je vais effectuer un zoom arrière. 642 00:29:06,190 --> 00:29:10,701 Je vais revenir ici et dire bonjour faire entrer. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Quelque chose ne va pas, et effectivement cela est assez impressionnant. 645 00:29:14,830 --> 00:29:18,400 Je dois six lignes de code et comme 12 lignes d'erreurs. 646 00:29:18,400 --> 00:29:22,120 Donc, nous nous réjouissons de cette. 647 00:29:22,120 --> 00:29:24,260 Alors qu'est-ce qui se passe ici? 648 00:29:24,260 --> 00:29:27,370 Donc, la meilleure règle d'or ici, surtout quand vous êtes débutant, 649 00:29:27,370 --> 00:29:29,370 ne vous laissez pas distraire par le truc au fond. 650 00:29:29,370 --> 00:29:31,220 En fait, je délibérément simplement défiler jusqu'à 651 00:29:31,220 --> 00:29:33,930 parce que très souvent, un ordinateur est pas tout à fait lumineuse d'un dispositif. 652 00:29:33,930 --> 00:29:35,054 Il va devenir confus. 653 00:29:35,054 --> 00:29:37,220 Si elle voit une chose que il ne comprend pas, 654 00:29:37,220 --> 00:29:40,030 il pourrait confondre autre lignes de code comme incorrectes, 655 00:29:40,030 --> 00:29:41,649 même si elles sont parfaitement bien. 656 00:29:41,649 --> 00:29:43,940 Donc, vous voulez toujours de travailler de haut en bas à travers les erreurs. 657 00:29:43,940 --> 00:29:47,850 Et cela est vrai, super-obscur pour le moment. 658 00:29:47,850 --> 00:29:50,830 >> Erreur, l'utilisation de noir chaîne d'identifiant. 659 00:29:50,830 --> 00:29:52,130 Ai-je veux dire dans la norme? 660 00:29:52,130 --> 00:29:53,720 Non, je voulais dire chaîne. 661 00:29:53,720 --> 00:29:55,830 Et il est en montrant, il est peut être une faute de frappe. 662 00:29:55,830 --> 00:30:00,570 Un peu comme, la vérification orthographique dans un manière très geek, mais la raison ici, 663 00:30:00,570 --> 00:30:02,840 et vous saurez ce simplement par la pratique, est 664 00:30:02,840 --> 00:30:06,390 qu'il se révèle cette chaîne ne pas exister dans C. En fait, C 665 00:30:06,390 --> 00:30:08,820 est une langue particulièrement vieux, et il est très faible niveau, 666 00:30:08,820 --> 00:30:11,361 Et il n'a pas beaucoup de fonctionnalités que vous pourriez avoir grandi 667 00:30:11,361 --> 00:30:14,620 avec si vous avez, en effet, programmé en Java, comme certains d'entre vous ont, 668 00:30:14,620 --> 00:30:16,980 mais vous pouvez lui apprendre de nouvelles choses. 669 00:30:16,980 --> 00:30:20,900 Et en effet, nous avons fait ce CS50, même si à la fin du semestre, 670 00:30:20,900 --> 00:30:23,512 l'ensemble de ces roues de formation aura été enlevé, 671 00:30:23,512 --> 00:30:25,220 ce que nous faisons dans ces premier couple de semaines 672 00:30:25,220 --> 00:30:29,830 est d'abord nous avons aussi vous incluez CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Qui est un fichier d'en-tête. 674 00:30:31,230 --> 00:30:32,440 Plus sur cela dans l'avenir. 675 00:30:32,440 --> 00:30:36,430 >> Il est un fichier qui contient des fonctions que nous avons écrit pour vous. 676 00:30:36,430 --> 00:30:39,180 Et parmi ces fonctions est fonctions pour obtenir entrée 677 00:30:39,180 --> 00:30:43,520 de l'utilisateur, comme des cordes, et des chiffres et des nombres réels, et plus encore. 678 00:30:43,520 --> 00:30:45,550 Mais il a aussi quelques raccourcis. 679 00:30:45,550 --> 00:30:48,200 Il définit une valeur booléenne comme un type de données. 680 00:30:48,200 --> 00:30:50,340 C n'a pas vraie ou fausse. 681 00:30:50,340 --> 00:30:53,880 Mais nous pouvons lui donner la notion de vrai ou faux par voie de cette bibliothèque. 682 00:30:53,880 --> 00:30:57,670 Et il n'a pas aussi une chaîne construite en jusqu'à ce que nous incluons cette ligne. 683 00:30:57,670 --> 00:31:01,090 Donc, cette ligne de code dit le compilateur, hey, Clang, regardez 684 00:31:01,090 --> 00:31:03,570 dans ce dossier pour l'ensemble tas de code qui CS50 685 00:31:03,570 --> 00:31:06,330 a écrit de telle sorte que toute personne utilisant ce fichier 686 00:31:06,330 --> 00:31:09,330 peut prendre pour acquis le ils ont ajouté des fonctionnalités. 687 00:31:09,330 --> 00:31:11,220 >> Alors maintenant, laissez-moi aller de l'avant et effacer l'écran, 688 00:31:11,220 --> 00:31:14,178 et si curieux Je dis juste que le contrôle L chaque fois pour effacer l'écran, 689 00:31:14,178 --> 00:31:15,500 ou vous pouvez taper clair. 690 00:31:15,500 --> 00:31:19,220 Je vais juste aller de l'avant et maintenant Type faire bonjour, et tout va bien. 691 00:31:19,220 --> 00:31:22,550 Encore une sortie des arcanes, mais il est pas un message erroné. 692 00:31:22,550 --> 00:31:28,300 Maintenant, si je fais point slash bonjour, et comme un côté, slash dot est pas familier à la plupart. 693 00:31:28,300 --> 00:31:30,430 Cela signifie simplement, des moyens de dot le répertoire courant. 694 00:31:30,430 --> 00:31:33,120 Donc, si vous avez déjà utilisé DOS ou Linux, ou Unix 695 00:31:33,120 --> 00:31:35,410 vous pourriez avoir fait quelque chose comme cd dot, où 696 00:31:35,410 --> 00:31:39,220 dot signifie revenir en arrière dans temps, ou revenir en arrière, ou plus haut 697 00:31:39,220 --> 00:31:40,370 dans votre répertoire. 698 00:31:40,370 --> 00:31:43,090 Dot signifie simplement regarder dans le répertoire courant. 699 00:31:43,090 --> 00:31:45,670 Je veux bonjour, qui est ici. 700 00:31:45,670 --> 00:31:47,750 Et en effet, maintenant, il dit bonjour Hannah. 701 00:31:47,750 --> 00:31:51,120 Et si je change à nouveau Maria, recompiler 702 00:31:51,120 --> 00:31:55,650 il serait bonjour, slash dot bonjour, le programme ne cesse de changer. 703 00:31:55,650 --> 00:31:58,060 >> Mais cela est encore un programme assez stupide. 704 00:31:58,060 --> 00:32:00,972 Si je veux expédier ce programme, ou le donner à un ami, 705 00:32:00,972 --> 00:32:03,430 ou le donner à Maria ou Hannah d'ailleurs, ça va. 706 00:32:03,430 --> 00:32:07,300 Je peux le personnaliser pour deux d'entre eux, mais il ne va jamais être dynamique. 707 00:32:07,300 --> 00:32:10,870 Ils ne peuvent pas changer une fois qu'il est compilé vers le bas dans ces zéros et de uns. 708 00:32:10,870 --> 00:32:12,350 Donc, ce que nous avons fait quelque chose de plus intelligent? 709 00:32:12,350 --> 00:32:17,100 Que faire si, au lieu de coder en dur dans le programme de la nom de cette personne, 710 00:32:17,100 --> 00:32:20,890 ce que si nous obtenons juste la chaîne à la demande? 711 00:32:20,890 --> 00:32:22,430 >> Donc, en d'autres termes, permettez-moi de le faire. 712 00:32:22,430 --> 00:32:24,030 Je vais recompiler ce programme. 713 00:32:24,030 --> 00:32:25,710 Et permettez-moi de zoom en bas maintenant. 714 00:32:25,710 --> 00:32:29,920 Assurez bonjour bonjour point barre. 715 00:32:29,920 --> 00:32:31,710 Maintenant, rien ne se passe. 716 00:32:31,710 --> 00:32:35,860 Pouvons-nous obtenir un bénévole rapide de faire quelque chose? 717 00:32:35,860 --> 00:32:36,360 Allez vers le haut. 718 00:32:36,360 --> 00:32:37,020 Comment t'appelles tu? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. Malan: Pacho? 721 00:32:38,361 --> 00:32:39,609 Allez vers le haut. 722 00:32:39,609 --> 00:32:42,150 Une fois que vous obtenez ici, cela est va être très décevante, 723 00:32:42,150 --> 00:32:44,060 mais il est plus intéressant que moi tapant. 724 00:32:44,060 --> 00:32:49,007 Si vous voulez aller de l'avant et tapez votre nom, je fait ce programme pour vous. 725 00:32:49,007 --> 00:32:49,840 Il suffit de taper votre nom. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Entrez. 728 00:32:53,900 --> 00:32:54,489 Formidable. 729 00:32:54,489 --> 00:32:55,780 Très bien, merci beaucoup. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Merci beaucoup. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. Malan: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Applaudissements] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Cela a été très gentil. 735 00:33:01,840 --> 00:33:03,145 Et voilà. 736 00:33:03,145 --> 00:33:03,770 Qu'avons-nous fait? 737 00:33:03,770 --> 00:33:05,930 Donc, nous avons enfin, au moins, fait de ce programme dynamique. 738 00:33:05,930 --> 00:33:08,400 Maintenant, il est certainement encore par la conception décevante, 739 00:33:08,400 --> 00:33:11,480 mais nous avons finalement la capacité maintenant d'écrire du code à l'avance, bien 740 00:33:11,480 --> 00:33:13,770 comme les auteurs de printf, puis dynamiquement 741 00:33:13,770 --> 00:33:17,550 adapter en fonction de l'entrée nous sommes remis, soit par le programmeur, 742 00:33:17,550 --> 00:33:20,610 ou par l'humain qui est en fait l'interaction avec le programme. 743 00:33:20,610 --> 00:33:22,990 Donc, nous allons effectivement essayer maintenant de faire quelques autres constructions 744 00:33:22,990 --> 00:33:26,625 et voir si nous ne pouvons pas faire les programmes eux-mêmes plus sophistiqué. 745 00:33:26,625 --> 00:33:29,250 Donc, nous allons aller de l'avant et au lieu de écrit celui-ci à partir de zéro, 746 00:33:29,250 --> 00:33:31,540 Je vais aller dans d'aujourd'hui code source, et tout cela 747 00:33:31,540 --> 00:33:34,290 est disponible sur le cours de site, et vous pouvez faire glisser et déposez- 748 00:33:34,290 --> 00:33:36,590 dans votre propre environnement venir vendredi une fois problème 749 00:33:36,590 --> 00:33:38,506 1 jeu vous donne la instructions, ou vous pourriez 750 00:33:38,506 --> 00:33:41,200 faire à la ligne de commande bien, mais plus à venir dans set 1 p. 751 00:33:41,200 --> 00:33:44,940 >> Voyons voir ce qu'il ya dans ce programme appelé ici, additionneur dot c. 752 00:33:44,940 --> 00:33:47,970 Maintenant, je l'ai déjà fait remarquer , mais ce qui est nouveau? 753 00:33:47,970 --> 00:33:51,230 À première vue, ce que la ligne de code est absolument nouveau? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Probablement pas fondamentalement maintenant familier. 756 00:33:56,780 --> 00:33:58,417 >> AUDIENCE: [inaudible] 757 00:33:58,417 --> 00:34:00,250 DAVID J. Malan: Ouais, si x est égal à obtenir int n. 758 00:34:00,250 --> 00:34:03,760 On n'a jamais vu de tout cela avant, mais int est probablement 759 00:34:03,760 --> 00:34:08,179 le symbole de ce type de variable [? à partir?] un entier. 760 00:34:08,179 --> 00:34:09,040 Donc, pour int entier. 761 00:34:09,040 --> 00:34:11,420 Il est juste d'être plus succinct. x est simplement arbitraire. 762 00:34:11,420 --> 00:34:13,920 x et y et z sont toujours assez raisonnable pour les nombres, 763 00:34:13,920 --> 00:34:16,790 mais généralement nous utilisons des mots une fois nos programmes deviennent plus complexes. 764 00:34:16,790 --> 00:34:18,940 Obtenez int, bien sûr, un peu comme chaîne de get, 765 00:34:18,940 --> 00:34:21,629 va probablement obtenir un int de l'utilisateur, 766 00:34:21,629 --> 00:34:23,670 puis nous allons faire la même chose avec y. 767 00:34:23,670 --> 00:34:27,610 Et apparemment, même si cette dernière ligne, 24, semble plus complexe, 768 00:34:27,610 --> 00:34:32,679 il va dire la somme de ce et qui est cette autre chose. 769 00:34:32,679 --> 00:34:35,840 >> Et préavis pour cent i désigne probablement ce? 770 00:34:35,840 --> 00:34:38,190 Quel rôle pour cent i apparemment sers? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 Il est juste d'espaces réservés. 773 00:34:41,719 --> 00:34:42,219 Droit? 774 00:34:42,219 --> 00:34:45,149 Pour cent s était à la corde, pour cent i est entier pour. 775 00:34:45,149 --> 00:34:47,690 Il va y avoir pour cent f pour valeur en virgule flottante, qui 776 00:34:47,690 --> 00:34:49,273 est juste un nombre avec un point décimal. 777 00:34:49,273 --> 00:34:50,590 En d'autres termes, un nombre réel. 778 00:34:50,590 --> 00:34:55,270 Donc, nous allons effectivement compiler ce programmer très vite et ne font sommateur. 779 00:34:55,270 --> 00:34:57,962 Oups. 780 00:34:57,962 --> 00:34:58,670 Bonne occasion. 781 00:34:58,670 --> 00:35:02,970 Donc noter ici, tout ce temps, mon utilisateur nom pour ce compte est jharvard. 782 00:35:02,970 --> 00:35:06,620 Je suis en CS50 IDE, alias IDE50. 783 00:35:06,620 --> 00:35:11,030 Et maintenant en bleu ici, est une mention, mais de l'environnement, de l'endroit où je suis. 784 00:35:11,030 --> 00:35:16,050 Et en fait, si je zoome vers le sommet ici, vous remarquerez que je dois une IDE50 785 00:35:16,050 --> 00:35:19,490 et je vois ce mot, si vous sorte de tourner la tête sur le côté, l'espace de travail. 786 00:35:19,490 --> 00:35:23,890 En un mot, le fait que Je vois tilde barre espace de travail 787 00:35:23,890 --> 00:35:26,910 signifie que dans ce texte, environnement de commande sur la base, 788 00:35:26,910 --> 00:35:32,300 Je suis dans l'équivalent de texte de ce graphique dossier ici. 789 00:35:32,300 --> 00:35:35,730 Donc, quand je fais slash dot sommateur, il a dit pas de règle 790 00:35:35,730 --> 00:35:37,372 de faire cible arrêt d'addition. 791 00:35:37,372 --> 00:35:39,830 Je ne sais pas ce que cela signifie, mais il est mauvais pour une raison quelconque. 792 00:35:39,830 --> 00:35:43,310 Aucun fichier ou répertoire de ce nom est encore plus clair. 793 00:35:43,310 --> 00:35:45,670 Où est-il alors? 794 00:35:45,670 --> 00:35:47,820 Selon l'endroit où je clique pour ouvrir le fichier plus tôt. 795 00:35:47,820 --> 00:35:49,442 Où pourrait-il être? 796 00:35:49,442 --> 00:35:52,050 >> Il est probablement dans la source un w, mercredi, 797 00:35:52,050 --> 00:35:53,960 et je peux le voir, en effet, si je ouvre cela. 798 00:35:53,960 --> 00:35:57,220 Il est sommateur point c, mais dans cet environnement basé sur le texte, 799 00:35:57,220 --> 00:35:59,380 encore une fois, je dois être super explicite. 800 00:35:59,380 --> 00:36:03,950 Si je veux changer de répertoire dans la source, un mercredi, je dois taper, 801 00:36:03,950 --> 00:36:07,210 source de l'espace de l'un cd Mercredi entrer et maintenant 802 00:36:07,210 --> 00:36:09,810 mes changements rapides à me donner un repère visuel que 803 00:36:09,810 --> 00:36:12,330 Je suis, en effet, ailleurs dans mon environnement, 804 00:36:12,330 --> 00:36:15,710 mais maintenant je peux ne faire sommateur, il semble fonctionner, 805 00:36:15,710 --> 00:36:18,190 dot slash additionneur, me donner un nombre entier. 806 00:36:18,190 --> 00:36:19,080 One. 807 00:36:19,080 --> 00:36:20,070 Deux. 808 00:36:20,070 --> 00:36:21,630 La somme de un et de deux est de trois. 809 00:36:21,630 --> 00:36:24,140 Mais si je ne coopèrent pas, Voyons ce que se fait int. 810 00:36:24,140 --> 00:36:25,200 Donnez-moi un entier. 811 00:36:25,200 --> 00:36:26,590 Non. 812 00:36:26,590 --> 00:36:27,350 Réessayez. 813 00:36:27,350 --> 00:36:29,060 D'ACCORD. 814 00:36:29,060 --> 00:36:30,520 Beaux. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Bien. 818 00:36:33,010 --> 00:36:34,055 Donc, il coopère enfin. 819 00:36:34,055 --> 00:36:36,430 Et cela est une partie de la fonctionnalité qui ces fonctions 820 00:36:36,430 --> 00:36:37,760 peut avoir construit pour vous. 821 00:36:37,760 --> 00:36:43,330 >> Donc, à l'intérieur de la mise en œuvre d'obtenir int, ce que la programmation 822 00:36:43,330 --> 00:36:47,990 construire à partir de la semaine dernière est probablement dans là pour contraindre ce comportement de relance, 823 00:36:47,990 --> 00:36:49,962 réessayer, réessayez? 824 00:36:49,962 --> 00:36:51,670 Ouais, il ya probablement une sorte de boucle. 825 00:36:51,670 --> 00:36:54,160 Il va chercher syntaxiquement différent des blocs de zéro, 826 00:36:54,160 --> 00:36:55,880 mais cela est en effet ce qui est à l'intérieur du fichier. 827 00:36:55,880 --> 00:36:58,505 Et dans un délai de quelques semaines, nous effectivement regarder à la bibliothèque CS50 828 00:36:58,505 --> 00:37:02,000 à ce qui est à l'intérieur, mais il est une boucle imposer exactement cela. 829 00:37:02,000 --> 00:37:04,840 >> Jouons un peu idiot jeu ici avec ce fichier. 830 00:37:04,840 --> 00:37:06,550 Condition Zero point c. 831 00:37:06,550 --> 00:37:08,960 Nous allons juste généralement commencer à compter à zéro. 832 00:37:08,960 --> 00:37:11,220 Et je continue à faire défiler passé certaines des choses en haut. 833 00:37:11,220 --> 00:37:15,390 En bleu ici, délimitée avec tout de ces étoiles et les barres obliques, 834 00:37:15,390 --> 00:37:17,310 ceux d'entre vous qui programment avant, ce qui est qui? 835 00:37:17,310 --> 00:37:18,690 Pourquoi continuons-nous sauter dessus? 836 00:37:18,690 --> 00:37:19,110 Quoi? 837 00:37:19,110 --> 00:37:19,490 >> PUBLIC: Il est un commentaire. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. Malan: Ouais. 839 00:37:19,800 --> 00:37:20,633 Il est juste un commentaire. 840 00:37:20,633 --> 00:37:24,160 Ceci est un commentaire pour l'homme à lire, que dans notre cas, 841 00:37:24,160 --> 00:37:27,120 nous dit ce que le nom du fichier est, qui l'a écrit, et ce qu'il fait, 842 00:37:27,120 --> 00:37:28,610 de sorte que vous ne devez pas de lire le code 843 00:37:28,610 --> 00:37:30,110 de savoir ce que ce fichier est tout au sujet. 844 00:37:30,110 --> 00:37:33,110 Il est juste une description, mais fonctionnellement il est hors de propos. 845 00:37:33,110 --> 00:37:35,930 Et je peux même le supprimer de mon dossier et il n'a pas d'impact. 846 00:37:35,930 --> 00:37:38,740 Les lignes juteuses sont ces deux premiers ici, maintenant. 847 00:37:38,740 --> 00:37:41,405 void main int est l'équivalent de notre drapeau vert lorsque cliqué, 848 00:37:41,405 --> 00:37:44,030 de sorte que nous allons laisser ce soit pour aujourd'hui, et nous y reviendrons, 849 00:37:44,030 --> 00:37:46,940 par la suite, sur ce int et non avenues sont, mais maintenant, 850 00:37:46,940 --> 00:37:49,500 Remarquez ce que je l'ai fait ici aussi, vous pouvez aussi, 851 00:37:49,500 --> 00:37:51,736 si vous avez un dans la ligne commenter, si vous avez 852 00:37:51,736 --> 00:37:54,670 Une pensée que vous souhaitez partager sur une ligne de code, 853 00:37:54,670 --> 00:37:58,910 convention en C est de faire slash slash, et puis quelques mots succincts, 854 00:37:58,910 --> 00:38:01,500 pas une phrase complète, généralement pas un paragraphe, 855 00:38:01,500 --> 00:38:05,310 ce qui explique juste pour vous, ou votre TF, ou d'autres lecteurs ou des collègues, 856 00:38:05,310 --> 00:38:06,990 ce qui fait votre code. 857 00:38:06,990 --> 00:38:10,150 Donc, plutôt que d'avoir à regarder et à ce déduire de lignes 858 00:38:10,150 --> 00:38:12,550 neuf et 10, ce qui est ce faisant, en ligne de huit 859 00:38:12,550 --> 00:38:14,945 Je viens de faire un commentaire à demander à l'utilisateur un nombre entier, 860 00:38:14,945 --> 00:38:17,820 alors je ne dois pas penser trop dur sur ce que les lignes neuf et 10 sont. 861 00:38:17,820 --> 00:38:19,720 Je sais juste que ce que est ce que collectivement qu'ils font. 862 00:38:19,720 --> 00:38:20,460 >> Comment? 863 00:38:20,460 --> 00:38:22,060 Eh bien, voici l'invite. 864 00:38:22,060 --> 00:38:23,610 Voici l'obtention du int. 865 00:38:23,610 --> 00:38:25,984 Et sur la base de la précédente comportement, il semble que get int 866 00:38:25,984 --> 00:38:29,080 est assez intelligent pour faire en sorte que l'être humain et il donne coopère 867 00:38:29,080 --> 00:38:30,090 un nombre entier. 868 00:38:30,090 --> 00:38:32,270 Mais maintenant, nous voyons cela. 869 00:38:32,270 --> 00:38:33,740 Et cela rappelle de Scratch. 870 00:38:33,740 --> 00:38:36,140 Je affirmant que je suis l'analyse de l'entrée de l'utilisateur, 871 00:38:36,140 --> 00:38:39,050 mais quelque peu imprécise. 872 00:38:39,050 --> 00:38:43,200 Et ce apparemment en C est de savoir comment nous exprimons une si d'autre, une branche, 873 00:38:43,200 --> 00:38:46,320 une fourchette dans la route, mais je dire peu inexacte. 874 00:38:46,320 --> 00:38:50,470 Quel est le bug dans ce programme? 875 00:38:50,470 --> 00:38:51,610 A propos de remonter plus loin? 876 00:38:51,610 --> 00:38:52,223 Ouais. 877 00:38:52,223 --> 00:38:53,150 >> AUDIENCE: [inaudible] zéro. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. Malan: Ouais. 879 00:38:54,025 --> 00:38:57,630 Donc, si je tape zéro, nous allons examiner exactement ce cas cas, ou dans un coin, 880 00:38:57,630 --> 00:38:58,450 si vous voulez. 881 00:38:58,450 --> 00:39:02,790 Donc, si je tape zéro, ce qui de la blocs va apparemment l'attraper? 882 00:39:02,790 --> 00:39:04,660 Le cas ou l'autre? 883 00:39:04,660 --> 00:39:07,340 L'autre chose, et il va dire, vous avez choisi un nombre négatif. 884 00:39:07,340 --> 00:39:10,476 Et en effet, le zéro est pas censé être positif ou négatif, 885 00:39:10,476 --> 00:39:11,850 et alors ce serait à tort. 886 00:39:11,850 --> 00:39:12,930 Ce serait un bug. 887 00:39:12,930 --> 00:39:14,580 Alors, comment pouvons-nous résoudre ce problème? 888 00:39:14,580 --> 00:39:16,360 Quelqu'un qui n'a jamais programmé avant? 889 00:39:16,360 --> 00:39:16,570 Veux-tu-- 890 00:39:16,570 --> 00:39:17,480 >> AUDIENCE: [inaudible] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. Malan: Rentrer? 892 00:39:17,990 --> 00:39:18,570 >> AUDIENCE: [inaudible] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. Malan: Oh, vous avez? 894 00:39:18,930 --> 00:39:20,350 Quelqu'un qui n'a jamais programmé auparavant. 895 00:39:20,350 --> 00:39:21,750 Vous voulez tenter votre chance à ce, dans la chemise rouge? 896 00:39:21,750 --> 00:39:22,600 Allez vers le haut. 897 00:39:22,600 --> 00:39:25,320 Oh oui, venez sur place, si vous ne vous dérange pas. 898 00:39:25,320 --> 00:39:27,586 Donc, ne jamais avoir programmé avant, quel est votre nom? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. Malan: Lauren, tout droit. 901 00:39:29,626 --> 00:39:31,150 Donc corriger ce bug pour nous. 902 00:39:31,150 --> 00:39:35,070 Vous avez pas vu C, sans doute, et probablement aucune autre langue. 903 00:39:35,070 --> 00:39:38,380 Donc fixer ce programme pour nous. 904 00:39:38,380 --> 00:39:39,100 Nice à Ya répondre. 905 00:39:39,100 --> 00:39:39,615 Pas de pression. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Ouais. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. Malan: Mais encore une fois, si cela Gamble se passe comme prévu, 909 00:39:46,270 --> 00:39:48,350 la livraison sera ici être, tout nouveau, pour commencer 910 00:39:48,350 --> 00:39:51,080 à remarquer et modèles déduire de la syntaxe existante 911 00:39:51,080 --> 00:39:55,420 sinon comment vous pourriez exprimer vous-même, sans jeu de mots, afin 912 00:39:55,420 --> 00:39:58,410 pour capturer un certain scénario supplémentaire. 913 00:39:58,410 --> 00:39:59,603 Nous disons donc d'autre si. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, bon. 916 00:40:05,230 --> 00:40:09,120 Et remarquez avec CS50 IDE, IDE et frankly-- 917 00:40:09,120 --> 00:40:11,110 supports pour Integrated Environnement de développement. 918 00:40:11,110 --> 00:40:14,110 Il est juste une façon élégante de dire un programme qui vous aide programme. 919 00:40:14,110 --> 00:40:16,779 Il fait des choses comme conviviales lorsque vous tapez un parenthèse, 920 00:40:16,779 --> 00:40:18,320 il vous donne automatiquement l'autre. 921 00:40:18,320 --> 00:40:20,760 La présomption étant que vous êtes finalement va vouloir saisir que, 922 00:40:20,760 --> 00:40:22,400 et il le fait aussi avec des citations. 923 00:40:22,400 --> 00:40:24,190 >> Donc, je l'aime à la ligne 23. 924 00:40:24,190 --> 00:40:26,400 99% du chemin. 925 00:40:26,400 --> 00:40:29,920 Quelqu'un veut faire chorus avec une pointe? 926 00:40:29,920 --> 00:40:31,420 Je entendu virgule de l'auditoire. 927 00:40:31,420 --> 00:40:32,080 Bien. 928 00:40:32,080 --> 00:40:33,260 Donc, qui complète que. 929 00:40:33,260 --> 00:40:37,930 Et maintenant, je dois juste un peu la consternation avec la ligne 21. 930 00:40:37,930 --> 00:40:41,370 Comment voulons-nous pour exprimer cela? 931 00:40:41,370 --> 00:40:43,370 Quelle question voulons-nous de demander, pensez-vous? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Donc nous avons demandé préalablement la question, si n est supérieur à zéro, faire cela. 934 00:40:50,330 --> 00:40:51,870 Sinon, le faire. 935 00:40:51,870 --> 00:40:54,317 Nous devons donc choisir un question à se poser ici. 936 00:40:54,317 --> 00:40:55,192 AUDIENCE: [inaudible] 937 00:40:55,192 --> 00:40:56,530 DAVID J. Malan: Bon. 938 00:40:56,530 --> 00:40:58,290 Donc, si n est égal à zéro. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excellente. 941 00:41:02,100 --> 00:41:03,080 Donc, arrêtons-nous ici. 942 00:41:03,080 --> 00:41:04,850 Merci beaucoup pour cette bravant. 943 00:41:04,850 --> 00:41:10,890 Permettez-moi de vous donner un peu de bien méritée boule de stress, peut-être là. 944 00:41:10,890 --> 00:41:11,900 Donc, nous y sommes presque. 945 00:41:11,900 --> 00:41:14,790 En fait, Lauren, si vous ne faites pas l'esprit, permettez-moi de faire un tweak ici, 946 00:41:14,790 --> 00:41:17,850 juste pour être compatible même avec ce que nous avons vu dans Scratch, ce 947 00:41:17,850 --> 00:41:21,080 ce que je veux faire avec des lignes 21 et 24, sur la base simplement à nouveau 948 00:41:21,080 --> 00:41:23,290 sur la façon dont nous l'avons fait dans Scratch, peut-être? 949 00:41:23,290 --> 00:41:24,230 >> AUDIENCE: déplacer vers le haut. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. Malan: Ouais, déplacer vers le haut. 951 00:41:25,605 --> 00:41:30,260 Donc, la condition else, la troisième, ou quatrième, ou cinquième, ou une branche finale, 952 00:41:30,260 --> 00:41:34,100 devrait en effet venu après, et que est juste, par convention, 953 00:41:34,100 --> 00:41:36,047 juste parce que si vous voulez. 954 00:41:36,047 --> 00:41:37,380 Donc, je ne dois faire ce tweak. 955 00:41:37,380 --> 00:41:39,660 Et je dois mettre mon accolade de retour ici. 956 00:41:39,660 --> 00:41:42,700 Et maintenant, ce programme va compiler. 957 00:41:42,700 --> 00:41:46,140 Nous sommes si près, mais il est un bug très, très subtile. 958 00:41:46,140 --> 00:41:47,200 Voyons ce qui se passe. 959 00:41:47,200 --> 00:41:49,660 >> Tout d'abord, laissez-moi aller de l'avant et Zoom arrière. 960 00:41:49,660 --> 00:41:53,405 Je vais aller de l'avant et tapez faire état zéro. 961 00:41:53,405 --> 00:41:55,070 Oh, je mentais. 962 00:41:55,070 --> 00:41:58,760 Maintenant, le compilateur est en fait assez intelligent. 963 00:41:58,760 --> 00:42:00,950 Et je ne comprends pas vraiment il est message d'erreur. 964 00:42:00,950 --> 00:42:04,310 Utilisation de la suite d'une cession comme une condition sans parenthèses, 965 00:42:04,310 --> 00:42:05,740 est apparemment mauvaise. 966 00:42:05,740 --> 00:42:07,100 mais qu'est ce que ça veut dire? 967 00:42:07,100 --> 00:42:10,860 >> Eh bien encore une fois, la recherche de modèles dans le code que nous avons vu auparavant, 968 00:42:10,860 --> 00:42:16,640 ce qui est en train de faire la ligne 17, même si Lauren destiné légèrement 969 00:42:16,640 --> 00:42:18,790 autrement? 970 00:42:18,790 --> 00:42:19,290 Ouais. 971 00:42:19,290 --> 00:42:21,565 >> AUDIENCE: [inaudible] 972 00:42:21,565 --> 00:42:22,440 DAVID J. Malan: Ouais. 973 00:42:22,440 --> 00:42:26,610 Alors rappelez-vous le signe égal, apparemment comme nous l'avons utilisé auparavant, est pas égal. 974 00:42:26,610 --> 00:42:29,240 Sa mission, de droite à gauche. 975 00:42:29,240 --> 00:42:33,810 Donc, la ligne 17 à l'heure actuelle est une maladie, et il est 976 00:42:33,810 --> 00:42:37,890 l'exécution de code à l'intérieur des parenthèses, mais quand ce code est exécuté, 977 00:42:37,890 --> 00:42:42,140 ce qui se passe à la valeur de zéro? 978 00:42:42,140 --> 00:42:45,250 Ce qui se passe à la valeur de n? 979 00:42:45,250 --> 00:42:46,810 Devenir zéro. 980 00:42:46,810 --> 00:42:50,520 Donc, si n est de plus de zéro, et encore, selon la semaine dernière, 981 00:42:50,520 --> 00:42:54,690 nous disons généralement que zéro est fausse et l'un est vrai, 982 00:42:54,690 --> 00:42:57,410 ou oui est un et pas est nul. 983 00:42:57,410 --> 00:42:59,590 Donc vrai et le faux, l'un et 0. 984 00:42:59,590 --> 00:43:06,090 Si n à partir de la ligne 17 a été étant donné la valeur 0, est nul vrai? 985 00:43:06,090 --> 00:43:06,590 Non. 986 00:43:06,590 --> 00:43:08,280 Par définition, le zéro est faux. 987 00:43:08,280 --> 00:43:10,860 Voilà la convention nous sommes aller à accrocher à aller de l'avant. 988 00:43:10,860 --> 00:43:17,320 Il en sera de lignes 18, 19, et 20 jamais appliquer maintenant, logiquement? 989 00:43:17,320 --> 00:43:18,320 Ils ne peuvent pas. 990 00:43:18,320 --> 00:43:21,640 Nous avons donc demandé à la question mais pas assez précisément, 991 00:43:21,640 --> 00:43:25,620 et vous ne seriez pas le savoir à moins vous l'avez vu, la solution C 992 00:43:25,620 --> 00:43:29,610 est lorsque vous voulez exprimer l'égalité, vous dites égaux égaux. 993 00:43:29,610 --> 00:43:33,140 Donc signe égal a déjà été utilisée jusqu'à par cession, de droite à gauche. 994 00:43:33,140 --> 00:43:35,110 Égal à égal des moyens égaux. 995 00:43:35,110 --> 00:43:37,950 Et si vous voulez vraiment votre esprit à plier, en JavaScript et PHP, 996 00:43:37,950 --> 00:43:40,490 il est égal à égal égaux, qui signifie tout autre chose, 997 00:43:40,490 --> 00:43:41,990 mais nous y reviendrons plus avant longtemps. 998 00:43:41,990 --> 00:43:45,760 >> Donc, cela est une solution simple, mais se rendent compte super facile à faire cette erreur, 999 00:43:45,760 --> 00:43:48,700 et se demandent ensuite et la lutte de minutes, voire une heure, 1000 00:43:48,700 --> 00:43:51,490 pourquoi mon code ne exécuter comme je l'entends? 1001 00:43:51,490 --> 00:43:54,140 Il est parce que vous ne l'avez dit précisément ce que vous entendez. 1002 00:43:54,140 --> 00:43:56,450 Alors qui était presque parfait, et il était grand 1003 00:43:56,450 --> 00:44:00,760 que nous sommes tombés sur ces deux petits parce que maintenant les choses si nous les fixons, 1004 00:44:00,760 --> 00:44:06,240 et je fais état zéro dot slash état zéro, 1005 00:44:06,240 --> 00:44:07,490 Je voudrais un entier s'il vous plaît. 1006 00:44:07,490 --> 00:44:08,090 Voyons. 1007 00:44:08,090 --> 00:44:09,160 Non. 1008 00:44:09,160 --> 00:44:10,740 Il va me forcer à le faire. 1009 00:44:10,740 --> 00:44:11,990 Donc 42. 1010 00:44:11,990 --> 00:44:13,590 Je pris un nombre positif. 1011 00:44:13,590 --> 00:44:16,470 Alors maintenant, comment puis-je prouver ce programme correcte? 1012 00:44:16,470 --> 00:44:19,990 Si vous êtes un mathématicien, vous ne pouvez pas vraiment le prouver par essais et erreurs, 1013 00:44:19,990 --> 00:44:20,490 droit? 1014 00:44:20,490 --> 00:44:23,180 Vous ne pouvez pas simplement la preuve par par exemple, mais au moins 1015 00:44:23,180 --> 00:44:25,494 en tant que programmeur nous ne sommes pas va essayer de prouver pour l'instant 1016 00:44:25,494 --> 00:44:27,660 ce qui est en fait correct, mais je devrais probablement 1017 00:44:27,660 --> 00:44:29,470 tester certains cas représentatifs. 1018 00:44:29,470 --> 00:44:31,070 >> Je l'ai testé 42. 1019 00:44:31,070 --> 00:44:33,030 Je pourrais tester 43. 1020 00:44:33,030 --> 00:44:34,910 Je pourrais tester 44. 1021 00:44:34,910 --> 00:44:35,640 Essai 45. 1022 00:44:35,640 --> 00:44:36,140 Droit? 1023 00:44:36,140 --> 00:44:37,860 Mais je ne pouvais le faire très longtemps. 1024 00:44:37,860 --> 00:44:39,925 Quel serait un peu plus cas intéressant d'essayer? 1025 00:44:39,925 --> 00:44:41,050 AUDIENCE: [inaudible] zéro. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. Malan: Donc zéro. 1027 00:44:41,740 --> 00:44:42,297 Assurément. 1028 00:44:42,297 --> 00:44:44,880 Et bien, nous avons cette fois-ci, grâce à un nouveau code de Lauren. 1029 00:44:44,880 --> 00:44:46,213 Quel est un autre bon exemple d'essayer? 1030 00:44:46,213 --> 00:44:47,320 AUDIENCE: négatif. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. Malan: un négatif, et peut-être quelque chose d'un peu plus grand, 1032 00:44:50,070 --> 00:44:52,617 alors peut-être négative 42, mais en général, lorsque 1033 00:44:52,617 --> 00:44:54,450 tester vos programmes aller de l'avant, vous êtes 1034 00:44:54,450 --> 00:44:56,325 aller à vouloir penser à vous-même, comme ce 1035 00:44:56,325 --> 00:44:58,050 sont les cas différents fondamentaux. 1036 00:44:58,050 --> 00:45:01,720 Et je ose dire un cas négatif, un cas positif, et un cas de zéro 1037 00:45:01,720 --> 00:45:03,365 arrondit à peu près ces out. 1038 00:45:03,365 --> 00:45:04,990 Regardons une variante de ce bien. 1039 00:45:04,990 --> 00:45:06,930 Conditions un. 1040 00:45:06,930 --> 00:45:11,224 Ceci est une solution correcte ici, de sorte que vous verrez deux et en ligne, 1041 00:45:11,224 --> 00:45:13,390 si vous vous promenez à travers le soluces, généralement 1042 00:45:13,390 --> 00:45:18,090 incrémenter ces étapes jusqu'à ce que nous obtenir exactement la bonne approche. 1043 00:45:18,090 --> 00:45:20,070 Que faire si nous voulions poser deux questions à la fois? 1044 00:45:20,070 --> 00:45:22,200 >> Permettez-moi d'ouvrir cette place. 1045 00:45:22,200 --> 00:45:26,740 Non-commutateur, pour des raisons nous verrons une autre fois. 1046 00:45:26,740 --> 00:45:29,610 Quoi de neuf syntaxiquement ici? 1047 00:45:29,610 --> 00:45:32,760 Je suis en train de jouer un jeu où l'ordinateur est révélateur 1048 00:45:32,760 --> 00:45:35,550 moi, donne-moi un entier entre une et 10, 1049 00:45:35,550 --> 00:45:37,180 et puis je vais juger l'entrée de l'utilisateur. 1050 00:45:37,180 --> 00:45:39,180 En anglais, basé sur le code que vous voyez ici 1051 00:45:39,180 --> 00:45:41,530 en bleu, ce qui est fait de ce programme? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 AUDIENCE: [inaudible] ramassé un certain nombre grand ou petit. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. Malan: Ouais. 1055 00:45:46,484 --> 00:45:49,450 Il est juste statuer si Je pris une grande ou moyenne, 1056 00:45:49,450 --> 00:45:53,900 ou petit nombre basé sur une très définition arbitraire des petites, moyennes, 1057 00:45:53,900 --> 00:45:58,510 et grande ici, mais un avis la syntaxe qui est nouveau est présent. 1058 00:45:58,510 --> 00:46:02,340 Il n'y a pas moins de int ou égal à signer, ou supérieure ou égale à signer, 1059 00:46:02,340 --> 00:46:05,430 où l'on est au-dessus de l'autre, que vous peut exprimer comme Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Donc, dans un langage de programmation généralement juste faire deux personnages, 1061 00:46:08,180 --> 00:46:09,450 l'un après l'autre. 1062 00:46:09,450 --> 00:46:12,695 Et qu'est ce que cela probablement représenter, esperluette esperluette. 1063 00:46:12,695 --> 00:46:13,570 AUDIENCE: [inaudible] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. Malan: Ouais. 1065 00:46:13,680 --> 00:46:16,910 Cela signifie simplement et parce qu'il se trouve que les auteurs de C 1066 00:46:16,910 --> 00:46:19,120 utilisé un seul esperluette, qui vous pourriez penser 1067 00:46:19,120 --> 00:46:22,430 serait parfait pour la notion de et, est déjà utilisé, 1068 00:46:22,430 --> 00:46:27,300 esperluette donc effectivement esperluette capture le cas, nous voulons réellement. 1069 00:46:27,300 --> 00:46:30,610 >> Donc, nous allons trébucher maintenant sur deux choses. 1070 00:46:30,610 --> 00:46:32,640 Permettez-moi aller de l'avant et d'ouvrir un. 1071 00:46:32,640 --> 00:46:36,590 Quelque chose qui est un peu inquiétant. 1072 00:46:36,590 --> 00:46:37,970 Imprécision dot c. 1073 00:46:37,970 --> 00:46:40,260 Permettez-moi de vous présenter deux choses ici. 1074 00:46:40,260 --> 00:46:44,720 Un, un avis que nous pouvons faire mathématiques, que tout comme avant quand 1075 00:46:44,720 --> 00:46:47,797 nous avons en plus de deux nombres x et y. 1076 00:46:47,797 --> 00:46:49,380 Quel est ce programme apparemment fait? 1077 00:46:49,380 --> 00:46:52,140 Je ne l'ai pas encore commenté ce, et je me suis présenté pour cent f, 1078 00:46:52,140 --> 00:46:55,720 mais je l'ai déjà dit rapidement f pour cent signifie virgule flottante 1079 00:46:55,720 --> 00:46:56,970 valeur, qui est le nombre réel. 1080 00:46:56,970 --> 00:46:59,520 Quelque chose avec une décimale point, ce qui est pas un entier. 1081 00:46:59,520 --> 00:47:02,270 Que pensez-vous de ce programme est essayer de me montrer à l'écran? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Ouais? 1084 00:47:06,050 --> 00:47:07,550 AUDIENCE: Le résultat de l'un sur 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. Malan: Ouais. 1086 00:47:07,780 --> 00:47:09,680 Quel est le résultat d'un divisé par 10. 1087 00:47:09,680 --> 00:47:12,721 Droit, parce que tous vous avez probablement grandi en sachant que un sur 10 1088 00:47:12,721 --> 00:47:14,502 est ce? 1089 00:47:14,502 --> 00:47:16,220 Ouais, il est juste de 1/10 ou 0,1. 1090 00:47:16,220 --> 00:47:16,720 Droit? 1091 00:47:16,720 --> 00:47:19,010 Voyons donc ce que cela est en réalité. 1092 00:47:19,010 --> 00:47:21,010 Alors laissez-moi aller de l'avant et sauver ce. 1093 00:47:21,010 --> 00:47:21,970 Permettez-moi de descendre ici. 1094 00:47:21,970 --> 00:47:26,360 Assurez imprécision point barre oblique imprécision, et de l'avis, aussi, 1095 00:47:26,360 --> 00:47:29,380 dans un environnement Linux, vous ne faites pas avoir à taper sur l'imprécision et de prendre 1096 00:47:29,380 --> 00:47:30,010 toute la journée. 1097 00:47:30,010 --> 00:47:32,910 Il généralement, si vous frappez Tab, il terminerez votre pensée pour vous, 1098 00:47:32,910 --> 00:47:36,660 sur la base des mots qui sont disponible dans le répertoire courant. 1099 00:47:36,660 --> 00:47:37,160 D'ACCORD. 1100 00:47:37,160 --> 00:47:37,970 Donc, vous aviez raison. 1101 00:47:37,970 --> 00:47:41,239 Une divisé par 10 est, en fait, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Mais je suis un peu curieux. 1103 00:47:42,280 --> 00:47:44,196 Et il se trouve printf soutient certaines fonctionnalités 1104 00:47:44,196 --> 00:47:48,700 lequel vous pouvez spécifier plus le nombre de décimales par défaut. 1105 00:47:48,700 --> 00:47:52,140 Donc, si je veux voir 10 décimal points que je peux faire pour cent, 1106 00:47:52,140 --> 00:47:55,510 pour le symbole de l'espace réservé, dot 10 pour, donnez-moi 10 points décimaux, 1107 00:47:55,510 --> 00:47:58,140 puis encore à virgule flottante valeur, et, en passant, 1108 00:47:58,140 --> 00:48:01,550 quelle est cette barre oblique inverse n apparemment, nous continuons à utiliser? 1109 00:48:01,550 --> 00:48:03,450 Il se trouve qu'il est un symbole d'une nouvelle ligne. 1110 00:48:03,450 --> 00:48:05,970 Il est la manière très explicite de dire à l'ordinateur, 1111 00:48:05,970 --> 00:48:08,759 déplacer le curseur à la prochaine ligne après vous avez terminé. 1112 00:48:08,759 --> 00:48:10,800 Et nous allons voir ce qui se passe quand nous ne faisons pas cela. 1113 00:48:10,800 --> 00:48:12,430 >> Permettez-moi de faire recompile imprécision. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Maintenant dot slash imprécision. 1116 00:48:18,356 --> 00:48:18,930 D'ACCORD. 1117 00:48:18,930 --> 00:48:19,780 Toujours à droite. 1118 00:48:19,780 --> 00:48:21,512 Un divisé par 10. 1119 00:48:21,512 --> 00:48:23,220 Maintenant, je vais avoir un peu curieux, cependant. 1120 00:48:23,220 --> 00:48:27,599 Que faire si je regarde 20 décimal souligne, recompiler, rediffusée, 1121 00:48:27,599 --> 00:48:29,390 et comme un côté pour vitesse, vous pouvez également utiliser 1122 00:48:29,390 --> 00:48:31,800 votre flèches haut et bas pour Parcourez votre historique, 1123 00:48:31,800 --> 00:48:35,476 de sorte que vous ne devez pas continuer retaper ces commandes, entrez. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Je ne l'ai pas appris que l'école primaire. 1126 00:48:39,220 --> 00:48:43,260 Très bien, alors laissez-moi voir comme 29 places sur. 1127 00:48:43,260 --> 00:48:44,300 Peut-être juste un coup de chance. 1128 00:48:44,300 --> 00:48:46,907 Peut-être que mon ordinateur est agissait bizarrement. 1129 00:48:46,907 --> 00:48:47,990 Cela ne veut pas d'une chose, non? 1130 00:48:47,990 --> 00:48:50,300 Il fait quelque chose de déterministe. 1131 00:48:50,300 --> 00:48:53,410 Donc, assurez imprécision. 1132 00:48:53,410 --> 00:48:54,890 OK, ce est foiré. 1133 00:48:54,890 --> 00:48:57,620 Donc ce qui se passe? 1134 00:48:57,620 --> 00:49:00,160 >> Donc, apparemment, votre enseignant a été couché 1135 00:49:00,160 --> 00:49:03,900 à vous tous de ce temps pour raisons que nous verrons avant longtemps. 1136 00:49:03,900 --> 00:49:05,569 Mais finissons avec un autre programme. 1137 00:49:05,569 --> 00:49:07,860 Ceci est un petit programmes quelqu'un a écrit il ya quelques années, 1138 00:49:07,860 --> 00:49:08,990 et il est en fait partie d'un concours. 1139 00:49:08,990 --> 00:49:11,198 Nul écrit réellement le code comme ça, et si vous le faites, 1140 00:49:11,198 --> 00:49:12,880 cela est stylistiquement un problème. 1141 00:49:12,880 --> 00:49:14,660 Mais les gens le font pour les droits de vantardise. 1142 00:49:14,660 --> 00:49:17,260 Pour écrire le plus déroutant programme que la recherche 1143 00:49:17,260 --> 00:49:19,110 fait néanmoins quelque chose d'intéressant. 1144 00:49:19,110 --> 00:49:23,930 Et la note que je pensais que nous partions sur aujourd'hui, avant Colton nous joue ici, 1145 00:49:23,930 --> 00:49:27,840 est d'exécuter ce programme, qui, même en utilisant simplement 1146 00:49:27,840 --> 00:49:31,450 C dans cette base de texte environnement, nous cela donne. 1147 00:49:31,450 --> 00:49:32,264 Merde. 1148 00:49:32,264 --> 00:49:34,930 >> [Rires] 1149 00:49:34,930 --> 00:49:36,800 >> Etre prêt. 1150 00:49:36,800 --> 00:49:39,340 [Inaudible] c dash l m. 1151 00:49:39,340 --> 00:49:42,885 Vous allez voir le magique incantation que nous verrons avant longtemps. 1152 00:49:42,885 --> 00:49:45,780 [Inaudible] Très bien. 1153 00:49:45,780 --> 00:49:51,592 Et maintenant vous pouvez même faire des choses comme cela. 1154 00:49:51,592 --> 00:49:52,340 C'est tout. 1155 00:49:52,340 --> 00:49:56,410 Pour CS50 nous, vous voir vendredi. 1156 00:49:56,410 --> 00:49:58,910 >> [Jouer de la musique] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Applaudissements] 1159 00:52:41,440 --> 00:52:42,812