1 00:00:00,000 --> 00:00:03,944 >> [Jouer de la musique] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Très bien. 4 00:00:11,690 --> 00:00:14,674 Ceci est CS50, et cela est la fin de la semaine 2. 5 00:00:14,674 --> 00:00:16,840 Je suis tellement désolé, je ne pouvais pas être là avec vous tous aujourd'hui, 6 00:00:16,840 --> 00:00:18,300 mais vous êtes dans de très bonnes mains. 7 00:00:18,300 --> 00:00:21,710 Permettez-moi de présenter Propre Rob Bowden de CS50. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Et bien sûr, puis nous avons de se moquer du fait 10 00:00:31,730 --> 00:00:36,820 qu'il nous a envoyé un vertical vidéo et le montrer. 11 00:00:36,820 --> 00:00:38,320 >> [LECTURE VIDÉO] 12 00:00:38,320 --> 00:00:39,820 >> [Jouer de la musique] 13 00:00:39,820 --> 00:00:42,350 >> [PAS] 14 00:00:42,350 --> 00:00:44,730 >> -Ce Vidéo n'a pas avoir à regarder de cette façon. 15 00:00:44,730 --> 00:00:46,570 Il aurait pu être évité. 16 00:00:46,570 --> 00:00:49,070 Dites non aux vidéos verticales. 17 00:00:49,070 --> 00:00:53,310 >> Vidéos -Vertical se produisent lorsque vous tenir votre appareil photo dans le mauvais sens. 18 00:00:53,310 --> 00:00:55,880 Votre vidéo sera fin jusqu'à la recherche comme de la merde. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Il Ya de plus en plus les personnes dépendantes à faire des vidéos verticales tous les jours. 21 00:01:02,240 --> 00:01:06,240 Il est pas craquer ou rien, mais il est encore vraiment mauvais. 22 00:01:06,240 --> 00:01:10,410 Il existe deux types différents de les gens qui sont atteints de VVS. 23 00:01:10,410 --> 00:01:14,160 Le premier groupe traite le Vidéos ils tirent comme des images. 24 00:01:14,160 --> 00:01:15,850 Ils ne signifient pas de mal. 25 00:01:15,850 --> 00:01:19,180 Ils ne comprennent tout simplement pas que tandis que vous pouvez transformer une photo, 26 00:01:19,180 --> 00:01:20,880 vous ne pouvez pas vraiment tourner une vidéo. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -Le Autre groupe de personnes est qui ne donnent pas une [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> Syndrome vidéo -Vertical est dangereux. 31 00:01:31,090 --> 00:01:34,120 Les images animées ont toujours horizontal. 32 00:01:34,120 --> 00:01:35,990 Téléviseurs sont horizontales. 33 00:01:35,990 --> 00:01:38,380 Les écrans d'ordinateur sont à l'horizontale. 34 00:01:38,380 --> 00:01:41,580 Les yeux des gens sont à l'horizontale. 35 00:01:41,580 --> 00:01:45,170 Nous ne sommes pas construit à regarder des vidéos verticales. 36 00:01:45,170 --> 00:01:47,600 >> -I Aiment vidéos verticales. 37 00:01:47,600 --> 00:01:50,410 >> -Personne Ne se soucie de vous. 38 00:01:50,410 --> 00:01:53,340 >> -Si De ce problème gauche décochée, vous aussi 39 00:01:53,340 --> 00:01:57,650 va commencer à montrer quatre vidéos à la fois juste pour économiser de la bande passante. 40 00:01:57,650 --> 00:02:02,400 >> Vidéos verticales -Letterboxed feriez être de la taille d'un timbre-poste. 41 00:02:02,400 --> 00:02:04,920 >> -Et Elle se répandra partout. 42 00:02:04,920 --> 00:02:07,670 Écrans de cinéma ont toujours horizontal. 43 00:02:07,670 --> 00:02:11,200 Si les vidéos verticales deviennent acceptées, cinémas 44 00:02:11,200 --> 00:02:13,930 devra être grand et maigre. 45 00:02:13,930 --> 00:02:17,710 >> -Et Toutes les salles de cinéma le feriez avoir à se démoli et reconstruit. 46 00:02:17,710 --> 00:02:22,090 Et au moment où ils ont été reconstruits, Mila Kunis serait vieux et laid. 47 00:02:22,090 --> 00:02:24,342 >> -Les Oiseaux va planter en eux et mourir. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Tous deviennent raides cous de Looking Up. 49 00:02:26,530 --> 00:02:29,800 >> -Et Ne siégera à la première rangée jamais. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas sera re-libération étoile Guerres again-- l'édition maigre. 51 00:02:37,170 --> 00:02:41,860 >> -I N'a jamais vraiment été en mesure de dire l'histoire que je voulais raconter. 52 00:02:41,860 --> 00:02:46,030 Ce fut une grande chance pour moi de expérimenter avec une nouvelle technologie. 53 00:02:46,030 --> 00:02:48,150 >> -Tu es un enfoiré. 54 00:02:48,150 --> 00:02:54,430 >> -Chaque Fois un appareil mobile est utilisé pour enregistrer de la vidéo, la tentation est là. 55 00:02:54,430 --> 00:02:56,370 Dis juste non. 56 00:02:56,370 --> 00:03:00,116 Dire non à George Lucas. 57 00:03:00,116 --> 00:03:04,062 Dites non aux vieux Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Dites non aux vidéos verticales. 59 00:03:06,600 --> 00:03:12,511 >> -Et Si vous voyez quelqu'un faire, dire, "vous n'êtes pas de tir ce droit fictif!" 60 00:03:12,511 --> 00:03:15,433 >> [Jouer de la musique] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [FIN LECTURE] 63 00:03:19,830 --> 00:03:23,702 >> [Applaudissements] 64 00:03:23,702 --> 00:03:27,598 >> [SORTIE AUDIO] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple forme de cryptographie, 67 00:03:45,790 --> 00:03:49,500 qui est essentiellement le cryptage et le déchiffrement des messages secrets. 68 00:03:49,500 --> 00:03:52,590 Nous avons donc ici une très simple jouet. 69 00:03:52,590 --> 00:03:56,900 Et l'idée est la bague extérieure tourne autour de la bague intérieure. 70 00:03:56,900 --> 00:04:01,610 Et vous pouvez le voir, peut-être si je zoome dans, that-- il est difficile de voir. 71 00:04:01,610 --> 00:04:05,090 Mais, comme, le nombre 1-- bien, ce qui bougeait. 72 00:04:05,090 --> 00:04:09,120 >> Le numéro 1 est mappé à la lettre X, numéro 2 cartes à la lettre 73 00:04:09,120 --> 00:04:11,630 J. incroyablement difficile ne pas sauter vers l'avant. 74 00:04:11,630 --> 00:04:16,100 Lettre 2 maps à J. Numéro 3 maps à D. Donc, 75 00:04:16,100 --> 00:04:20,140 avec cet anneau, vous pouvez donner un message à quelqu'un 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Pour une raison quelconque vous veux leur dire XJD. 77 00:04:22,624 --> 00:04:24,540 Mais vous pouvez leur donner un certain message de numéros, 78 00:04:24,540 --> 00:04:28,460 et aussi longtemps qu'ils ont cet anneau, ils peut décrypter ce que vous essayez de dire. 79 00:04:28,460 --> 00:04:32,510 >> Donc, vous avez peut-être vu cette l'exemple particulier de la cryptographie 80 00:04:32,510 --> 00:04:36,640 avant si autour de la saison de Noël vous avez regardé Une histoire de Noël. 81 00:04:36,640 --> 00:04:38,520 Si vous ne l'avez jamais vu avant, puis juste 82 00:04:38,520 --> 00:04:41,060 tourner sur TBS à littéralement tout moment la veille de Noël, 83 00:04:41,060 --> 00:04:44,510 parce qu'ils montrent à dos à dos à dos à dos à dos toute la journée. 84 00:04:44,510 --> 00:04:46,744 Et la vidéo pertinent est présent. 85 00:04:46,744 --> 00:04:47,410 [LECTURE VIDÉO] 86 00:04:47,410 --> 00:04:50,020 -Soyez Connaître à tout le monde que Ralph Parker est par les présentes 87 00:04:50,020 --> 00:04:52,850 nommé membre de la Petite Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 et a droit à tous les honneurs et les avantages survenant à celle-ci. 89 00:04:56,490 --> 00:04:59,010 Little Orphan Annie signé. 90 00:04:59,010 --> 00:05:03,120 Contresigné Pierre André à l'encre! 91 00:05:03,120 --> 00:05:07,460 Honneurs et avantages déjà à l'âge de neuf ans! 92 00:05:07,460 --> 00:05:12,530 >> [Criant de Radio] 93 00:05:12,530 --> 00:05:13,030 -Allons. 94 00:05:13,030 --> 00:05:14,000 Allons de l'avant avec elle. 95 00:05:14,000 --> 00:05:18,274 Je ne pas besoin de tout ce que le jazz à propos de contrebandiers et des pirates. 96 00:05:18,274 --> 00:05:20,440 Demain soir avec -listen l'aventure de conclusion 97 00:05:20,440 --> 00:05:22,540 du Black Pirate Ship. 98 00:05:22,540 --> 00:05:25,460 Maintenant, il est temps pour Message secret d'Annie 99 00:05:25,460 --> 00:05:28,620 pour vous membres du Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Rappelez-vous les enfants, seuls les membres de Secret Circle Annie 101 00:05:32,370 --> 00:05:34,880 peut décoder message secret d'Annie. 102 00:05:34,880 --> 00:05:39,100 Rappelez-vous, Annie compte sur vous. 103 00:05:39,100 --> 00:05:41,660 Réglez vos épingles à B2. 104 00:05:41,660 --> 00:05:43,960 Voici le message. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Je Suis dans ma première réunion secrète. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> Oh, Pierre est en grande voix ce soir. 115 00:05:54,570 --> 00:05:57,490 Je pourrais dire que ce soir message était vraiment important. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Voilà un message d'Annie elle-même. 119 00:06:01,580 --> 00:06:02,880 Rappelez-vous, ne dites à personne. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Cinq Secondes plus tard, je suis dans le seul chambre dans la maison où un garçon de neuf ans 122 00:06:11,130 --> 00:06:15,830 pourrait s'asseoir dans l'intimité et le décodage. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Je suis allé à la prochaine. 126 00:06:20,210 --> 00:06:23,300 E. Le premier mot est «l'être." 127 00:06:23,300 --> 00:06:25,880 S. Il venait plus facile maintenant. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Voilà R. 130 00:06:30,528 --> 00:06:31,278 -Allez, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Je dois y aller! 132 00:06:31,861 --> 00:06:33,182 -Je Vais être juste en bas, Ma! 133 00:06:33,182 --> 00:06:36,038 Whiz Gee. 134 00:06:36,038 --> 00:06:42,840 T. O. «Soyez sûr de" - assurez-vous quoi? 135 00:06:42,840 --> 00:06:44,770 Quel était Little Orphan Annie essaie de dire? 136 00:06:44,770 --> 00:06:46,381 Veillez à ce que? 137 00:06:46,381 --> 00:06:47,825 >> Essayez maintenant a obtenu d'aller! 138 00:06:47,825 --> 00:06:48,866 Voulez-vous s'il vous plaît de sortir? 139 00:06:48,866 --> 00:06:49,783 >> -Tous Droit, maman! 140 00:06:49,783 --> 00:06:51,786 Je serai à droite! 141 00:06:51,786 --> 00:06:53,606 Je me rapprochais maintenant. 142 00:06:53,606 --> 00:06:55,550 La tension était terrible. 143 00:06:55,550 --> 00:06:57,050 Qu'est-ce que c'était? 144 00:06:57,050 --> 00:06:59,905 Le sort de la planète peut se bloquer dans la balance! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy doit rentrer! 146 00:07:01,736 --> 00:07:05,680 >> -Je Vais être dès la sortie, bordel de merde! 147 00:07:05,680 --> 00:07:07,170 On y est presque! 148 00:07:07,170 --> 00:07:08,150 Mes doigts volaient. 149 00:07:08,150 --> 00:07:09,980 Mon esprit était un piège d'acier. 150 00:07:09,980 --> 00:07:11,496 Chaque pore vibré. 151 00:07:11,496 --> 00:07:13,268 Il était presque clair! 152 00:07:13,268 --> 00:07:13,767 Oui. 153 00:07:13,767 --> 00:07:14,609 Oui. 154 00:07:14,609 --> 00:07:15,108 Oui. 155 00:07:15,108 --> 00:07:16,449 Oui. 156 00:07:16,449 --> 00:07:20,240 Soyez sûr de boire votre Ovomaltine. 157 00:07:20,240 --> 00:07:20,740 Ovomaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Un commerciale minable? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Fils de pute. 162 00:07:34,920 --> 00:07:35,890 >> [FIN LECTURE] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Voilà donc comment Ovomaltine concerne la cryptographie. 164 00:07:39,650 --> 00:07:42,290 Fondamentalement CS50 juste annoncé Ovomaltine, pour que nous puissions 165 00:07:42,290 --> 00:07:44,400 être un minable commerciale pour Ovomaltine. 166 00:07:44,400 --> 00:07:44,900 Bien. 167 00:07:44,900 --> 00:07:47,120 Alors maintenant, la science réelle de l'ordinateur. 168 00:07:47,120 --> 00:07:50,670 Rappelez-vous le lundi nous nous sommes quittés plongée plus profondément dans les cordes. 169 00:07:50,670 --> 00:07:52,820 Donc, nous avions affaire à la chaîne "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Et nous constations le fait que nous pouvons traiter 171 00:07:55,130 --> 00:07:57,510 "Zamyla" comme une séquence de caractères. 172 00:07:57,510 --> 00:07:59,740 Et rappelez-vous que nous avons appris la notation de support. 173 00:07:59,740 --> 00:08:01,995 Donc, si cela était stocké dans une chaîne "s", puis 174 00:08:01,995 --> 00:08:05,860 si nous disions s tranche 0, ce serait indiquer le Z. lettre majuscule 175 00:08:05,860 --> 00:08:09,790 Et si nous disions s étrier 1, que indiquerait la première a minuscule, 176 00:08:09,790 --> 00:08:14,220 et ainsi de suite jusqu'à l étrier 5, ce qui indiquerait la dernière a. 177 00:08:14,220 --> 00:08:17,090 >> Maintenant, rappelez-vous que le longueur de cette chaîne est de 6, 178 00:08:17,090 --> 00:08:23,220 mais les indices sont dans la chaîne 0 à 5, Z à travers cette dure un. 179 00:08:23,220 --> 00:08:28,650 Donc cela correspond maintenant à une image plus grande de la mémoire de votre ordinateur, de votre RAM. 180 00:08:28,650 --> 00:08:32,020 Donc, quelque part, le programme qui vous utilisez votre ordinateur 181 00:08:32,020 --> 00:08:34,780 doit se rappeler Zamyla quelque part en mémoire. 182 00:08:34,780 --> 00:08:36,029 Donc, je peux avoir un bénévole? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Oui s'il vous plaît. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Et quel est ton nom? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Ravi de vous rencontrer, Dean. 190 00:08:54,910 --> 00:08:58,240 Donc venir ici, et nous allons devoir vous dessinez 191 00:08:58,240 --> 00:09:00,740 sur notre bel agencement astucieux de la mémoire. 192 00:09:00,740 --> 00:09:05,950 Maintenant, je plais à penser de la mémoire comme une longue bande d'octets, 193 00:09:05,950 --> 00:09:11,090 mais seulement à des fins d'affichage nous allons juste ne gauche à droite, de haut en bas. 194 00:09:11,090 --> 00:09:11,590 D'accord? 195 00:09:11,590 --> 00:09:22,030 >> Donc, je vais vous montrer une program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Et ainsi tout ce programme est faire est de demander quatre cordes 197 00:09:25,760 --> 00:09:28,830 à partir de l'utilisateur Impression GetString puis 198 00:09:28,830 --> 00:09:30,950 quoi que première chaîne était entré. 199 00:09:30,950 --> 00:09:32,840 Nous ne tenons pas compte de deux à quatre. 200 00:09:32,840 --> 00:09:33,610 D'ACCORD. 201 00:09:33,610 --> 00:09:38,210 Donc ici quand maintenant-- Je première demande s1. 202 00:09:38,210 --> 00:09:39,740 Donc, vous êtes l'ordinateur. 203 00:09:39,740 --> 00:09:41,680 Et vous implémentez GetString. 204 00:09:41,680 --> 00:09:46,710 Donc, vous demandez une chaîne à partir moi, et je le dis, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Donnez la chaîne "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Donc, quelque part en mémoire vous besoin de se rappeler "Dean." 207 00:09:50,300 --> 00:09:52,160 Donc, écrire dans la mémoire quelque part. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Parfait. 210 00:09:59,210 --> 00:09:59,880 D'ACCORD. 211 00:09:59,880 --> 00:10:01,740 Alors maintenant, nous avons S2. 212 00:10:01,740 --> 00:10:03,869 Et S2 sera une demande de GetString. 213 00:10:03,869 --> 00:10:05,160 Donc, je vais entrer dans une chaîne. 214 00:10:05,160 --> 00:10:08,720 Je vais entrer dans "Hannah." 215 00:10:08,720 --> 00:10:10,586 Alors entrez "Hannah" quelque part dans la mémoire. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Ouais. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, maintenant s3. 220 00:10:25,550 --> 00:10:28,380 Et ça va être un autre demander à GetString. 221 00:10:28,380 --> 00:10:37,020 Et donc maintenant entrer "Maria". 222 00:10:37,020 --> 00:10:37,520 Bien. 223 00:10:37,520 --> 00:10:40,980 Et puis il ya une dernière demande à GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Donc, je ne sais pas. 225 00:10:42,580 --> 00:10:45,640 Que diriez-vous nous allons avec anticonstitutionnellement. 226 00:10:45,640 --> 00:10:49,460 Entrez donc que dans la mémoire. 227 00:10:49,460 --> 00:10:50,400 Ouais. 228 00:10:50,400 --> 00:10:53,970 Il suffit donc de faire "Rob." 229 00:10:53,970 --> 00:10:54,560 >> D'ACCORD. 230 00:10:54,560 --> 00:10:58,410 Alors maintenant, pourquoi ne explain-- vous laissez ces espaces? 231 00:10:58,410 --> 00:11:01,340 Pourquoi avez-vous ce champ vide espace ici, ici, et ici? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Oui. 234 00:11:05,670 --> 00:11:09,450 Donc remarquer quand je vais d'imprimer s1-- si nous 235 00:11:09,450 --> 00:11:11,890 eu la course "Hannah" droit à côté de "Dean" 236 00:11:11,890 --> 00:11:14,360 comment savons-nous quand la chaîne "Dean" se termine? 237 00:11:14,360 --> 00:11:19,470 Donc, l'impression de la s1 de chaîne peut avoir vient d'être imprimée "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 si elle n'a pas la moindre idée quand «Dean» se termine effectivement. 239 00:11:22,720 --> 00:11:23,240 >> Bien. 240 00:11:23,240 --> 00:11:27,650 Donc en mémoire la façon dont nous avons réellement représenter cette fin d'une chaîne 241 00:11:27,650 --> 00:11:29,940 est avec barre oblique inverse zéro. 242 00:11:29,940 --> 00:11:32,620 Donc, cet espace est exactement ce que nous voulions. 243 00:11:32,620 --> 00:11:34,040 Il devrait être une barre oblique inverse zéro. 244 00:11:34,040 --> 00:11:37,690 Ce sera une barre oblique inverse zéro, et ce sera une barre oblique inverse zéro. 245 00:11:37,690 --> 00:11:41,585 Et vous pouvez avoir un prix fabuleux pour être un bénévole parfait. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Prenez une boule de stress! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> D'ACCORD. 250 00:11:49,700 --> 00:11:54,420 Donc, ce caractère barre oblique inverse est zéro comment nous indiquer la fin d'une chaîne. 251 00:11:54,420 --> 00:11:57,120 Il est comment, quand un programme donné veut imprimer une chaîne, 252 00:11:57,120 --> 00:11:59,760 il est how-- souviens que nous avons appris la fonction strlen de la semaine dernière? 253 00:11:59,760 --> 00:12:00,940 La longueur des chaînes? 254 00:12:00,940 --> 00:12:03,770 Il est comment longueur de la chaîne est capable de déterminer combien de temps est une chaîne. 255 00:12:03,770 --> 00:12:05,810 Il ne cesse de l'itération au cours des caractères 256 00:12:05,810 --> 00:12:08,217 jusqu'à ce qu'il trouve le backslasher caractère zéro. 257 00:12:08,217 --> 00:12:11,050 Donc, la chose importante à réaliser sur le caractère barre oblique inverse zéro 258 00:12:11,050 --> 00:12:14,950 est il est représenté par tous les zéros dans les bits. 259 00:12:14,950 --> 00:12:18,980 Alors que cette remarque est distincte du caractère zéro. 260 00:12:18,980 --> 00:12:23,010 Donc, le caractère zéro, si vous vous souvenez dans l'exemple qu'il a donné à la fin 261 00:12:23,010 --> 00:12:27,360 de conférence où les personnages carte to-- comme des cartes du capital de A à 65. 262 00:12:27,360 --> 00:12:29,130 Minuscules de A à 97 cartes. 263 00:12:29,130 --> 00:12:30,890 B minuscules serait 98. 264 00:12:30,890 --> 00:12:35,220 Ainsi, le nombre 0 cartes to-- Je ne sais pas savoir sur le dessus de ma tête. 265 00:12:35,220 --> 00:12:36,400 44 ou 45. 266 00:12:36,400 --> 00:12:37,890 Quelque part dans cette région. 267 00:12:37,890 --> 00:12:40,850 >> Donc le caractère 0 est un nombre réel. 268 00:12:40,850 --> 00:12:44,350 Mais nulle barre oblique inverse Cartes à tous les bits à zéro. 269 00:12:44,350 --> 00:12:46,380 Donc, il ya une distinction entre zéro barre oblique inverse, 270 00:12:46,380 --> 00:12:48,450 que nous appellerons le terminateur null. 271 00:12:48,450 --> 00:12:53,210 Il ya une distinction entre barre oblique inverse zéro et le caractère zéro. 272 00:12:53,210 --> 00:12:54,350 >> Bien. 273 00:12:54,350 --> 00:12:57,520 Donc, parler un peu plus sur les chaînes. 274 00:12:57,520 --> 00:13:01,470 Alors que nous voyons ici est de savoir comment cette il serait mis en mémoire. 275 00:13:01,470 --> 00:13:07,940 Donc cette idée de chaînes comme une séquence de characters-- afin que l'ordinateur officielle 276 00:13:07,940 --> 00:13:10,750 sciency terme pour la séquence est un tableau. 277 00:13:10,750 --> 00:13:13,790 Nous voudrions donc appeler une chaîne un tableau de caractères. 278 00:13:13,790 --> 00:13:17,770 Et il ya effectivement d'autres données types que nous pouvons faire des tableaux sur. 279 00:13:17,770 --> 00:13:19,975 >> Donc, pour motiver ce, regarder un exemple. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Nous l'appellerons ages0.c je vais copier et coller notre modèle. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 D'ACCORD. 284 00:13:33,410 --> 00:13:39,378 Donc, dans ce programme que nous voulez faire est de saisir l'âge 285 00:13:39,378 --> 00:13:45,160 de trois étudiants du cours. 286 00:13:45,160 --> 00:13:49,240 Donc, nous savons l'int age-- et maintenant je vais dire 0. 287 00:13:49,240 --> 00:13:53,140 Donc, vous voudrez peut-être dire age1, mais à des fins que nous verrons très prochainement, 288 00:13:53,140 --> 00:13:57,187 Je vais dire int age0 égale getint. 289 00:13:57,187 --> 00:13:59,270 Donc, le même appel à getint que nous avons utilisé I 290 00:13:59,270 --> 00:14:01,561 ne pas arriver à être incitant disant: "donnez-moi l'âge." 291 00:14:01,561 --> 00:14:03,120 Mais demande tout simplement. 292 00:14:03,120 --> 00:14:06,510 >> Et age1 égale getint. 293 00:14:06,510 --> 00:14:09,600 Et int age2 égale getint. 294 00:14:09,600 --> 00:14:14,070 Donc, encore une fois, trois étudiants, mais en fin de compte les indices variables 295 00:14:14,070 --> 00:14:16,890 sont age0 travers age2. 296 00:14:16,890 --> 00:14:17,550 D'ACCORD. 297 00:14:17,550 --> 00:14:23,960 Donc, ce programme fera tout nous voulons avec age0, age1 et age2, 298 00:14:23,960 --> 00:14:27,670 mais ce programme en fin de compte fonctionne pour trois élèves. 299 00:14:27,670 --> 00:14:28,380 >> D'ACCORD. 300 00:14:28,380 --> 00:14:32,110 Alors maintenant, si je veux quatre étudiants? 301 00:14:32,110 --> 00:14:36,000 Eh bien, je vais devoir revenir dans mon code, modifier le commentaire, 302 00:14:36,000 --> 00:14:39,840 et maintenant nous avons un int age3 égale getint. 303 00:14:39,840 --> 00:14:40,610 D'ACCORD. 304 00:14:40,610 --> 00:14:43,660 Alors, qui voit le problème ici? 305 00:14:43,660 --> 00:14:47,310 Quel est le problème avec ce genre de configuration? 306 00:14:47,310 --> 00:14:47,810 Ouais. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Ouais. 309 00:14:53,610 --> 00:14:56,360 Nous allons donc créer un variable pour chaque élève. 310 00:14:56,360 --> 00:15:00,140 Maintenant, cela fonctionne, mais finalement ce que si je maintenant 311 00:15:00,140 --> 00:15:06,500 dis, "Je veux saisir l'âge de huit élèves ou étudiants 16 312 00:15:06,500 --> 00:15:11,340 ou les cependant de nombreux étudiants de les centaines d'étudiants dans CS50 313 00:15:11,340 --> 00:15:16,750 ou les milliers d'étudiants sur le campus ou les milliards de personnes dans le monde? 314 00:15:16,750 --> 00:15:19,130 Donc, finalement, ce ne est pas durable. 315 00:15:19,130 --> 00:15:21,990 Chaque fois que vous voyez vous-même la copie et le code coller comme ça, 316 00:15:21,990 --> 00:15:25,050 vous devriez sentent généralement qu'il ya une meilleure façon. 317 00:15:25,050 --> 00:15:31,290 >> Donc voilà où nous introduisons une déclaration de tableau. 318 00:15:31,290 --> 00:15:34,564 Ainsi, lorsque vous déclarez un tableau, voici ce que le format général 319 00:15:34,564 --> 00:15:35,480 va ressembler. 320 00:15:35,480 --> 00:15:36,664 Nous allons dire le type. 321 00:15:36,664 --> 00:15:38,830 puis nous allons donner le nom de ce tableau, 322 00:15:38,830 --> 00:15:41,150 tout comme nous définissons une variable donnée. 323 00:15:41,150 --> 00:15:43,980 Et puis, finalement, nous utilisons cette notation de support à nouveau 324 00:15:43,980 --> 00:15:47,480 mais dans un contexte différent à partir de comment nous utilisions auparavant. 325 00:15:47,480 --> 00:15:51,860 >> Donc, ici cela ressemble à une normale déclaration de variable que nous avons vu. 326 00:15:51,860 --> 00:15:54,890 Donc, nous avons vu int x point-virgule avant. 327 00:15:54,890 --> 00:16:00,020 Eh bien maintenant, nous pourrions voir quelque chose comme int x 5 crochets. 328 00:16:00,020 --> 00:16:04,020 Et de mettre cette idée dans la Getint programme que nous have-- 329 00:16:04,020 --> 00:16:08,850 afin que nous puissions mettre en œuvre ce de la même façon. 330 00:16:08,850 --> 00:16:13,630 >> Disons que dans CS nous avons tendance à utiliser n le nombre de quelque chose. 331 00:16:13,630 --> 00:16:16,150 Donc, ici, nous allons stocker quatre étudiants. 332 00:16:16,150 --> 00:16:25,960 Et maintenant, nous pouvons dire int âge support n-- pas tout à fait l'obtenir yet-- 333 00:16:25,960 --> 00:16:32,210 à déclarer un tableau de quatre étudiants. 334 00:16:32,210 --> 00:16:38,050 Alors, comment cela va regarder dans la mémoire sera similaire à cela. 335 00:16:38,050 --> 00:16:39,570 Désactivez cette. 336 00:16:39,570 --> 00:16:46,606 Et nous allons avoir quelque part dans memory-- Je vais mettre ce là-haut. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Donc, quelque part en mémoire. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Un deux trois quatre. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Nous avons quatre entiers dans une rangée pour cette gamme de quatre entiers. 343 00:17:09,849 --> 00:17:13,820 Donc, pour le moment, ce qui est le taille de l'une de ces boîtes? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Ouais. 346 00:17:17,690 --> 00:17:18,390 Il est quatre octets. 347 00:17:18,390 --> 00:17:19,690 Il est 32 bits. 348 00:17:19,690 --> 00:17:22,310 Alors maintenant, ce qui est différent à partir de la matrice que l'on 349 00:17:22,310 --> 00:17:24,020 vu plus tôt, le tableau de caractères. 350 00:17:24,020 --> 00:17:28,540 Dans une chaîne chaque boîte était uniquement un octet, parce qu'un personnage est un seul octet. 351 00:17:28,540 --> 00:17:32,170 Mais avec un tableau d'entiers, chaque boîte doit être de quatre octets dans l'ordre 352 00:17:32,170 --> 00:17:34,060 pour adapter un entier entier. 353 00:17:34,060 --> 00:17:37,197 Voilà donc ce que un tableau de quatre ints ressemblerait. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Et puis retour à code. 356 00:17:43,870 --> 00:17:47,460 Maintenant, nous voulons effectivement magasin entiers dans ce tableau. 357 00:17:47,460 --> 00:17:53,470 Alors maintenant, cela est une très, très, très modèle commun qui va à un certain point 358 00:17:53,470 --> 00:17:54,680 devenu la mémoire musculaire. 359 00:17:54,680 --> 00:17:56,710 Donc int i est égal à 0. 360 00:17:56,710 --> 00:17:57,940 i inférieur à n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Tranche d'âge i est égal getint. 363 00:18:05,790 --> 00:18:15,100 >> Donc, cette boucle, ce format, vous devriez être très utilisé pour. 364 00:18:15,100 --> 00:18:20,010 Donc, ce qui est généralement la façon dont nous allons itérer sur presque toute tableau. 365 00:18:20,010 --> 00:18:23,690 Maintenant, remarquez ce genre de explique pourquoi depuis le début 366 00:18:23,690 --> 00:18:29,870 nous ne disposions pas des boucles pour aller int i est égal à 1, i inférieur ou égal à 10. 367 00:18:29,870 --> 00:18:34,200 La raison en est qu'à partir de zéro rend ce travail bien avec les tableaux. 368 00:18:34,200 --> 00:18:36,270 Donc, les tableaux sont indexées zéro. 369 00:18:36,270 --> 00:18:40,360 Si ce tableau est de longueur 4, les indices vont de 0 à 3. 370 00:18:40,360 --> 00:18:42,880 >> Ainsi, à travers le premier itération de cette boucle 371 00:18:42,880 --> 00:18:49,930 nous allons être mise en âge support 0 égale à un appel à getint. 372 00:18:49,930 --> 00:18:52,440 Donc, tout ce que je trouvais pour entrer au clavier. 373 00:18:52,440 --> 00:18:56,970 Lors du second passage, nous sommes mise age1 égale à getint. 374 00:18:56,970 --> 00:18:58,230 Troisième passage, age2. 375 00:18:58,230 --> 00:18:59,880 Finale age3 passe. 376 00:18:59,880 --> 00:19:05,750 Ainsi, si dans la première passe de la boucle Je rentre le numéro 4 sur le clavier, 377 00:19:05,750 --> 00:19:07,740 puis nous allons insérer un 4 ici. 378 00:19:07,740 --> 00:19:11,470 Si lors du second passage je rentre 50, nous allons mettre un 50 ici. 379 00:19:11,470 --> 00:19:15,180 Sur la troisième passe je pourrais entrez négative 1, 1 négatif, 380 00:19:15,180 --> 00:19:21,810 et enfin si je rentre et 0-- souviens maintenant que cela était index à trois. 381 00:19:21,810 --> 00:19:25,350 >> Après on boucle de retour, i est va être incrémenté à 4. 382 00:19:25,350 --> 00:19:27,770 i est plus petit que n, ce qui est quatre. 383 00:19:27,770 --> 00:19:29,840 Et nous sortir de la boucle. 384 00:19:29,840 --> 00:19:32,578 Donc, ce qui serait le problème? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Inaudible]? 387 00:19:38,729 --> 00:19:39,604 AUDIENCE: [inaudible] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Oui. 390 00:19:46,400 --> 00:19:51,550 Donc, le tableau n'a que quatre places, ce qui signifie que les indices 0 à 3. 391 00:19:51,550 --> 00:19:55,630 Donc, si tel était le cas, je le ferais prendre la valeur 4 à un certain point. 392 00:19:55,630 --> 00:20:00,910 tranche d'âge 4 sera couchait quoi qu'il arrive à être plus ici 393 00:20:00,910 --> 00:20:02,920 à ce que je dois dire, entrez 6. 394 00:20:02,920 --> 00:20:05,010 Ce paramètre va être présent à 6. 395 00:20:05,010 --> 00:20:06,560 >> Mais nous ne savons pas ce qui est ici. 396 00:20:06,560 --> 00:20:08,836 Cela ne veut pas la mémoire que nous avons eu accès. 397 00:20:08,836 --> 00:20:10,710 Donc, si vous vous souvenez de la conférence précédente, 398 00:20:10,710 --> 00:20:14,350 il a été une impression des valeurs de Zamyla et à un moment donné il a frappé cette segmentation 399 00:20:14,350 --> 00:20:17,990 à redire. Donc, vous serez probablement voyez de nombreuses erreurs de segmentation que vous 400 00:20:17,990 --> 00:20:20,530 mettre en œuvre certaines des séries de problèmes. 401 00:20:20,530 --> 00:20:24,950 Mais ceci est un des moyens par lesquels vous pouvez rencontrer une segmentation 402 00:20:24,950 --> 00:20:28,540 faute, lorsque vous démarrez accès mémoire dans les moyens que vous ne devriez pas être. 403 00:20:28,540 --> 00:20:34,117 Donc, on n'a pas eu accès à ce lieu et de ce bogue. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Donc, ce qui est mieux. 406 00:20:40,190 --> 00:20:45,820 Maintenant, il ya encore une petite problème avec ce code. 407 00:20:45,820 --> 00:20:50,720 Et voilà que nous sommes essentiellement toujours coincé à quatre étudiants. 408 00:20:50,720 --> 00:20:52,940 Maintenant, si je veux utiliser huit étudiants, OK. 409 00:20:52,940 --> 00:20:54,350 Il est pas une si grande affaire. 410 00:20:54,350 --> 00:20:58,120 Je peux y aller, changer le commenter et modifier n. 411 00:20:58,120 --> 00:20:59,760 Maintenant cela va fonctionner avec huit élèves. 412 00:20:59,760 --> 00:21:02,190 Si je compile cela et courir cela, il va montrer moi-- 413 00:21:02,190 --> 00:21:07,870 il va demander des nombres entiers de huit étudiants et il fonctionnera. 414 00:21:07,870 --> 00:21:11,850 Mais il est loin d'être idéale avoir besoin de recompiler le programme à chaque fois 415 00:21:11,850 --> 00:21:15,960 Je souhaite modifier le nombre d'étudiants que je veux entrer dans les âges pour. 416 00:21:15,960 --> 00:21:22,990 >> Ainsi, la retouche sur ce, comme nous le verrons ici-- nous sommes 417 00:21:22,990 --> 00:21:26,177 va demander le nombre de personnes. 418 00:21:26,177 --> 00:21:28,010 Ici, nous avons un certain nombre de personnes dans les chambres 419 00:21:28,010 --> 00:21:29,880 ou d'âge des personnes dans la salle. 420 00:21:29,880 --> 00:21:33,300 Mais nous allons demander le nombre des gens dans la salle de l'utilisateur. 421 00:21:33,300 --> 00:21:36,171 Voilà donc le même do-while exacte boucle que nous avons vu auparavant. 422 00:21:36,171 --> 00:21:37,920 Il est exactement la même faire-while que vous 423 00:21:37,920 --> 00:21:40,050 peut être mise en œuvre sur l'ensemble du problème. 424 00:21:40,050 --> 00:21:43,102 Donc, tant que ils sont entrer un n inférieur à 1, 425 00:21:43,102 --> 00:21:45,310 donc il doit y avoir au moins une personne dans la salle. 426 00:21:45,310 --> 00:21:47,407 Tant qu'ils sont entrer un n inférieur à 1, 427 00:21:47,407 --> 00:21:48,990 alors nous allons continuer à demander à nouveau. 428 00:21:48,990 --> 00:21:50,906 S'il vous plaît entrer le numéro des gens dans la salle. 429 00:21:50,906 --> 00:21:53,550 Maintenant, une fois que nous avons le nombre de personnes dans le room-- 430 00:21:53,550 --> 00:21:58,020 donc je pourrais saisir qu'il n'y sont 200 personnes dans cette salle. 431 00:21:58,020 --> 00:22:05,480 Alors ici nous allons à venir et de déclarer un tableau de taille 200. 432 00:22:05,480 --> 00:22:10,220 Nous déclarant tableau qui est assez grande pour accueillir 200 âges. 433 00:22:10,220 --> 00:22:15,370 En descendant, il est la boucle que vous obtiendrez très utilisé pour. 434 00:22:15,370 --> 00:22:19,490 Donc itération sur ce tableau, affecter à chaque emplacement 435 00:22:19,490 --> 00:22:23,020 en ce que matrice un nombre entier, et puis finalement nous sommes ici 436 00:22:23,020 --> 00:22:28,340 simplement obtenir un exemple d'itération sur ce tableau, pour ne pas affecter des valeurs, 437 00:22:28,340 --> 00:22:30,150 mais pour accéder valeurs. 438 00:22:30,150 --> 00:22:33,810 >> Donc, ici nous voyons que nous disent, un an à partir de maintenant, 439 00:22:33,810 --> 00:22:40,470 personne% i sera% vieille i ans, où le premier% i est i + 1. 440 00:22:40,470 --> 00:22:43,010 Donc i est la variable d'index. 441 00:22:43,010 --> 00:22:49,420 Et le second% i va être le valeur stockée dans le tableau âges plus 1. 442 00:22:49,420 --> 00:22:54,217 Donc, ce plus 1 est juste parce que nous sommes saying-- cette plus 1, plus 1 i âges. 443 00:22:54,217 --> 00:22:57,050 Cette plus 1 est juste parce que nous sommes dire, un an à partir de maintenant la personne 444 00:22:57,050 --> 00:22:58,280 sera cette vieille. 445 00:22:58,280 --> 00:23:01,080 >> Alors pourquoi est-ce i + 1? 446 00:23:01,080 --> 00:23:04,064 Pourquoi nous avons une plus 1 là-bas? 447 00:23:04,064 --> 00:23:04,564 Ouais. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Oui. 450 00:23:07,930 --> 00:23:10,510 Alors rappelez-vous les tableaux sont indexées zéro. 451 00:23:10,510 --> 00:23:14,840 Donc, si nous imprimons ce pour quelqu'un vient de lire la sortie, 452 00:23:14,840 --> 00:23:19,380 alors probablement qu'ils veulent voir quelque chose comme personne une, personne numéro un, 453 00:23:19,380 --> 00:23:21,160 sera 20 ans. 454 00:23:21,160 --> 00:23:23,570 Personne numéro deux sera de 15 ans. 455 00:23:23,570 --> 00:23:27,420 Ils préfèrent ne pas voir personne numéro zéro est de 15 ans. 456 00:23:27,420 --> 00:23:36,460 >> Donc cette compilation et juste voir ce que il semble like-- Créer un espace. 457 00:23:36,460 --> 00:23:43,560 Assurez âges compile. 458 00:23:43,560 --> 00:23:45,080 Courir les âges. 459 00:23:45,080 --> 00:23:46,580 Nous voyons nombre de personnes dans la salle. 460 00:23:46,580 --> 00:23:48,850 Je vais donc dire qu'il ya trois personnes dans la salle. 461 00:23:48,850 --> 00:23:54,000 Âge de la personne numéro un, disons 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Et maintenant, je vais le dire dans un an maintenant, ils seront 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Voyons ce que cela fonctionne avec un n qui est égal à trois pas. 464 00:24:02,900 --> 00:24:07,940 Donc, si je dis nombre de personnes est 5, l'un, deux, trois, deux, un, un an à partir de maintenant 465 00:24:07,940 --> 00:24:11,170 ils seront deux, trois, quatre, trois, deux ans. 466 00:24:11,170 --> 00:24:16,500 Donc, je pouvais tout aussi facilement pu être n 10.000. 467 00:24:16,500 --> 00:24:21,270 Maintenant, je serai assis ici pour tout un en entrant les âges, mais cela fonctionne. 468 00:24:21,270 --> 00:24:26,000 >> Alors maintenant, quelque part dans la mémoire nous avoir un tableau de taille 10000, 469 00:24:26,000 --> 00:24:28,830 En fin de compte 40.000 octets, car il ya 470 00:24:28,830 --> 00:24:31,222 quatre octets pour chacun de ces entiers. 471 00:24:31,222 --> 00:24:33,180 Donc, il ya un tableau de 10.000 taille où l'on peut 472 00:24:33,180 --> 00:24:36,201 stocker les âges de ces 10.000 personnes. 473 00:24:36,201 --> 00:24:36,700 Bien. 474 00:24:36,700 --> 00:24:40,070 Questions sur tout cela? 475 00:24:40,070 --> 00:24:41,892 Ouais. 476 00:24:41,892 --> 00:24:43,350 Que faire si vous avez donné un nombre négatif? 477 00:24:43,350 --> 00:24:44,870 Voyons ce qui se passe. 478 00:24:44,870 --> 00:24:49,320 Donc, dans ce numéro de case-- particulier des gens dans la salle, un négatif. 479 00:24:49,320 --> 00:24:52,580 Il a rejeté cette, parce qu'ici nous nous trouvons 480 00:24:52,580 --> 00:24:57,180 à la manipulation du fait que, si n est égal à moins de celui que nous allons demander à nouveau. 481 00:24:57,180 --> 00:25:01,780 Si vous essayez de déclarer une tableau de taille négative, 482 00:25:01,780 --> 00:25:03,950 il généralement ne fonctionne pas. 483 00:25:03,950 --> 00:25:05,570 >> Essayons donc. 484 00:25:05,570 --> 00:25:08,000 Ignorons quel que soit valeur qu'ils entrée pour n 485 00:25:08,000 --> 00:25:10,571 et dire simplement âges int négative. 486 00:25:10,571 --> 00:25:12,410 Voyons voir si il compile même. 487 00:25:12,410 --> 00:25:14,100 Je ne suis pas sûr. 488 00:25:14,100 --> 00:25:14,920 Non. 489 00:25:14,920 --> 00:25:18,280 Donc âges est déclaré comme un tableau avec une taille négative. 490 00:25:18,280 --> 00:25:22,540 Donc, dès le départ, il reconnaît un tableau ne peut pas être d'une taille négative et la rejette. 491 00:25:22,540 --> 00:25:26,840 Maintenant, si nous ne traitons cette boucle do-while correctement, 492 00:25:26,840 --> 00:25:28,810 si nous étions ne pas vérifier si n est inférieur à 1-- 493 00:25:28,810 --> 00:25:32,690 disons que nous venons n'a pas eu du tout 494 00:25:32,690 --> 00:25:35,940 et à la place nous suffit de saisir un nombre entier. 495 00:25:35,940 --> 00:25:40,710 Peu importe ce qui est entier, nous déclarons un tableau de cette taille. 496 00:25:40,710 --> 00:25:44,250 >> Ainsi, le compilateur ne peut pas éventuellement se plaindre maintenant. 497 00:25:44,250 --> 00:25:48,780 Si je compile this-- de sorte qu'il ne peut pas se plaindre, 498 00:25:48,780 --> 00:25:51,480 car il ne peut pas savoir que je suis va saisir un nombre négatif, 499 00:25:51,480 --> 00:25:52,550 qui pourrait être invalide. 500 00:25:52,550 --> 00:25:54,633 Pour tout ce qu'il sait, je pourrais Saisissez un nombre positif, 501 00:25:54,633 --> 00:25:56,000 ce qui est parfaitement valide. 502 00:25:56,000 --> 00:26:01,090 Donc, je pense, si je rentre négative 1 personnes dans la salle, Segmentation fault. 503 00:26:01,090 --> 00:26:06,040 >> Donc d'accord. 504 00:26:06,040 --> 00:26:13,160 Ajoutons donc ce retour juste garder ce qu'il était à l'origine. 505 00:26:13,160 --> 00:26:15,640 Donc, assurez-âges. 506 00:26:15,640 --> 00:26:18,120 Maintenant, si je veux essayer un négative age-- nous allons donc 507 00:26:18,120 --> 00:26:19,710 disent qu'il ya cinq personnes dans la salle. 508 00:26:19,710 --> 00:26:23,180 Âge de la personne numéro un est négative 4, de trois personnes 509 00:26:23,180 --> 00:26:26,500 est nul, personne three-- OK. 510 00:26:26,500 --> 00:26:29,850 Donc, ici, à partir de maintenant, le nombre de personnes par an on sera négative de 3 ans. 511 00:26:29,850 --> 00:26:32,830 Alors sans doute n'a pas de sens. 512 00:26:32,830 --> 00:26:37,220 Mais cela est juste parce que la recherche le code tout ce que nous faisons 513 00:26:37,220 --> 00:26:40,260 est demandant getint. 514 00:26:40,260 --> 00:26:44,110 >> Maintenant, si nous avions eu le Fonction GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 ou nous avions tout simplement fait ce sorte de même boucle while là-bas, 516 00:26:49,690 --> 00:26:52,340 alors ce serait fonctionnera parfaitement. 517 00:26:52,340 --> 00:26:54,200 Mais dans ce cas particulier cas, nous faisons tout simplement pas 518 00:26:54,200 --> 00:26:57,772 arriver à être la manipulation des valeurs négatives. 519 00:26:57,772 --> 00:26:59,147 D'autres questions sur les tableaux? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 D'ACCORD. 522 00:27:03,250 --> 00:27:09,380 >> Donc, nous avons maintenant vu les tableaux. 523 00:27:09,380 --> 00:27:12,500 Et nous allons avoir besoin d'utiliser ce pour les arguments de ligne de commande. 524 00:27:12,500 --> 00:27:14,680 Donc, en problème posé two-- Je sais que beaucoup d'entre vous 525 00:27:14,680 --> 00:27:18,040 pourrait encore travailler sur le plateau de problème l'un, mais le problème réglé deux est à venir. 526 00:27:18,040 --> 00:27:22,260 Dans problème réglé deux, vous allez besoin d'être face à chaînes, des tableaux, 527 00:27:22,260 --> 00:27:23,950 et les arguments de ligne de commande. 528 00:27:23,950 --> 00:27:26,270 >> Alors, quels sont les arguments de ligne de commande? 529 00:27:26,270 --> 00:27:29,570 Maintenant, vous pouvez voir ici une petit teaser pour exactement ce qui est 530 00:27:29,570 --> 00:27:30,950 va se passer. 531 00:27:30,950 --> 00:27:32,950 Nous voyons int main, argc inc, crochets chaîne de argv. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Donc, d'abord nous allons essayer d'interpréter ce qui essaie de dire. 534 00:27:38,130 --> 00:27:40,800 Maintenant OK. 535 00:27:40,800 --> 00:27:44,637 >> Donc, à la ligne de commande, vous devriez être s'y habituer à certaines de ces commandes 536 00:27:44,637 --> 00:27:48,580 maintenant, et vous avez probablement courir cd dans le terminal avant. 537 00:27:48,580 --> 00:27:52,100 Donc, si nous disons cd pset1, vous savez que cela devrait 538 00:27:52,100 --> 00:27:55,050 être changer dans le répertoire de pset1. 539 00:27:55,050 --> 00:27:59,120 >> Maintenant, remarquez que vous avez jamais écrit un programme comme ça avant. 540 00:27:59,120 --> 00:28:03,120 Chaque programme que vous avez écrit, vous devez exécuter, disons, dot slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot slash gourmand, et puis il peut vous demander pour l'entrée. 542 00:28:06,779 --> 00:28:08,570 Maintenant, ce ne est pas ce que changement de répertoire fait. 543 00:28:08,570 --> 00:28:12,770 Lorsque vous exécutez cd, puis il ne dit pas, quel répertoire que vous voulez en cd? 544 00:28:12,770 --> 00:28:17,200 Au lieu de cela, vous venez de dire, cd pset1, et il va juste dans le répertoire de pset1. 545 00:28:17,200 --> 00:28:20,430 >> Pareillement nous avons d'autres exemples. 546 00:28:20,430 --> 00:28:21,540 faire bonjour. 547 00:28:21,540 --> 00:28:25,760 Lorsque vous exécutez faire, il ne dit pas alors, quel programme voulez-vous faire? 548 00:28:25,760 --> 00:28:29,620 Vous venez de dire, à la ligne de commande make bonjour. 549 00:28:29,620 --> 00:28:31,060 >> Move est un autre exemple. 550 00:28:31,060 --> 00:28:34,840 Celui-ci nous allons le mario.c déposer d'un répertoire. 551 00:28:34,840 --> 00:28:38,060 Alors maintenant, nous savons avec cet exemple nous sommes vraiment passer deux arguments. 552 00:28:38,060 --> 00:28:42,090 Il ya mario.c comme premier argument, et dot est le deuxième argument. 553 00:28:42,090 --> 00:28:46,140 Et puis quand vous exécutez make, vous voir que vraiment longue commande line-- 554 00:28:46,140 --> 00:28:50,580 que vraiment longue commande imprimé à la ligne de commande. 555 00:28:50,580 --> 00:28:53,590 Alors que la durée de cette command-- est juste une courte partie, 556 00:28:53,590 --> 00:28:56,090 mais maintenant nous avons trois arguments de ligne de commande. 557 00:28:56,090 --> 00:28:59,750 Dot tiret zéro, bonjour, et hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Ce sont donc en ligne de commande arguments, des arguments 559 00:29:03,497 --> 00:29:05,580 que vous êtes de passage à la ligne de commande de sorte qu'il 560 00:29:05,580 --> 00:29:08,680 n'a pas à être invité lorsque vous exécutez le programme. 561 00:29:08,680 --> 00:29:13,090 Il serait frustrant si quand vous avez exécuté Clang il dit, "OK, 562 00:29:13,090 --> 00:29:15,630 qui program-- qui fichier-vous compiler? 563 00:29:15,630 --> 00:29:17,010 Bonjour c. 564 00:29:17,010 --> 00:29:19,440 Que voulez-vous drapeaux voulez entrer? tableau de bord o. 565 00:29:19,440 --> 00:29:21,190 Quaimerais-tu le fichier d'être appelé? 566 00:29:21,190 --> 00:29:21,690 Bonjour. 567 00:29:21,690 --> 00:29:25,290 Non, il suffit de lancer clang dash o bonjour hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Donc, en regardant en arrière à ce. 569 00:29:28,820 --> 00:29:32,920 Maintenant argc argc-- est comtes d'arguments. 570 00:29:32,920 --> 00:29:36,620 Il est le nombre de ligne de commande arguments entrés à la ligne de commande. 571 00:29:36,620 --> 00:29:39,720 Eh bien, techniquement argv-- v signifie vecteur, 572 00:29:39,720 --> 00:29:41,460 ce qui signifie fondamentalement tableau. 573 00:29:41,460 --> 00:29:42,680 Mais vous pouvez l'ignorer. 574 00:29:42,680 --> 00:29:47,540 Argv-- nous avons chaîne argv, donc parenthèses chaîne de argv. 575 00:29:47,540 --> 00:29:50,150 Donc, ceci est une autre forme de crochets que vous avez jamais vu auparavant. 576 00:29:50,150 --> 00:29:52,300 Support de sorte que nous avons vu notation quand nous l'avons dit, 577 00:29:52,300 --> 00:29:53,970 comme, chaîne s est égal Zamyla. 578 00:29:53,970 --> 00:29:56,910 s tranche 0 accède au Z. caractère 579 00:29:56,910 --> 00:30:00,720 >> Nous avons également vu parenthèses lorsque nous avons dit int âges encadrent 5. 580 00:30:00,720 --> 00:30:03,160 Qui a déclaré un tableau de taille 5. 581 00:30:03,160 --> 00:30:06,280 Voici donc une version de la supports nous ont pas vu avant. 582 00:30:06,280 --> 00:30:09,630 Donc, ce genre de chaîne que argv serait complètement familier 583 00:30:09,630 --> 00:30:12,050 que ce serait juste une chaîne. 584 00:30:12,050 --> 00:30:14,520 Maintenant, les parenthèses indiquent ce qui est un tableau. 585 00:30:14,520 --> 00:30:19,920 Donc supports chaîne de argv moyens que argv est un tableau de chaînes. 586 00:30:19,920 --> 00:30:22,540 Maintenant techniquement une chaîne est un tableau de caractères. 587 00:30:22,540 --> 00:30:26,400 Donc, cela est maintenant un tableau d'un tableau de caractères. 588 00:30:26,400 --> 00:30:31,490 Mais il est beaucoup plus facile de penser ce que tout un tableau de chaînes. 589 00:30:31,490 --> 00:30:34,900 >> Alors, pourquoi les supports pourraient être vide? 590 00:30:34,900 --> 00:30:38,170 Comme, pourquoi ne pouvons-nous dire, support 5, le support n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Ouais. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Ouais. 595 00:30:44,230 --> 00:30:46,396 Nous ne savons pas combien de entrées là-bas vont être. 596 00:30:46,396 --> 00:30:53,560 Donc, si nous regardons l'exemple clang, nous disons Clang tableau de bord o bonjour hello.c. 597 00:30:53,560 --> 00:30:56,710 Dans ce cas particulier, il arrive être trois arguments de ligne de commande. 598 00:30:56,710 --> 00:31:00,522 Et donc la brackets-- nous allons voir dans une seconde il ne serait pas trois. 599 00:31:00,522 --> 00:31:01,730 Il serait techniquement quatre. 600 00:31:01,730 --> 00:31:04,030 Mais les supports, nous le ferions par exemple, il ya trois ans. 601 00:31:04,030 --> 00:31:08,220 Mais maintenant, si nous avons regardé déménagement mario.c dot, les supports 602 00:31:08,220 --> 00:31:09,760 nous voudrions mettre deux en eux. 603 00:31:09,760 --> 00:31:12,884 >> Et il ya beaucoup de commandes qui avoir un nombre variable de ligne de commande 604 00:31:12,884 --> 00:31:13,620 arguments. 605 00:31:13,620 --> 00:31:17,430 Alors, que cette version de la la notation crochets indique 606 00:31:17,430 --> 00:31:20,820 est que argv est un tableau de chaînes. 607 00:31:20,820 --> 00:31:24,360 Mais nous ne savons pas combien de cordes sont dans ce tableau. 608 00:31:24,360 --> 00:31:27,090 Et comment savons-nous alors comment de nombreuses chaînes sont dans le tableau? 609 00:31:27,090 --> 00:31:28,870 Voilà toute l'argc point. 610 00:31:28,870 --> 00:31:32,300 argc nous dit combien de temps est argv. 611 00:31:32,300 --> 00:31:36,500 >> Donc la dernière chose à garder à l'esprit est que, techniquement, 612 00:31:36,500 --> 00:31:40,820 la commande elle-même compte parmi des arguments de ligne de commande. 613 00:31:40,820 --> 00:31:45,330 Donc cd pset1, il ya deux arguments de ligne de commande. 614 00:31:45,330 --> 00:31:50,260 Le programme en lui-même, cd, puis la partie argument réel de celui-ci, pset1. 615 00:31:50,260 --> 00:31:54,490 Tout programme que vous avez écrit à ce jour a eu la dot de l'un de ligne de commande 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 Voilà le seul argument en ligne de commande. 618 00:31:57,350 --> 00:32:00,900 >> Alors maintenant, en regardant clang dash o bonjour hello.c. 619 00:32:00,900 --> 00:32:01,905 Alors, quelle est argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Donc argc est 4. 623 00:32:08,140 --> 00:32:12,140 Clang, support de façon argv 0 est clang. 624 00:32:12,140 --> 00:32:15,630 argv support 1 est dash 0. 625 00:32:15,630 --> 00:32:21,870 argv étrier 2 est bonjour, et argv support 3 est hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, donc des questions sur cette, et puis nous allons examiner quelques exemples programmatiques. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> D'ACCORD. 629 00:32:30,480 --> 00:32:36,260 Donc, nous allons jeter un oeil à hello3.c. 630 00:32:36,260 --> 00:32:41,890 Donc, ce doit être familier de l'un des premiers exemples de c 631 00:32:41,890 --> 00:32:45,800 nous avons eu où nous voulons juste dire bonjour monde, mais maintenant, ce qui est plus général. 632 00:32:45,800 --> 00:32:52,300 Nous sommes donc ici de dire bonjour barre oblique inverse n argv la tranche de 1%. 633 00:32:52,300 --> 00:32:57,440 Notice-- sorte jusqu'à ce point, cela est ce que mon fichier de modèle a ressemblé. 634 00:32:57,440 --> 00:33:01,800 Je devais int main (void), et alors je serais faire quelque chose dans la fonction principale. 635 00:33:01,800 --> 00:33:05,100 Maintenant, au lieu, une fois que nous commençons à traiter avec des arguments de ligne de commande, 636 00:33:05,100 --> 00:33:07,890 nous avons besoin de déclarer un forme différente de principal. 637 00:33:07,890 --> 00:33:11,930 >> Donc en regardant hello3 à nouveau, la principale va 638 00:33:11,930 --> 00:33:15,990 de prendre deux arguments maintenant-- int argc, le nombre d'arguments de ligne de commande, 639 00:33:15,990 --> 00:33:20,970 et la chaîne argv parenthèses, le réel cordes entrés à la ligne de commande. 640 00:33:20,970 --> 00:33:26,560 Donc, je vais changer cela modèle pour refléter ce fait. 641 00:33:26,560 --> 00:33:29,060 Maintenant, chaque fois que vous écrivez un programme, si vous ne faites pas 642 00:33:29,060 --> 00:33:33,720 besoin de prendre de la ligne de commande arguments, alors utilisez simplement int main (void). 643 00:33:33,720 --> 00:33:37,070 Mais maintenant, quand vous écrivez programmes d'arguments de ligne de commande, ce qui 644 00:33:37,070 --> 00:33:40,350 vous allez faire pour le problème mettre two-- alors maintenant que vous courez 645 00:33:40,350 --> 00:33:42,630 programmes qui ont besoin de prendre arguments de ligne de commande, 646 00:33:42,630 --> 00:33:45,250 vous devez avoir principale de cette forme. 647 00:33:45,250 --> 00:33:51,290 >> Donc ici-- cela est la grande utilisation de l'argument en ligne de commande. 648 00:33:51,290 --> 00:33:54,100 Donc impression argv 1. 649 00:33:54,100 --> 00:33:59,180 OK donc nous allons compiler et exécuter ce programme. 650 00:33:59,180 --> 00:34:02,440 Assurez hello3. 651 00:34:02,440 --> 00:34:03,570 Compile. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 Et disons, "Rob." 654 00:34:08,920 --> 00:34:10,760 Bonjour Rob. 655 00:34:10,760 --> 00:34:14,940 Si je dis «bonjour Maria," bonjour Maria. 656 00:34:14,940 --> 00:34:15,719 Bonjour Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah dit encore, "bonjour Maria, "parce que je ne suis pas 658 00:34:18,639 --> 00:34:21,340 faire quelque chose avec notre argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 serait désormais "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc serait 3. 661 00:34:25,030 --> 00:34:27,735 Que faire si je l'ai fait? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Donc bonjour nulle. 664 00:34:34,679 --> 00:34:38,760 >> Il a brièvement touché sur le fait que, techniquement, GetString 665 00:34:38,760 --> 00:34:42,429 pourrait retourner null, mais nous allons obtenir un beaucoup plus dans ce qui est en fait nulle. 666 00:34:42,429 --> 00:34:47,449 Mais le prendre comme une question de fait qu'aucun est généralement mauvais. 667 00:34:47,449 --> 00:34:50,179 Nous avons fait quelque chose de mal si il est l'impression de «bonjour nulle." 668 00:34:50,179 --> 00:34:52,179 Et la raison que nous avons fait quelque chose de mal est-- bien, 669 00:34:52,179 --> 00:34:56,179 quand je courais dot slash hello3, argc est 1. 670 00:34:56,179 --> 00:34:59,680 Cela signifie donc que la longueur de argv est une. 671 00:34:59,680 --> 00:35:05,110 Si un tableau est de longueur 1, le seul indice valable est nulle. 672 00:35:05,110 --> 00:35:08,550 Et alors voici argv 1 est à l'extérieur la gamme de ce tableau. 673 00:35:08,550 --> 00:35:13,410 Il était semblable à avant quand je essayé pour stocker 6 en dehors de la fin du tableau. 674 00:35:13,410 --> 00:35:18,100 Donc, je suis en train d'accéder à quelque chose en dehors des comtes de argv, 675 00:35:18,100 --> 00:35:21,340 et nous obtenons nulle. 676 00:35:21,340 --> 00:35:24,360 >> Donc une meilleure version de cela, une amélioration, 677 00:35:24,360 --> 00:35:27,010 est la vérification explicitement argc. 678 00:35:27,010 --> 00:35:33,580 Donc, si argc est égal à 2, cela signifie que nous avons couru quelque chose comme dot slash hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Et il va imprimer "bonjour Rob." 680 00:35:36,840 --> 00:35:39,850 Si argc ne correspond pas à 2, alors il va juste 681 00:35:39,850 --> 00:35:42,560 d'ignorer ce que vous mettez à l'argument de ligne de commande 682 00:35:42,560 --> 00:35:43,960 comme arguments de ligne de commande. 683 00:35:43,960 --> 00:35:47,168 Ou si vous ne mettez pas du tout, il est aller juste d'ignorer cela et dire simplement, 684 00:35:47,168 --> 00:35:47,960 "salut toi." 685 00:35:47,960 --> 00:35:51,490 >> Donc cette compilation. 686 00:35:51,490 --> 00:35:54,500 Assurez hello4. 687 00:35:54,500 --> 00:35:56,790 Et courir hello4. 688 00:35:56,790 --> 00:36:00,010 Exécution de cette façon, ce qui devrait être imprimée? 689 00:36:00,010 --> 00:36:01,330 "Salut toi." 690 00:36:01,330 --> 00:36:02,810 Salut toi. 691 00:36:02,810 --> 00:36:05,870 Qu'en est-il hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Bonjour Rob." 693 00:36:06,950 --> 00:36:10,580 Et enfin, bonjour Rob Maria est juste "bonjour Vous" à nouveau, 694 00:36:10,580 --> 00:36:13,677 parce que vous ne l'avez pas vraiment entrer quelque chose qu'il ne devrait. 695 00:36:13,677 --> 00:36:15,510 Vous avez saisi plusieurs noms que ce qu'elle pourrait manipuler, 696 00:36:15,510 --> 00:36:19,500 donc ça par défaut à le bonjour vous comportement. 697 00:36:19,500 --> 00:36:23,040 Donc questions sur cette? 698 00:36:23,040 --> 00:36:26,290 Ou arguments de ligne de commande? 699 00:36:26,290 --> 00:36:28,690 >> OK, donc jeter un oeil à un quelques autres exemples de l'utilisation de 700 00:36:28,690 --> 00:36:34,230 ligne de commande arguments-- premier nous avons argv tiret 1 point c. 701 00:36:34,230 --> 00:36:38,510 Donc les commentaires donner ce ce programme devrait être fait. 702 00:36:38,510 --> 00:36:42,460 Mais remarquez maintenant-- cette boucle, cela correspond à la configuration exacte 703 00:36:42,460 --> 00:36:43,390 Je disais avant. 704 00:36:43,390 --> 00:36:46,240 Il nous arrive juste pour être argc utilisant à la place de n. 705 00:36:46,240 --> 00:36:48,880 Maintenant argc est vraiment le n. 706 00:36:48,880 --> 00:36:51,260 Il est la longueur du tableau argv. 707 00:36:51,260 --> 00:36:59,600 Ainsi sont itération sur l'argv tableau printf-ing chaque valeur de argv. 708 00:36:59,600 --> 00:37:04,730 >> Donc, si je fais cela. 709 00:37:04,730 --> 00:37:08,232 Assurez argv 1. 710 00:37:08,232 --> 00:37:09,940 Il compile. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Just Running cela, il gravures parsèment slash argv 1 713 00:37:15,530 --> 00:37:18,500 depuis ce fut la seule ligne de commande argument-- le nom du programme. 714 00:37:18,500 --> 00:37:22,080 Il y aura toujours au moins: argc ne peut pas être inférieur à un, 715 00:37:22,080 --> 00:37:25,910 car il y aura toujours au moins être le nom du programme à exécuter. 716 00:37:25,910 --> 00:37:32,040 Donc, argv 1 Rob imprimer argv 1 puis sur la nouvelle ligne "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Ainsi, dans la première itération de cette boucle, i est 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 est le nom du programme. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 Et puis argv 1 est mon premier l'argument de ligne de commande, qui est Rob. 721 00:37:43,770 --> 00:37:45,920 À ce stade, nous sommes égaux à ARGC. 722 00:37:45,920 --> 00:37:48,210 Nous sortir de la boucle et nous avons terminé. 723 00:37:48,210 --> 00:37:53,940 Donc cela va fonctionner pour un arbitraire nombre d'arguments de ligne de commande. 724 00:37:53,940 --> 00:37:58,550 Remarquez qu'il imprime argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 Et il n'y a pas argv 5. 726 00:38:00,150 --> 00:38:01,460 argc est égal à 5. 727 00:38:01,460 --> 00:38:06,960 Donc, à argc-- au i est égal à 5, nous sortir de la boucle. 728 00:38:06,960 --> 00:38:07,950 D'ACCORD. 729 00:38:07,950 --> 00:38:11,315 Autant de questions à ce sujet avant que nous regarder un exemple plus complexe? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Donc argv 2. 732 00:38:16,860 --> 00:38:17,830 Bien. 733 00:38:17,830 --> 00:38:20,610 Donc, nous sommes toujours l'impression les arguments de ligne de commande. 734 00:38:20,610 --> 00:38:23,170 Mais maintenant, nous avons remarqué emboîtée boucle. 735 00:38:23,170 --> 00:38:24,670 Quel est donc ce fait? 736 00:38:24,670 --> 00:38:28,430 Donc la première boucle est fait exactement ce qu'il a fait avant. 737 00:38:28,430 --> 00:38:30,950 Nous sommes encore en boucle sur chaque argument en ligne de commande, 738 00:38:30,950 --> 00:38:34,260 mais maintenant cette deuxième loop-- nous avons également vu quelque chose comme ça avant. 739 00:38:34,260 --> 00:38:38,600 Quand il a été itération sur Zamyla imprimer Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Donc cette deuxième boucle pour int j est égal à 0, n est égal à strlen de argv support i. 741 00:38:44,816 --> 00:38:49,170 >> Donc, nous devons penser d'abord pour the-- marchons à travers. 742 00:38:49,170 --> 00:38:53,560 Disons penser ce que l'ordinateur serait faire si je courais ce programme comme juste dot 743 00:38:53,560 --> 00:38:56,030 slash argv tiret 2. 744 00:38:56,030 --> 00:39:03,590 Donc, si je courais ce code, puis argc va être égal à 1. 745 00:39:03,590 --> 00:39:07,050 Et chaîne argv-- il est seulement va être un index dans argv, 746 00:39:07,050 --> 00:39:12,370 et que ça va être égal à dot slash argv 2-- le nom du programme. 747 00:39:12,370 --> 00:39:19,170 >> OK, alors maintenant je égale à 0, i moins de 1, i plus plus pour int j est égal à 0, 748 00:39:19,170 --> 00:39:23,880 n est égal à strlen de argv tranche 0, donc en la première itération de cette boucle. argv 749 00:39:23,880 --> 00:39:27,250 0 support est slash dot argv 2. 750 00:39:27,250 --> 00:39:29,320 Alors, quelle est la longueur de cette chaîne? 751 00:39:29,320 --> 00:39:32,480 Eh bien, dot slash A-R-G-V Dash 2. 752 00:39:32,480 --> 00:39:35,020 Donc strlen de ce sera 8. 753 00:39:35,020 --> 00:39:37,500 Donc, j est égal à 0, n est égal à 8. 754 00:39:37,500 --> 00:39:39,530 Tant que j est inférieur à 8, j ++. 755 00:39:39,530 --> 00:39:44,080 Et avec ce que nous allons être l'impression d'un seul caractère, qui 756 00:39:44,080 --> 00:39:47,350 est argv support i SUPPORT j. 757 00:39:47,350 --> 00:39:49,826 >> Donc, la seule i est nul. 758 00:39:49,826 --> 00:39:51,700 Nous avons encore un seul l'argument de ligne de commande. 759 00:39:51,700 --> 00:39:53,890 Dans cette première itération de la boucle for, nous sommes 760 00:39:53,890 --> 00:39:56,950 va être l'impression argv support 0 0 support. 761 00:39:56,950 --> 00:39:58,325 Et puis j va incrémenter. 762 00:39:58,325 --> 00:40:01,650 Et nous allons à l'impression argv 0 support support 1. 763 00:40:01,650 --> 00:40:04,150 Et puis argv 0 support étrier 2. 764 00:40:04,150 --> 00:40:09,030 >> Alors ceci est notre première rencontre des tableaux multi-dimensionnels. 765 00:40:09,030 --> 00:40:12,770 Se souvenir de ce que je disais plus tôt argv qui est techniquement 766 00:40:12,770 --> 00:40:15,950 un tableau de tableaux de caractères. 767 00:40:15,950 --> 00:40:24,360 Donc ici si je disais quelque chose comme chaîne s est égal argv support i, 768 00:40:24,360 --> 00:40:29,590 support de la j, puis je l'ai dit, ce serait accomplir la même chose. 769 00:40:29,590 --> 00:40:31,960 Maintenant, vous avez vu de support j avant. 770 00:40:31,960 --> 00:40:36,680 Cela est juste accéder à la j-ème caractère de cette chaîne. 771 00:40:36,680 --> 00:40:48,010 Donc, avec cela, nous obtenons la caractère j-ième de la argv i-ième. 772 00:40:48,010 --> 00:40:51,450 >> Donc, ce qui devrait en fin de compte cette sortie? 773 00:40:51,450 --> 00:40:53,210 Assurez argv 2. 774 00:40:53,210 --> 00:40:54,730 Il compile. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," et nous donner une certaine marge. 777 00:41:03,790 --> 00:41:07,050 Ainsi, nous voyons que cette sortie est point sur sa propre ligne et slash 778 00:41:07,050 --> 00:41:08,920 sur sa propre ligne et sur sa propre ligne. 779 00:41:08,920 --> 00:41:11,260 Il a l'impression de chaque caractère individuel 780 00:41:11,260 --> 00:41:12,950 de chaque argument de ligne de commande. 781 00:41:12,950 --> 00:41:15,960 Ensuite, entre les deux, à cause de cette nouvelle ligne 782 00:41:15,960 --> 00:41:19,380 nous sommes l'impression ici-bas, dans entre eux, il va imprimer une nouvelle ligne. 783 00:41:19,380 --> 00:41:24,540 >> Donc, ce qui est similaire à le tableau de bord de argv avant 1, 784 00:41:24,540 --> 00:41:26,459 qui chaque imprimé l'argument de ligne de commande, 785 00:41:26,459 --> 00:41:28,500 mais maintenant nous sommes l'impression les arguments de ligne de commande 786 00:41:28,500 --> 00:41:31,950 et ensuite à travers chaque itération caractère de chaque argument de ligne de commande 787 00:41:31,950 --> 00:41:35,400 pour obtenir cette sortie. 788 00:41:35,400 --> 00:41:36,870 D'accord? 789 00:41:36,870 --> 00:41:40,570 Donc questions sur cette? 790 00:41:40,570 --> 00:41:45,130 >> Une chose à noter est que ligne de commande arguments-- 791 00:41:45,130 --> 00:41:49,990 de sorte qu'ils sont séparés par des espaces que vous auriez naturellement attendez qu'ils soient. 792 00:41:49,990 --> 00:41:53,050 Donc, une chaîne peut avoir des espaces. 793 00:41:53,050 --> 00:41:57,380 Il est pas super important, mais si je voulu le troisième argument en ligne de commande 794 00:41:57,380 --> 00:42:01,226 d'avoir un espace en elle, alors je pourrait dire quelque chose comme ça. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 D'accord? 797 00:42:05,550 --> 00:42:12,190 Donc, ce a encore plus maintenant que trois de ligne de commande de puits arguments-- 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv tiret 2, Rob, Maria, et Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 D'ACCORD. 800 00:42:18,320 --> 00:42:19,310 Questions sur ce sujet? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Il ya rien de spécial sur le caractère de l'espace. 803 00:42:24,894 --> 00:42:27,810 Il se trouve être que la ligne de commande traite le caractère espace 804 00:42:27,810 --> 00:42:29,226 que la façon dont vous vous séparez chaque argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Bien. 807 00:42:33,000 --> 00:42:39,950 Alors problème ensemble two-- vous allez être 808 00:42:39,950 --> 00:42:43,240 en regardant la cryptographie à clé secrète. 809 00:42:43,240 --> 00:42:47,700 Ainsi, par exemple similaire à celui nous avons vu de A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 vous allez être mise en œuvre de certains algorithmes qui, étant donné un message, 811 00:42:52,840 --> 00:42:55,560 vous allez être en mesure crypter un message pour que 812 00:42:55,560 --> 00:42:58,730 que seul quelqu'un avec ce secret touche, avec cette bague de décodeur, 813 00:42:58,730 --> 00:43:01,090 devrait être en mesure de décrypter. 814 00:43:01,090 --> 00:43:04,839 >> Voilà donc l'édition standard. 815 00:43:04,839 --> 00:43:07,130 Vous allez être la mise en œuvre deux versions différentes. 816 00:43:07,130 --> 00:43:09,620 Si vous arrive de prendre un coup d'oeil au pirate edition-- maintenant, 817 00:43:09,620 --> 00:43:12,600 nous allons donner vous une chaîne de ce genre, 818 00:43:12,600 --> 00:43:15,240 ce qui représente un mot de passe crypté. 819 00:43:15,240 --> 00:43:19,990 Donc, votre objectif est de comprendre ce que le mot de passe est déchiffrée. 820 00:43:19,990 --> 00:43:26,950 Maintenant, cela est réellement comment les mots de passe sont stockées dans un grand nombre d'ordinateurs, 821 00:43:26,950 --> 00:43:31,290 et il stocke ce juste chaîne de caractères aléatoires. 822 00:43:31,290 --> 00:43:34,440 Vous devez comprendre comment obtenir de cette chaîne de caractères aléatoires 823 00:43:34,440 --> 00:43:36,140 à ce que le mot de passe original était. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Enfin, après cette jeu de problème, vous devriez 826 00:43:43,290 --> 00:43:46,100 être capable de comprendre ce que cela signifie. 827 00:43:46,100 --> 00:43:51,650 Donc, vous allez apprendre à décrypter ce genre de chaîne aléatoire. 828 00:43:51,650 --> 00:43:56,390 De même, si vous vous souvenez de la semaine 0, vous pourriez avoir vu cette URL. 829 00:43:56,390 --> 00:44:00,210 Et vous devriez être en mesure de décrypter cette suite. 830 00:44:00,210 --> 00:44:04,810 Vous pourriez ne pas être heureux quand vous décrypter et cliquez sur le lien. 831 00:44:04,810 --> 00:44:05,700 Bien. 832 00:44:05,700 --> 00:44:06,591 Voilà pour aujourd'hui. 833 00:44:06,591 --> 00:44:12,095 Donc, vous voyez la semaine prochaine! 834 00:44:12,095 --> 00:44:18,315 >> [Electronic Music JEU] 835 00:44:18,315 --> 00:47:15,619