1 00:00:00,000 --> 00:00:03,353 >> [Jouer de la musique] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID MALAN: Bonjour, tout le monde. 4 00:00:06,050 --> 00:00:07,777 Ceci est la super-section de CS50. 5 00:00:07,777 --> 00:00:09,860 Les articles ne seront pas affectés commencer pour une autre semaine. 6 00:00:09,860 --> 00:00:11,580 Et aujourd'hui, je suis ici avec-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID MALAN: --to effectivement jetez un oeil à problème 9 00:00:14,163 --> 00:00:16,110 en créer un, le cours de premières semaines de la matière, 10 00:00:16,110 --> 00:00:19,780 vous orienter avec CS50 IDE, un peu de Linux, le système d'exploitation qui est 11 00:00:19,780 --> 00:00:22,290 fonctionnant sur IDE, ainsi que regarder quelques-uns de la transition 12 00:00:22,290 --> 00:00:25,730 à partir de zéro à C leader jusqu'à en créer un problème. 13 00:00:25,730 --> 00:00:28,340 >> Alors sans plus tarder, dans un ensemble de problèmes, 14 00:00:28,340 --> 00:00:30,520 vous allez être présenter à CS50 IDE, qui 15 00:00:30,520 --> 00:00:33,230 cette programmation est basée sur le Web environnement que nous utilisons pour 16 00:00:33,230 --> 00:00:34,280 pour écrire des programmes. 17 00:00:34,280 --> 00:00:37,280 Il a été conçu pour ressembler très rappelle un ordinateur typique 18 00:00:37,280 --> 00:00:39,430 système exécutant une exploitation système appelé Linux. 19 00:00:39,430 --> 00:00:42,440 Mais il est dans le nuage que l'on appelle, ce qui signifie tout le monde dans la classe 20 00:00:42,440 --> 00:00:45,100 peut effectivement avoir son propre compte et l'utiliser, aussi bien. 21 00:00:45,100 --> 00:00:48,950 >> Ainsi, la plupart d'entre vous ont probablement jamais utilisé un environnement Linux avant ou peut-être 22 00:00:48,950 --> 00:00:50,447 même un environnement de ligne de commande. 23 00:00:50,447 --> 00:00:52,280 Et une ligne de commande environnement est différent. 24 00:00:52,280 --> 00:00:53,200 Tout est textuelle. 25 00:00:53,200 --> 00:00:54,730 Il est tous les commandes clavier. 26 00:00:54,730 --> 00:00:59,480 Et il n'y a pas de passage de la souris, pas d'icônes, pas de fenêtres de dialogue, pas de menus. 27 00:00:59,480 --> 00:01:00,212 Il est purement texte. 28 00:01:00,212 --> 00:01:01,920 Donc, au début, il genre de se sent comme une étape 29 00:01:01,920 --> 00:01:04,434 arrière en termes de sophistication. 30 00:01:04,434 --> 00:01:06,600 Mais il finit par être beaucoup plus puissant, certes, 31 00:01:06,600 --> 00:01:08,510 pour un chercheur en informatique, en fin de compte. 32 00:01:08,510 --> 00:01:09,540 >> Donc, nous allons jeter un coup d'oeil. 33 00:01:09,540 --> 00:01:13,850 Ici, je suis à CS50.io, par lequel vous pouvez vous connecter CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 Et tout comme dans Scratch, il ya trois principaux domaines à cet écran. 35 00:01:17,414 --> 00:01:20,080 Donc, sur le côté gauche, nous avons ce sera le navigateur de fichiers. 36 00:01:20,080 --> 00:01:22,413 Et il ya ce dossier au dessus, qui est maintenant vide 37 00:01:22,413 --> 00:01:24,690 depuis que je me suis débarrassé de tous mes fichiers avant super-section. 38 00:01:24,690 --> 00:01:27,599 Et voilà où nous enregistrer des fichiers C que nous écrivons. 39 00:01:27,599 --> 00:01:30,890 En haut à droite, nous avons un endroit où tous notre code va se faire par écrit. 40 00:01:30,890 --> 00:01:34,610 Et en effet, si je clique cela en plus, cette va me laisser choisir de nouveaux fichiers. 41 00:01:34,610 --> 00:01:38,310 Et ici, je peux commencer à écrire du code C ou, vraiment, un certain nombre d'autres langues. 42 00:01:38,310 --> 00:01:42,670 >> Et puis au fond où il dit jharvard @ ide50-- et la vôtre sera 43 00:01:42,670 --> 00:01:45,080 dire quelque chose d'un peu different-- Quel était ce nom? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Fenêtre de terminal. 46 00:01:49,310 --> 00:01:49,570 Oui. 47 00:01:49,570 --> 00:01:51,810 Ainsi, la fenêtre de terminal est la ligne dite de commande 48 00:01:51,810 --> 00:01:55,540 interface via laquelle vous pouvez interagir avec le système d'exploitation sous-jacent. 49 00:01:55,540 --> 00:01:58,220 Et pour l'instant, nous allons faire très peu utilisé this-- 50 00:01:58,220 --> 00:02:01,170 juste compiler, à regarder les messages d'erreur que nous voyons, 51 00:02:01,170 --> 00:02:02,347 et d'exécuter nos programmes. 52 00:02:02,347 --> 00:02:04,680 Mais finalement, nous allons de le faire beaucoup plus, aussi bien. 53 00:02:04,680 --> 00:02:07,490 Et vous pouvez même installer le logiciel et d'administrer votre espace de travail 54 00:02:07,490 --> 00:02:09,066 au sein CS50 IDE, ainsi. 55 00:02:09,066 --> 00:02:10,440 Mais plus sur cela une autre fois. 56 00:02:10,440 --> 00:02:12,689 >> Donc, nous allons aller de l'avant et à écrire un programme très simple juste 57 00:02:12,689 --> 00:02:15,064 de passer par une période d'échauffement de hello.c, qui est peut-être 58 00:02:15,064 --> 00:02:16,480 le programme le plus simple, nous pouvons écrire. 59 00:02:16,480 --> 00:02:18,330 Je l'ai déjà ouvert un nouvel onglet. 60 00:02:18,330 --> 00:02:24,310 Je vais aller de l'avant et dire inclure io.h. norme 61 00:02:24,310 --> 00:02:25,325 Puis int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 Et puis printf ("Bonjour, monde" n barre oblique inverse, près devis, 64 00:02:35,200 --> 00:02:39,480 fermer entre parenthèses, et point-virgule. 65 00:02:39,480 --> 00:02:39,990 >> D'accord. 66 00:02:39,990 --> 00:02:41,700 Alors maintenant, remarquez ma fenêtre est sans titre. 67 00:02:41,700 --> 00:02:44,840 Je suis donc très rapidement aller aller jusqu'à Fichier, Enregistrer. 68 00:02:44,840 --> 00:02:46,910 Et il est important que Je l'appelle pas «bonjour». 69 00:02:46,910 --> 00:02:49,243 Donc, une erreur très commune, surtout dans un ensemble de problèmes, 70 00:02:49,243 --> 00:02:52,530 est d'appeler accidentellement simplement votre programme "eau" ou "gourmand" ou "Mario" 71 00:02:52,530 --> 00:02:53,890 ou «crédit» ou similaire. 72 00:02:53,890 --> 00:02:55,970 Mais vous voulez vraiment faire vous que vous avez l'extension de fichier 73 00:02:55,970 --> 00:02:58,928 parce que tel est le seul moyen qui le compilateur et également l'éditeur de code 74 00:02:58,928 --> 00:03:00,710 sait que vous êtes effectivement l'écriture de code C. 75 00:03:00,710 --> 00:03:02,280 Alors laissez-moi aller de l'avant et cliquez sur Enregistrer. 76 00:03:02,280 --> 00:03:05,710 >> Et maintenant, aussi, ce que CS50 IDE a fait pour nous est il est aussi 77 00:03:05,710 --> 00:03:07,120 la coloration syntaxique tout. 78 00:03:07,120 --> 00:03:08,822 Donc ça fait tout très coloré. 79 00:03:08,822 --> 00:03:10,780 Et tout le but de qui est non fonctionnel. 80 00:03:10,780 --> 00:03:14,290 Il est juste de tirer mes yeux à la conceptuellement différentes pièces 81 00:03:14,290 --> 00:03:15,310 de ce programme. 82 00:03:15,310 --> 00:03:17,570 Donc, nous allons aller de l'avant et de compiler ce. 83 00:03:17,570 --> 00:03:19,490 Et je peux compiler ce dans un couple des manières. 84 00:03:19,490 --> 00:03:22,010 Et dans une semaine, la façon vieille école que nous avons fait 85 00:03:22,010 --> 00:03:26,250 il était littéralement à la «La hello.c clang." de commande 86 00:03:26,250 --> 00:03:27,596 Et puis je frappe sur Entrée. 87 00:03:27,596 --> 00:03:29,720 Et rien ne semble se passer dans la fenêtre de terminal. 88 00:03:29,720 --> 00:03:32,654 Mais qu'est-ce que le changement dans l'IDE? 89 00:03:32,654 --> 00:03:35,320 Où, encore une fois, IDE signifie simplement Environnement de développement intégré. 90 00:03:35,320 --> 00:03:38,360 Il est une façon élégante de dire ce développement intégré 91 00:03:38,360 --> 00:03:40,620 environnement pour le développement de logiciels. 92 00:03:40,620 --> 00:03:42,477 Donc, ce qui ne changera dans l'interface utilisateur? 93 00:03:42,477 --> 00:03:44,310 Qu'avez-vous remarqué qui est différent, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: je remarquai quelque chose sous la IDE50 dossier ici. 95 00:03:47,100 --> 00:03:47,850 >> DAVID MALAN: Ouais. 96 00:03:47,850 --> 00:03:50,230 Donc, ici, non seulement avons-nous "hello.c." 97 00:03:50,230 --> 00:03:53,120 Nous avons aussi «a.out», qui est genre d'un nom stupide pour un programme. 98 00:03:53,120 --> 00:03:56,430 Mais en effet, il est le nom par défaut d'un programme lorsque vous venez de compiler votre code 99 00:03:56,430 --> 00:03:59,110 et ne pas dire au compilateur ce fichier à la sortie. 100 00:03:59,110 --> 00:04:01,790 Donc, si je veux courir, je besoin de dire la compiler-- 101 00:04:01,790 --> 00:04:05,340 ou plutôt, je dois dire l'espace de travail que je 102 00:04:05,340 --> 00:04:09,780 vouloir exécuter le programme appelé "a.out". 103 00:04:09,780 --> 00:04:10,550 Entrer. 104 00:04:10,550 --> 00:04:12,474 Et il ya "bonjour, monde. "Maintenant, le" ./ ". 105 00:04:12,474 --> 00:04:13,390 est réellement importante. 106 00:04:13,390 --> 00:04:16,050 Même si normalement nous ne écrire les noms des commandes, 107 00:04:16,050 --> 00:04:19,060 quand il est un programme que vous avez écrite, vous ne voulez dire "./" 108 00:04:19,060 --> 00:04:22,460 parce que dit explicitement Linux que vous souhaitez exécuter un programme appelé 109 00:04:22,460 --> 00:04:26,930 "a.out" qui est dans ce domaine, où les points signifie ce répertoire que je suis actuellement 110 00:04:26,930 --> 00:04:31,600 dans, qui se trouve être appelé espace de travail, "a.out. 111 00:04:31,600 --> 00:04:35,410 Parce que si je viens de dire "a.out," Entrez, Je vais obtenir "commande a.out pas 112 00:04:35,410 --> 00:04:38,035 trouvé "parce que le computer-- parce que je inventé "a.out;" 113 00:04:38,035 --> 00:04:40,910 il ne vient pas avec l'computer-- ne sait pas où chercher, 114 00:04:40,910 --> 00:04:43,590 même si elle est juste sous mon nez, pour ainsi dire. 115 00:04:43,590 --> 00:04:44,090 D'ACCORD. 116 00:04:44,090 --> 00:04:49,910 Donc, nous pourrions changer cela en être «clang -o bonjour hello.c." 117 00:04:49,910 --> 00:04:53,030 Et si je appuyez sur Entrée, ce programme est ce que cela va sortie pour moi? 118 00:04:53,030 --> 00:04:55,710 Quel est le nom du fichier? 119 00:04:55,710 --> 00:04:57,500 Ouais, dans le dos. 120 00:04:57,500 --> 00:04:58,479 C'est vrai. "Salut." 121 00:04:58,479 --> 00:05:00,520 Donc, "bonjour" va être le nom du programme 122 00:05:00,520 --> 00:05:04,610 parce que nous avons utilisé un soi-disant commande argument de la ligne, qui est juste 123 00:05:04,610 --> 00:05:08,120 une façon de changer le comportement des le compilateur à fait sortie 124 00:05:08,120 --> 00:05:09,450 un nom de fichier spécifique. 125 00:05:09,450 --> 00:05:12,400 Et en effet, si je zoome sortir et chercher ici, 126 00:05:12,400 --> 00:05:17,430 maintenant je dois non seulement «a.out» et "hello.c» mais aussi «bonjour," ainsi. 127 00:05:17,430 --> 00:05:22,410 Alors maintenant, je peux le faire "./hello," Entrez. 128 00:05:22,410 --> 00:05:23,640 Et il ya "Bonjour, monde." 129 00:05:23,640 --> 00:05:25,640 Mais cette lastly-- et sera désormais la convention 130 00:05:25,640 --> 00:05:27,590 on utilise tout au long de la semestre, typically-- 131 00:05:27,590 --> 00:05:30,070 est que vous pouvez aussi simplement dire «bonjour faire." 132 00:05:30,070 --> 00:05:33,370 Et en effet, il est dit qu'il est en place à ce jour, car il existe déjà. 133 00:05:33,370 --> 00:05:37,860 Permettez-moi aller de l'avant et à enlever, avec la commande rm, à la fois "a.out" - 134 00:05:37,860 --> 00:05:39,644 et dire "enlever a.out de fichier régulier?" 135 00:05:39,644 --> 00:05:41,810 Cela signifie tout simplement, êtes-vous sûr de vouloir supprimer? 136 00:05:41,810 --> 00:05:42,880 Je vais dire oui. 137 00:05:42,880 --> 00:05:46,690 Et puis, je vais retirer "bonjour" mais pas "hello.c." 138 00:05:46,690 --> 00:05:49,920 Je vais dire «oui» explicite, mais "y" est suffisante, aussi bien. 139 00:05:49,920 --> 00:05:52,140 >> Et maintenant remarquer si je tapez ls-- qui, rappelons, 140 00:05:52,140 --> 00:05:55,540 signifie films-- il répertorie tous des fichiers dans mon dossier. 141 00:05:55,540 --> 00:05:57,850 Et en effet, si je zoome sortir et chercher en haut à gauche, 142 00:05:57,850 --> 00:05:59,730 il confirme que ce qui est dans ce dossier, même 143 00:05:59,730 --> 00:06:04,990 si elle est étiqueté comme IDE50 ici et non l'espace de travail, il est juste "hello.c." 144 00:06:04,990 --> 00:06:09,152 Alors maintenant, ici-bas, si je ne «faire bonjour," Entrez, 145 00:06:09,152 --> 00:06:12,360 maintenant je vois une commande beaucoup plus longtemps, mais un commande plus sophistiquée qui va 146 00:06:12,360 --> 00:06:13,940 pour être utile dans les semaines à venir. 147 00:06:13,940 --> 00:06:16,720 Et maintenant, je peux dire "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Prenons donc un tour rapide une autre commande Linux. 149 00:06:19,257 --> 00:06:21,840 Alors, pourquoi ne prenons-nous pas une étape arrière et effectivement regarder C plus 150 00:06:21,840 --> 00:06:25,020 généralement, la transition à partir de zéro à C, et ensuite conclure avec un regard 151 00:06:25,020 --> 00:06:27,305 au premier problème mettre en C. Tout droit. 152 00:06:27,305 --> 00:06:30,430 Donc, je vais aller de l'avant et juste propre mon espace de travail avec Control-L juste 153 00:06:30,430 --> 00:06:31,429 de garder l'écran propre. 154 00:06:31,429 --> 00:06:33,520 Mais cela n'a pas fonctionnelle un impact contraire. 155 00:06:33,520 --> 00:06:35,820 >> Rappelons que nous avons vu quelques commandes maintenant. 156 00:06:35,820 --> 00:06:39,900 Donc, nous avons vu clang, qui généralement vous ne devra pas exécuter manuellement plus. 157 00:06:39,900 --> 00:06:41,650 Nous allons plutôt utiliser make. 158 00:06:41,650 --> 00:06:45,290 Mais nous avons aussi vu ls, qui montre un liste des fichiers dans mon répertoire. 159 00:06:45,290 --> 00:06:48,750 Et maintenant, pourquoi est il ya deux there-- fichiers maintenant, "bonjour" et "hello.c." 160 00:06:48,750 --> 00:06:52,240 Pourquoi est-il une étoile ou un astérisque après «bonjour»? 161 00:06:52,240 --> 00:06:54,900 Qu'est-ce que cela signifie, en fonction sur ce que nous avons vu dans la première semaine? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Qu'en pensez-vous? 164 00:07:00,400 --> 00:07:02,742 Qu'est-ce que l'étoile signifie? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: pour-- le programme "bonjour"? 166 00:07:04,614 --> 00:07:05,530 DAVID MALAN: "Bonjour *". 167 00:07:05,530 --> 00:07:06,330 Oui. 168 00:07:06,330 --> 00:07:07,760 Oh yeah? 169 00:07:07,760 --> 00:07:08,639 Oh, exécutable. 170 00:07:08,639 --> 00:07:09,180 C'est vrai. 171 00:07:09,180 --> 00:07:10,890 Cela signifie donc que "bonjour" est exécutable. 172 00:07:10,890 --> 00:07:13,430 Donc, en effet, voilà pourquoi Je peux le faire "./hello." 173 00:07:13,430 --> 00:07:13,930 D'accord. 174 00:07:13,930 --> 00:07:15,179 Alors qu'est-ce que je peux faire ici? 175 00:07:15,179 --> 00:07:17,290 Eh bien, il se trouve que je peux créer également des annuaires. 176 00:07:17,290 --> 00:07:20,924 Alors laissez-moi aller de l'avant et de créer, par exemple, un répertoire «pset1". 177 00:07:20,924 --> 00:07:23,590 Et la spécification du problème posé vous fera faire exactement cela, 178 00:07:23,590 --> 00:07:25,260 de sorte que vous ne devez pas vous rappeler aujourd'hui. 179 00:07:25,260 --> 00:07:27,340 Mais "pset1 mkdir" semble avoir aucun impact. 180 00:07:27,340 --> 00:07:30,540 Mais encore une fois, aucun message d'erreur est généralement une bonne chose. 181 00:07:30,540 --> 00:07:34,060 Donc, si je tape "ls" maintenant-- ah, maintenant Je dois un fichier exécutable appelé 182 00:07:34,060 --> 00:07:36,570 "bonjour", un fichier appelé C "hello.c." 183 00:07:36,570 --> 00:07:40,860 Et puis le slash, ainsi parler, signifie que cela est un répertoire. 184 00:07:40,860 --> 00:07:42,510 >> Donc, en effet, maintenant je veux l'ouvrir. 185 00:07:42,510 --> 00:07:45,730 Et je ne double-cliquez pas sur elle comme dans une interface graphique, un environnement graphique. 186 00:07:45,730 --> 00:07:48,550 Je dis à la place "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Entrer. 188 00:07:49,640 --> 00:07:53,100 Rien d'intéressant semble avoir arrivé sauf mon petit prompt 189 00:07:53,100 --> 00:07:57,300 ici-- ce est la manière de Linux de rappeler moi où je suis, si ce dossier est ouvert. 190 00:07:57,300 --> 00:08:00,080 Il vient de me dire explicitement par opposition à la forme graphique. 191 00:08:00,080 --> 00:08:05,100 Et si je tape "ls", pourquoi dois-je vois un autre incitez immédiatement, pensez-vous, 192 00:08:05,100 --> 00:08:07,269 quand je lister le contenu d'pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Vous faites probablement pas avoir quelque chose là-dedans. 194 00:08:09,310 --> 00:08:09,630 DAVID MALAN: Ouais. 195 00:08:09,630 --> 00:08:11,510 Alors nous avons évidemment pas rien créé là 196 00:08:11,510 --> 00:08:13,150 parce que je viens de créer le répertoire. 197 00:08:13,150 --> 00:08:17,690 Maintenant, si je voulais créer un file-- pour Ainsi, je pourrais créer un nouveau fichier. 198 00:08:17,690 --> 00:08:20,190 Et puis, je pourrais aller à Enregistrer et enregistrer en tant que, 199 00:08:20,190 --> 00:08:23,090 comme, "mario.c" si vous faites l'édition standard de pset un. 200 00:08:23,090 --> 00:08:27,610 Et puis, comme tout Mac ou PC, simplement choisissez le dossier "pset1, Enregistrer. 201 00:08:27,610 --> 00:08:28,740 Et maintenant, le fichier est vide. 202 00:08:28,740 --> 00:08:31,160 Mais nous allons effectuer un zoom avant pour une deuxième. 203 00:08:31,160 --> 00:08:32,470 Faisons ls ici. 204 00:08:32,470 --> 00:08:34,470 Maintenant, nous voyons "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Donc, il ya quelques autres commandes qui valent gardant à l'esprit au cours time-- 206 00:08:37,850 --> 00:08:41,200 claire, ou Control-L est ce que je l'ai été frapper; mkdir nous avons vu; 207 00:08:41,200 --> 00:08:45,240 rm nous l'avons vu, ainsi, ce qui est pour l'enlèvement ou la suppression d'un fichier. 208 00:08:45,240 --> 00:08:49,310 Méfiez-vous, vous pouvez also-- et si vous regardez à des tutoriels en ligne, vous aurez rm -rf 209 00:08:49,310 --> 00:08:52,630 est un moyen très courant de dire supprimer un dossier qui a des choses en elle. 210 00:08:52,630 --> 00:08:54,280 Juste être super, super prudent. 211 00:08:54,280 --> 00:08:58,780 -rf signifie récursive supprimer quoi que ce soit 212 00:08:58,780 --> 00:09:01,150 vous essayez de supprimer et force le supprimer. 213 00:09:01,150 --> 00:09:04,630 Donc récursive moyens si elle est un dossier avec un dossier avec un dossier avec un dossier, 214 00:09:04,630 --> 00:09:05,690 supprimer tous. 215 00:09:05,690 --> 00:09:08,680 Et des moyens de force ne sont même pas me demander oui ou non, je suis sûr? 216 00:09:08,680 --> 00:09:11,960 Donc, il est un moyen super dangereux la suppression des tas de trucs rapidement. 217 00:09:11,960 --> 00:09:17,210 Mais ne beware-- trop souvent une intrépide étudiant accidentellement supprimer, par exemple, pset 218 00:09:17,210 --> 00:09:18,000 une, par exemple. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: Et si ils ont juste -r faire, ils vont 220 00:09:19,833 --> 00:09:21,870 de les interroger sur chaque fichier. 221 00:09:21,870 --> 00:09:22,790 >> DAVID MALAN: Quel est modérément ennuyeux. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Ouais. 223 00:09:23,480 --> 00:09:25,813 >> DAVID MALAN: Voilà pourquoi beaucoup d'entre nous, l'auto inclus, 224 00:09:25,813 --> 00:09:27,070 suis dans l'habitude d'utiliser -rf. 225 00:09:27,070 --> 00:09:27,861 Mais il est dangereux. 226 00:09:27,861 --> 00:09:29,010 Donc, l'acheteur se méfier. 227 00:09:29,010 --> 00:09:31,050 Et puis mv est une sorte de intéressant nommé. 228 00:09:31,050 --> 00:09:33,600 Voilà donc la commande de mouvement, qui se sent un peu bizarre 229 00:09:33,600 --> 00:09:37,260 parce que vous pouvez en effet l'utiliser pour déplacer des fichiers d'un endroit à l'autre. 230 00:09:37,260 --> 00:09:39,970 Par exemple, supposons que je foiré. 231 00:09:39,970 --> 00:09:43,660 Supposons que je créé un nouveau fichier pour le pset. 232 00:09:43,660 --> 00:09:46,320 Et je l'ai enregistré comme "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Mais supposons que je accidentellement enregistrer dans IDE50-- donc dans mon espace de travail lui-même 234 00:09:49,970 --> 00:09:51,580 et non dans pset1. 235 00:09:51,580 --> 00:09:53,960 >> Vous pouvez voir autant en haut à gauche. 236 00:09:53,960 --> 00:09:55,284 Il ya "greedy.c." 237 00:09:55,284 --> 00:09:56,450 Et il ya quelques solutions. 238 00:09:56,450 --> 00:09:58,324 Donc un, je peux utiliser le de manière conviviale super- 239 00:09:58,324 --> 00:09:59,740 de simplement glisser-déposer. 240 00:09:59,740 --> 00:10:01,910 Et ce serait en fait résoudre ce problème. 241 00:10:01,910 --> 00:10:04,967 Mais aujourd'hui, nous essayons de regarder moyens les plus obscurs mais puissants 242 00:10:04,967 --> 00:10:05,550 de le faire. 243 00:10:05,550 --> 00:10:07,880 Alors permettez-moi de prendre "ls" dans pset1. 244 00:10:07,880 --> 00:10:09,690 Et je ne vois que "mario.c." 245 00:10:09,690 --> 00:10:13,450 Permettez-moi aller de l'avant et de faire "cd ..". 246 00:10:13,450 --> 00:10:15,320 Alors CD est à nouveau changement de répertoire. 247 00:10:15,320 --> 00:10:18,130 «..» Signifie que, si? 248 00:10:18,130 --> 00:10:21,100 La dernière fois que je l'ai dit "cd pset1 "d'aller dans pset1. 249 00:10:21,100 --> 00:10:24,360 Donc, quand je dis "cd ..", ce que je fais? 250 00:10:24,360 --> 00:10:24,910 En arrière. 251 00:10:24,910 --> 00:10:25,150 Oui. 252 00:10:25,150 --> 00:10:26,750 >> Cela va donc au parent soi-disant. 253 00:10:26,750 --> 00:10:29,730 Remonter d'un niveau, comme sortant d'un dossier. 254 00:10:29,730 --> 00:10:30,500 Donc Entrée. 255 00:10:30,500 --> 00:10:31,900 Et en effet, regardez ce qu'il a fait. 256 00:10:31,900 --> 00:10:37,070 Il m'a touché juste en espace de travail à la place dans de pset1, qui se trouve dans l'espace de travail. 257 00:10:37,070 --> 00:10:39,710 Et maintenant, si je tape "ls", il ya tout un tas de trucs. 258 00:10:39,710 --> 00:10:41,650 Dans il est "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Alors maintenant, laissez-moi utiliser mv littéralement déplacer "greedy.c" dans pset1. 260 00:10:48,720 --> 00:10:51,120 Et donc beaucoup de commandes Linux travailler exactement comme cela. 261 00:10:51,120 --> 00:10:54,470 Ils prennent aucun argument ou ils prennent un argument ou ils prennent deux ligne de commande 262 00:10:54,470 --> 00:10:55,449 arguments et ainsi de suite. 263 00:10:55,449 --> 00:10:57,240 Et dans ce cas, il est faire littéralement ce que 264 00:10:57,240 --> 00:11:01,670 dit-il, mais succinctly-- greedy.c déplacer dans pset1. 265 00:11:01,670 --> 00:11:02,310 Entrer. 266 00:11:02,310 --> 00:11:03,310 Rien ne semble se produire. 267 00:11:03,310 --> 00:11:06,180 Mais si je fais un ls nouveau, avide a disparu. 268 00:11:06,180 --> 00:11:12,437 Et si je le fais "cd pset1", Entrée, puis ls nouveau, maintenant il est au bon endroit. 269 00:11:12,437 --> 00:11:14,270 En aparté, si pour certains reason-- particulier 270 00:11:14,270 --> 00:11:16,194 si vous avez intermittente connectivité réseau 271 00:11:16,194 --> 00:11:18,360 ou vous promener le campus avec le couvercle de votre ordinateur portable 272 00:11:18,360 --> 00:11:20,180 fermé puis l'ouvrir encore et votre espace de travail 273 00:11:20,180 --> 00:11:21,730 semble un peu hors de synchronisation, pas une grosse affaire. 274 00:11:21,730 --> 00:11:23,646 Juste recharger votre navigateur fenêtre, et il devrait 275 00:11:23,646 --> 00:11:26,339 resynchronisation de sorte que la gauche navigateur de fichiers ressemble exactement 276 00:11:26,339 --> 00:11:27,380 comme la fenêtre du terminal. 277 00:11:27,380 --> 00:11:27,921 Ne pas s'inquiéter. 278 00:11:27,921 --> 00:11:31,460 En cas de doute, rechargez la page, de sorte Tant que vous avez enregistré les fichiers déjà. 279 00:11:31,460 --> 00:11:31,960 D'ACCORD. 280 00:11:31,960 --> 00:11:34,710 Donc mv peut également être utilisé pour renommer les fichiers. 281 00:11:34,710 --> 00:11:36,760 Et nous allons jeter un oeil à cette dernière commande ici. 282 00:11:36,760 --> 00:11:39,950 Donc suppose-- et cela est super-commune, aussi, dès le début. 283 00:11:39,950 --> 00:11:46,400 Certains étudiants l'occasion de créer un fichier appelé, disons say-- ce qui est un autre? 284 00:11:46,400 --> 00:11:47,730 Comme "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Donc, je vais crier, pour aucune raison, dans tous les bouchons. 286 00:11:51,080 --> 00:11:53,190 Mais cela ne le nom correct pour le fichier 287 00:11:53,190 --> 00:11:56,660 si seulement parce que notre problème réglé spécification ne vous dit pas 288 00:11:56,660 --> 00:11:59,430 pour enregistrer le fichier en tant que tous les bouchons "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Au lieu de cela, nous nous attendons "water.c" en minuscules. 290 00:12:01,320 --> 00:12:03,140 Et, de fait, ceci est problématique car check50, 291 00:12:03,140 --> 00:12:04,370 un programme que vous allez pour répondre au problème 292 00:12:04,370 --> 00:12:07,350 définir celui qui teste automatiquement la justesse de votre code 293 00:12:07,350 --> 00:12:11,615 va crier à vous si il ne peut pas trouver "water.c" en minuscules. 294 00:12:11,615 --> 00:12:12,712 >> Donc, je dois résoudre ce problème. 295 00:12:12,712 --> 00:12:14,920 Donc, beaucoup de différentes manières ce faire, le premier d'entre eux 296 00:12:14,920 --> 00:12:18,330 serait de contrôle-clic ou un clic droit le nom du fichier et il suffit de changer Renommer. 297 00:12:18,330 --> 00:12:19,740 Tout à fait bien de le faire. 298 00:12:19,740 --> 00:12:21,820 Mais encore une fois, aujourd'hui, nous allons faire un peu fantaisistes. 299 00:12:21,820 --> 00:12:26,680 Prenons mv pour changer "WATER.C" à "water.c." 300 00:12:26,680 --> 00:12:30,690 Ainsi, vous pouvez également utiliser le premier argument pour le renommer au second argument 301 00:12:30,690 --> 00:12:34,455 Si le second argument est pas, en fait, un dossier ou un nom de répertoire. 302 00:12:34,455 --> 00:12:35,120 >> D'accord. 303 00:12:35,120 --> 00:12:39,560 Et enfin, un peu trick-- donc je suis en mon répertoire d'espace de travail pour le moment. 304 00:12:39,560 --> 00:12:43,660 Si je veux entrer dans un jeu de processeurs, Je peux certainement taper "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Mais il est si fastidieux de taper "pset1» ou plus les noms de fichiers ou des noms de répertoire 306 00:12:47,260 --> 00:12:47,980 encore. 307 00:12:47,980 --> 00:12:51,960 Donc, très souvent dans Linux, ce qui vous pouvez faire est de commencer à taper "PSE" 308 00:12:51,960 --> 00:12:56,100 et juste vous ennuyer, appuyez sur Tab, et laisser la figure de l'ordinateur il pour vous. 309 00:12:56,100 --> 00:12:58,190 Super utiles pour entrer dans cette habitude. 310 00:12:58,190 --> 00:13:01,079 Le seul hic est que si vous avez plusieurs fichiers ou dossiers à partir 311 00:13:01,079 --> 00:13:02,870 par la lettre "p" ou "ps", vous pourriez avoir 312 00:13:02,870 --> 00:13:05,525 de taper un peu plus avant la ordinateur sait quoi faire. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Nous aimons raccourcis. 314 00:13:06,820 --> 00:13:08,695 >> DAVID MALAN: Cette volonté vous faire économiser beaucoup de temps. 315 00:13:08,695 --> 00:13:11,930 Et aussi, comme nous le disions dans la leçon, vous peut défiler vers le haut dans l'histoire, de haut en bas, 316 00:13:11,930 --> 00:13:15,461 pour trouver récemment exécuté commandes, aussi bien. 317 00:13:15,461 --> 00:13:15,960 D'accord. 318 00:13:15,960 --> 00:13:20,904 Alors maintenant, nous allons tourner notre attention à un programme simple, bonjour monde. 319 00:13:20,904 --> 00:13:22,195 Donc, nous avons compilé ce exactement. 320 00:13:22,195 --> 00:13:24,050 Et maintenant, pourquoi ne prenons-nous pas un regard sur les types de données 321 00:13:24,050 --> 00:13:26,776 et ensuite la transition de certaines blocs de gratter correspondant à C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Alors maintenant que vous avez commencé écrire des programmes en C, 324 00:13:30,031 --> 00:13:32,530 nous allons commencer à parler sur les types de données et variables. 325 00:13:32,530 --> 00:13:37,570 Ainsi, certains types de données que vous voudrait savoir à partir de maintenant 326 00:13:37,570 --> 00:13:39,400 sont ceux qui sont surligné en bleu. 327 00:13:39,400 --> 00:13:42,420 Nous avons donc int première, qui signifie entier. 328 00:13:42,420 --> 00:13:46,075 Et qui détient entiers, comme vous pourrait avoir guessed-- donc 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 et tous les autres des nombres entiers que vous pouvez penser. 330 00:13:47,950 --> 00:13:48,730 >> DAVID MALAN: Et aussi négative. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: Et aussi négatives, yep. 332 00:13:50,220 --> 00:13:51,450 Et 0. 333 00:13:51,450 --> 00:13:54,250 Ensuite, nous avons flotteurs, qui sont des nombres à virgule flottante. 334 00:13:54,250 --> 00:13:58,360 Voilà donc tous les nombres réels qui ont des points décimaux. 335 00:13:58,360 --> 00:14:03,960 Donc, 5.0, 5.2, et plus encore chiffres après la virgule, 336 00:14:03,960 --> 00:14:05,620 ainsi, ainsi que les effets négatifs. 337 00:14:05,620 --> 00:14:07,530 Ensuite, nous avons l'omble qui est un caractère. 338 00:14:07,530 --> 00:14:10,240 Donc je pense que nous avons parlé ceci en conférence d'aujourd'hui. 339 00:14:10,240 --> 00:14:15,682 Mais nous avons des lettres, pour example-- A, B, C-- qui peut être stocké sous forme de char. 340 00:14:15,682 --> 00:14:18,390 Mais ensuite, nous avons beaucoup plus de symboles qui peut être stocké comme un caractère. 341 00:14:18,390 --> 00:14:22,380 Et ceux qui sont stockés au format ASCII. 342 00:14:22,380 --> 00:14:25,280 >> Et puis nous avons bool, Quelles sont les booléens. 343 00:14:25,280 --> 00:14:29,067 Et ceux évaluée à true ou Faux ou 1 et 0, respectivement. 344 00:14:29,067 --> 00:14:31,650 DAVID MALAN: Et rappelez-vous que bool provient de la bibliothèque de CS50. 345 00:14:31,650 --> 00:14:33,300 Donc, il est pas intégré C, mais il est super utile 346 00:14:33,300 --> 00:14:34,850 d'avoir la notion du vrai et du faux. 347 00:14:34,850 --> 00:14:36,990 Et même si vous pourrait think-- fait amusant. 348 00:14:36,990 --> 00:14:43,700 Un bool techniquement besoin combien de bits, vraiment, pour représenter Vrai Faux rapport? 349 00:14:43,700 --> 00:14:47,910 Combien de bits pensez-vous vous auriez besoin, au maximum? 350 00:14:47,910 --> 00:14:48,790 Oui, un seul. 351 00:14:48,790 --> 00:14:52,077 Donc, il se trouve que C ne peut pas vous donner juste un peu. 352 00:14:52,077 --> 00:14:54,160 La plus petite unité de mesure vous pouvez obtenir est de huit. 353 00:14:54,160 --> 00:14:57,090 Donc, il est un peu inutile qu'ils vous sont l'aide d'un octet entier, ou huit bits, 354 00:14:57,090 --> 00:14:58,340 pour représenter Vrai ou Faux. 355 00:14:58,340 --> 00:15:01,807 Mais cela est juste la façon dont il est implémenté en C par la bibliothèque CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: Et puis ceux qui nous sommes ne vais pas parler aussi largement 357 00:15:04,890 --> 00:15:08,060 droit maintenant-- double, voilà pour les plus gros flotteurs. 358 00:15:08,060 --> 00:15:09,811 Long long et court sont également des entiers. 359 00:15:09,811 --> 00:15:10,643 DAVID MALAN: En effet. 360 00:15:10,643 --> 00:15:13,190 En édition pirate de pset un, nous utilisons en fait un long long. 361 00:15:13,190 --> 00:15:15,801 Mais pour l'édition standard, il ne devrait pas être nécessaire. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 D'ACCORD. 364 00:15:17,361 --> 00:15:20,110 Donc, vous devriez être operators-- probablement familier avec la plupart de ces. 365 00:15:20,110 --> 00:15:22,620 Addition, +; soustraction, -. 366 00:15:22,620 --> 00:15:24,070 Pour la multiplication, nous avons le *. 367 00:15:24,070 --> 00:15:25,900 Donc, pas le X que nous utilisons habituellement. 368 00:15:25,900 --> 00:15:27,840 Division, nous avons la barre oblique inverse. 369 00:15:27,840 --> 00:15:31,380 Et modulo est notre dernier opérateur nous allons parler maintenant. 370 00:15:31,380 --> 00:15:35,610 Il est un opérateur qui nous permet de prendre le reste d'une division. 371 00:15:35,610 --> 00:15:40,630 Donc, si nous avons 4% 2, 4 divisé 2 est par deux avec un reste de 0. 372 00:15:40,630 --> 00:15:41,740 Donc 4% 2 est 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 est une. 374 00:15:42,950 --> 00:15:44,870 4% 5 est 4, comme vous pourriez avoir deviné. 375 00:15:44,870 --> 00:15:48,860 Et rappelez-vous lorsque vous utilisez tous ces aux opérateurs d'utiliser les règles PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID MALAN: Donc pour être clair, si vous faire 4% 2, pourquoi est-ce que 0, exactement? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Parce que divisé par 4 La figure 2 est un reste 2 avec de 0. 378 00:15:57,480 --> 00:16:00,752 Donc modulo nous donne que reste que plutôt que le résultat de la division. 379 00:16:00,752 --> 00:16:02,960 DAVID MALAN: Et en effet, ce que nous allons trouver cela utile 380 00:16:02,960 --> 00:16:05,640 pour est que, dans certains problèmes ce est pas nécessairement une, 381 00:16:05,640 --> 00:16:08,040 si vous voulez avoir le effet de restreindre vous 382 00:16:08,040 --> 00:16:10,720 pour une plage de numéros comme 0 à quelque chose, 383 00:16:10,720 --> 00:16:13,904 vous pouvez utiliser modulo pour envelopper plus tôt que comme les 2 milliards 384 00:16:13,904 --> 00:16:16,320 ou la valeur de 4 milliards que nous avons parlé dans la leçon. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Ouais. 386 00:16:16,870 --> 00:16:19,429 Et même dans les "gourmands" nous pourrions. 387 00:16:19,429 --> 00:16:21,345 DAVID MALAN: Oui, problème réglé un, aussi. 388 00:16:21,345 --> 00:16:22,520 MARIA: Ouais, agréable. 389 00:16:22,520 --> 00:16:24,340 DAVID MALAN: Bon soupçon. 390 00:16:24,340 --> 00:16:25,750 MARIA: Désolé. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- sorte pour les opérateurs booléens, 392 00:16:28,590 --> 00:16:31,770 nous allons parler de tout de ces que vous voyez ici. 393 00:16:31,770 --> 00:16:35,310 Donc maintenant, nous avons deux signes d'égalité inscrites à la égaux. 394 00:16:35,310 --> 00:16:38,650 Donc, ce sont des fins de comparaison. 395 00:16:38,650 --> 00:16:40,830 Jusqu'à présent, nous avons seulement vu un signe égal. 396 00:16:40,830 --> 00:16:44,870 Voilà où nous assignons une valeur à une variable. 397 00:16:44,870 --> 00:16:50,160 Donc, si nous avons vu int n = 5, puis nous avons attribué 5 à la variable n. 398 00:16:50,160 --> 00:16:55,600 Mais si nous voulons utiliser == pour comparaison, nous pouvons vérifier si n == 5. 399 00:16:55,600 --> 00:16:58,310 Et si n == 5, alors cela est vrai. 400 00:16:58,310 --> 00:17:01,950 >> Opérateurs booléens Donc, nous permettra, au fond, 401 00:17:01,950 --> 00:17:04,670 à évaluer booléenne expressions à vrai ou faux. 402 00:17:04,670 --> 00:17:07,819 Donc pas equals-- nous avons la point d'exclamation et égaux. 403 00:17:07,819 --> 00:17:14,240 Donc, nous pourrions aussi vérifier si n ne égale 5-- si n! = 5. 404 00:17:14,240 --> 00:17:17,640 Moins de moins de ou égal à, supérieur à, supérieur ou égal à, 405 00:17:17,640 --> 00:17:20,720 puis nous avons la logique ET et le OU logique. 406 00:17:20,720 --> 00:17:24,060 Et ceux qui nous permettent d'évaluer multiples expressions booléennes ensemble 407 00:17:24,060 --> 00:17:27,930 à venir essentiellement ensemble comme ensemble d'une expression booléenne. 408 00:17:27,930 --> 00:17:34,970 Donc, si nous voulons trouver un certain nombre, dire, qui est supérieure à 5 mais inférieure à 15 409 00:17:34,970 --> 00:17:39,810 dans le même temps, nous devrions utiliser la opérateur logique ET pour voir si n est 410 00:17:39,810 --> 00:17:42,937 supérieure à 5 && n inférieur à 15. 411 00:17:42,937 --> 00:17:44,770 DAVID MALAN: Et ici, aussi, il est vraiment facile 412 00:17:44,770 --> 00:17:47,290 tôt accidentellement il suffit d'utiliser un seul esperluette 413 00:17:47,290 --> 00:17:48,572 ou d'une seule barre verticale. 414 00:17:48,572 --> 00:17:51,280 Et nous espérons que le compilateur crier à vous, car ils réellement 415 00:17:51,280 --> 00:17:52,530 avoir un sens très différent. 416 00:17:52,530 --> 00:17:55,660 Pour ceux qui sont curieux, ils sont utilisé pour les opérations au niveau du bit, 417 00:17:55,660 --> 00:17:57,197 fonctionnant sur des bits individuels. 418 00:17:57,197 --> 00:17:58,780 Mais vous ne voulez la paire d'entre eux ici. 419 00:17:58,780 --> 00:18:01,560 Et super important est que première, le signe égal, 420 00:18:01,560 --> 00:18:05,270 qui est l'opérateur d'égalité que contrairement à l'opérateur d'affectation. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: Et la barre verticale est situé entre la suppression et retour. 422 00:18:08,552 --> 00:18:09,260 DAVID MALAN: Oui. 423 00:18:09,260 --> 00:18:11,420 Sur un clavier typique États-Unis. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Donc, nous allons sauter à droite dans instructions conditionnelles. 426 00:18:15,890 --> 00:18:18,300 Dans Scratch, vous avez déjà vu, sans doute, 427 00:18:18,300 --> 00:18:22,730 si les états qui vous permettent de vérifier si quelque chose est vrai, alors 428 00:18:22,730 --> 00:18:23,660 Fais autre chose. 429 00:18:23,660 --> 00:18:28,410 Donc, vous aurait voulu pour vérifier si votre sprite est 430 00:18:28,410 --> 00:18:31,410 toucher une autre sprite ou de la frontière de votre écran. 431 00:18:31,410 --> 00:18:35,520 Et alors vous pourriez avoir voulu terminer le jeu ou faire autre chose. 432 00:18:35,520 --> 00:18:40,000 Donc, la syntaxe pour que est "if (condition)." 433 00:18:40,000 --> 00:18:46,820 Donc, si votre sprite est en contact avec quelque chose, puis faire est à l'intérieur des accolades. 434 00:18:46,820 --> 00:18:48,980 >> Ensuite, nous avons les déclarations if-else. 435 00:18:48,980 --> 00:18:54,080 Permet Else nous fassions quelque chose si la condition que nous 436 00:18:54,080 --> 00:18:55,870 vérifier dans le début est pas vrai. 437 00:18:55,870 --> 00:19:01,530 Donc, si le sprite est de toucher le frontière ce faire, d'autre faire quelque chose d'autre. 438 00:19:01,530 --> 00:19:04,030 Donc contraire faire autre chose. 439 00:19:04,030 --> 00:19:07,530 Ensuite, nous avons un petit exemple pour ceci. 440 00:19:07,530 --> 00:19:11,551 Donc, si (military_time <12), nous vouloir printf "Bonjour!" 441 00:19:11,551 --> 00:19:13,300 Sinon nous allons printf "Bonsoir!" 442 00:19:13,300 --> 00:19:14,860 Exemple de base. 443 00:19:14,860 --> 00:19:15,680 >> DAVID MALAN: Bon. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Alors maintenant, nous avons les déclarations switch. 446 00:19:18,560 --> 00:19:21,960 Mettez déclarations en général peut nous permettent de faire beaucoup de la même chose 447 00:19:21,960 --> 00:19:25,070 que nous venons de parler à propos avec des instructions if. 448 00:19:25,070 --> 00:19:29,440 Par exemple, en ce moment nous avons la forme générale de l'instruction switch 449 00:19:29,440 --> 00:19:33,870 qui nous permet de prendre une variable appelée n 450 00:19:33,870 --> 00:19:37,670 et le comparer à un grand nombre de des valeurs différentes, qui ici nous 451 00:19:37,670 --> 00:19:40,010 ont appelé constante1, constante2. 452 00:19:40,010 --> 00:19:41,150 Nous pouvons avoir beaucoup plus. 453 00:19:41,150 --> 00:19:42,930 Et ceux qui sont appelés cas. 454 00:19:42,930 --> 00:19:46,280 >> Donc, si nous avons un interrupteur Et cela fonctionne déclarer: 455 00:19:46,280 --> 00:19:50,580 seulement pour integers-- nous avons une variable dans ce cas qui est n. 456 00:19:50,580 --> 00:19:53,840 Si la variable n est égal à égale à Constant1, nous 457 00:19:53,840 --> 00:19:59,720 exécutera un certain bout de code ou quelque chose que nous voulons faire. 458 00:19:59,720 --> 00:20:01,280 Et puis nous briser. 459 00:20:01,280 --> 00:20:04,820 Donc la pause signifie que l'instruction switch 460 00:20:04,820 --> 00:20:08,120 va arrêter l'exécution si n est égal à Constant1, 461 00:20:08,120 --> 00:20:09,752 puis votre programme va se poursuivre. 462 00:20:09,752 --> 00:20:11,835 Il va sortir de la passer déclaration et il va 463 00:20:11,835 --> 00:20:13,520 continuer à faire autre chose. 464 00:20:13,520 --> 00:20:17,204 >> Toutefois, si n ne correspond pas à constante1, puis cas pour constante2 465 00:20:17,204 --> 00:20:17,870 seront vérifiés. 466 00:20:17,870 --> 00:20:21,750 Donc, si n est égal à constante2, cet autre extrait de code sera exécuté. 467 00:20:21,750 --> 00:20:23,850 Et puis, il va briser si tel est égal. 468 00:20:23,850 --> 00:20:27,580 Et alors nous pouvons avoir also-- pas nécessairement, though-- un cas de défaut, 469 00:20:27,580 --> 00:20:32,290 ce qui va se passer si n ne correspond pas à aucun des cas que vous avez énumérés. 470 00:20:32,290 --> 00:20:35,400 Et dans le cas de défaut, nous avons aussi ne pas nécessairement besoin d'une pause 471 00:20:35,400 --> 00:20:39,271 parce que l'instruction switch saura dont il a besoin pour mettre fin à la valeur par défaut après 472 00:20:39,271 --> 00:20:40,270 cas si tel est le cas. 473 00:20:40,270 --> 00:20:42,140 >> DAVID MALAN: Mais stylistiquement, Nous avons toujours mis là-dedans. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Ouais. 475 00:20:42,540 --> 00:20:42,710 >> DAVID MALAN: Ouais. 476 00:20:42,710 --> 00:20:44,750 Donc, surtout au départ, surtout si parmi ceux de moins 477 00:20:44,750 --> 00:20:47,458 confortable, je serais personnellement simplement recommander coller avec les ifs 478 00:20:47,458 --> 00:20:51,564 et IFS-elses et si-else-if-elses et ainsi de suite si seulement 479 00:20:51,564 --> 00:20:53,480 parce qu'ils sont un peu plus simple. 480 00:20:53,480 --> 00:20:56,142 Ceci est une belle optimisation, ou parfois même esthétiquement il 481 00:20:56,142 --> 00:20:57,350 rend le code plus lisible. 482 00:20:57,350 --> 00:20:59,599 Et en fait, probablement mi-semestre, nous allons voir un problème 483 00:20:59,599 --> 00:21:02,504 définir où il semble juste mieux et plus facile à lire pour les humains 484 00:21:02,504 --> 00:21:03,670 en utilisant une instruction switch. 485 00:21:03,670 --> 00:21:05,460 Mais ne vous inquiétez pas accroché à ce trop tôt. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Ouais. 487 00:21:05,680 --> 00:21:08,840 Si vous avez beaucoup d'if, il pourrait bien ne pas être très lisible. 488 00:21:08,840 --> 00:21:10,965 Il pourrait ne pas être très rapide pour vous d'aller à travers elle. 489 00:21:10,965 --> 00:21:13,230 Donc passer déclarations peuvent être très utile, aussi bien. 490 00:21:13,230 --> 00:21:17,900 Et aussi, ne pas faire pas remember-- oublier de mettre les pauses là. 491 00:21:17,900 --> 00:21:20,330 >> DAVID MALAN: Ne rappelez-vous ceci. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Parce que vous pourriez tomber travers d'un cas à l'autre. 493 00:21:24,890 --> 00:21:27,930 Donc, disons que ce cas constante1 n'a pas eu une instruction break en elle. 494 00:21:27,930 --> 00:21:31,920 Ensuite, nous pourrions tomber dans l'intérieur du boîtier constante2. 495 00:21:31,920 --> 00:21:35,070 Et nous ne voulons pas le faire si nous avons déjà atteint cas constante1 496 00:21:35,070 --> 00:21:37,830 et il est égal à n. 497 00:21:37,830 --> 00:21:45,100 >> Ainsi, par exemple, si nous avons une variable n qui contient un numéro de classe, 498 00:21:45,100 --> 00:21:48,990 et nous voulons voir ce que classe est-- si n est égal à 50, 499 00:21:48,990 --> 00:21:51,957 nous allons imprimer "CS50 est Introduction à l'informatique I. " 500 00:21:51,957 --> 00:21:53,040 Ensuite, nous allons faire une pause. 501 00:21:53,040 --> 00:21:53,920 Et c'est tout. 502 00:21:53,920 --> 00:21:55,950 Toutefois, si n est égal à 51, nous allons 503 00:21:55,950 --> 00:21:58,494 d'imprimer "CS51 est Présentation à l'informatique II. " 504 00:21:58,494 --> 00:21:59,910 Alors, encore une fois, nous allons faire une pause. 505 00:21:59,910 --> 00:22:05,080 Toutefois, si nous mettre 124, 61, toute autre numéro que vous pourriez penser, 506 00:22:05,080 --> 00:22:06,890 ou le programme ne va pas de reconnaître que. 507 00:22:06,890 --> 00:22:09,010 Donc, il va dire: «Désolé, je suis pas familier avec cette classe ". 508 00:22:09,010 --> 00:22:10,009 Et il va se casser. 509 00:22:10,009 --> 00:22:12,847 DAVID MALAN: Donc vous pouvez vraiment voir la si, d'autre si, idée d'autre ici. 510 00:22:12,847 --> 00:22:15,430 Il est juste différent de la syntaxe exprimer la même idée exacte. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Exactement. 512 00:22:17,690 --> 00:22:19,480 Maintenant, nous avons nos opérateurs ternaires. 513 00:22:19,480 --> 00:22:24,900 Donc opérateurs ternaires ont trois parts-- une condition, 514 00:22:24,900 --> 00:22:27,220 quelque chose à faire si cette condition est vrai, 515 00:22:27,220 --> 00:22:29,730 et puis quelque chose à faire si cette condition est fausse. 516 00:22:29,730 --> 00:22:33,400 Donc, vous voyez, au fond, la syntaxe de cela ici. 517 00:22:33,400 --> 00:22:37,792 Nous avons le point d'interrogation, et puis the-- appelons-nous cela? 518 00:22:37,792 --> 00:22:38,750 DAVID MALAN: Le côlon. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Je vous remercie. 521 00:22:39,599 --> 00:22:41,880 Pardon. 522 00:22:41,880 --> 00:22:45,800 Alors regardons notre exemple à voir si nous pouvons donner un sens this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Donc, ici, nous voyons notre opérateur booléen == qui compare la variable de class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Donc magasins class_num un entières. 527 00:22:55,150 --> 00:22:58,180 Et si cet entier 50 égaux, alors nous sommes 528 00:22:58,180 --> 00:23:02,810 allez stocker "David Malan" à l'intérieur du professeur de chaîne. 529 00:23:02,810 --> 00:23:05,912 Si le numéro de classe n'a pas égal à 50, "pas David Malan" 530 00:23:05,912 --> 00:23:07,120 va être le professeur. 531 00:23:07,120 --> 00:23:08,630 >> DAVID MALAN: Je vous remercie. 532 00:23:08,630 --> 00:23:12,110 Et si cela semble équivalent à ce qui, diriez-vous, à première vue? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Il me semble comme si-else. 535 00:23:19,960 --> 00:23:20,709 >> DAVID MALAN: Ouais. 536 00:23:20,709 --> 00:23:24,020 Et en fait, cela est une sorte d'une jolie un revêtement, 537 00:23:24,020 --> 00:23:27,520 pour ainsi dire, la mise en œuvre exactement la logique de si-else 538 00:23:27,520 --> 00:23:29,010 mais tout faire en une seule étape. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Exactement. 540 00:23:29,860 --> 00:23:30,360 Oui. 541 00:23:30,360 --> 00:23:33,520 Donc, si les états d'autre pourrait- prendre beaucoup d'espace. 542 00:23:33,520 --> 00:23:36,283 Ils pourraient être trop long pour quelque chose d'aussi simple que cela. 543 00:23:36,283 --> 00:23:38,350 Donc, cela peut être très succincte et très agréable. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Alors maintenant, nous allons en regardant l'exécution de quelque chose encore et encore, 546 00:23:46,820 --> 00:23:50,060 afin de vérifier pour un conditionner plusieurs fois 547 00:23:50,060 --> 00:23:53,510 puis en continuant à faire quelque chose tandis que la condition est vraie. 548 00:23:53,510 --> 00:23:56,740 Cela nous amène bien dans les boucles de temps. 549 00:23:56,740 --> 00:23:59,270 >> Pour la gauche, nous avons notre première boucle while. 550 00:23:59,270 --> 00:24:03,840 Ainsi, alors que quelque chose est vrai, faire encore et encore quelque chose. 551 00:24:03,840 --> 00:24:08,850 Donc, assurez-vous de remarquer que notre état ici est validé au sommet. 552 00:24:08,850 --> 00:24:14,150 Considérant que, avec notre deuxième loop-- nous appelons qu'un do-while loop-- nous faisons quelque chose, 553 00:24:14,150 --> 00:24:15,890 puis nous vérifions pour une condition. 554 00:24:15,890 --> 00:24:17,980 Et si cette condition continue à être vrai, 555 00:24:17,980 --> 00:24:20,150 nous allons revenir et faire la chose de nouveau. 556 00:24:20,150 --> 00:24:23,360 Donc, la principale différence est là la condition est vérifiée. 557 00:24:23,360 --> 00:24:29,260 Et le code ne peut jamais être exécutée si la condition est pas 558 00:24:29,260 --> 00:24:30,430 vrai avec la boucle while. 559 00:24:30,430 --> 00:24:33,050 Alors qu'avec le do-tout boucle, nous avons le code 560 00:24:33,050 --> 00:24:35,380 qui est toujours exécutée au moins une fois. 561 00:24:35,380 --> 00:24:37,470 Et puis, alors que la condition continue à être vrai, 562 00:24:37,470 --> 00:24:39,960 nous pouvons revenir en arrière et itérer nouveau à l'intérieur. 563 00:24:39,960 --> 00:24:43,625 Alors, pourquoi pensez-vous que nous devrions utiliser un do-while boucle sur une boucle while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Exact. 566 00:24:48,720 --> 00:24:52,600 Donc, si nous voulons inciter le utilisateur pour une sorte de saisie, 567 00:24:52,600 --> 00:24:55,400 si nous voulons leur demander entrer leur nom, 568 00:24:55,400 --> 00:24:57,342 nous voulons au moins leur demander une fois. 569 00:24:57,342 --> 00:24:59,050 Et si elles ne pénètrent ce nom, nous ne sommes pas 570 00:24:59,050 --> 00:25:00,740 vais leur demander à nouveau parce que nous savons déjà. 571 00:25:00,740 --> 00:25:02,656 Mais si elles ne pénètrent pas leur nom, ou si elles 572 00:25:02,656 --> 00:25:05,787 saisir quelque chose qui est évidemment pas un nom, 573 00:25:05,787 --> 00:25:08,120 nous voulons toujours continuer leur demandant sur leur nom. 574 00:25:08,120 --> 00:25:10,710 >> DAVID MALAN: Et dans la leçon, nous avons eu un comme ça avec l'int positif obtenir 575 00:25:10,710 --> 00:25:13,550 par exemple, où il n'y a rien à vérifiez d'abord parce que vous avez même pas 576 00:25:13,550 --> 00:25:14,190 obtenu un int. 577 00:25:14,190 --> 00:25:16,680 Donc, nous voulons faire this-- obtenir un int de la user-- 578 00:25:16,680 --> 00:25:18,860 puis vérifier, peut-être, Encore et encore et encore. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Exactement. 580 00:25:21,030 --> 00:25:22,060 Pour loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Pour les boucles peuvent nous permettre de faire presque exactement la même chose, aussi. 582 00:25:25,842 --> 00:25:27,300 Il est en fait exactement la même chose. 583 00:25:27,300 --> 00:25:30,190 Donc, il n'y a rien que vous pouvez faire avec des boucles 584 00:25:30,190 --> 00:25:32,840 que vous ne seriez pas capable à faire avec des boucles de temps. 585 00:25:32,840 --> 00:25:36,900 Mais pour les boucles peut sembler un peu peu plus compliqué syntaxiquement 586 00:25:36,900 --> 00:25:39,730 parce qu'ils ont trois pièces à l'intérieur ce qui 587 00:25:39,730 --> 00:25:42,990 était avant tout le état avec des boucles de temps. 588 00:25:42,990 --> 00:25:48,260 Ainsi, la première partie que vous la mer, la plus à gauche, nous avons «int nains = 0." 589 00:25:48,260 --> 00:25:51,490 Donc voilà où nous initialiser notre variable. 590 00:25:51,490 --> 00:25:55,210 >> Ensuite, nous avons un point-virgule et "nains <7." 591 00:25:55,210 --> 00:25:57,100 Donc, cela est où sur condition est effectivement. 592 00:25:57,100 --> 00:26:00,170 Voilà donc ce que nous aurions mettre tout dans le tout loop-- 593 00:26:00,170 --> 00:26:01,880 », tandis que les nains <7." 594 00:26:01,880 --> 00:26:05,380 Ici, cela va dans le milieu de notre boucle. 595 00:26:05,380 --> 00:26:07,190 Donc "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 Et puis notre dernière partie est "nains ++," qui est où nous mettons à jour notre variable. 597 00:26:11,350 --> 00:26:15,470 Donc, la chose importante à réaliser est que cette 598 00:26:15,470 --> 00:26:22,010 va passer par cette boucle sept fois et exécuter sept fois. 599 00:26:22,010 --> 00:26:24,020 Donc, nous avons sept nains, et ils sont tous 600 00:26:24,020 --> 00:26:26,020 allez dire, "Je suis ici pour vous aider, Blanche-Neige " 601 00:26:26,020 --> 00:26:28,860 parce qu'ils sont prêts pour aider Blanche-Neige. 602 00:26:28,860 --> 00:26:33,600 >> Avec boucles while, nous l'aurions fait l'initialisation et la mise à jour 603 00:26:33,600 --> 00:26:37,490 pas à l'intérieur de la condition, de plus, mais soit avant, soit à l'intérieur de la boucle while 604 00:26:37,490 --> 00:26:40,210 veiller à ce que parce nous-- nous avons toujours besoin de ces pièces. 605 00:26:40,210 --> 00:26:42,835 Donc, pour nous assurer que nous avons eux, nous aurions encore les ajoutée 606 00:26:42,835 --> 00:26:44,580 sur, mais pas à l'intérieur des parenthèses. 607 00:26:44,580 --> 00:26:47,288 >> DAVID MALAN: Et donc il semble like-- à la lecture, par exemple, 608 00:26:47,288 --> 00:26:50,250 Je suis presque toujours utiliser, comme, i et n et les variables assez ennuyeux. 609 00:26:50,250 --> 00:26:53,050 Il semble que vous pouvez utiliser plus astucieusement nommé les variables, aussi. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Ouais, il est vraiment très sympa d'utiliser des variables un peu plus descriptives 611 00:26:56,300 --> 00:26:59,400 parce surtout si quelqu'un d'autre est la lecture de votre code-- peut-être vous êtes niveleuse 612 00:26:59,400 --> 00:27:00,940 ou si vous êtes en collaborant avec quelqu'un-- 613 00:27:00,940 --> 00:27:03,481 vous voulez vous assurer qu'ils comprenez ce que vous faites. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> D'ACCORD. 616 00:27:06,400 --> 00:27:11,435 Donc ceci est quelque chose de très funky-- pour boucle à l'intérieur d'une boucle for. 617 00:27:11,435 --> 00:27:13,060 Je ne sais pas si nous avons vu cela avant. 618 00:27:13,060 --> 00:27:13,830 Probablement pas. 619 00:27:13,830 --> 00:27:17,750 Mais nous pouvons effectivement avoir this-- afin boucles au lieu de boucles. 620 00:27:17,750 --> 00:27:25,130 Donc ce que quelqu'un veut marcher peut-être moi à travers ce qui se passe ici? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID MALAN: Je vais prendre un coup de poignard. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID MALAN: OK. 625 00:27:30,636 --> 00:27:34,690 Donc, spoiler-- nous voulons imprimer la substance qui est dans le coin en bas à droite 626 00:27:34,690 --> 00:27:35,190 Là. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Droit. 628 00:27:35,450 --> 00:27:35,710 Ouais ouais. 629 00:27:35,710 --> 00:27:38,043 >> DAVID MALAN: Alors que nous venons de mettre cet échantillon sortie il. 630 00:27:38,043 --> 00:27:42,590 Donc, je peux déduire de la supérieure boucle qui vous êtes 631 00:27:42,590 --> 00:27:45,680 itérer sur les lignes boucle la plus externe, pour ainsi dire. 632 00:27:45,680 --> 00:27:48,107 Et vous itérer colonnes avec la boucle interne. 633 00:27:48,107 --> 00:27:50,190 Et intuitivement, ce devraient rend espérons sens 634 00:27:50,190 --> 00:27:52,070 parce que, par nature de tous les programmes que nous avons vu 635 00:27:52,070 --> 00:27:55,570 avant, printf, qui est le fonction que nous utilisons, en fin de compte, 636 00:27:55,570 --> 00:27:58,190 a la capacité d'imprimer des trucs out essentiellement ligne par ligne. 637 00:27:58,190 --> 00:27:59,960 Comme, une fois que vous avez délivrées une nouvelle ligne, il est 638 00:27:59,960 --> 00:28:02,876 pas de doubler le dos et l'impression de quelque chose plus élevé dans l'écran, au moins 639 00:28:02,876 --> 00:28:04,530 ne pas utiliser printf comme ça. 640 00:28:04,530 --> 00:28:07,750 >> Et à cet égard, il fait sens que la boucle la plus externe 641 00:28:07,750 --> 00:28:10,930 devrait se référer aux rangées parce que pour chaque rangée donnée, 642 00:28:10,930 --> 00:28:13,650 vous allez vouloir imprimer XXXXX, puis 643 00:28:13,650 --> 00:28:15,520 passer à la ligne suivante, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Donc rangées viennent en premier. 645 00:28:17,317 --> 00:28:19,150 Et puis, au sein de chaque rangée, vous imprimez colonnes. 646 00:28:19,150 --> 00:28:21,160 Si vous avez essayé de faire la contraire, il ne serait probablement pas 647 00:28:21,160 --> 00:28:21,690 sortir comme vous avez l'intention. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Ouais. 649 00:28:22,190 --> 00:28:24,950 Nous ne pouvions pas revenir à la rangée précédente avec printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID MALAN: Et ce qui est intéressant par la discussion d'aujourd'hui sur la portée, 651 00:28:27,658 --> 00:28:31,600 en fait, est que la ligne est un int qui est déclaré dans la boucle supérieure. 652 00:28:31,600 --> 00:28:34,030 Mais remarquez qu'il est encore intérieur de, pour ainsi dire, 653 00:28:34,030 --> 00:28:35,982 les accolades que suivre immédiatement, 654 00:28:35,982 --> 00:28:38,440 même si elle est techniquement pas au sein de ces accolades. 655 00:28:38,440 --> 00:28:41,750 Donc rangée est dans la portée de la totalité de l'extrait de code, 656 00:28:41,750 --> 00:28:44,690 tant à l'intérieur de l'extérieur pour la boucle et à l'intérieur de la boucle interne pour. 657 00:28:44,690 --> 00:28:48,050 Mais en revanche, où est la colonne de portée? 658 00:28:48,050 --> 00:28:49,810 La colonne de la variable? 659 00:28:49,810 --> 00:28:51,310 Oui, seulement dans la boucle à l'intérieur. 660 00:28:51,310 --> 00:28:54,280 Et cela est OK parce que nous ne consultons pas les à l'extérieur de ses accolades. 661 00:28:54,280 --> 00:28:57,280 Tout ce que nous faisons est d'imprimer une nouvelle ligne à la fin il. 662 00:28:57,280 --> 00:28:58,670 Alors qu'en fait est OK. 663 00:28:58,670 --> 00:29:03,740 >> Donc, cela a pour effet, il semble que, de faire en trois rangées et quatre colonnes. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Droit. 665 00:29:04,370 --> 00:29:06,270 Alors d'abord nous allons à travers notre première rangée. 666 00:29:06,270 --> 00:29:10,520 Et juste dans notre première ligne, nous faisons le quatre colonnes à l'intérieur de la première rangée. 667 00:29:10,520 --> 00:29:11,980 Donc, nous imprimons sur quatre x. 668 00:29:11,980 --> 00:29:15,800 Et puis nous pouvons sortir de la boucle, puisque nous avons déjà imprimé quatre x. 669 00:29:15,800 --> 00:29:17,100 Et nous imprimons une nouvelle ligne. 670 00:29:17,100 --> 00:29:19,920 Et puis nous passons par le même processus pour deux autres lignes 671 00:29:19,920 --> 00:29:21,170 pour faire un total de trois. 672 00:29:21,170 --> 00:29:23,530 >> DAVID MALAN: Et il est à noter qu'il est juste un artefact de la police de caractères, le fait 673 00:29:23,530 --> 00:29:25,680 que la sortie de l'échantillon semble tellement plus grand, 674 00:29:25,680 --> 00:29:27,520 comme si il ya plus lignes que de colonnes. 675 00:29:27,520 --> 00:29:29,824 Mais il est juste parce que le X est plus grand que large. 676 00:29:29,824 --> 00:29:32,740 Voilà tout ce qui se passe là-bas, plus l'espace blanc entre les lignes. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Droit. 678 00:29:33,281 --> 00:29:34,792 Bien. 679 00:29:34,792 --> 00:29:35,750 DAVID MALAN: Très bien. 680 00:29:35,750 --> 00:29:39,830 Ainsi, un rapide coup d'oeil au problème posé un, répondre à vos questions, et ensuite lever la séance? 681 00:29:39,830 --> 00:29:40,330 D'accord. 682 00:29:40,330 --> 00:29:43,164 Donc, en un problème réglé, il ya trois principaux défis, en fin de compte. 683 00:29:43,164 --> 00:29:44,955 Mais d'abord, vous trouverez que le problème réglé 684 00:29:44,955 --> 00:29:47,900 spécification, comme beaucoup le psets cet automne, va vous guider 685 00:29:47,900 --> 00:29:50,691 à travers quelques exercices d'échauffement, vous signaler quelques ressources 686 00:29:50,691 --> 00:29:52,440 que vous pouvez ou ne l'ont pas déjà vu. 687 00:29:52,440 --> 00:29:54,440 Par exemple, CS50 dispose d'une suite de courts métrages, 688 00:29:54,440 --> 00:29:56,481 qui sont de courtes vidéos, pas à la différence, mais que 689 00:29:56,481 --> 00:29:58,460 sont très specific-- sujet peut-être cinq minutes, 690 00:29:58,460 --> 00:30:02,360 10 minutes de longueur sur des boucles ou des conditions ou des algorithmes 691 00:30:02,360 --> 00:30:04,125 ou plus tard des sujets avancés, ainsi. 692 00:30:04,125 --> 00:30:06,000 Et nous intégrons généralement ceux dans le problème 693 00:30:06,000 --> 00:30:07,950 ensembles afin que les étudiants disposer d'une ressource à laquelle 694 00:30:07,950 --> 00:30:10,840 à revoir le matériel qui pourrait avoir déjà venu en conférence ou section. 695 00:30:10,840 --> 00:30:13,220 Mais cette façon, il est plus ciblée et plus à leur portée. 696 00:30:13,220 --> 00:30:15,928 >> Nous avons également tendance à intégrer dans le problème définit choses appelées soluces. 697 00:30:15,928 --> 00:30:20,790 Donc, presque tous les exemples que je fais en conférence, sur scène ici, nous avons aussi 698 00:30:20,790 --> 00:30:24,565 ont tourné sur caméra dans avancer un plus lent, 699 00:30:24,565 --> 00:30:28,760 une soluce plus intime par moi sur mon ordinateur portable de ce code, ligne par ligne 700 00:30:28,760 --> 00:30:31,427 de sorte que dans la classe, nous allons souvent parcourir quelque chose ou quelqu'un 701 00:30:31,427 --> 00:30:33,260 va intervenir avec un répondre à une question. 702 00:30:33,260 --> 00:30:35,820 Mais il ne coule pas nécessairement en pour tout le monde dans le public. 703 00:30:35,820 --> 00:30:38,230 Donc, vous trouverez le code soluces pour la plupart des exemples 704 00:30:38,230 --> 00:30:40,950 ce que nous faisons ici au cours de sorte que vous peut marcher à travers elle à votre propre rythme 705 00:30:40,950 --> 00:30:43,580 et rembobiner ou avancer rapidement ou ignorer tout à fait, si vous le souhaitez. 706 00:30:43,580 --> 00:30:45,356 >> Il ya souvent quelques-uns des questions d'échauffement que 707 00:30:45,356 --> 00:30:47,105 vous demander de trier des renforcer ce matériel 708 00:30:47,105 --> 00:30:50,250 et assurez-vous que vous êtes confortable avant vous continuez avec le reste de la pset. 709 00:30:50,250 --> 00:30:51,700 Et puis, bien sûr, il ya le pset lui-même. 710 00:30:51,700 --> 00:30:53,450 Et l'une des choses nous avons délibérément 711 00:30:53,450 --> 00:30:57,202 faire dans CS50 est presque chaque inintéressante ou intellectuellement inintéressante 712 00:30:57,202 --> 00:30:58,910 étape mécanique que vous pourriez avoir à faire 713 00:30:58,910 --> 00:31:00,519 est presque toujours très bien documenté. 714 00:31:00,519 --> 00:31:03,560 Au cours de la période, nous allons commencer à poser des questions plus rhétoriques 715 00:31:03,560 --> 00:31:06,187 comme se rappeler comment faire ceci ou cela? 716 00:31:06,187 --> 00:31:08,520 Mais généralement, vous trouverez que les ensembles de problème que vous rencontrez 717 00:31:08,520 --> 00:31:10,269 par la mécanique de quelque chose pour que 718 00:31:10,269 --> 00:31:14,160 les défis intellectuels, intéressants sont finalement gauche pour vous l'étudiant. 719 00:31:14,160 --> 00:31:17,390 >> Cela dit, Zamyla, à qui nous cesse allusion aujourd'hui dans la leçon, 720 00:31:17,390 --> 00:31:20,190 est l'un de nos employés de longue date membre qui détient également soluces 721 00:31:20,190 --> 00:31:24,520 sur les problèmes de pset spécifiques comme mario et gourmand, mais pas l'eau cette année. 722 00:31:24,520 --> 00:31:26,540 Et il est dans ceux soluces qu'elle souvent 723 00:31:26,540 --> 00:31:29,450 offre quelques trucs et astuces pour la façon de procéder, ne jamais vous dire 724 00:31:29,450 --> 00:31:31,810 exactement quoi faire, mais rather-- comme une condition, 725 00:31:31,810 --> 00:31:35,200 si vous will-- vous donnant au moins un quelques idées de sorte qu'il est à vous, 726 00:31:35,200 --> 00:31:37,830 finalement, de décider comment les aborder. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: comme une sorte de haut niveau la compréhension de la logique de ce que 728 00:31:41,200 --> 00:31:42,220 nous vous demandons de le faire. 729 00:31:42,220 --> 00:31:42,485 >> DAVID MALAN: Exactement. 730 00:31:42,485 --> 00:31:44,190 Et, de fait, de Zamyla soluces sont destinés 731 00:31:44,190 --> 00:31:46,190 pour répondre à la Foire question posée où 732 00:31:46,190 --> 00:31:48,610 ai-je commencé, surtout quand ces spécifications sont longues 733 00:31:48,610 --> 00:31:51,960 un peu intimidant donné tout le texte et l'imagerie qu'ils ont en eux. 734 00:31:51,960 --> 00:31:54,890 >> Donc water.c, vous trouverez après que vous l'avez terminée, 735 00:31:54,890 --> 00:31:56,920 est en fait relativement simple. 736 00:31:56,920 --> 00:31:58,882 Absolument sont un tas vous allez frapper 737 00:31:58,882 --> 00:32:01,840 vos têtes contre le mur en essayant de comprendre pourquoi il ne la compilation 738 00:32:01,840 --> 00:32:03,450 ou pourquoi ça ne fonctionne pas correctement. 739 00:32:03,450 --> 00:32:05,040 Mais une fois que vous avez terminé avec elle et une fois que vous avez 740 00:32:05,040 --> 00:32:07,620 passé quelque temps aux prises avec toute les bugs que vous pourriez avoir, 741 00:32:07,620 --> 00:32:09,490 vous trouverez qu'il est un programme très court. 742 00:32:09,490 --> 00:32:11,770 Il peut être fait en quelques-unes lignes de code, dont la plupart 743 00:32:11,770 --> 00:32:15,030 nous avons vu ici dans la leçon déjà, si vous assemblez les blocs de construction de droite. 744 00:32:15,030 --> 00:32:16,810 >> Et comme nous le suggérons ici, il va demander à 745 00:32:16,810 --> 00:32:22,250 de spécifier combien de minutes quelqu'un prend une douche sur le campus. 746 00:32:22,250 --> 00:32:24,779 Nous spécifions dans le problème régler le débit de l'eau 747 00:32:24,779 --> 00:32:27,320 dans, comme, d'une douche à faible débit la tête, un peu comme le clip Seinfeld 748 00:32:27,320 --> 00:32:29,180 nous avons vu hier ou à l'opposé de celui-ci. 749 00:32:29,180 --> 00:32:30,971 Et puis vous avez juste pour faire un peu de maths, 750 00:32:30,971 --> 00:32:34,710 really-- arithmétique utilisant C à dire nous combien, environ, des bouteilles d'eau 751 00:32:34,710 --> 00:32:37,720 est équivalent à ce que si nous sommes prendre une douche n-minute. 752 00:32:37,720 --> 00:32:41,389 >> Maintenant, dans mario.c, cela va un programme pour être légèrement plus long. 753 00:32:41,389 --> 00:32:42,930 Il est encore ne va pas être si longtemps. 754 00:32:42,930 --> 00:32:45,130 Juste quelques lignes de plus de water.c. 755 00:32:45,130 --> 00:32:48,230 Mais ça va être l'occasion pour recréer l'ancienne école Mario 756 00:32:48,230 --> 00:32:50,670 pyramide de Super Mario Frères ou quelque suivi. 757 00:32:50,670 --> 00:32:53,510 Il ne va pas à regarder comme plus jolie ou aussi coloré que celui-là. 758 00:32:53,510 --> 00:32:56,468 Nous allons simplement utiliser petits hashtags comme nous avons ici sur l'écran 759 00:32:56,468 --> 00:32:58,120 en utilisant du texte ASCII. 760 00:32:58,120 --> 00:33:00,362 Mais il faudra se rapprocher de la même idée. 761 00:33:00,362 --> 00:33:02,570 Et ça va être un exercer qu'à première vue 762 00:33:02,570 --> 00:33:04,720 semble assez juste simple-- imprimer une pyramide simple. 763 00:33:04,720 --> 00:33:07,345 Mais il ya quelques caractéristiques ici que sont intéressantes. 764 00:33:07,345 --> 00:33:12,400 Notez que le bord le plus à droite de la pyramide a en fait deux largeur. 765 00:33:12,400 --> 00:33:14,570 Donc, il ya deux égale colonnes de hauteur, ce qui 766 00:33:14,570 --> 00:33:16,804 rend nécessite un peu peu de réflexion à faire 767 00:33:16,804 --> 00:33:19,720 que vous obtenez exactement ce que le droit, en tant opposition à juste un angle parfait 768 00:33:19,720 --> 00:33:20,220 ligne. 769 00:33:20,220 --> 00:33:23,340 Voilà donc un peu un cas de coin mais correspond au jeu réel. 770 00:33:23,340 --> 00:33:27,610 >> Et il est aussi non-évident à première coup d'œil comment imprimer l'espace blanc. 771 00:33:27,610 --> 00:33:29,430 Alors, quand je regarde le Exemple de sortie ici-- 772 00:33:29,430 --> 00:33:32,440 et il est aussi dans le spec-- il ressemble un peu à un rectangle, 773 00:33:32,440 --> 00:33:35,120 mais une diagonale de la rectangle a été coupée, 774 00:33:35,120 --> 00:33:37,320 et il est juste espaces blancs, pour ainsi dire. 775 00:33:37,320 --> 00:33:40,100 Et donc un fréquemment posées question ici est toujours, bien, 776 00:33:40,100 --> 00:33:43,302 comment puis-je déplacer les hashtags vers la droite? 777 00:33:43,302 --> 00:33:44,760 Ou comment puis-je imprimer les espaces vides? 778 00:33:44,760 --> 00:33:46,860 Et il est effectivement plus facile que la plupart des étudiants pensent. 779 00:33:46,860 --> 00:33:47,360 Exact? 780 00:33:47,360 --> 00:33:51,620 Vous pouvez rapprocher visuellement d'un peu frapper la barre d'espace une ou deux fois 781 00:33:51,620 --> 00:33:52,700 ou trois fois. 782 00:33:52,700 --> 00:33:56,260 >> Et même si nous avons presque avec printf toujours imprimer une chaîne ou un int 783 00:33:56,260 --> 00:33:59,950 ou un mot comme «bonjour, monde »ou une série de mots, 784 00:33:59,950 --> 00:34:03,560 Vous pouvez aussi imprimer devis, l'espace, fin de citation. 785 00:34:03,560 --> 00:34:06,320 Et ce sera effectivement donner vous un espace blanc il. 786 00:34:06,320 --> 00:34:08,330 Donc, gardez cela à l'esprit et ne overthink cela. 787 00:34:08,330 --> 00:34:10,570 Vous avez vraiment de décider rangée par rangée par rangée, 788 00:34:10,570 --> 00:34:14,280 pas contrairement à votre exemple, un moment où il ya, combien de ceux 789 00:34:14,280 --> 00:34:18,420 colonnes doivent être des espaces blancs et combien d'entre eux devrait être hashtags. 790 00:34:18,420 --> 00:34:21,560 Il faudra un peu de temps, mais il est finalement un jeu de logique de toutes sortes. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Ouais. 792 00:34:22,060 --> 00:34:25,060 Mais la logique de la ligne passe par ligne va être très utile ici. 793 00:34:25,060 --> 00:34:25,810 DAVID MALAN: Ouais. 794 00:34:25,810 --> 00:34:28,976 Je pense que l'exemple de code vous même gave-- si elle n'a pas un programme complet. 795 00:34:28,976 --> 00:34:34,247 Vous avez encore besoin int et principale et stdio.h vide et #include, 796 00:34:34,247 --> 00:34:35,580 beaucoup de trucs de conférence. 797 00:34:35,580 --> 00:34:37,629 Mais les blocs de construction semblent être là. 798 00:34:37,629 --> 00:34:39,920 Et puis est enfin quelque chose un peu plus algorithmique. 799 00:34:39,920 --> 00:34:43,210 Donc, il se trouve que chaque fois que vous aller dans le CVS ou tout dépanneur 800 00:34:43,210 --> 00:34:47,810 et quelqu'un vous tend au factures de caisse ou des pièces de monnaie que le changement, 801 00:34:47,810 --> 00:34:50,620 il se trouve que ils, les humains, si oui ou non ils le savent ou non, 802 00:34:50,620 --> 00:34:53,300 sont probablement en utilisant ce qui est appelé un algorithme glouton, 803 00:34:53,300 --> 00:34:58,170 laquelle, si l'on vous doit, disons, 21 $ dans le changement car pour une raison 804 00:34:58,170 --> 00:35:01,580 vous avez acheté quelque chose de très bon marché avec une très grosse facture au CVS, 805 00:35:01,580 --> 00:35:05,910 il serait vraiment ennuyeux si le caissier vous a donné 21 célibataires ou, pire 806 00:35:05,910 --> 00:35:07,629 encore, tout un tas de pièces de monnaie. 807 00:35:07,629 --> 00:35:10,670 Plutôt, ce qu'une personne raisonnable est va probablement faire est qu'ils vont 808 00:35:10,670 --> 00:35:14,224 pour prendre un 20 $, puis une lettre de 1 $, et vous remettre seulement deux projets de loi dans ce cas. 809 00:35:14,224 --> 00:35:17,390 MARIA: Alors qu'ils cherchent à minimiser le changement qu'ils donnent de nouveau à vous. 810 00:35:17,390 --> 00:35:17,850 DAVID MALAN: Exactement. 811 00:35:17,850 --> 00:35:19,540 Et même beaucoup de pièces de monnaie, ainsi. 812 00:35:19,540 --> 00:35:23,040 Si vous deviez, disons, 0,50 $, nous espérons que vous ne voulez pas 50 centimes. 813 00:35:23,040 --> 00:35:25,500 Vous voulez au lieu de deux quarts, par exemple. 814 00:35:25,500 --> 00:35:27,540 Maintenant, cela ne suppose que le caissier a 815 00:35:27,540 --> 00:35:29,940 assez de toute dénomination qui il ou elle pourrait vouloir vous donner. 816 00:35:29,940 --> 00:35:32,148 Mais nous ne vous permettons de assumez autant dans le problème. 817 00:35:32,148 --> 00:35:35,590 Et l'objectif, à terme, est de mettre en œuvre dans le code C un algorithme glouton. 818 00:35:35,590 --> 00:35:37,344 Ainsi, l'utilisateur est autorisé à taper dans combien 819 00:35:37,344 --> 00:35:40,510 changer il ou elle est due avec des dollars et en cents, une sorte de virgule flottante 820 00:35:40,510 --> 00:35:41,590 valeur probablement. 821 00:35:41,590 --> 00:35:45,530 Et puis vous avez à faire le calcul et comprendre algorithmique, ainsi, 822 00:35:45,530 --> 00:35:49,020 le nombre de pièces que je peux donner vous minimalement pour vous donner 823 00:35:49,020 --> 00:35:50,270 exactement ce montant de changement. 824 00:35:50,270 --> 00:35:53,470 Mais il va y avoir une quelques passages délicats ici, non? 825 00:35:53,470 --> 00:35:56,236 Comme il ya toute la question de l'imprécision. 826 00:35:56,236 --> 00:35:56,860 MARIA: Exactement. 827 00:35:56,860 --> 00:35:59,114 Donc, point de flottement Les valeurs ont imprécision. 828 00:35:59,114 --> 00:36:00,780 Avons-nous en parlons en conférence d'aujourd'hui? 829 00:36:00,780 --> 00:36:02,340 >> DAVID MALAN: nous avons fait la dernière fois en conférence. 830 00:36:02,340 --> 00:36:03,506 Nous avons parlé de l'imprécision. 831 00:36:03,506 --> 00:36:08,840 Et vous ne voulez pas de tricher l'utilisateur de la façon dont beaucoup de changement, il ou elle est due. 832 00:36:08,840 --> 00:36:11,290 Et donc la procédure pas à pas, dans la spécification du problème posé, 833 00:36:11,290 --> 00:36:15,990 réfléchir, en fin de compte, à comment vous pouvez atténuer ces imprécision 834 00:36:15,990 --> 00:36:17,280 erreurs, potentiellement. 835 00:36:17,280 --> 00:36:21,050 Il est évitable, certainement, pour les données que nous parlons. 836 00:36:21,050 --> 00:36:23,590 Et, de fait, pennies-- peut-être nous en remettons aux Zamyla, 837 00:36:23,590 --> 00:36:25,136 Je pense que, pour les trucs là. 838 00:36:25,136 --> 00:36:27,760 En fin de compte, vous trouverez une progression des problèmes cette semaine, 839 00:36:27,760 --> 00:36:30,700 le premier de ce qui est assez petite, puis moyen, puis un peu plus grand. 840 00:36:30,700 --> 00:36:33,200 Mais chacun d'eux utiliser le bâtiment pâtés de maisons de la semaine dernière, 841 00:36:33,200 --> 00:36:35,280 à partir de cette super-section, problème posé spécification 842 00:36:35,280 --> 00:36:36,710 vous met à d'innombrables ressources. 843 00:36:36,710 --> 00:36:41,000 Mais encore, voire pas du tout mal, surtout parmi ceux moins à l'aise 844 00:36:41,000 --> 00:36:42,917 sans fond préalable, venir à des heures de bureau 845 00:36:42,917 --> 00:36:44,958 le lundi et le mardi et Mercredi et jeudi. 846 00:36:44,958 --> 00:36:46,950 Accédez au CS50 Discutez via le site Web de la formation, 847 00:36:46,950 --> 00:36:49,080 via laquelle vous pouvez chatter avec le personnel et ses camarades de classe. 848 00:36:49,080 --> 00:36:51,670 >> Mais finalement, je pense que le meilleur conseil est tout simplement commencer tôt. 849 00:36:51,670 --> 00:36:54,711 Il est pas le genre de la classe que vous devrait être à partir psets mercredi 850 00:36:54,711 --> 00:36:56,640 la nuit, ou pire jeudi soir. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Mon meilleur conseil est avoir commencé lundi. 852 00:36:59,067 --> 00:36:59,900 DAVID MALAN: lundi. 853 00:36:59,900 --> 00:37:02,490 Donc, si vous ne l'avez pas commencé already-- pas. 854 00:37:02,490 --> 00:37:04,732 Mais même si pas lundi, puis mardi. 855 00:37:04,732 --> 00:37:05,690 Le plus tôt sera le mieux. 856 00:37:05,690 --> 00:37:08,605 Et qui est la raison de la cours a tant de jours de retard est 857 00:37:08,605 --> 00:37:10,535 pour vous donner un peu de pression psychologique 858 00:37:10,535 --> 00:37:13,684 à commencer plus tôt mais toujours laisser les choses se détériorer lorsque les choses prennent plus de temps 859 00:37:13,684 --> 00:37:14,350 que vous attendez. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: Et vous voulez faire usage de les heures de bureau autant que vous le pouvez, aussi. 861 00:37:17,950 --> 00:37:20,291 >> DAVID MALAN: Des questions? 862 00:37:20,291 --> 00:37:20,790 D'accord. 863 00:37:20,790 --> 00:37:22,930 Eh bien, pourquoi ne nous levions pas ici? 864 00:37:22,930 --> 00:37:23,487