1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. Malan: C'est donc CS50. 3 00:00:13,800 --> 00:00:18,970 Et c'était propre Colton Ogden CS50, pour plus de qui est la musique, vous pouvez 4 00:00:18,970 --> 00:00:22,820 télécharger au soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Donc, aujourd'hui, nous nous concentrons d'autant plus sur la technique de programmation. 6 00:00:26,690 --> 00:00:28,980 Et nous prenons où nous avons laissé la semaine dernière, en se concentrant 7 00:00:28,980 --> 00:00:31,660 sur Scratch, qui était présent langage de programmation graphique. 8 00:00:31,660 --> 00:00:35,490 Et prendre les choses à un niveau inférieur, l'aide d'une programmation plus traditionnelle 9 00:00:35,490 --> 00:00:38,420 langue ou C. Mais le long du chemin, la réalisation 10 00:00:38,420 --> 00:00:40,730 que les mêmes idées que nous parlé vendredi dernier 11 00:00:40,730 --> 00:00:44,390 se reproduira pas seulement dans ce langage C, mais dans la plupart des tous les autres 12 00:00:44,390 --> 00:00:46,350 que nous regardons ce semestre. 13 00:00:46,350 --> 00:00:50,247 >> Nous avons donc appelé cette chose ici ce la dernière fois? 14 00:00:50,247 --> 00:00:51,830 C'est représentant d'une déclaration. 15 00:00:51,830 --> 00:00:53,080 Nous avons donc appelé ce une déclaration. 16 00:00:53,080 --> 00:00:54,100 Et il fait quelque chose. 17 00:00:54,100 --> 00:00:56,910 C'est une instruction qui a ordinateur ou Scratch peut exécuter. 18 00:00:56,910 --> 00:00:59,910 Et désormais, nous allons commencer également appeler quelque chose comme cela une fonction, 19 00:00:59,910 --> 00:01:02,070 pour des raisons que nous verrons bientôt. 20 00:01:02,070 --> 00:01:03,681 >> Pendant ce temps, nous avons vu des choses comme ça. 21 00:01:03,681 --> 00:01:05,680 Et ceux-ci sont généralement connue sous le nom de ce construire? 22 00:01:05,680 --> 00:01:06,240 >> PUBLIC: Boucle. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. Malan: Donc une boucle. 24 00:01:06,860 --> 00:01:07,943 Donc assez simple. 25 00:01:07,943 --> 00:01:09,470 Il fait littéralement ce qu'il dit. 26 00:01:09,470 --> 00:01:12,210 Et dans Scratch, si vous voulez caser plus de pièces de puzzle là, 27 00:01:12,210 --> 00:01:13,950 la pièce passera à l'adapter. 28 00:01:13,950 --> 00:01:16,790 Et nous le verrons dans C que nous pouvons faire la même chose. 29 00:01:16,790 --> 00:01:20,000 >> Un autre type de boucle, mais, Scratch pourrait être pour toujours, 30 00:01:20,000 --> 00:01:21,820 ou il ya un certain nombre d'autres approches. 31 00:01:21,820 --> 00:01:24,150 Mais prenons un plus regard généraliste, avec un visage 32 00:01:24,150 --> 00:01:27,402 c'est probablement très familier, à boucles plus généralement. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: un chose que les ordinateurs 34 00:01:29,110 --> 00:01:31,860 sont vraiment bons à se répéter les commandes. 35 00:01:31,860 --> 00:01:33,910 En tant que personne, vous obtiendrez vraiment ennuyé si vous 36 00:01:33,910 --> 00:01:36,730 eu à faire la même chose beaucoup de fois de suite. 37 00:01:36,730 --> 00:01:40,530 Mais un ordinateur peut faire la même chose des millions, voire des milliards de fois, 38 00:01:40,530 --> 00:01:43,290 et ne pas s'ennuyer, et être en mesure de l'exécuter vraiment bien. 39 00:01:43,290 --> 00:01:45,650 >> Ainsi, par exemple, si je voulu souhaiter à tous 40 00:01:45,650 --> 00:01:48,840 sur Facebook un joyeux anniversaire en leur envoyant un e-mail, 41 00:01:48,840 --> 00:01:51,550 il pourrait me prendre plus d'une siècle à fait écrire à 42 00:01:51,550 --> 00:01:53,000 tous les e-mails à tout le monde. 43 00:01:53,000 --> 00:01:57,780 Mais avec seulement quelques lignes de code, je peux d'un système envoyer un email à tout le monde 44 00:01:57,780 --> 00:01:59,930 sur Facebook qui souhaitent eux un joyeux anniversaire. 45 00:01:59,930 --> 00:02:02,730 C'est ce que les boucles sont et pourquoi ils sont précieux et quelque chose 46 00:02:02,730 --> 00:02:04,740 que les ordinateurs peuvent faire très bien. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. Malan: Donc, si vous avez été le destinataire 48 00:02:05,630 --> 00:02:07,820 de certains CS50 de et L'espace de Dropbox de la fin, 49 00:02:07,820 --> 00:02:10,590 c'est en fait exactement ce que nous faire, en utilisant le code tout à fait comme ça. 50 00:02:10,590 --> 00:02:12,600 Nous avons essentiellement un grand feuille de calcul dans laquelle 51 00:02:12,600 --> 00:02:15,016 les gens ont été la saisie de leur Les noms et adresses e-mail. 52 00:02:15,016 --> 00:02:18,160 Et nous avons écrit un petit morceau de code qui peut itérer sur ces adresses 53 00:02:18,160 --> 00:02:21,860 et cracher des adresses uniques dans cas où quelqu'un a présenté à plusieurs reprises. 54 00:02:21,860 --> 00:02:25,120 Et par la suite, nous vous enverrons un automatisé e-mail de la bot CS50, 55 00:02:25,120 --> 00:02:27,190 y compris le code de coupon. 56 00:02:27,190 --> 00:02:29,290 >> Maintenant, nous avons également examiné cette construction dernière fois. 57 00:02:29,290 --> 00:02:33,100 Et il s'agit d'un particulier exemple de quoi? 58 00:02:33,100 --> 00:02:35,050 Alors, oui, une expression booléenne. 59 00:02:35,050 --> 00:02:37,050 Et la forme est destinée pour capturer aussi. 60 00:02:37,050 --> 00:02:39,966 Toutes ces questions de la former vrai ou faux dans Scratch 61 00:02:39,966 --> 00:02:41,590 va chercher un petit quelque chose de ce genre. 62 00:02:41,590 --> 00:02:43,200 Et nous appelons cela une expression booléenne. 63 00:02:43,200 --> 00:02:46,170 C'est bien vrai ou faux, oui ou non. 64 00:02:46,170 --> 00:02:49,150 C'est une façon de répondre à une question. 65 00:02:49,150 --> 00:02:52,420 >> Et attendant, vous pouvez les utiliser booléenne expressions à l'intérieur de constructions 66 00:02:52,420 --> 00:02:54,720 comme ceux-ci, qui de bien sûr sont des conditions 67 00:02:54,720 --> 00:02:57,259 ou branches, proverbiale bifurcations. 68 00:02:57,259 --> 00:02:59,550 Et ils peuvent regarder non seulement comme ça, mais ils peuvent aussi 69 00:02:59,550 --> 00:03:02,080 ont elses qui leur sont associés. 70 00:03:02,080 --> 00:03:05,820 Et vous pouvez en fait avoir un à trois voies bifurcation de la route ou une fourche à quatre voies 71 00:03:05,820 --> 00:03:08,340 de la route, tout simplement par nidification de ces choses, 72 00:03:08,340 --> 00:03:10,510 comme vous le verrez dans Scratch si vous n'avez pas déjà. 73 00:03:10,510 --> 00:03:13,550 Et comme vous pouvez le faire en C ainsi. 74 00:03:13,550 --> 00:03:16,810 >> Prenons un autre généraliste regarder un alumnist, ainsi, qui 75 00:03:16,810 --> 00:03:21,490 pourraient présenter une approche différente à ces choses appelées conditions. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: Les gens font décisions chaque jour. 77 00:03:24,060 --> 00:03:27,530 Par exemple, avant de sortir vous sorte de faire une déclaration qui dit si, 78 00:03:27,530 --> 00:03:31,480 si il pleut alors je besoin d'obtenir ma veste. 79 00:03:31,480 --> 00:03:36,820 Et les ordinateurs sont incroyables une fois que vous décider ce genre de déclarations, 80 00:03:36,820 --> 00:03:42,280 qu'ils peuvent exécuter de façon fiable ces choses à une vitesse incroyable. 81 00:03:42,280 --> 00:03:48,240 Et si un programme d'ordinateur vraiment est un peu de mathématiques et d'autres 82 00:03:48,240 --> 00:03:53,050 si les états où la décision se fait. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. Malan: Alors que vous le savez, il était 84 00:03:55,020 --> 00:03:57,880 des gens comme Bill Gates, Paul Allen, et d'autres 85 00:03:57,880 --> 00:04:00,240 que véritablement lancé la dite ordinateur personnel 86 00:04:00,240 --> 00:04:01,990 révolution il ya quelques années. 87 00:04:01,990 --> 00:04:04,140 Je pensais, avant de nous plonger dans certains administrivia, 88 00:04:04,140 --> 00:04:09,920 nous aimerions raconter une histoire à partir de Albuquerque, Nouveau-Mexique musée d'histoire naturelle 89 00:04:09,920 --> 00:04:13,650 et de la science, où certains de Bill Gates et premières histoires de Paul Allen 90 00:04:13,650 --> 00:04:17,470 sont raconté comment nous avons maintenant les PC et les Mac et les plus actuelles. 91 00:04:17,470 --> 00:04:22,390 Pour cela, cependant, nous avons besoin de deux bénévoles qui ont de très bonnes voix de narration 92 00:04:22,390 --> 00:04:23,735 de lire un script à haute voix. 93 00:04:23,735 --> 00:04:25,530 >> Très bien, que diriez-vous de là-bas. 94 00:04:25,530 --> 00:04:26,120 Venez sur place. 95 00:04:26,120 --> 00:04:27,770 Et que diriez-vous devant ici. 96 00:04:27,770 --> 00:04:28,340 Venez faire un tour. 97 00:04:28,340 --> 00:04:29,600 Prenez vos places ici. 98 00:04:29,600 --> 00:04:32,444 Comme vous les gars viennent, un couple des annonces administratives. 99 00:04:32,444 --> 00:04:34,360 sectionnement, le processus de choix d'un article, 100 00:04:34,360 --> 00:04:36,068 débutera à l' Du mercredi au vendredi. 101 00:04:36,068 --> 00:04:38,400 Plus d'informations sur cette entrée Mercredi à la conférence. 102 00:04:38,400 --> 00:04:41,770 >> Sections super, quant à lui, sont quelque chose que nous vous proposons la semaine prochaine 103 00:04:41,770 --> 00:04:45,310 laquelle toute la classe est invitée de participer à assez grande échelle 104 00:04:45,310 --> 00:04:47,690 sections, l'une plus confortable, un moins à l'aise. 105 00:04:47,690 --> 00:04:51,340 Et nous allons annoncer les détails de cela, ainsi, plus tard cette semaine. 106 00:04:51,340 --> 00:04:53,310 >> sections Pendant ce temps, eux-mêmes, va commencer 107 00:04:53,310 --> 00:04:57,241 dans trois des cours la semaine, l'indice zéro, ce qui signifie que ce sont deux semaines 108 00:04:57,241 --> 00:04:57,740 out. 109 00:04:57,740 --> 00:04:58,450 Donc, ne vous inquiétez pas. 110 00:04:58,450 --> 00:05:01,014 Vous n'avez pas encore manqué tout le long de ces lignes. 111 00:05:01,014 --> 00:05:03,930 Pendant ce temps, dans l'intervalle, si vous Pour toute question sur le plan administratif, 112 00:05:03,930 --> 00:05:08,120 moi-même et Devon et Gabe courriel et Rob à cette adresse ici. 113 00:05:08,120 --> 00:05:10,320 >> Enfin, problème réglé 0 est, bien sûr, sur. 114 00:05:10,320 --> 00:05:12,320 Vous avez peut-être remarqué sur le site Web du cours. 115 00:05:12,320 --> 00:05:14,840 Il devrait vous fournir toutes les réponses aux questions 116 00:05:14,840 --> 00:05:18,250 vous pourriez avoir le long de la voie à mise en route de l'ensemble des problèmes. 117 00:05:18,250 --> 00:05:21,430 Mais si vous vous trouvez besoin d'un coup de main, 118 00:05:21,430 --> 00:05:25,020 par tous les moyens suivent les heures de bureau, Lundi, mardi, mercredi, jeudi 119 00:05:25,020 --> 00:05:27,290 de cette semaine dans la soirée dans quatre salles à manger. 120 00:05:27,290 --> 00:05:31,650 Voir cette URL là pour les détails où les heures de bureau sont. 121 00:05:31,650 --> 00:05:34,000 >> Maintenant, nous allons répondre à nos deux invités ici aujourd'hui. 122 00:05:34,000 --> 00:05:34,740 Quel est votre nom? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. Malan: Jay Paul, ravi de vous rencontrer. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. Malan: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. Malan: Hikari. 129 00:05:38,810 --> 00:05:39,790 Ravi de vous rencontrer ainsi. 130 00:05:39,790 --> 00:05:42,123 Jay Paul et Hikari ont en devant eux sur ces musiques 131 00:05:42,123 --> 00:05:45,100 se tient deux scripts que je imprimés ce matin du Nouveau-Mexique 132 00:05:45,100 --> 00:05:46,692 musée d'histoire naturelle et des sciences. 133 00:05:46,692 --> 00:05:48,400 Et ce que je pensais Je ferais sur le rétroprojecteur 134 00:05:48,400 --> 00:05:52,830 est accompagner votre récitation du script et cette histoire 135 00:05:52,830 --> 00:05:54,700 avec des images visuelles, pas de surprises. 136 00:05:54,700 --> 00:05:57,512 >> Et ce que j'ai fait à l'avance est prehighlight sur votre script 137 00:05:57,512 --> 00:05:59,470 ce que vous devez lire, et ce que vous devriez lire. 138 00:05:59,470 --> 00:06:00,920 Et nous allons essentiellement paragraphes juste suppléants. 139 00:06:00,920 --> 00:06:03,211 Donc, c'est un peu comme vous pourriez ont fait en classe d'anglais. 140 00:06:03,211 --> 00:06:06,875 C'est vraiment contraindre le public à croire en votre histoire ici. 141 00:06:06,875 --> 00:06:07,600 On y va? 142 00:06:07,600 --> 00:06:13,272 Donc l'histoire est ici, nous avons une BASIC, et il commence à Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: C'était l'hiver 1974, à Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 où les hivers peuvent être froids. 145 00:06:20,240 --> 00:06:22,800 Un barbu, aux cheveux longs College Dropout nommé 146 00:06:22,800 --> 00:06:27,280 Paul Allen a été trimer dans Harvard Square, absorbé dans ses pensées. 147 00:06:27,280 --> 00:06:31,050 Sa principale préoccupation en ces jours était de savoir comment obtenir son ami, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 de quitter l'école et aller en affaires avec lui. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Les deux hommes avaient déjà fait par un certain nombre d'entreprises commerciales 150 00:06:37,890 --> 00:06:40,850 ensemble, à partir de Lakeside école à Seattle, où 151 00:06:40,850 --> 00:06:45,220 ils ont été payées en temps d'ordinateur libre de tester un ordinateur PDP-10 à une heure locale 152 00:06:45,220 --> 00:06:46,580 partager entreprise. 153 00:06:46,580 --> 00:06:50,930 Le plan le plus récent a été de quitter école et former une société de logiciels. 154 00:06:50,930 --> 00:06:53,440 Allen avait quitté Washington Université de l'Etat. 155 00:06:53,440 --> 00:06:58,380 Mais à la dernière minute, Bill Gates décidé de s'en tenir à Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Ce jour-là, en traversant Harvard Square, Allen a repéré le Janvier, 157 00:07:02,080 --> 00:07:07,530 1975 question de Popular Electronics avec le titre d'arrêt de la terre, 158 00:07:07,530 --> 00:07:11,900 La trousse de premiers mini-ordinateurs au monde Rival modèles commerciaux. 159 00:07:11,900 --> 00:07:14,430 Sous le titre était une image d'une petite boîte 160 00:07:14,430 --> 00:07:16,160 ornée de lampes et les interrupteurs. 161 00:07:16,160 --> 00:07:19,770 Il a été appelé le MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 Et Allen savait que c'était ce que il avait cherché. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Jours de discussion a suivi. 164 00:07:26,350 --> 00:07:30,170 Allen et Gates a compris l' importance de l'Altair. 165 00:07:30,170 --> 00:07:32,480 Ils avaient parlé souvent sur les microprocesseurs 166 00:07:32,480 --> 00:07:35,250 et attendaient de voir ce serait fait avec eux. 167 00:07:35,250 --> 00:07:39,770 Il y avait un kit de mini-ordinateur sur le couvercle de l'électronique populaires. 168 00:07:39,770 --> 00:07:42,830 Il avait apparemment pas encore de logiciel. 169 00:07:42,830 --> 00:07:46,830 Ils ont imaginé une nation de programmeurs descendant sur MITS. 170 00:07:46,830 --> 00:07:49,590 Et ils ont donc appelé Ed Roberts, la tête de la société, 171 00:07:49,590 --> 00:07:53,330 prétendant avoir une version de la Langage de programmation BASIC presque prêt 172 00:07:53,330 --> 00:07:54,710 pour l'Altair. 173 00:07:54,710 --> 00:07:55,570 Ils n'ont pas. 174 00:07:55,570 --> 00:07:58,910 Et Roberts aurait dû savoir qu'ils n'ont pas. 175 00:07:58,910 --> 00:08:03,170 Il devenait 10 appels par jour de des gens qui avaient un BASIC presque prêt. 176 00:08:03,170 --> 00:08:05,570 Et sa réponse boursier était: «La première personne 177 00:08:05,570 --> 00:08:11,090 qui se présente avec un travail BASIC obtient le contrat ". 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates et Allen n'avait jamais vu un Altair. 179 00:08:13,910 --> 00:08:17,600 Ils avaient même jamais vu la Intel 8080 microprocesseur 180 00:08:17,600 --> 00:08:19,060 au cœur de l'Altair. 181 00:08:19,060 --> 00:08:21,470 Mais quelques années plus tôt Allen avait écrit un programme 182 00:08:21,470 --> 00:08:25,220 sur un ordinateur central qui émulé le fonctionnement d'un précédent Intel 183 00:08:25,220 --> 00:08:26,217 microprocesseur. 184 00:08:26,217 --> 00:08:28,300 Et cette fois-ci ils ferait la même chose. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Avec un processeur Intel 8080 manuel à ses côtés, 187 00:08:34,380 --> 00:08:37,770 Allen s'assit à une Ordinateur Harvard PDP-10 188 00:08:37,770 --> 00:08:42,010 et écrit l'émulateur et le logiciel outils nécessaires pour faire de la programmation. 189 00:08:42,010 --> 00:08:45,820 Pendant ce temps Gates a cessé d'aller à des classes et se consacre 190 00:08:45,820 --> 00:08:48,120 à la conception de la BASE, en utilisant tous les trucs 191 00:08:48,120 --> 00:08:53,130 il a su obtenir la taille vers le bas au-dessous de 4 kilo-octets. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out à Albuquerque, Ed Roberts a reçu un appel de portes 193 00:08:55,870 --> 00:08:59,754 en demandant des détails sur la façon dont la Altair manipulé routines spécifiques. 194 00:08:59,754 --> 00:09:01,170 Personne n'avait jamais posé cette question. 195 00:09:01,170 --> 00:09:02,670 Et Roberts a commencé à s'intéresser. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Avec le développement outils et la conception prête, 198 00:09:07,970 --> 00:09:10,780 Gates et Allen écrit le code sur le PDP-10, 199 00:09:10,780 --> 00:09:16,060 l'enrôlement d'un autre étudiant de Harvard, Monte Davidoff, écrire routines mathématiques. 200 00:09:16,060 --> 00:09:19,450 Après une dernière nuit de programmation, Allen a obtenu sur un plan 201 00:09:19,450 --> 00:09:22,970 de livrer leur BASIC à MITS. 202 00:09:22,970 --> 00:09:25,800 Il a passé le voyage en avion à s'inquiéter. 203 00:09:25,800 --> 00:09:28,490 Et de retour à Cambridge Gates inquiétant. 204 00:09:28,490 --> 00:09:32,100 Ils ont testé leur BASIC et il avait travaillé sur l'émulateur. 205 00:09:32,100 --> 00:09:35,444 Mais que faire si l'émulateur a eu tort? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Comme le plan approché Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen s'est rendu compte que leur BASIC, maintenant parfaitement contenue 208 00:09:40,070 --> 00:09:42,460 sur un petit rouleau d' bande de papier perforée, serait 209 00:09:42,460 --> 00:09:44,970 inutile sans un séparé programme, appelé un chargeur, qui 210 00:09:44,970 --> 00:09:47,550 dirait l'Altair comment pour lire la bande de papier être 211 00:09:47,550 --> 00:09:49,620 introduit dans le téléscripteur. 212 00:09:49,620 --> 00:09:52,970 Il sortit son portable et rapidement griffonné un programme de chargement 213 00:09:52,970 --> 00:09:56,819 en langage d'assemblage, puis manuellement traduit que dans les 1 et les 0 214 00:09:56,819 --> 00:09:57,985 Altair comprendrait. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen attendait un propre petit, société, high-tech 217 00:10:03,830 --> 00:10:05,470 dirigées par des hommes en costumes d'affaires. 218 00:10:05,470 --> 00:10:09,210 Donc, il a été surpris quand Roberts a rencontré lui à l'aéroport qui ressemble à un ranch 219 00:10:09,210 --> 00:10:10,270 main. 220 00:10:10,270 --> 00:10:12,070 Roberts a également été surpris. 221 00:10:12,070 --> 00:10:16,340 Quand il a abandonné la Harvard programmeur à un hôtel de luxe, 222 00:10:16,340 --> 00:10:20,790 Allen a dû avouer que il ne pouvait pas se permettre de la salle. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, lui-même, était situé dans un centre commercial poussiéreux. 224 00:10:24,510 --> 00:10:27,040 A l'intérieur sur une encombré atelier était un Altair 225 00:10:27,040 --> 00:10:30,390 chargé avec 5 kilo-octets de mémoire et relié par un câble 226 00:10:30,390 --> 00:10:32,030 à un téléscripteur. 227 00:10:32,030 --> 00:10:37,200 Roberts et ingénieur en chef, Bill Yates, attendu dans l'expectative 228 00:10:37,200 --> 00:10:40,660 comme Allen basculé son chargeur programme dans l'Altair. 229 00:10:40,660 --> 00:10:44,980 Le téléscripteur a commencé soufflant comme il a tiré la bande de papier dans le lecteur de bande. 230 00:10:44,980 --> 00:10:47,215 Il a fallu peut-être 15 minutes à charger le programme. 231 00:10:47,215 --> 00:10:52,110 Ensuite, le télétype brusquement imprimé un invite de mémoire, puis une invite prêt, 232 00:10:52,110 --> 00:10:55,340 et Allen a commencé à taper commande un peu test. 233 00:10:55,340 --> 00:10:57,400 Au grand étonnement de tout le monde, le logiciel a travaillé. 234 00:10:57,400 --> 00:10:58,525 Il y avait des insectes, bien sûr. 235 00:10:58,525 --> 00:11:02,070 Mais l'essentiel était qu'il travaillait. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Plus tard, sur le chemin d'une $ 3,00 déjeuner à Pancho, une guêpe a volé 237 00:11:06,570 --> 00:11:10,470 dans la fenêtre de la tête de lecture camion et piqué Allen sur le bras. 238 00:11:10,470 --> 00:11:13,070 Mais à ce moment rien pourrait gâcher l'ambiance. 239 00:11:13,070 --> 00:11:17,210 L'Altair a maintenant son BASIC, le premier logiciel commercial pour une maison 240 00:11:17,210 --> 00:11:23,260 ordinateur, faite par Paul Allen et Bill Gates, faisant affaires sous Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. Malan: Beaucoup grâce à nos deux lecteurs. 242 00:11:25,336 --> 00:11:30,690 >> [Applaudissements] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. Malan: Maintenant vous avez le choix, 244 00:11:32,520 --> 00:11:35,880 avant de partir, d'un brillant ou une lueur dans le dark-- oh, 245 00:11:35,880 --> 00:11:40,810 attendez une seconde, wait-- brillant et une lueur dans l'obscurité éléphant 246 00:11:40,810 --> 00:11:42,534 de la propre Cheng Gong CS50. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, je vous remercie. 248 00:11:43,450 --> 00:11:45,324 DAVID J. Malan: Tous Très bien, merci beaucoup. 249 00:11:45,324 --> 00:11:49,855 [Applaudissements] 250 00:11:49,855 --> 00:11:51,105 DAVID J. Malan: histoire tellement vrai. 251 00:11:51,105 --> 00:11:54,380 C'est-à-dire que tous ces machines et la facilité avec laquelle on 252 00:11:54,380 --> 00:11:56,270 les utiliser maintenant et prendre pour acquis, vraiment 253 00:11:56,270 --> 00:12:00,070 commencé ici, à quelques pas seulement de ce théâtre actuel. 254 00:12:00,070 --> 00:12:03,930 Et aujourd'hui, si vous n'avez pas été, c'est Maxwell Dworkin, l'ordinateur 255 00:12:03,930 --> 00:12:05,810 pavillon des sciences, aussi dans le coin. 256 00:12:05,810 --> 00:12:09,760 Et au deuxième étage de cette bâtiment fait pendre trois pages 257 00:12:09,760 --> 00:12:12,740 à partir du code source d'origine que Bill Gates et Paul Allen écrit. 258 00:12:12,740 --> 00:12:14,770 En fait, si l'utilisation que vous zoomez en vous pouvez voir non seulement 259 00:12:14,770 --> 00:12:17,350 leurs noms dans l' type d'original, mais aussi 260 00:12:17,350 --> 00:12:22,100 leurs signatures qu'ils ornaient une il ya quelques années lors de leur dernière visite. 261 00:12:22,100 --> 00:12:25,800 >> Mais ce qui était particulièrement convaincante à ce sujet, c'est ce qu'ils avaient prévu de faire 262 00:12:25,800 --> 00:12:29,760 était d'écrire un programme qui serait permettre à d'autres gens à écrire 263 00:12:29,760 --> 00:12:30,950 leurs propres programmes. 264 00:12:30,950 --> 00:12:34,280 A l'époque il y avait tout de cette machine Altair faite par MITS. 265 00:12:34,280 --> 00:12:40,020 Et tout ce qu'ils avaient besoin, c'était d'une certaine façon de le rendant facile pour les amateurs et les gens 266 00:12:40,020 --> 00:12:45,300 comme nous dans cette salle pour effectivement programme que sans nécessairement comprendre 267 00:12:45,300 --> 00:12:49,060 Code de l'Assemblée, ou à la machine code, ou à Dieu ne plaise, 0 et de 1. 268 00:12:49,060 --> 00:12:51,190 Nous programmeurs, comme ceux qui dans cette salle, nous 269 00:12:51,190 --> 00:12:54,070 veulent être en mesure d'exprimer nous beaucoup plus comme pseudo-code 270 00:12:54,070 --> 00:12:57,330 même si c'est un peu plus lentes pointilleux que nous avons parlé la semaine dernière. 271 00:12:57,330 --> 00:13:00,970 Nous ne voulons pas d'écrire du code comme celui-ci, qui Paul Allen et Bill Gates ont fait. 272 00:13:00,970 --> 00:13:04,850 Nous, au contraire, veut écrire du code qui regarde un peu plus convivial. 273 00:13:04,850 --> 00:13:07,150 >> Maintenant, c'est une langue connue comme BASIC. 274 00:13:07,150 --> 00:13:11,497 Et les numéros de ligne, il ya ce que vous utiliser simplement numéroter les lignes de code 275 00:13:11,497 --> 00:13:12,330 que vous écrivez. 276 00:13:12,330 --> 00:13:14,038 Nous n'avons même pas à faire ces jours-ci. 277 00:13:14,038 --> 00:13:16,060 Mais vous pouvez voir ici comment PRINT "Bonjour le monde" 278 00:13:16,060 --> 00:13:18,660 serait en effet sans doute imprimer exactement cela. 279 00:13:18,660 --> 00:13:22,710 Et si ce projet de loi et Paul ont été habiliter les gens à écrire du code comme ceci 280 00:13:22,710 --> 00:13:27,240 au lieu de-- si vous jetez un oeil à l' informatique wall-- code comme ceci. 281 00:13:27,240 --> 00:13:29,290 >> En fait, CS50 récemment eu l'occasion 282 00:13:29,290 --> 00:13:32,540 de s'asseoir avec le professeur Harry Lewis dans le département d'informatique, qui 283 00:13:32,540 --> 00:13:34,640 effectivement enseigné le projet de loi Portes il ya quelques années, 284 00:13:34,640 --> 00:13:38,460 et est debout, ici ces trois pages d'extraits. 285 00:13:38,460 --> 00:13:39,560 Jetons un coup d'oeil. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Qu'est-ce que vous avez ici est une inscription d'une pièce au début de logiciels 287 00:13:45,520 --> 00:13:50,240 écrit par Bill Gates et Paul Allen, fondateurs de Microsoft. 288 00:13:50,240 --> 00:13:52,570 Ainsi, le code est intéressant pour deux raisons. 289 00:13:52,570 --> 00:13:55,480 Tout d'abord, il est devenu Le premier produit de Microsoft, 290 00:13:55,480 --> 00:14:01,810 qui était un interprète pour le langage de programmation BASIC. 291 00:14:01,810 --> 00:14:04,940 Et d'autre part, ce n'était l'une des premières tentatives 292 00:14:04,940 --> 00:14:10,580 pour créer un interprète si ordinaire les gens pourraient utiliser les ordinateurs personnels. 293 00:14:10,580 --> 00:14:12,670 >> Donc, Bill Gates était un premier cycle à Harvard. 294 00:14:12,670 --> 00:14:14,820 J'ai commencé à enseigner à Harvard en 1974. 295 00:14:14,820 --> 00:14:16,560 Cela a été fait en 1975. 296 00:14:16,560 --> 00:14:20,180 Alors qu'il était au début de sa carrière et au début de ma carrière. 297 00:14:20,180 --> 00:14:23,790 En fait, j'ai appris le projet de loi en un cours à cette époque. 298 00:14:23,790 --> 00:14:27,130 Paul Allen n'était pas un Étudiant de Harvard, mais il 299 00:14:27,130 --> 00:14:31,020 avait été une école secondaire camarade de classe de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Si vous venez et regardez à l'inscription, vous aurez 301 00:14:33,740 --> 00:14:36,230 effectivement trouver un troisième nom, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 qui était le camarade de classe de Bill Gates ici à Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, voici donc une commentaire intéressant ici. 304 00:14:41,340 --> 00:14:47,150 Il dit: «En 4K peut supprimer la racine carrée mais pour les boucles doivent encore travailler. " 305 00:14:47,150 --> 00:14:53,080 OK, donc ce que cela signifie, c'est qu'il ya avait deux façons de compiler ce programme. 306 00:14:53,080 --> 00:14:57,860 Le premier consistait à exécuter sur une version de cet ordinateur Altair 307 00:14:57,860 --> 00:15:04,310 que seulement eu 4K mots de la mémoire, 4096 mots de mémoire. 308 00:15:04,310 --> 00:15:07,050 Mais la grande version avait 8K. 309 00:15:07,050 --> 00:15:09,770 Et qu'est-ce que cela dit est que dans la version 4K 310 00:15:09,770 --> 00:15:12,770 vous deviez supprimer certains Code pour le rendre apte. 311 00:15:12,770 --> 00:15:14,790 Et l'une des choses qui serait supprimé 312 00:15:14,790 --> 00:15:16,290 serait la racine carrée de routine. 313 00:15:16,290 --> 00:15:20,360 Mais apparemment, l' pour les boucles devraient encore 314 00:15:20,360 --> 00:15:26,392 travailler même lorsque vous compilez le bas pour juste la version 4K de l'ordinateur. 315 00:15:26,392 --> 00:15:29,350 DAVID J. Malan: Donc, l'un des thèmes, comme nous le verrons en informatique, 316 00:15:29,350 --> 00:15:31,430 C'est cette notion de stratification et de l'abstraction, 317 00:15:31,430 --> 00:15:34,670 et vraiment debout sur les épaules des gens qui sont venus avant nous, et non pas 318 00:15:34,670 --> 00:15:37,890 contrairement à certains de Bill Gates et Paul Allen récit ici. 319 00:15:37,890 --> 00:15:40,080 Et ce que cela signifie est aujourd'hui que nous pouvons prendre pour 320 00:15:40,080 --> 00:15:43,490 acquis que les choses sont en fait plus facile pour nous d'écrire du code. 321 00:15:43,490 --> 00:15:47,170 En effet le code, comme nous l'avons dit vendredi, est techniquement plus connue sous le nom de code source. 322 00:15:47,170 --> 00:15:52,210 Et c'est ce anglais comme syntaxe c'est plus propre et plus bien définie 323 00:15:52,210 --> 00:15:55,480 que quelque chose comme pseudo-code, pour lesquels il n'existe pas de définition officielle. 324 00:15:55,480 --> 00:15:58,320 >> Et aujourd'hui, ce que nous allons de se concentrer sur le code source 325 00:15:58,320 --> 00:16:01,010 qui ressemble à ce qui Certes, à première vue 326 00:16:01,010 --> 00:16:02,690 semble tout à fait énigmatique. 327 00:16:02,690 --> 00:16:08,540 Et franchement, c'est beaucoup plus esthétique complexe que le programme sous-jacent est. 328 00:16:08,540 --> 00:16:13,300 Tout ce programme fait, rappel, est ce que disions-nous? 329 00:16:13,300 --> 00:16:14,990 Il affiche juste "Bonjour tout le monde." 330 00:16:14,990 --> 00:16:19,600 Et pourtant, regardez toutes les choses que nous devons à enrouler autour de cette phrase très simple. 331 00:16:19,600 --> 00:16:21,750 Mais avant toute de ces lignes et plus 332 00:16:21,750 --> 00:16:24,800 fera beaucoup mieux de sens pour vous. 333 00:16:24,800 --> 00:16:26,940 >> Et le débit est le suivant. 334 00:16:26,940 --> 00:16:31,220 Ce que nous devons à notre disposition est de prendre le code, comme la source 335 00:16:31,220 --> 00:16:32,340 code que nous venons de voir. 336 00:16:32,340 --> 00:16:35,060 Et nous avons besoin d'un nouveau programme le lancer à travers. 337 00:16:35,060 --> 00:16:39,130 Nous avons besoin d'algorithmes qui peuvent convertir le code source, comme ça, 338 00:16:39,130 --> 00:16:41,932 en code objet, 0 et de 1. 339 00:16:41,932 --> 00:16:43,890 En d'autres termes, ce nous allons apprendre aujourd'hui 340 00:16:43,890 --> 00:16:46,620 est de savoir comment le faire, écrivez code source en haut, 341 00:16:46,620 --> 00:16:49,930 transmettre comme entrée d'un particulier programme connu comme un compilateur, 342 00:16:49,930 --> 00:16:52,140 et nous allons produire le code objet. 343 00:16:52,140 --> 00:16:54,600 Qui est juste une façon élégante de dire que nous allons prendre quelque chose 344 00:16:54,600 --> 00:16:58,350 qui ressemble à cela, passer dans un programme appelé compilateur, 345 00:16:58,350 --> 00:17:01,210 production de code objet qui ressemble à ceci. 346 00:17:01,210 --> 00:17:04,720 >> Donc, ce sont littéralement les schémas de 0 et de 1 347 00:17:04,720 --> 00:17:08,550 qui sont compris par un Ordinateur Intel ces jours, 348 00:17:08,550 --> 00:17:12,480 que si elles sont interprétées par l'unité centrale, le cerveau à l'intérieur d'un ordinateur, 349 00:17:12,480 --> 00:17:16,130 littéralement imprimer, tout simplement, "Bonjour tout le monde." 350 00:17:16,130 --> 00:17:19,670 Maintenant, il ya beaucoup plus de 0 et de 1 que vous serait espoir pourrait être nécessaire pour cela. 351 00:17:19,670 --> 00:17:22,520 Mais c'est parce que nous construisons sur une bonne partie de la complexité 352 00:17:22,520 --> 00:17:24,270 que nous pouvons désormais prendre pour acquis. 353 00:17:24,270 --> 00:17:27,869 En d'autres termes, beaucoup de gens intelligents nous ont donné beaucoup d'outils cool 354 00:17:27,869 --> 00:17:32,480 et un logiciel puissant qui nous peut maintenant faire des projets de la nôtre. 355 00:17:32,480 --> 00:17:33,400 >> Donc, nous allons commencer. 356 00:17:33,400 --> 00:17:36,640 Alors que vendredi dernier, et pour ensemble de problèmes 0 cette semaine, 357 00:17:36,640 --> 00:17:39,000 vous jouerez dans un monde qui ressemble à ceci. 358 00:17:39,000 --> 00:17:42,180 A partir d'aujourd'hui et pour problème Set 1 la semaine prochaine, le code 359 00:17:42,180 --> 00:17:45,410 va regarder un peu plus cryptique, mais est fonctionnellement 360 00:17:45,410 --> 00:17:46,940 va être la même. 361 00:17:46,940 --> 00:17:50,770 Alors avis, est supérieure aux rayures, fond est C. Franchement Scratch 362 00:17:50,770 --> 00:17:52,780 est beaucoup plus facile à utiliser convivial et accessible. 363 00:17:52,780 --> 00:17:56,890 Mais si l'on compare maintenant visuellement supérieure à bas, il n'y a sorte de un pour un 364 00:17:56,890 --> 00:17:59,690 la correspondance entre l' des pièces de puzzle et la langue 365 00:17:59,690 --> 00:18:00,870 nous sommes sur le point de jouer avec. 366 00:18:00,870 --> 00:18:04,420 En particulier, dire, la bleu pièce de puzzle en haut, 367 00:18:04,420 --> 00:18:08,370 est apparemment équivalent à ce mot-clé ou une phrase particulière dans cette langue 368 00:18:08,370 --> 00:18:09,062 appelé C? 369 00:18:09,062 --> 00:18:09,770 PUBLIC: Printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. Malan: Printf. 371 00:18:10,728 --> 00:18:12,140 Cela signifie que l'impression formatée. 372 00:18:12,140 --> 00:18:15,240 Et c'est juste une fantaisie façon de dire printf en C 373 00:18:15,240 --> 00:18:18,615 va être une déclaration ou d'une fonction qui imprime quelque chose à l'écran. 374 00:18:18,615 --> 00:18:19,990 Que faut-il imprimer à l'écran? 375 00:18:19,990 --> 00:18:23,627 Quoi que vous disiez à l'intérieur des citations, à l'intérieur de parenthèses. 376 00:18:23,627 --> 00:18:25,460 Encore une fois, il est vrai, il ya beaucoup de choses 377 00:18:25,460 --> 00:18:27,990 que vous devez garder à l'esprit, parenthèses, guillemets, des points-virgules, 378 00:18:27,990 --> 00:18:28,656 et tout cela. 379 00:18:28,656 --> 00:18:30,600 Mais tout cela est une sorte de la question. 380 00:18:30,600 --> 00:18:33,660 Les plats à emporter intéressante pour l'instant est ce que le bloc de voix au Scratch 381 00:18:33,660 --> 00:18:37,520 est à peu près équivalent à printf en C 382 00:18:37,520 --> 00:18:41,390 >> Pendant ce temps, la pièce du puzzle jaune en haut, quand le drapeau vert cliqué, 383 00:18:41,390 --> 00:18:44,736 est probablement équivalent à ce mot-clé ici? 384 00:18:44,736 --> 00:18:45,360 PUBLIC: Main. 385 00:18:45,360 --> 00:18:46,359 DAVID J. Malan: Donc principale. 386 00:18:46,359 --> 00:18:47,410 Peut-être int, peut-être vide. 387 00:18:47,410 --> 00:18:51,280 Mais genre principal de sons comme il est important, et en effet il est. 388 00:18:51,280 --> 00:18:54,080 Ainsi, lorsque vous cliquez sur le drapeau vert est, encore une fois, le morceau de puzzle 389 00:18:54,080 --> 00:18:56,390 qui démarre une ensemble du programme de Scratch. 390 00:18:56,390 --> 00:19:02,140 Mais nous allons commencer dès maintenant appeler que la principale, cette fonction connue sous le nom principal. 391 00:19:02,140 --> 00:19:06,410 >> Maintenant, en attendant nous allons généraliser ce de la manière suivante. 392 00:19:06,410 --> 00:19:08,780 Nous pourrions appeler dire une fonction. 393 00:19:08,780 --> 00:19:10,580 Et il pourrait ressembler spécifiquement comme ça. 394 00:19:10,580 --> 00:19:11,770 Eh bien, qu'en est-il des boucles? 395 00:19:11,770 --> 00:19:16,540 Si nous voulons lancer la conversion ou traduire plus de Scratch à C, 396 00:19:16,540 --> 00:19:19,400 cette chose ici apparemment juste dit: «Bonjour tout le monde" pour toujours. 397 00:19:19,400 --> 00:19:23,060 Donc, si vous associez ces son avec un chat dans Scratch, 398 00:19:23,060 --> 00:19:26,560 il va tout simplement continuer à dire dans une sorte de bulle de bande dessinée, 399 00:19:26,560 --> 00:19:29,922 "Bonjour tout le monde, Bonjour tout le monde, bonjour monde ", ad nauseam, toujours. 400 00:19:29,922 --> 00:19:33,130 Si nous voulons faire quelque chose de similaire dans C, il va chercher un peu cryptique. 401 00:19:33,130 --> 00:19:35,463 Mais nous pouvons obtenir le même résultats, comme nous le verrons par la suite 402 00:19:35,463 --> 00:19:36,861 savoir, avec cette syntaxe. 403 00:19:36,861 --> 00:19:39,360 Je vais utiliser printf nouveau, parce que, à la fin de la journée 404 00:19:39,360 --> 00:19:42,040 Je veux imprimer "Bonjour tout le monde." 405 00:19:42,040 --> 00:19:45,610 Et je suis apparemment l'aide d'un mot-clé qui n'est pas pour toujours. 406 00:19:45,610 --> 00:19:47,320 C'est plutôt le mot tout. 407 00:19:47,320 --> 00:19:49,650 Mais juste sémantiquement dans Anglais, tout en sorte de 408 00:19:49,650 --> 00:19:52,120 suggère une sorte de boucle ou cycle. 409 00:19:52,120 --> 00:19:55,070 >> Donc, ce qui arrive à être le mot-clé que C utilise. 410 00:19:55,070 --> 00:20:00,700 Et tandis que vrai, pourquoi alors moyenne réelle efficacité pour toujours? 411 00:20:00,700 --> 00:20:04,240 Eh bien, alors, comme nous allons bientôt apprécier d'autant plus, 412 00:20:04,240 --> 00:20:08,140 a cette parenthèse à côté de lui où vous pouvez mettre une expression booléenne. 413 00:20:08,140 --> 00:20:11,360 Et tant que expression est vraie, ce code, 414 00:20:11,360 --> 00:20:14,750 telle qu'indiquée entre les deux accolades comme nous les appelons, 415 00:20:14,750 --> 00:20:16,880 va juste continuer à courir encore et encore. 416 00:20:16,880 --> 00:20:18,410 >> Tant il est vrai vrai. 417 00:20:18,410 --> 00:20:20,900 Ainsi, alors que de véritables moyens il suffit de faire ce pour toujours. 418 00:20:20,900 --> 00:20:23,480 C'est presque un stupide construire de vous exprimer. 419 00:20:23,480 --> 00:20:26,590 Mais il n'y avait pas toujours mot-clé dans C. On a alors. 420 00:20:26,590 --> 00:20:29,390 Et il y avait un très simple Expression booléenne comme vrai. 421 00:20:29,390 --> 00:20:32,210 Et cela, nous le verrons, permet d'obtenir le même résultat. 422 00:20:32,210 --> 00:20:33,890 >> Sinon, comment pourriez-vous mettre en œuvre une boucle? 423 00:20:33,890 --> 00:20:36,980 Eh bien, dans Scratch vous pourriez coder en dur un certain nombre 424 00:20:36,980 --> 00:20:39,430 d'itérations de la boucle ici. 425 00:20:39,430 --> 00:20:43,210 Et c'est exactement ce que nous pourrait faire dans cette version de C, 426 00:20:43,210 --> 00:20:46,140 lequel nous avons un soi-disant pour la boucle. 427 00:20:46,140 --> 00:20:49,850 Et la boucle ici va à parcourir, un peu énigmatique, 428 00:20:49,850 --> 00:20:54,100 à partir de la valeur 0 sur place mais à moins de 10. 429 00:20:54,100 --> 00:20:55,955 >> Maintenant variables dans Scratch. 430 00:20:55,955 --> 00:20:57,830 Vous pourriez ne pas avoir eu occasion d'utiliser ces. 431 00:20:57,830 --> 00:21:02,516 Mais quel est le point, en général, d'une variable avons-nous dit la semaine dernière? 432 00:21:02,516 --> 00:21:03,015 Qu'est ce que c'est? 433 00:21:03,015 --> 00:21:03,780 >> PUBLIC: Points. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. Malan: Pour pointer? 435 00:21:05,200 --> 00:21:05,700 Oh, les points. 436 00:21:05,700 --> 00:21:07,620 OK, le suivi de points, par exemple, dans le stade. 437 00:21:07,620 --> 00:21:09,510 Ou plus généralement faire ce avec la variable? 438 00:21:09,510 --> 00:21:10,450 Quelle est l'utilité d'entre eux? 439 00:21:10,450 --> 00:21:10,825 >> PUBLIC: Mémoire. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. Malan: Ouais, donc la mémoire. 441 00:21:11,750 --> 00:21:13,000 C'est pour stocker quelque chose. 442 00:21:13,000 --> 00:21:17,336 Et le genre de bête Je visuel utilisé dernière fois, c'était comme ce bol en verre. 443 00:21:17,336 --> 00:21:19,710 Et si nous voulons stocker quelque chose à l'intérieur d'une variable, 444 00:21:19,710 --> 00:21:21,918 par exemple en ce moment la La valeur est de six, car il 445 00:21:21,918 --> 00:21:23,450 six balles de ping pong dans ici. 446 00:21:23,450 --> 00:21:26,158 C'est juste une sorte de stockage Récipient sous le capot que 447 00:21:26,158 --> 00:21:30,030 est mis en œuvre avec les bits, 0 et de 1, Cependant un ordinateur arrive à le faire. 448 00:21:30,030 --> 00:21:32,900 >> Ainsi, dans Scratch, si nous veulent avoir une variable, 449 00:21:32,900 --> 00:21:34,840 nous pouvons utiliser un bloc orange comme ça. 450 00:21:34,840 --> 00:21:37,050 Nous appellerons ce compteur dans ce cas particulier. 451 00:21:37,050 --> 00:21:38,890 Je initialisé à 0. 452 00:21:38,890 --> 00:21:41,080 Et ce que je fais alors? 453 00:21:41,080 --> 00:21:44,780 Toujours, dire contre qui, si vous jouez avec celle de Scratch, 454 00:21:44,780 --> 00:21:45,780 vous ne verrez Scratch. 455 00:21:45,780 --> 00:21:49,920 Le chat ou tout autre costume que vous mettez sur lui indiquera le numéro en question. 456 00:21:49,920 --> 00:21:52,840 >> Compteur de variations de 1 est comme par incrément de 1. 457 00:21:52,840 --> 00:21:56,580 Et si cela va compter de ce alors? 458 00:21:56,580 --> 00:21:59,114 De 0 jusqu'à l'infini, ou jusqu'à ce que les pauses à gratter, 459 00:21:59,114 --> 00:22:01,030 ou jusqu'à ce que vous sorte de perdre de l'intérêt à regarder 460 00:22:01,030 --> 00:22:02,650 à quelle hauteur il peut réellement compter. 461 00:22:02,650 --> 00:22:04,800 >> Alors, comment pouvons-nous convertir en C? 462 00:22:04,800 --> 00:22:06,480 Il va chercher un peu cryptique. 463 00:22:06,480 --> 00:22:08,896 Mais encore une fois, si vous regardez à chaque de ces lignes individuellement 464 00:22:08,896 --> 00:22:10,410 ils genre de gamme en général. 465 00:22:10,410 --> 00:22:13,526 Int Donc, apparemment, va avoir une signification spéciale dans C. 466 00:22:13,526 --> 00:22:14,400 Nous allons voir ça. 467 00:22:14,400 --> 00:22:15,810 Soit dit en passant, cela signifie entier. 468 00:22:15,810 --> 00:22:16,990 Donc, cela signifie juste nombre. 469 00:22:16,990 --> 00:22:18,920 Voilà le type de bol en verre que je veux, un 470 00:22:18,920 --> 00:22:21,120 qui peut stocker des nombres, pas ping pong boules. 471 00:22:21,120 --> 00:22:25,520 Et je vais utiliser le signe égal il lui attribuer une valeur de 0. 472 00:22:25,520 --> 00:22:29,440 Donc, c'est tout à fait comme ensemble compteur à 0, mais en C. 473 00:22:29,440 --> 00:22:32,840 >> Pendant ce temps, tout en vrai, c'était équivalent, bien sûr, pour toujours, 474 00:22:32,840 --> 00:22:35,980 même si c'est un peu cryptique, puis à l'intérieur des accolades. 475 00:22:35,980 --> 00:22:39,188 Et vous pouvez penser de ces accolades, laquelle vous pouvez taper sur votre clavier, 476 00:22:39,188 --> 00:22:43,110 comme étant réellement comme la courbure dans ces blocs de boucle jaunes dans Scratch. 477 00:22:43,110 --> 00:22:45,700 Elle englobe plusieurs lignes de code. 478 00:22:45,700 --> 00:22:48,120 >> Printf est d'obtenir un peu effrayant parce que je 479 00:22:48,120 --> 00:22:51,120 voir non seulement des citations entre parenthèses. 480 00:22:51,120 --> 00:22:55,160 Mais quoi de neuf syntaxiquement dans cet exemple? 481 00:22:55,160 --> 00:22:57,300 Il ya un pour cent d. 482 00:22:57,300 --> 00:22:58,551 Et puis oblique n est là. 483 00:22:58,551 --> 00:23:00,883 Nous n'avons que avant, même si je n'en ai pas parlé. 484 00:23:00,883 --> 00:23:01,886 Ensuite, il ya une virgule. 485 00:23:01,886 --> 00:23:03,010 Et puis il ya un compteur. 486 00:23:03,010 --> 00:23:05,010 >> Mais nous verrons en seulement instant que ce n'est que 487 00:23:05,010 --> 00:23:09,080 un moyen standard de dire une impression "Nombre décimal," entre guillemets, 488 00:23:09,080 --> 00:23:10,500 un certain nombre décimal. 489 00:23:10,500 --> 00:23:13,370 Mais je vais vous le dirai plus tard ce que nombre décimal est. 490 00:23:13,370 --> 00:23:16,835 Donc, le fait qu'il ya une virgule dans cette ligne dicton printf, 491 00:23:16,835 --> 00:23:18,710 signifie aller de l'avant et d'impression un certain nombre décimal. 492 00:23:18,710 --> 00:23:23,110 Oh, et en passant, le nombre est quelle que soit la valeur de cette variable est. 493 00:23:23,110 --> 00:23:25,880 Et donc pour le rendre plus clair, nous verrons un exemple 494 00:23:25,880 --> 00:23:30,930 avant longtemps portant exactement sur printf dans le cadre de programmes immobiliers C. 495 00:23:30,930 --> 00:23:33,472 >> Maintenant, il suffit de conclure un certain de ces constructions. 496 00:23:33,472 --> 00:23:36,680 Expressions booléennes, vous pourriez ne pas avoir l'occasion de les utiliser dans votre programme 497 00:23:36,680 --> 00:23:39,450 mais vous pourriez très bien, notamment si l'on utilise des conditions. 498 00:23:39,450 --> 00:23:43,460 De sorte que ces deux exemples de Grattez dire si x est inférieur à y, 499 00:23:43,460 --> 00:23:48,770 ou si x est inférieur à y et y est inférieur à z, comment pourrions-nous traduire cela? 500 00:23:48,770 --> 00:23:50,810 >> Eh bien, en C, il est juste va ressembler à ceci. 501 00:23:50,810 --> 00:23:55,300 Un peu cryptiques, plus parenthèses, certains esperluette étranges, mais fondamentalement 502 00:23:55,300 --> 00:23:59,160 les idées sont aussi simples qu'elles sont dans le monde de la pièce de puzzle. 503 00:23:59,160 --> 00:24:02,690 Nous sommes tout simplement de vérifier si quelque chose est inférieure à autre chose. 504 00:24:02,690 --> 00:24:03,910 >> Que diriez-vous les conditions? 505 00:24:03,910 --> 00:24:09,710 En un mot en anglais, ce qui fait de cette morceau de code à gratter ne diriez-vous? 506 00:24:09,710 --> 00:24:11,050 >> PUBLIC: Compare deux nombres. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. Malan: Compare deux nombre, et si x est inférieur à y 508 00:24:13,760 --> 00:24:14,860 elle en dit autant. 509 00:24:14,860 --> 00:24:18,080 Si x est supérieur à y elle en dit autant, sinon 510 00:24:18,080 --> 00:24:20,740 si x est égal à y elle en dit autant. 511 00:24:20,740 --> 00:24:22,180 Maintenant, où x et y ne viennent-ils? 512 00:24:22,180 --> 00:24:22,680 Qui sait. 513 00:24:22,680 --> 00:24:25,380 Ce morceau de Scratch code est hors contexte. 514 00:24:25,380 --> 00:24:29,050 Mais ce que nous voulons faire maintenant est de traduire ce pour un instant pour voir. 515 00:24:29,050 --> 00:24:31,660 >> Donc, comme vous obtenez à l'aise cette semaine ensemble de problèmes 516 00:24:31,660 --> 00:24:34,190 0 jouer dans ce monde sur la gauche, réaliser 517 00:24:34,190 --> 00:24:36,940 que les idées ne changent pas cette semaine ou la prochaine ou au-delà. 518 00:24:36,940 --> 00:24:38,690 Nous allons simplement commencer à écrire des choses 519 00:24:38,690 --> 00:24:41,240 d'une autre manière avec notre clavier à la place de notre souris. 520 00:24:41,240 --> 00:24:44,577 >> Donc, si x est inférieur à y, et il ya quelques parenthèses là-bas, 521 00:24:44,577 --> 00:24:47,160 puis il ya quelques accolades à nouveau type d'encapsuler 522 00:24:47,160 --> 00:24:48,970 tout comme les pièces d'un puzzle jaune font. 523 00:24:48,970 --> 00:24:53,000 Et je vais à printf x est inférieur à y, et ainsi de suite. 524 00:24:53,000 --> 00:24:56,540 >> Ce qui est bien à propos de C, comme vous pouvez le voir ici, 525 00:24:56,540 --> 00:25:00,480 c'est que vous ne recevez pas cet emboîtement, nidification, reproduction, c'est nécessairement 526 00:25:00,480 --> 00:25:02,220 va pousser votre code vers la droite. 527 00:25:02,220 --> 00:25:04,990 Vous pouvez avoir tout lieu gamme parfaitement comme ça. 528 00:25:04,990 --> 00:25:08,960 Mais c'est juste une esthétique détail, nous verrons à nouveau avant longtemps. 529 00:25:08,960 --> 00:25:09,660 >> Bien. 530 00:25:09,660 --> 00:25:13,290 Donc, cela nous ramène à ce programme à l'aspect crypté. 531 00:25:13,290 --> 00:25:15,180 Nous allons écrire un peu de code. 532 00:25:15,180 --> 00:25:16,830 Maintenant, comment allez-vous écrire de code? 533 00:25:16,830 --> 00:25:21,310 Toutes ces années que vous avez possédiez un Mac ou un PC, de bureau ou portable, 534 00:25:21,310 --> 00:25:24,520 vous avez effectivement eu la capacité de commencer à écrire le code de programmation. 535 00:25:24,520 --> 00:25:27,050 Mais vous êtes probablement manquer un type de programme. 536 00:25:27,050 --> 00:25:28,470 Vous pouvez certainement écrire du code. 537 00:25:28,470 --> 00:25:30,740 Mais vous ne pouvez pas nécessairement, hors de la boîte, 538 00:25:30,740 --> 00:25:34,210 convertir le code source en code objet, 0 et de 1 539 00:25:34,210 --> 00:25:35,619 sans quoi sur votre ordinateur? 540 00:25:35,619 --> 00:25:36,410 PUBLIC: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. Malan: Donc, un compilateur, à droite. 542 00:25:37,630 --> 00:25:39,730 Aujourd'hui, la plupart d'entre vous sans doute ne possèdent pas un compilateur, 543 00:25:39,730 --> 00:25:41,259 n'ont jamais téléchargé un compilateur. 544 00:25:41,259 --> 00:25:44,300 Mais vous verrez que vous pouvez télécharger comme la plupart de tout autre morceau de logiciel. 545 00:25:44,300 --> 00:25:47,470 Dans le monde de Mac OS, vous pourriez télécharger ou ont déjà téléchargé 546 00:25:47,470 --> 00:25:50,437 quelque chose qui s'appelle Xcode ou GCC ou Clang. 547 00:25:50,437 --> 00:25:52,270 Si vous venez de l' Windows, vous pourriez monde 548 00:25:52,270 --> 00:25:56,190 ont téléchargé Visual Studio, Visual Basic, environnements comme ça. 549 00:25:56,190 --> 00:25:59,200 Il ya des dizaines de compilateurs ces jours-ci que vous pouvez utiliser. 550 00:25:59,200 --> 00:26:01,940 Mais le court, c'est ici est que ce serait une douleur 551 00:26:01,940 --> 00:26:04,480 et, franchement, une technologique cauchemar pour des centaines 552 00:26:04,480 --> 00:26:07,680 des personnes atteintes de différents configurations informatiques à tous 553 00:26:07,680 --> 00:26:09,800 configurer leurs machines exactement de la même manière 554 00:26:09,800 --> 00:26:11,700 de sorte que nous pouvons tous être sur la même page. 555 00:26:11,700 --> 00:26:15,240 >> Donc, ce que nous, à la place, faire dans CS50, c'est que nous vous donnons 556 00:26:15,240 --> 00:26:18,349 un environnement standard, un Environnement Linux qui est 557 00:26:18,349 --> 00:26:20,140 aller chercher un peu de quelque chose comme ça. 558 00:26:20,140 --> 00:26:22,980 Vous verrez plus de cela dans le Problème Set 1 cahier des charges qui 559 00:26:22,980 --> 00:26:25,330 sera mis en ligne ce vendredi soir. 560 00:26:25,330 --> 00:26:28,360 >> Et ce que cela signifie c'est que vous désormais 561 00:26:28,360 --> 00:26:32,060 vont être en mesure d' télécharger et installer un programme 562 00:26:32,060 --> 00:26:33,650 appelé le CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Et vous allez télécharger et installer un autre programme appelé 564 00:26:36,275 --> 00:26:40,300 un hyperviseur, qui est juste un fantaisie façon d'y parvenir. 565 00:26:40,300 --> 00:26:44,600 Que vous soyez propriétaire d'un Mac ou d'un PC ou d'un Ordinateur Linux ou un ordinateur Solaris, 566 00:26:44,600 --> 00:26:46,830 ou quelle que soit exploitation fou système que vous utilisez, 567 00:26:46,830 --> 00:26:49,820 vous allez télécharger un programme appelé l'hyperviseur qui est 568 00:26:49,820 --> 00:26:53,350 va courir le CS50 Appareil sur votre ordinateur 569 00:26:53,350 --> 00:26:55,430 quel que soit votre système d'exploitation est. 570 00:26:55,430 --> 00:27:00,640 Un hyperviseur en d'autres termes convertit nos affaires dans n'importe quelle langue, 571 00:27:00,640 --> 00:27:03,850 quel que soit vos instructions propre ordinateur comprend. 572 00:27:03,850 --> 00:27:04,962 >> Il s'agit donc d'une superposition. 573 00:27:04,962 --> 00:27:06,920 Et encore une fois, c'est un peu des thématiques en informatique 574 00:27:06,920 --> 00:27:08,722 la science, le bâtiment sur le dessus des choses. 575 00:27:08,722 --> 00:27:09,680 Vous pourriez avoir Windows. 576 00:27:09,680 --> 00:27:10,710 Vous pourriez avoir Mac OS. 577 00:27:10,710 --> 00:27:12,960 Mais à partir de la semaine prochaine vous êtes va avoir téléchargé 578 00:27:12,960 --> 00:27:14,980 un logiciel gratuit appelé l'hyperviseur. 579 00:27:14,980 --> 00:27:17,800 Vous allez avoir téléchargé un morceau logiciel appelé la CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Cela va fonctionner dans l'hyperviseur, qui va s'exécuter sur votre ordinateur. 581 00:27:21,050 --> 00:27:23,030 Et le résultat final est que chacun d'entre nous sera 582 00:27:23,030 --> 00:27:26,220 avoir une fenêtre simple comme cela sur votre Mac ou PC 583 00:27:26,220 --> 00:27:30,160 ce qui nous donne l'illusion de tout exécuter le même système d'exploitation, 584 00:27:30,160 --> 00:27:32,800 sans autre impact sur votre ordinateur. 585 00:27:32,800 --> 00:27:34,870 Et vous pouvez plein écran et il se comporter essentiellement 586 00:27:34,870 --> 00:27:37,550 comme si vous exécutez une système d'exploitation appelé Linux, 587 00:27:37,550 --> 00:27:40,270 qui est ce que le CS50 Appareil est basé sur. 588 00:27:40,270 --> 00:27:42,930 >> Donc, nous allons effectivement utiliser ce maintenant d'écrire un programme. 589 00:27:42,930 --> 00:27:45,450 Vous pouvez écrire un programme l'aide de Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Vous pouvez écrire un programme en utilisant TextEdit ou Notepad, 591 00:27:48,160 --> 00:27:51,880 ou WordPad, ou à peu près n'importe quel mot programme de traitement vous avez déjà utilisé. 592 00:27:51,880 --> 00:27:55,174 Mais la réalité est que vous ne devriez pas vraiment utiliser l'un de ces programmes. 593 00:27:55,174 --> 00:27:57,840 Vous devriez certainement pas utiliser quelque chose comme Microsoft Word, qui 594 00:27:57,840 --> 00:28:01,120 a face et italique gras, et grandes polices et des polices plus petites, 595 00:28:01,120 --> 00:28:03,560 parce que l'ordinateur ne fonctionne pas soucier de tout cela. 596 00:28:03,560 --> 00:28:05,600 Toute l'ordinateur est va se soucier est 597 00:28:05,600 --> 00:28:09,040 Anglais comme des instructions écrites en C. 598 00:28:09,040 --> 00:28:12,050 >> Donc, ce que nous ferons à l'intérieur de l'appareil de CS50 599 00:28:12,050 --> 00:28:14,290 est d'utiliser un programme gratuit disponible, et il est 600 00:28:14,290 --> 00:28:17,360 pré-installé en ce appareil, appelé Gedit. 601 00:28:17,360 --> 00:28:22,280 Et Gedit est juste un super simple éditeur de texte comme TextEdit de Mac OS, 602 00:28:22,280 --> 00:28:26,200 comme Bloc-notes Windows qui va regarder un petit quelque chose de ce genre. 603 00:28:26,200 --> 00:28:28,910 >> Donc, nous allons effectivement pas regarder des diapositives de cette. 604 00:28:28,910 --> 00:28:32,580 Mais nous allons effectivement aller dans l'environnement lui-même. 605 00:28:32,580 --> 00:28:36,090 Je vais aller de l'avant et connecter, dans cette autre fenêtre, 606 00:28:36,090 --> 00:28:40,910 à mon CS50 Appliance, que je n'ai pré-installé sur mon portable ici. 607 00:28:40,910 --> 00:28:43,771 >> Notez que, comme Windows et Mac OS, il a quelques menus. 608 00:28:43,771 --> 00:28:45,520 Comme Windows, il met il là-bas à la place 609 00:28:45,520 --> 00:28:47,020 de Mac OS, ce qui le place là-bas. 610 00:28:47,020 --> 00:28:48,930 Mais la réalité est que c'est tous les types de la même. 611 00:28:48,930 --> 00:28:50,770 Et en voici un tout tas de logiciels. 612 00:28:50,770 --> 00:28:51,770 Il ya Dropbox. 613 00:28:51,770 --> 00:28:54,780 Il ya tout un tas d'accessoires, programmes graphiques que nous allons 614 00:28:54,780 --> 00:28:56,430 utiliser plus tard dans la durée pour les ensembles de problèmes. 615 00:28:56,430 --> 00:28:59,650 Il ya un navigateur Web intégré dans la qu'il s'agit d'un ordinateur à part entière 616 00:28:59,650 --> 00:29:01,240 à l'intérieur d'un ordinateur. 617 00:29:01,240 --> 00:29:04,170 >> Mais je vais cliquer sur ce plus à gauche icône blanche ici, 618 00:29:04,170 --> 00:29:05,890 qui est l'icône de Gedit. 619 00:29:05,890 --> 00:29:09,650 Et il va ouvrir une fenêtre qui a trois panneaux à elle, 620 00:29:09,650 --> 00:29:12,590 une une gauche, un haut-ci, et une une base. 621 00:29:12,590 --> 00:29:16,071 >> Maintenant, c'est dans ce droit un sommet qui Je vais effectivement écrire du code. 622 00:29:16,071 --> 00:29:16,820 Alors, faisons ce ,. 623 00:29:16,820 --> 00:29:19,040 Je vais aller dans Fichier, Enregistrer. 624 00:29:19,040 --> 00:29:22,100 Et vous pourriez ne jamais avoir vu cette fenêtre particulière avant. 625 00:29:22,100 --> 00:29:23,620 Mais c'est comme Mac OS ou Windows. 626 00:29:23,620 --> 00:29:25,490 C'est juste une fenêtre avec tous les dossiers 627 00:29:25,490 --> 00:29:27,290 que j'ai à l'intérieur de cet ordinateur. 628 00:29:27,290 --> 00:29:30,320 >> Et je vais sauver le fichier que hello.c. 629 00:29:30,320 --> 00:29:32,690 Et je vais aller l'avant et cliquez sur Enregistrer. 630 00:29:32,690 --> 00:29:36,364 Et maintenant, j'ai remarqué un onglet en haut à gauche appelé hello.c. 631 00:29:36,364 --> 00:29:38,280 Donc probablement assez familier, même si vous avez pas 632 00:29:38,280 --> 00:29:40,240 utilisé ce programme particulier avant. 633 00:29:40,240 --> 00:29:44,890 >> Et maintenant, je vais taper dans les séquence assez cryptique de commandes 634 00:29:44,890 --> 00:29:46,360 que nous avons vu il ya un moment. 635 00:29:46,360 --> 00:29:49,330 Inclure standard I / O.h. 636 00:29:49,330 --> 00:29:50,600 Plus sur cela bientôt. 637 00:29:50,600 --> 00:29:55,670 Void main int, bouclé ouvert corset, fermé accolade. 638 00:29:55,670 --> 00:30:01,570 Et puis à l'intérieur de là, je pense que c'est où nous avons eu "Bonjour tout le monde," point-virgule. 639 00:30:01,570 --> 00:30:03,100 Et maintenant enregistrer. 640 00:30:03,100 --> 00:30:08,780 >> Il s'agit donc d'un programme écrit en C, écrite, par conséquent, dans le code source. 641 00:30:08,780 --> 00:30:10,720 Mais je ne peux pas exécuter ce programme. 642 00:30:10,720 --> 00:30:13,390 Je veux sorte de doubler cliquez sur une icône quelque part, 643 00:30:13,390 --> 00:30:16,390 mais aucune icône existe d'autres que le fichier de code source. 644 00:30:16,390 --> 00:30:20,359 Qu'est-ce, encore une fois, est le processus maintenant que J'ai besoin d'exécuter ce fichier à travers? 645 00:30:20,359 --> 00:30:21,150 PUBLIC: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. Malan: Donc un compilateur. 647 00:30:22,399 --> 00:30:24,890 Ainsi, dans différents ordinateurs que vous faire de différentes manières. 648 00:30:24,890 --> 00:30:27,480 Mais ce que nous avons fait ici en l'Appliance CS50 qui est 649 00:30:27,480 --> 00:30:31,260 représentant de la façon dont vous pourriez le faire sur de nombreux systèmes différents, 650 00:30:31,260 --> 00:30:34,036 c'est que je vais tout simplement exécuter une commande appelée marque. 651 00:30:34,036 --> 00:30:35,660 Et marque va littéralement faire. 652 00:30:35,660 --> 00:30:36,640 Faites-moi un programme. 653 00:30:36,640 --> 00:30:39,060 >> Donc, assurez-va exécuter un compilateur pour moi. 654 00:30:39,060 --> 00:30:42,160 Et le nom du programme Je veux dire, c'est bonjour. 655 00:30:42,160 --> 00:30:43,510 Maintenant faire est un programme. 656 00:30:43,510 --> 00:30:47,170 Et faire est assez intelligent pour se rendre compte que si je dis bonjour faire, 657 00:30:47,170 --> 00:30:50,980 il va chercher automatiquement pour un bonjour.c de fichier appelé 658 00:30:50,980 --> 00:30:53,420 juste parce que c'est la façon dont il est configuré. 659 00:30:53,420 --> 00:31:00,300 >> Alors, quand j'ai maintenant frappé Entrez ici, ce ligne cryptique fou vient de se exécuté. 660 00:31:00,300 --> 00:31:02,720 Et croyez-moi, avant longtemps, dans quelques jours, 661 00:31:02,720 --> 00:31:05,590 vous comprendrez ce que tous de ce moyen de non-sens. 662 00:31:05,590 --> 00:31:11,150 Mais pour l'instant, il suffit de savoir que faire l'exécution d'un compilateur déclenchée. 663 00:31:11,150 --> 00:31:13,290 En d'autres termes, il a trouvé un compilateur sur mon ordinateur 664 00:31:13,290 --> 00:31:14,820 c'est pré-installé sur l'Appliance CS50 665 00:31:14,820 --> 00:31:16,560 que nous allons vous remettre en problème Set 1. 666 00:31:16,560 --> 00:31:20,990 Et il a ensuite pris comme bonjour.c entrée, et produit apparemment 667 00:31:20,990 --> 00:31:23,040 0 et de 1 en sortie. 668 00:31:23,040 --> 00:31:29,410 >> Et par défaut ce qu'il fait est qu'il permet d'économiser ces 0 et de 1 dans un fichier appelé bonjour. 669 00:31:29,410 --> 00:31:33,180 Et si cette syntaxe trop pourrait être nouveau pour vous, tout simplement en disant point 670 00:31:33,180 --> 00:31:37,110 réduire bonjour va être l' moyen par lequel je lance ce programme. 671 00:31:37,110 --> 00:31:40,360 >> Pour le moment et pour au moins un couple de semaines, la quasi-totalité des programmes 672 00:31:40,360 --> 00:31:44,230 nous écrivons allons être en noir et blanc fenêtres de texte. 673 00:31:44,230 --> 00:31:47,006 Pas de souris, pas de clic, pas de fenêtres, pas d'icônes. 674 00:31:47,006 --> 00:31:49,630 Nous allons garder les choses simples et se concentrer sur les idées qui sous-tendent 675 00:31:49,630 --> 00:31:52,490 d'abord avant d'arriver à quelque chose niveau plus élevé, par exemple, 676 00:31:52,490 --> 00:31:56,410 comme l'éclatement jeu que nous avons parlé sur la première conférence de la semaine dernière. 677 00:31:56,410 --> 00:32:00,820 >> Alors, quand j'ai touché Entrez ici, c'est équivalent dans un texte que l'environnement 678 00:32:00,820 --> 00:32:03,272 à double-cliquant sur une icône appelée bonjour. 679 00:32:03,272 --> 00:32:05,480 Qu'attendez-vous de la volonté arriver quand je frappe Entrez alors? 680 00:32:05,480 --> 00:32:07,120 >> PUBLIC: Il va imprimer "Bonjour tout le monde." 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. Malan: J'espère il affichera "Bonjour tout le monde." 682 00:32:10,000 --> 00:32:11,370 Et elle l'a fait. 683 00:32:11,370 --> 00:32:13,690 Maintenant, il ya eu une certaine syntaxe cryptique ici. 684 00:32:13,690 --> 00:32:15,950 Disons rembobiner pour seulement un moment et voir si nous 685 00:32:15,950 --> 00:32:19,530 ne peut pas démarrer déduire simplement par bricoler, tentatives et des échecs, 686 00:32:19,530 --> 00:32:21,130 à ce qui se passe ici. 687 00:32:21,130 --> 00:32:23,609 Que faire si je me débarrasser de la barre oblique inverse n? 688 00:32:23,609 --> 00:32:25,650 Maintenant, certains d'entre vous qui avez programmée avant probablement 689 00:32:25,650 --> 00:32:27,054 savoir instantanément ce que cela signifie. 690 00:32:27,054 --> 00:32:29,220 Mais pour ceux d'entre vous qui avez jamais programmé avant, 691 00:32:29,220 --> 00:32:34,052 au moins penser à vous-même ce qui se passe à changer quand je ReRun ce programme? 692 00:32:34,052 --> 00:32:37,010 Donc, je vais redescendre à mon petite fenêtre en noir et blanc, qui 693 00:32:37,010 --> 00:32:39,290 est la fenêtre dans laquelle Je peux compiler ce. 694 00:32:39,290 --> 00:32:41,130 Je vais recompiler bonjour. 695 00:32:41,130 --> 00:32:43,520 Nous allons voir le même séquence cryptique de commandes. 696 00:32:43,520 --> 00:32:45,719 Et je vais faire slash dot bonjour. 697 00:32:45,719 --> 00:32:48,260 Et maintenant quelqu'un, si vous le voulez, qui n'a jamais programmé, 698 00:32:48,260 --> 00:32:49,770 ce qui pourrait être différent cette fois? 699 00:32:49,770 --> 00:32:50,020 Ouais. 700 00:32:50,020 --> 00:32:51,840 >> PUBLIC: Il ne s'arrêtera pas impression "Bonjour tout le monde." 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. Malan: Ça va to-- désolé? 702 00:32:52,660 --> 00:32:54,210 >> PUBLIC: Il ne s'arrêtera pas imprimer? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. Malan: Il ne sera pas arrêter l'impression "Bonjour tout le monde." 704 00:32:55,810 --> 00:32:56,560 Donc pas une mauvaise idée. 705 00:32:56,560 --> 00:32:58,633 D'autres idées? 706 00:32:58,633 --> 00:32:59,132 Ouais. 707 00:32:59,132 --> 00:33:00,060 >> PUBLIC: message d'erreur? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. Malan: Erreur message, OK, peut-être. 709 00:33:01,750 --> 00:33:02,250 Quoi d'autre? 710 00:33:02,250 --> 00:33:05,479 PUBLIC: Il peut imprimer l' support avec le point-virgule ainsi? 711 00:33:05,479 --> 00:33:08,270 DAVID J. Malan: Pourrait imprimer l' support avec le point-virgule ainsi. 712 00:33:08,270 --> 00:33:11,950 Alors peut-être que la barre oblique inverse est alors un peu type de terminous que c'est important. 713 00:33:11,950 --> 00:33:14,860 Toutes les autres pensées? 714 00:33:14,860 --> 00:33:16,412 >> Donc, toutes les bonnes idées. 715 00:33:16,412 --> 00:33:18,370 Et en fait, ça va être un message d'erreur. 716 00:33:18,370 --> 00:33:20,400 C'est probablement la plus probable être la réponse en général 717 00:33:20,400 --> 00:33:22,420 pour les prochaines semaines que nous apprenons à coder ici. 718 00:33:22,420 --> 00:33:27,680 >> Mais pour l'instant se rappeler que les ordinateurs seulement vous feriez ce que vous leur dites de faire. 719 00:33:27,680 --> 00:33:30,400 Tout comme l'arachide ridicule beurre et de gelée exemple. 720 00:33:30,400 --> 00:33:33,860 Nos ordinateurs humains ont été seulement censés de faire ce que vous leur avez dit de faire. 721 00:33:33,860 --> 00:33:36,250 Donc dans ce cas, si vous ne pas dire à l'ordinateur 722 00:33:36,250 --> 00:33:41,190 pour déplacer ce curseur clignotant sur le ligne suivante, il ne va pas le faire. 723 00:33:41,190 --> 00:33:45,390 Donc, quand je lance ce programme maintenant, vous remarquerez la différence. 724 00:33:45,390 --> 00:33:46,900 >> On dirait un bug. 725 00:33:46,900 --> 00:33:49,190 C'est un bug esthétique, peut-être. 726 00:33:49,190 --> 00:33:53,310 Mais ce qui est différent au sujet de cette sortie en fonction de la dernière évidence? 727 00:33:53,310 --> 00:33:53,810 Ouais. 728 00:33:53,810 --> 00:33:54,920 >> PUBLIC: Il n'a pas fait une nouvelle ligne. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. Malan: Il n'a pas fait une nouvelle ligne. 730 00:33:56,586 --> 00:33:58,740 Maintenant, ceux d'entre vous qui avoir des pages web peut-être faites 731 00:33:58,740 --> 00:34:01,910 avant, vous savez peut-être de la BR étiquette ou la balise de paragraphe, 732 00:34:01,910 --> 00:34:03,120 très similaire dans l'esprit. 733 00:34:03,120 --> 00:34:06,680 Un navigateur web vous ignorer jusqu'à ce que vous lui dites exactement quoi faire. 734 00:34:06,680 --> 00:34:10,020 De même, est un langage comme C seulement allez faire ce que vous lui demandez de faire. 735 00:34:10,020 --> 00:34:12,730 >> Ainsi, la raison pour laquelle tous ces exemples, 736 00:34:12,730 --> 00:34:15,350 à ce jour, ont type de eu par hasard cette barre oblique inverse 737 00:34:15,350 --> 00:34:18,560 là, c'est les moyens par lequel vous vous exprimez 738 00:34:18,560 --> 00:34:21,380 comme un caractère de nouvelle ligne, pour ainsi dire. 739 00:34:21,380 --> 00:34:26,219 Et vous pouvez sorte de le comprendre, peut-être, que ça ferait un peu stupide 740 00:34:26,219 --> 00:34:27,070 si rien d'autre. 741 00:34:27,070 --> 00:34:29,150 Si je voulais une nouvelle ligne, juste Entrez frapper puis genre 742 00:34:29,150 --> 00:34:32,219 de massacrer le code comme ça ne devrait pas vraiment vous frotter le droit chemin. 743 00:34:32,219 --> 00:34:33,830 Et même si vous ne le faites pas s'intéressent pas vraiment à ce point, 744 00:34:33,830 --> 00:34:35,830 vous vous rendrez compte que ce n'est pas un particulier 745 00:34:35,830 --> 00:34:37,870 bon morceau à la recherche de code. 746 00:34:37,870 --> 00:34:39,969 >> Et si ce que le monde il ya quelques années est décidé 747 00:34:39,969 --> 00:34:43,420 que lorsque vous voulez mettre le curseur sur une nouvelle ligne explicitement, 748 00:34:43,420 --> 00:34:46,332 vous devez explicitement dire nouvelle ligne, barre oblique inverse n. 749 00:34:46,332 --> 00:34:48,040 Et il ya un autre symboles comme ça. 750 00:34:48,040 --> 00:34:50,719 Mais pour l'instant nous allons juste se concentrer sur la barre oblique inverse n. 751 00:34:50,719 --> 00:34:53,790 >> Faisons maintenant le programme un peu plus intéressant. 752 00:34:53,790 --> 00:34:59,200 Je vais aller de l'avant et cette fois d'ouvrir un nouveau fichier. 753 00:34:59,200 --> 00:35:02,520 Je vais l'enregistrer comme bonjour-1.c. 754 00:35:02,520 --> 00:35:05,540 Et juste pour le plaisir, je vais aller le mettre dans mon dossier Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Comme vous le verrez dans le CS50 documentation de l'appareil, 756 00:35:09,030 --> 00:35:11,210 plus tard cette semaine pour problème Set 1, nous encourageons 757 00:35:11,210 --> 00:35:13,230 vous utilisez Dropbox ou un service équivalent, 758 00:35:13,230 --> 00:35:15,430 car alors tout le code de va être sauvegardé automatiquement. 759 00:35:15,430 --> 00:35:17,830 Et c'est pour ça que je n'ai passé dans ce dossier ici. 760 00:35:17,830 --> 00:35:20,230 >> Et maintenant, je vais écrire une programme légèrement différent. 761 00:35:20,230 --> 00:35:24,740 Inclure standard I / O.h, void main int. 762 00:35:24,740 --> 00:35:29,660 Et puis ici printf, Bonjour tout le monde, qui est exactement le même que précédemment. 763 00:35:29,660 --> 00:35:32,450 >> Mais maintenant, je veux imprimer quelque chose c'est un peu différent. 764 00:35:32,450 --> 00:35:34,800 Je veux imprimer, dire: «Bonjour, David." 765 00:35:34,800 --> 00:35:37,590 Très bien, alors de toute évidence, il devrait, espérons- 766 00:35:37,590 --> 00:35:40,360 être le cas que si je recompile ce programme, relancez-le, 767 00:35:40,360 --> 00:35:41,840 il va dire "bonjour, David." 768 00:35:41,840 --> 00:35:45,160 >> Mais si je veux introduire ce type de variable, 769 00:35:45,160 --> 00:35:49,240 la notion d'un conteneur qui va pour stocker D-un-v-i-d et code, il n'est pas difficile 770 00:35:49,240 --> 00:35:50,600 dans mon programme. 771 00:35:50,600 --> 00:35:53,430 Eh bien si je commence faire quelque chose comme ça? 772 00:35:53,430 --> 00:35:57,120 >> String s, c'est donc une variable. 773 00:35:57,120 --> 00:36:00,250 Si vous voulez une chaîne, a.k.a. un mot ou une phrase. 774 00:36:00,250 --> 00:36:03,485 Une séquence de caractères est ce que nous appelons à la programmation d'une chaîne. 775 00:36:03,485 --> 00:36:06,610 Nous allons juste générique appel il s, parce que c'est un joli nom simple. 776 00:36:06,610 --> 00:36:08,010 Mais je ne pouvais l'appeler n'importe quoi. 777 00:36:08,010 --> 00:36:12,920 >> Je vais dire les égaux chaîne de entre guillemets, «David», point-virgule. 778 00:36:12,920 --> 00:36:18,330 Et maintenant, je veux insérer D-un-v-i-d dans ce que je suis impression. 779 00:36:18,330 --> 00:36:23,720 Et avant, nous avons vu un teaser sur l'écran de certains syntaxe spéciale 780 00:36:23,720 --> 00:36:26,050 qui nous a permis de substitut à une valeur. 781 00:36:26,050 --> 00:36:29,250 Quelle a été la spéciale symbole, il ya quelques diapositives? 782 00:36:29,250 --> 00:36:30,040 >> Donc pour cent. 783 00:36:30,040 --> 00:36:33,830 À l'époque, c'était pour cent d pour décimal. 784 00:36:33,830 --> 00:36:35,850 Cela ne semble pas vraiment pertinent ici. 785 00:36:35,850 --> 00:36:38,650 S'avère qu'il ya un autre symbole de pour cent, 786 00:36:38,650 --> 00:36:42,810 qui est l pour cent, ce qui signifie pour un espace réservé pour une chaîne. 787 00:36:42,810 --> 00:36:49,350 >> Alors maintenant, très simplement, je suis va aller faire bonjour-1, 788 00:36:49,350 --> 00:36:54,210 car ce fichier est appelé bonjour-1.c, et appuyez sur Entrée. 789 00:36:54,210 --> 00:36:56,230 Et j'ai foiré. 790 00:36:56,230 --> 00:36:57,394 Ce qui se passe? 791 00:36:57,394 --> 00:37:00,560 Eh bien, c'est là que nous devons commencer à conscients que nous sommes dans cette commande 792 00:37:00,560 --> 00:37:02,810 environnement de ligne, ce texte seul environnement. 793 00:37:02,810 --> 00:37:06,114 Il n'y a pas cliquer sur les icônes comme des dossiers en ce moment. 794 00:37:06,114 --> 00:37:07,280 Et pensez à il ya un moment. 795 00:37:07,280 --> 00:37:10,740 Dans ce dossier fait je dis Je gardais mon code? 796 00:37:10,740 --> 00:37:11,657 Donc, le dossier Dropbox. 797 00:37:11,657 --> 00:37:12,989 Aurait pu s'appeler rien. 798 00:37:12,989 --> 00:37:14,530 Mais il arrive d'être appelé Dropbox. 799 00:37:14,530 --> 00:37:18,380 Donc j'ai un peu besoin de double-cliquer sur ce dossier Dropbox afin d'obtenir 800 00:37:18,380 --> 00:37:21,657 en elle et me mettre à l' Code appelé bonjour-1.c. 801 00:37:21,657 --> 00:37:24,490 En fait, laissez-moi aller de l'avant et minimise cette fenêtre pendant un moment. 802 00:37:24,490 --> 00:37:27,560 Tout comme Windows et Mac OS, il ya des dossiers dans Linux. 803 00:37:27,560 --> 00:37:29,410 Il ya des dossiers dans le CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 C'est juste maintenant nous confiner nous à cet environnement de texte. 805 00:37:32,380 --> 00:37:34,700 >> Mais si je double clic sur Dropbox, remarquez il 806 00:37:34,700 --> 00:37:37,210 est le fichier que je veux compiler. 807 00:37:37,210 --> 00:37:41,430 Mais j'ai besoin de ce noir et blanc fenêtre de terminal, pour ainsi dire. 808 00:37:41,430 --> 00:37:45,750 Mais j'ai besoin, donc, de se déplacer dans ce dossier ou répertoire. 809 00:37:45,750 --> 00:37:48,290 Donc un peu mystérieux, mais vous aurez l'habitude de cela aussi. 810 00:37:48,290 --> 00:37:50,430 >> Dans le monde de Linux, qui est de nouveau le fonctionnement 811 00:37:50,430 --> 00:37:54,860 système que nous allons manquer l'intérieur de la CS50 Appareil, il ya une commande appelée CD. 812 00:37:54,860 --> 00:37:58,310 Ce qui veut dire que je peux faire CD, l'espace, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, changement de répertoire. 814 00:37:59,900 --> 00:38:00,400 Droite. 815 00:38:00,400 --> 00:38:02,890 Retour dans la journée quand les gens étaient inventer des ordinateurs et de l'exploitation 816 00:38:02,890 --> 00:38:05,806 systèmes de ce genre, ils voulaient tapez les touches moins de possible. 817 00:38:05,806 --> 00:38:08,760 Donc, la meilleure façon de dire changement de répertoire a CD. 818 00:38:08,760 --> 00:38:13,910 >> Donc, si je frappe CD, espace Dropbox, remarquer ce qui a changé ici. 819 00:38:13,910 --> 00:38:16,480 A l'intérieur de parenthèses l'appareil est en quelque sorte 820 00:38:16,480 --> 00:38:19,360 de me ménageant et me rappeler où je suis. 821 00:38:19,360 --> 00:38:21,480 Ainsi, le dossier ouvert est Dropbox. 822 00:38:21,480 --> 00:38:24,950 Si je tape maintenant ls pour liste, encore succincte, 823 00:38:24,950 --> 00:38:27,540 parce que les gens ne voulaient pas entrez dans la journée l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Ils ont fait place donc ls. 825 00:38:29,300 --> 00:38:30,110 >> Entrée. 826 00:38:30,110 --> 00:38:35,740 Remarquez que je vois deux choses, bonjour-1.c, et puis cette chose énigmatique source 1m. 827 00:38:35,740 --> 00:38:38,310 C'est juste ma façon de dire code source pour la semaine 1 lundi. 828 00:38:38,310 --> 00:38:42,020 C'est un dossier que j'ai téléchargé à partir de Le site Web de CS50 que j'ai fait plus tôt aujourd'hui 829 00:38:42,020 --> 00:38:43,990 et il suffit de mettre dans le appareil à l'avance. 830 00:38:43,990 --> 00:38:47,550 >> Mais pour l'instant la seule chose que nous importe est fait de ce programme. 831 00:38:47,550 --> 00:38:50,440 Alors, quand je tape faire bonjour-1, Entrée. 832 00:38:50,440 --> 00:38:51,320 Bon sang. 833 00:38:51,320 --> 00:38:53,060 Quelque chose s'est mal passé. 834 00:38:53,060 --> 00:38:54,580 Donc, nous allons taquiner cet appart. 835 00:38:54,580 --> 00:38:58,489 Et malheureusement c'est là que les choses obtenir un peu stressant au début, 836 00:38:58,489 --> 00:39:00,280 du moins si vous avez jamais programmé avant. 837 00:39:00,280 --> 00:39:00,980 >> Mon Dieu. 838 00:39:00,980 --> 00:39:04,990 J'ai écrit un programme de deux lignes et J'ai quatre lignes d'erreurs. 839 00:39:04,990 --> 00:39:07,180 Donc ce qui se passe ici. 840 00:39:07,180 --> 00:39:11,370 Tout d'abord toujours revenir en arrière et trouver le premier message d'erreur, 841 00:39:11,370 --> 00:39:15,730 parce compilateurs souvent juste se confondre par ce que vous et moi. 842 00:39:15,730 --> 00:39:17,000 Les compilateurs sont assez stupide. 843 00:39:17,000 --> 00:39:18,360 Ils ne font que ce vous leur dites de faire. 844 00:39:18,360 --> 00:39:21,484 Et si vous les confondez, ils sont tout simplement aller au genre de baisser les bras 845 00:39:21,484 --> 00:39:25,010 et peut-être jeter plus de messages d'erreur que ne le sont réellement pertinent. 846 00:39:25,010 --> 00:39:26,380 >> Examinons donc à la première. 847 00:39:26,380 --> 00:39:27,540 Super énigmatique au premier abord. 848 00:39:27,540 --> 00:39:31,050 Mais remarquez, voici le nom de la fichier dans lequel je foutu apparemment. 849 00:39:31,050 --> 00:39:36,570 Colon 5, du côlon 5 signifie simplement sur ligne 5 à la cinquième caractère. 850 00:39:36,570 --> 00:39:39,760 Ainsi cinquième colonne de caractères, si vous voulez, erreur. 851 00:39:39,760 --> 00:39:41,870 L'utilisation de chaîne d'identificateur non déclaré. 852 00:39:41,870 --> 00:39:43,120 Vouliez-vous dire norme n? 853 00:39:43,120 --> 00:39:44,850 >> Non, je voulais dire chaîne. 854 00:39:44,850 --> 00:39:47,640 Et puis c'est le genre de copier et coller 855 00:39:47,640 --> 00:39:50,700 ce que j'ai tapé à vraiment attirer mon attention à l'endroit où j'ai foiré. 856 00:39:50,700 --> 00:39:54,260 Donc, pour une raison quelconque, C, ou au moins le compilateur 857 00:39:54,260 --> 00:39:56,470 ne comprend pas la chaîne de mots. 858 00:39:56,470 --> 00:39:57,890 Et c'est parce que nous l'avons fait jusqu'à. 859 00:39:57,890 --> 00:40:01,440 Donc n'existe pas chaîne dans C. Quel CS50 fait, 860 00:40:01,440 --> 00:40:03,380 pour les premières semaines seulement de la classe, 861 00:40:03,380 --> 00:40:05,700 c'est que nous offrons une formation roues, pour ainsi dire. 862 00:40:05,700 --> 00:40:11,160 Et nous avons mis ces roues de formation l'intérieur d'un fichier spécial appelé CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> C'est donc la deuxième de deux fichiers noms qui se terminent apparemment en dot h. 864 00:40:14,970 --> 00:40:16,300 Disons rembobiner. 865 00:40:16,300 --> 00:40:19,360 Printf est une déclaration ou d'une fonction qui imprime apparemment quelque chose 866 00:40:19,360 --> 00:40:20,580 à l'écran. 867 00:40:20,580 --> 00:40:23,470 Mais vous ne m'avez pas vu mettre en œuvre printf, à droite. 868 00:40:23,470 --> 00:40:26,360 il ya des années de mise en œuvre Quelqu'un printf. 869 00:40:26,360 --> 00:40:30,420 Dans ce dossier vous parier qu'il ou elle a mis la mise en œuvre 870 00:40:30,420 --> 00:40:34,270 pour printf, le code de printf? 871 00:40:34,270 --> 00:40:36,860 >> Dans un fichier appelé E / S standard O.h. 872 00:40:36,860 --> 00:40:39,930 En fait, c'est probablement dans deux fichiers, E / S standard O.h, 873 00:40:39,930 --> 00:40:42,650 qui se tient pour la tête fichier, et le niveau I / O.c, 874 00:40:42,650 --> 00:40:44,060 qui se tient pour le code source C. 875 00:40:44,060 --> 00:40:48,220 Donc, il ya, il ou elle quelques années flac le code qu'ils ont écrit dans ce fichier 876 00:40:48,220 --> 00:40:51,240 de sorte que des gens comme nous ans plus tard, peuvent inclure, 877 00:40:51,240 --> 00:40:53,040 pour ainsi dire, dans nos propres programmes. 878 00:40:53,040 --> 00:40:56,320 >> Et en effet, c'est ce que le signe dièse suivi du mot comprennent le fait. 879 00:40:56,320 --> 00:41:00,250 Il semble sur le disque dur local, trouve le fichier appelé E / S standard O.h, 880 00:41:00,250 --> 00:41:03,840 puis copie effectivement et papiers, coller à l'intérieur de mon propre fichier. 881 00:41:03,840 --> 00:41:07,210 Alors maintenant, mon programme sait comment imprimer sur l'écran. 882 00:41:07,210 --> 00:41:11,120 >> Ainsi, par cette logique, où est une chaîne définie? 883 00:41:11,120 --> 00:41:12,260 >> PUBLIC: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. Malan: CS50.h. 885 00:41:13,290 --> 00:41:15,540 Et en effet, c'est ce que nous, le personnel de base, ont fait. 886 00:41:15,540 --> 00:41:19,590 Nous avons inventé quelques types de données, pour ainsi dire, comme une chaîne, 887 00:41:19,590 --> 00:41:22,370 en plus de ceux que vous obtenir gratuitement, comme un int. 888 00:41:22,370 --> 00:41:26,010 Et nous voyons les autres comme un charbon pour un caractère et un peu plus. 889 00:41:26,010 --> 00:41:30,670 A l'intérieur de CS50.h est apparemment au moins une mention de chaîne. 890 00:41:30,670 --> 00:41:34,980 >> Alors maintenant, laissez-moi aller de l'avant et réexécutez bonjour-1. 891 00:41:34,980 --> 00:41:37,100 Je zoome encore et croise les doigts. 892 00:41:37,100 --> 00:41:41,370 Maintenant, en ayant fait un changer J'ai corrigé la plupart des choses. 893 00:41:41,370 --> 00:41:42,100 Mais bon sang. 894 00:41:42,100 --> 00:41:44,290 Plus de pourcentages que les arguments de données. 895 00:41:44,290 --> 00:41:45,980 Qu'ai-je fait de mal cette fois? 896 00:41:45,980 --> 00:41:47,420 >> Donc, il est encore assez énigmatique. 897 00:41:47,420 --> 00:41:51,560 Mais cette erreur est ligne 7 et le caractère 21. 898 00:41:51,560 --> 00:41:53,880 Allons donc chercher ici. 899 00:41:53,880 --> 00:41:55,350 C'est un peu subtil. 900 00:41:55,350 --> 00:41:59,167 Mais si vous pensez à ce que les idées fondamentales sont ici, 901 00:41:59,167 --> 00:42:00,500 peut-être que nous pouvons taquiner cet appart. 902 00:42:00,500 --> 00:42:02,300 >> Ainsi printf est le nom de la fonction. 903 00:42:02,300 --> 00:42:04,960 Les parenthèses, à ce jour, est tout comme ce que nous mettons dans 904 00:42:04,960 --> 00:42:07,005 les choses que nous passons comme entrées à une fonction. 905 00:42:07,005 --> 00:42:08,921 Très bien, juste un convention arbitraire humain. 906 00:42:08,921 --> 00:42:09,919 Utilisez les parenthèses. 907 00:42:09,919 --> 00:42:12,460 A l'intérieur de ces parenthèses nous avons été en train de mettre des guillemets, 908 00:42:12,460 --> 00:42:14,810 puis une chaîne comme "Bonjour tout le monde." 909 00:42:14,810 --> 00:42:18,160 >> Mais dans cet exemple très tôt brièvement fait que nous regardons avec Scratch. 910 00:42:18,160 --> 00:42:22,590 Et nous avons eu le pour cent d, quoi d'autre était à l'intérieur de ces parenthèses 911 00:42:22,590 --> 00:42:23,730 que j'ai appelé verbalement? 912 00:42:23,730 --> 00:42:24,230 Ouais. 913 00:42:24,230 --> 00:42:28,166 >> PUBLIC: Donc, c'est ce que vous prenez [Inaudible] à partir de [inaudible] 914 00:42:28,166 --> 00:42:30,200 ce que ces [inaudible]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. Malan: Exactement. 916 00:42:31,200 --> 00:42:32,700 Donc, nous avons eu le pour cent d. 917 00:42:32,700 --> 00:42:36,620 Mais nous avons eu près citation, une virgule, un compteur. 918 00:42:36,620 --> 00:42:37,120 Droite. 919 00:42:37,120 --> 00:42:40,680 Nous avons précisé ce que nous voulons de faire ce que l'espace réservé. 920 00:42:40,680 --> 00:42:44,621 Donc ce que je vais faire ici est virgule, que voulez-vous que je mette? 921 00:42:44,621 --> 00:42:45,120 PUBLIC: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. Malan: S, car s dans ce cas 923 00:42:46,828 --> 00:42:48,700 est le nom du conteneur de stockage. 924 00:42:48,700 --> 00:42:50,180 C'est le nom de ce bol en verre. 925 00:42:50,180 --> 00:42:53,610 Alors qu'avant il était contre le fait que exemple Scratch simple, nous avons examiné. 926 00:42:53,610 --> 00:42:56,630 Alors maintenant, après avoir fait deux changements, permettez-moi un zoom avant 927 00:42:56,630 --> 00:42:59,800 et essayer une fois de plus à compiler ce programme. 928 00:42:59,800 --> 00:43:01,596 >> Maintenant, je vois que la ligne cryptique. 929 00:43:01,596 --> 00:43:03,470 Mais c'est en fait la nom du compilateur. 930 00:43:03,470 --> 00:43:04,886 Cliquetis est le nom du compilateur. 931 00:43:04,886 --> 00:43:07,100 Make est juste me sauver le mal de tête de plus en 932 00:43:07,100 --> 00:43:09,830 taper cette commande à long fou sur. 933 00:43:09,830 --> 00:43:14,900 Alors maintenant, si je ne slash dot bonjour-1, Je dois voir "bonjour, David." 934 00:43:14,900 --> 00:43:16,450 >> Jolie décevante, bien, non? 935 00:43:16,450 --> 00:43:18,158 Nous aurions pu faire ce beaucoup plus simplement 936 00:43:18,158 --> 00:43:20,940 sans parler des variables et CS50.h et tout cela. 937 00:43:20,940 --> 00:43:23,080 Faisons donc un peu plus intéressant. 938 00:43:23,080 --> 00:43:31,010 >> En plus de CS50.h, avoir des choses comme chaîne 939 00:43:31,010 --> 00:43:34,550 déclaré, la bibliothèque CS50 a aussi quelques fonctions. 940 00:43:34,550 --> 00:43:38,520 Il ya quelques années donc, tout comme, quelqu'un a écrit printf et le mettre dans la norme E / O.h 941 00:43:38,520 --> 00:43:39,530 et un autre fichier. 942 00:43:39,530 --> 00:43:44,010 >> Nous, le personnel CS50, écrit une fonction appelé GetChar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 Getint, GetLongLong, GetString, et nous mettons les dans un fichier 944 00:43:47,610 --> 00:43:49,890 appelé CS50.h et CS50.c. 945 00:43:49,890 --> 00:43:51,880 Et nous les avons mis à l'intérieur de la CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 Et les gens peuvent aussi télécharger en ligne si elles 947 00:43:53,880 --> 00:43:55,880 envie de les mettre sur leur propres ordinateurs ainsi. 948 00:43:55,880 --> 00:44:00,880 C'est-à-dire que nous avons créé fonctions qui obtiennent entrée de l'utilisateur. 949 00:44:00,880 --> 00:44:02,930 Je ne sais pas ce que tout de ces types de données sont. 950 00:44:02,930 --> 00:44:06,490 Getint est une sorte de simple, comme obtenir un nombre entier d'une certaine manière de l'utilisateur. 951 00:44:06,490 --> 00:44:09,980 Et GetString est probablement comme get un mot ou une phrase de l'utilisateur. 952 00:44:09,980 --> 00:44:11,770 >> Donc, nous allons mettre l'accent sur ce point. 953 00:44:11,770 --> 00:44:14,710 Et je vais retourner dans la appareil et je vais aller de l'avant 954 00:44:14,710 --> 00:44:20,790 et enregistrez le fichier sous, disons il bonjour-2.c comme ma deuxième version. 955 00:44:20,790 --> 00:44:23,030 Et nous allons faire quelques changements. 956 00:44:23,030 --> 00:44:25,800 >> Cette fois, au lieu de David disque de codage, qui 957 00:44:25,800 --> 00:44:29,120 rend incroyablement cohérente mais le programme décevante, 958 00:44:29,120 --> 00:44:32,640 si je le fais à la place GetString? 959 00:44:32,640 --> 00:44:35,660 Maintenant, remarquez GetString a une parenthèse ouverte, 960 00:44:35,660 --> 00:44:38,500 parenthèse fermée, car il n'a pas besoin d'entrée. 961 00:44:38,500 --> 00:44:40,850 Il va juste aller chercher une chaîne de caractères à partir de l'utilisateur. 962 00:44:40,850 --> 00:44:42,460 >> Et maintenant, un mot sur l'autre syntaxe. 963 00:44:42,460 --> 00:44:45,439 Le point-virgule juste la fin d'une ligne de code. 964 00:44:45,439 --> 00:44:46,730 Vous n'avez pas besoin d'eux partout. 965 00:44:46,730 --> 00:44:48,896 Mais cela signifie juste que je suis fait avec cette ligne de code. 966 00:44:48,896 --> 00:44:51,080 Permettez-moi de passer sur un autre déclaration ou d'une fonction. 967 00:44:51,080 --> 00:44:53,010 Chaîne déclare une variable. 968 00:44:53,010 --> 00:44:55,920 Chaîne, c'est comme dire me donner un bol, s'il vous plaît. 969 00:44:55,920 --> 00:44:57,940 Et laissez-moi mettre une chaîne en elle. 970 00:44:57,940 --> 00:44:59,430 >> Et maintenant, le signe égal. 971 00:44:59,430 --> 00:45:03,510 Quel est le signe égal essentiellement équivalent à? 972 00:45:03,510 --> 00:45:04,500 >> PUBLIC: Assigner. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. Malan: Ouais, attribuer une valeur. 974 00:45:06,190 --> 00:45:09,872 Donc, si je, par exemple, l'appel cette fonction GetString, 975 00:45:09,872 --> 00:45:12,830 et nous le verrons dans un instant que c'est va demander à l'utilisateur une chaîne. 976 00:45:12,830 --> 00:45:17,810 C'est comme me laissant alors écrire D-a-v-i-d sur une feuille de papier. 977 00:45:17,810 --> 00:45:21,060 Et quand je dis chaîne s est égal à GetString, 978 00:45:21,060 --> 00:45:24,140 égalité ne veut pas dire égalité dans la programmation C. 979 00:45:24,140 --> 00:45:27,880 Cela signifie attribuer de la droite côté de la partie gauche. 980 00:45:27,880 --> 00:45:29,510 >> Donc, je suis devenu une chaîne. 981 00:45:29,510 --> 00:45:32,785 Et les moyens de signe égal mettre dans le récipient de stockage appelé s. 982 00:45:32,785 --> 00:45:36,730 Et ensuite passer cette option pour printf à fait faire sa chose. 983 00:45:36,730 --> 00:45:39,790 >> Donc le résultat final alors va à regarder un peu différent. 984 00:45:39,790 --> 00:45:40,840 Disons ne font bonjour-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Soit pourraient travailler. 987 00:45:45,260 --> 00:45:46,450 Vous suivez. 988 00:45:46,450 --> 00:45:47,940 Faire bonjour-2 a fonctionné. 989 00:45:47,940 --> 00:45:52,640 Dot slash bonjour-2, Entrée. 990 00:45:52,640 --> 00:45:54,620 >> Il me semble avoir un infini boucle ou quelque chose. 991 00:45:54,620 --> 00:45:55,453 Rien ne se passe. 992 00:45:55,453 --> 00:45:56,134 Pourquoi? 993 00:45:56,134 --> 00:45:57,805 >> PUBLIC: Ca fait une boucle infinie. 994 00:45:57,805 --> 00:45:59,430 DAVID J. Malan: Il s'agit d'une boucle infinie. 995 00:45:59,430 --> 00:46:02,710 C'est une sorte d'attente pour moi de effectivement le fournir avec certaines entrées. 996 00:46:02,710 --> 00:46:05,800 Alors laissez-moi aller de l'avant et tape dans David, et appuyez sur Entrée. 997 00:46:05,800 --> 00:46:07,230 Et maintenant, il dit "bonjour, David." 998 00:46:07,230 --> 00:46:09,040 Si je cours à nouveau. 999 00:46:09,040 --> 00:46:11,530 Donc tapons dans Rob, "bonjour, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Maintenant, c'est le pire interface utilisateur jamais. 1001 00:46:13,900 --> 00:46:16,110 L'utilisateur est apparemment supposé savoir ce qu'il faut faire. 1002 00:46:16,110 --> 00:46:17,120 Mais peu importe. 1003 00:46:17,120 --> 00:46:19,570 L'utilisation de ces même bâtiment blocs, tout comme dans Scratch, 1004 00:46:19,570 --> 00:46:24,980 nous pouvons résoudre ce problème et dire quelque chose comme votre nom s'il vous plaît, du côlon, 1005 00:46:24,980 --> 00:46:27,820 espace, fermé citation, près parenthèses, point-virgule. 1006 00:46:27,820 --> 00:46:30,680 Il ya donc beaucoup de nouveau niaiserie avec la syntaxe. 1007 00:46:30,680 --> 00:46:34,040 >> Mais notez que je viens d'ajouter un morceau de puzzle-dessus celui-ci 1008 00:46:34,040 --> 00:46:35,280 et au-dessus de celui-ci. 1009 00:46:35,280 --> 00:46:38,870 Alors maintenant, si je ReRun ce, bonjour-2, Entrée. 1010 00:46:38,870 --> 00:46:41,180 Attendez une minute. 1011 00:46:41,180 --> 00:46:41,830 Qu'est-ce qui ne va pas? 1012 00:46:41,830 --> 00:46:43,570 Ce n'est pas se comporter différemment. 1013 00:46:43,570 --> 00:46:44,200 Ouais. 1014 00:46:44,200 --> 00:46:46,010 >> PUBLIC: Vous n'avez pas exécuter à nouveau make. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. Malan: je n'ai pas exécuter à nouveau make, à droite. 1016 00:46:47,968 --> 00:46:49,430 J'ai donc changé mon code source. 1017 00:46:49,430 --> 00:46:50,638 Mais encore une fois, il n'y a que le débit. 1018 00:46:50,638 --> 00:46:54,530 Le code source par le compilateur donne Vous êtes nouveau code objet, ou 0 et de 1. 1019 00:46:54,530 --> 00:47:00,209 Je dois donc fait réexécutez bonjour-2 Entrée. 1020 00:47:00,209 --> 00:47:01,750 OK, quelque chose semble s'être passé. 1021 00:47:01,750 --> 00:47:04,220 Dot slash bonjour-2. 1022 00:47:04,220 --> 00:47:05,390 Votre nom s'il vous plaît. 1023 00:47:05,390 --> 00:47:09,990 Et pour être clair maintenant, pourquoi est- le curseur sur la même ligne? 1024 00:47:09,990 --> 00:47:10,490 Exactement. 1025 00:47:10,490 --> 00:47:13,020 Je n'ai pas mis la barre oblique inverse n ici dans mon code. 1026 00:47:13,020 --> 00:47:16,110 Alors maintenant, je peux écrire quelque chose comme Daven, Entrée. 1027 00:47:16,110 --> 00:47:18,710 Je peux courir à nouveau et tapez quelque chose comme Gabe, Entrée, 1028 00:47:18,710 --> 00:47:22,250 et nous obtenons un programme différent encore et encore et encore. 1029 00:47:22,250 --> 00:47:28,940 >> Maintenant, finalement, nous allons avoir besoin de d'utiliser quelques capacités différentes. 1030 00:47:28,940 --> 00:47:32,860 Nous devons mettre en place en fin de compte un certain conditions de faire les choses de manière conditionnelle. 1031 00:47:32,860 --> 00:47:35,550 Peut-être que les boucles afin que nous puissions faire les choses encore et encore. 1032 00:47:35,550 --> 00:47:38,220 >> Peut-être que ce serait bien si nous pourrait mettre en œuvre nos propres fonctions, 1033 00:47:38,220 --> 00:47:41,355 comme nous avons pu mettre en place notre propre printf ou notre propre version de GetString 1034 00:47:41,355 --> 00:47:45,870 et GetFlow, parce que finalement, même utilisant cet environnement de ligne de commande 1035 00:47:45,870 --> 00:47:49,780 pouvons-nous faire, même les plus visuellement intéressant des choses. 1036 00:47:49,780 --> 00:47:51,950 >> En effet, en conclusion permettez-moi de le faire. 1037 00:47:51,950 --> 00:47:54,020 Je vais aller de l'avant et fermer ces fenêtres 1038 00:47:54,020 --> 00:47:57,400 et ouvrir cette icône ici, qui est juste un plus grand 1039 00:47:57,400 --> 00:48:00,020 version de ce noyé fenêtre de terminal. 1040 00:48:00,020 --> 00:48:02,329 Donc Gedit a non seulement le lieu de mon code, 1041 00:48:02,329 --> 00:48:05,620 mais aussi construit dans la fenêtre de terminal, la noir et blanc fenêtre où je peux courir 1042 00:48:05,620 --> 00:48:06,230 commandes. 1043 00:48:06,230 --> 00:48:08,600 >> Je suis tombé à ouvrir une version plus grande de cette. 1044 00:48:08,600 --> 00:48:11,170 Et maintenant, je vais aller dans le dossier que j'ai déjà 1045 00:48:11,170 --> 00:48:13,150 mis en avant sur le site Web du cours. 1046 00:48:13,150 --> 00:48:16,720 Et je vais aller de l'avant et ouvrir un fichier appelé thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 qui a été écrit par quelqu'un d'autre. 1048 00:48:18,710 --> 00:48:21,220 >> Et si nous regardons ce, ce n'est pas le type de code 1049 00:48:21,220 --> 00:48:24,370 nous allons écrire car l'objectif de ce code 1050 00:48:24,370 --> 00:48:28,450 était d'écrire la plus belle à la recherche du code qui il ou elle pourrait, 1051 00:48:28,450 --> 00:48:31,290 indépendamment de si oui ou non un autre être humain ne pourrait jamais 1052 00:48:31,290 --> 00:48:33,660 comprendre ce code. 1053 00:48:33,660 --> 00:48:37,050 >> En effet, chaque année, il est ce qui est appelé un concours C masquée, qui 1054 00:48:37,050 --> 00:48:39,570 est pour les vrais geeks qui écrivent code qui personne ne peut lire, 1055 00:48:39,570 --> 00:48:42,050 mais que fait quelque chose soit très simple ou vraiment incroyable. 1056 00:48:42,050 --> 00:48:43,890 Et nous pensions que nous serions conclure avec ce look 1057 00:48:43,890 --> 00:48:48,300 à quelque chose qui est assez étonnant vous pourriez avoir vu une fois avant. 1058 00:48:48,300 --> 00:48:52,650 Mais nous nous retrouverons sur ce note slash dot, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 C'est donc ce qui l'attend. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> C'est tout pour CS50. 1062 00:48:58,500 --> 00:48:59,935 Nous nous reverrons mercredi. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [MUSIQUE LECTURE] 1065 00:49:10,016 --> 00:53:31,883