1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSEUR: Donc, l'ordre du jour cette semaine, pas que de choses. 3 00:00:09,790 --> 00:00:12,801 Mais nous espérons que très, très utile et pertinentes pour vous les gars cette semaine. 4 00:00:12,801 --> 00:00:15,550 Mais nous allons passer peut-être 15, 20 minutes juste parler rapidement 5 00:00:15,550 --> 00:00:17,370 à propos de la liste de liens. 6 00:00:17,370 --> 00:00:19,694 Listes de liens vont sera couverte sur la quiz. 7 00:00:19,694 --> 00:00:22,610 Donc, il serait peut-être très utile d'apprendre un peu plus sur ce qui est. 8 00:00:22,610 --> 00:00:25,210 >> Nous allons passer la grande la majorité de la section d'aujourd'hui 9 00:00:25,210 --> 00:00:27,640 aller sur quizz zéro problèmes pratiques. 10 00:00:27,640 --> 00:00:30,970 Et puis nous allons économiser peut-être 20, 30 minutes à la fin pour des questions persistantes 11 00:00:30,970 --> 00:00:32,850 quelqu'un a. 12 00:00:32,850 --> 00:00:34,610 >> Et puis, la dernière cinq minutes, je vais 13 00:00:34,610 --> 00:00:36,467 pour donner un discours de la pompe pour le quiz. 14 00:00:36,467 --> 00:00:38,050 Vous voulez que tous les gars d'être ici pour cela. 15 00:00:38,050 --> 00:00:39,591 Parce que ça va être un bon moment. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Tout droit, de sorte que certains matériau sur la liste de liens. 18 00:00:49,230 --> 00:00:52,620 Comment ils sont habituellement structurés est vous avez ce qu'on appelle un noeud, non? 19 00:00:52,620 --> 00:00:54,870 Vous avez ces choses appelées nœuds, qui sont structures. 20 00:00:54,870 --> 00:00:57,360 Je vais aller sur la façon de créer un noeud de la diapositive suivante. 21 00:00:57,360 --> 00:01:00,680 Mais essentiellement tous liés listes est sont des données qui 22 00:01:00,680 --> 00:01:03,340 a été enfilées ensemble par l'intermédiaire des pointeurs. 23 00:01:03,340 --> 00:01:09,110 >> Et donc l'avantage que nous avons d'utiliser une liste chaînée plus, 24 00:01:09,110 --> 00:01:11,280 peut-être, comme un tableau, est le fait que dans un réseau 25 00:01:11,280 --> 00:01:15,000 vous avez besoin d'un bloc contigu de mémoire tous dans le même lieu, on 26 00:01:15,000 --> 00:01:16,870 après un autre, pour pouvoir avoir que. 27 00:01:16,870 --> 00:01:20,200 Considérant que la liste liée, vous pourriez ont peu de bits aléatoires de la mémoire 28 00:01:20,200 --> 00:01:23,020 partout dans votre ordinateur enfilées par des pointeurs. 29 00:01:23,020 --> 00:01:26,270 >> Et de cette façon vous peuvent accéder à l'information 30 00:01:26,270 --> 00:01:28,610 qui vient les uns après les d'autre part, après l'autre 31 00:01:28,610 --> 00:01:32,720 sans qu'il soit juste un gros morceau de mémoire dans votre ordinateur quelque part. 32 00:01:32,720 --> 00:01:35,910 Et donc cela est l'un des principaux raisons pour lesquelles nous utilisons liste de liens. 33 00:01:35,910 --> 00:01:40,300 >> Deuxièmement, il est très facile de dynamique redimensionner la liste des liens parce que dans le tableau, 34 00:01:40,300 --> 00:01:44,720 lorsque vous déclarez un tableau, vous avez une certaine valeur de consigne. 35 00:01:44,720 --> 00:01:47,340 Disons que je voulais créer un tableau de 10 entiers. 36 00:01:47,340 --> 00:01:49,970 Je crée un tableau de 10 entiers, et ça y est. 37 00:01:49,970 --> 00:01:50,580 Il est 10. 38 00:01:50,580 --> 00:01:52,038 Je ne sais pas quoi faire après. 39 00:01:52,038 --> 00:01:53,680 Si je voulais faire 11, ne peut pas le faire. 40 00:01:53,680 --> 00:01:55,710 Si je veux faire 9, ne peut pas le faire. 41 00:01:55,710 --> 00:01:59,910 >> Alors que dans une liste de liens, vous pouvez ajouter et supprimer et insérer où vous voulez. 42 00:01:59,910 --> 00:02:04,940 Vous pouvez redimensionner dynamiquement votre structurer ici, votre structure de données. 43 00:02:04,940 --> 00:02:08,370 Et cela nous donne beaucoup plus de flexibilité 44 00:02:08,370 --> 00:02:11,320 ce que nous faisons généralement pas avoir avec les tableaux. 45 00:02:11,320 --> 00:02:15,210 >> Toute personne confondue sur le base la structure de la façon dont une liste de liens est 46 00:02:15,210 --> 00:02:17,930 ou pourquoi nous devons utiliser une sur un tableau? 47 00:02:17,930 --> 00:02:20,330 Oui, nous allons passer en revue en détail comment effectivement créer un. 48 00:02:20,330 --> 00:02:24,121 Mais cela est juste un peu le sens général en ce moment. 49 00:02:24,121 --> 00:02:24,620 Frais. 50 00:02:24,620 --> 00:02:28,770 Et si les tableaux sont enchaînés de ces belles petites choses 51 00:02:28,770 --> 00:02:29,960 appelés noeuds. 52 00:02:29,960 --> 00:02:32,210 Tout noeud est un est un type de structure. 53 00:02:32,210 --> 00:02:36,090 Rappelez-vous, une structure est si vous vouliez pour créer un certain type de variable 54 00:02:36,090 --> 00:02:39,850 en C qui n'a pas déjà existez, vous, en tant que programmeur, 55 00:02:39,850 --> 00:02:42,030 peut réellement créer vous-même. 56 00:02:42,030 --> 00:02:46,540 >> Et si ce type de données structure est appelée un noeud, 57 00:02:46,540 --> 00:02:50,770 a été effectivement créé par nous, que ne pas exister à l'intérieur de sa propre C. 58 00:02:50,770 --> 00:02:53,150 Et la façon dont vous que créez un est que vous avez 59 00:02:53,150 --> 00:02:57,170 l'en-tête de typedef struct, qui raconte le compilateur je suis 60 00:02:57,170 --> 00:02:59,640 sur le point de créer une structure. 61 00:02:59,640 --> 00:03:00,830 >> Nous allons nom il "noeud." 62 00:03:00,830 --> 00:03:03,350 Et à l'intérieur, nous allons de déclarer une variable dans, 63 00:03:03,350 --> 00:03:05,060 qui se passe pour stocker une valeur. 64 00:03:05,060 --> 00:03:09,320 Et puis nous allons aussi ont appelé un pointeur "next" 65 00:03:09,320 --> 00:03:12,090 que les points à l'autre noeud de la liste de liens. 66 00:03:12,090 --> 00:03:14,730 Et puis vous avez terminé que off simplement en répétant à nouveau noeud afin 67 00:03:14,730 --> 00:03:17,490 le compilateur sait, OK qui est la fin de ma structure. 68 00:03:17,490 --> 00:03:22,540 >> Et de cette manière, nous sommes en quelque sorte de créer un petit réseau mignon 69 00:03:22,540 --> 00:03:25,450 genre de chose avec un la valeur et avec un pointeur. 70 00:03:25,450 --> 00:03:27,757 Et vous pouvez les relier tous avec ces pointeurs. 71 00:03:27,757 --> 00:03:30,090 Alors qu'ils peuvent être de toutes sortes enfilées dans une chaîne. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Frais. 74 00:03:34,162 --> 00:03:35,453 Pouvez-vous entendre ce que un peu mieux? 75 00:03:35,453 --> 00:03:36,140 >> AUDIENCE: Ouais. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSEUR: Très bien. 77 00:03:38,540 --> 00:03:44,280 Ainsi, la manière que, comme vous les gars pouvez le voir, une liste de lien typique est structuré 78 00:03:44,280 --> 00:03:45,500 est vous avez une tête. 79 00:03:45,500 --> 00:03:49,460 Vous avez la valeur de la tête qui est pas étant signalé par tout autre pointeur. 80 00:03:49,460 --> 00:03:53,177 Mais il va pointer, ou de référence, un autre nœud. 81 00:03:53,177 --> 00:03:56,510 Le nœud après va faire référence à la après que le noeud, et ainsi de suite et ainsi de suite 82 00:03:56,510 --> 00:03:59,170 jusqu'à ce que vous a finalement atteint la fin de votre liste de liens. 83 00:03:59,170 --> 00:04:00,980 Et vous ne pourrez pas avoir un pointeur là. 84 00:04:00,980 --> 00:04:04,659 >> Et donc, penser comme, sur une chaîne, ou même si l'un de vous les gars faites, je ne sais pas, 85 00:04:04,659 --> 00:04:06,450 comme avec Fruit Loops quand vous étiez petit. 86 00:04:06,450 --> 00:04:08,590 Vous feriez les enchaîner et les porter autour de votre cou. 87 00:04:08,590 --> 00:04:09,840 Pense qu'il est exactement la même chose. 88 00:04:09,840 --> 00:04:12,964 Vous avez ces petites choses que vous peut enchaîner ce point à l'une 89 00:04:12,964 --> 00:04:15,291 après cela, à l'une après elle, et ainsi de suite et ainsi de suite 90 00:04:15,291 --> 00:04:17,040 jusqu'à ce que vous avez une chaîne d'une structure de données 91 00:04:17,040 --> 00:04:21,190 que vous pouvez utiliser comme bon vous semble. 92 00:04:21,190 --> 00:04:27,370 >> Ainsi, la manière que ce nous le ferions insérer généralement ou supprimer 93 00:04:27,370 --> 00:04:30,020 un nœud d'un lien la liste est très différent 94 00:04:30,020 --> 00:04:31,970 selon l'endroit où ce nœud est. 95 00:04:31,970 --> 00:04:34,880 Ainsi, par exemple, parce que pointeurs sont toujours 96 00:04:34,880 --> 00:04:38,645 pointant à une valeur spécifique, lorsque vous supprimer ou insérer un noeud, 97 00:04:38,645 --> 00:04:41,770 vous voulez vous assurer que le pointeur est tout en montrant les bonnes choses. 98 00:04:41,770 --> 00:04:46,200 >> Donc, si vous vouliez potentiellement insérer un nouveau noeud avec la valeur d'un 99 00:04:46,200 --> 00:04:48,379 l'intérieur d'un lien triée liste, nous le savons tous ici 100 00:04:48,379 --> 00:04:51,170 de l'image qui va passer entre la tête et deux, non? 101 00:04:51,170 --> 00:04:52,620 Parce que l'on adapte là. 102 00:04:52,620 --> 00:04:59,060 Mais la façon dont nous ferions ce que est d'abord le déréférencement du pointeur 103 00:04:59,060 --> 00:05:02,160 de la tête et l'envoi que pour un. 104 00:05:02,160 --> 00:05:05,040 >> Mais nous entrons dans un problème ici. 105 00:05:05,040 --> 00:05:08,280 Quelqu'un peut-il voir ce que le problème est de savoir si nous étions à la première déréférencer 106 00:05:08,280 --> 00:05:10,090 le pointeur de la tête à l'un? 107 00:05:10,090 --> 00:05:14,202 Quel problème pourrions nous heurter si nous essayons pour ajouter ceci à l'avant de notre tableau? 108 00:05:14,202 --> 00:05:15,409 >> AUDIENCE: [inaudible] 109 00:05:15,409 --> 00:05:16,200 PROFESSEUR: Exactement. 110 00:05:16,200 --> 00:05:20,000 Nous avons donc ici un pointeur qui était pointant une fois de la tête à deux. 111 00:05:20,000 --> 00:05:23,120 Mais si vous vous débarrasser de cette pointeur, vous pointez à l'un, 112 00:05:23,120 --> 00:05:26,500 nous avons maintenant aucune idée où aller pour en trouver deux. 113 00:05:26,500 --> 00:05:29,850 Parce que, comme je l'ai dit avant, vous avez une morceau géant de la mémoire de votre ordinateur. 114 00:05:29,850 --> 00:05:31,860 Tous ces noeuds pourrait être entrecoupées hasard 115 00:05:31,860 --> 00:05:33,350 en tout lieu dans votre ordinateur. 116 00:05:33,350 --> 00:05:36,140 Et vous ne savez pas comment s'y prendre pour trouver cela. 117 00:05:36,140 --> 00:05:40,420 >> Et si vous avez besoin d'avoir des pointeurs pointant vers tous les noeuds à la fin. 118 00:05:40,420 --> 00:05:42,420 Ou bien si vous avez accidentellement déréférencer un 119 00:05:42,420 --> 00:05:44,485 sans d'abord attribution d'abord une valeur, vous êtes 120 00:05:44,485 --> 00:05:47,410 juste aller à perdre tout par la suite. 121 00:05:47,410 --> 00:05:49,720 >> Donc, ce que nous allons faire est, vous le feriez premier 122 00:05:49,720 --> 00:05:53,270 vouloir créer un pointeur sur le nœud que vous souhaitez insérer. 123 00:05:53,270 --> 00:05:55,270 Pointez-le à l'endroit où vous vouloir insérer à, 124 00:05:55,270 --> 00:05:59,410 et puis après vous pourrait pointer vers la tête d'un. 125 00:05:59,410 --> 00:06:02,800 >> Est-ce que de sens pour tout le monde ici? 126 00:06:02,800 --> 00:06:03,346 Génial. 127 00:06:03,346 --> 00:06:04,720 Pensez-y comme exactement comme une chaîne. 128 00:06:04,720 --> 00:06:07,420 Si vous ajoutez une chaîne, il est un peu intuitive 129 00:06:07,420 --> 00:06:10,742 comment vous iriez sur l'insertion de cela. 130 00:06:10,742 --> 00:06:15,274 >> OK, donc qui est en fait beaucoup plus courte que ce que je pensais que ce serait, 131 00:06:15,274 --> 00:06:16,690 un spiel de cinq minutes sur les listes de liens. 132 00:06:16,690 --> 00:06:19,960 Juste pour que vous les gars ont le idée de base de ce qui est. 133 00:06:19,960 --> 00:06:23,580 >> Ici, nous avons l'ordre du jour de quizz zéro. 134 00:06:23,580 --> 00:06:24,895 Ne vous laissez pas intimider. 135 00:06:24,895 --> 00:06:26,270 Je sais qu'il ya beaucoup d'informations. 136 00:06:26,270 --> 00:06:27,580 Il semble très effrayant. 137 00:06:27,580 --> 00:06:33,130 Il est aussi beaucoup de, je penser, SCC genre de termes. 138 00:06:33,130 --> 00:06:37,440 Des choses comme des chaînes hexadécimales, pointeurs, les allocations de mémoire dynamique 139 00:06:37,440 --> 00:06:40,120 sont des termes qui sonnent très effrayant. 140 00:06:40,120 --> 00:06:42,700 >> Mais nous allons les briser vers le bas, faire quelques problèmes pratiques 141 00:06:42,700 --> 00:06:44,980 de sorte que tous vous les gars sont prêts pour ce test. 142 00:06:44,980 --> 00:06:47,104 Combien d'entre vous les gars ont déjà commencé à étudier? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, les gars vous voulez probablement pour commencer la mise en route 145 00:06:53,670 --> 00:06:56,480 à ce sujet, parce que le quiz est demain. 146 00:06:56,480 --> 00:06:58,739 Ou jeudi pour certains d'entre vous. 147 00:06:58,739 --> 00:07:01,030 Ouais, donc nous allons aller sur certains problèmes pratiques. 148 00:07:01,030 --> 00:07:04,600 Si vous voulez les gars tout à prendre une feuille de papier, un crayon. 149 00:07:04,600 --> 00:07:07,310 Nous allons simplement passer la grande majorité de la section d'aujourd'hui 150 00:07:07,310 --> 00:07:11,590 aller sur une partie de cette manière que vous les gars ont une idée de ce qui les attend sur le quiz. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> D'ACCORD. 153 00:07:16,890 --> 00:07:19,730 Un couple de logistique détails ainsi, pour personne 154 00:07:19,730 --> 00:07:25,120 qui n'a pas été à ce lien là, si vous allez à cs50.yale.edu, sur le front 155 00:07:25,120 --> 00:07:28,566 cette page il ya un lien qui dit: "A propos de Quiz zéro." 156 00:07:28,566 --> 00:07:29,440 Lien vous y emmène. 157 00:07:29,440 --> 00:07:31,065 Si vous ne l'avez pas lu, lisez s'il vous plaît il. 158 00:07:31,065 --> 00:07:34,470 Parce qu'il vous dit vraiment important informations concernant le quiz. 159 00:07:34,470 --> 00:07:37,410 >> Je vais retirer ceci à partir de que juste parce que, physiquement, 160 00:07:37,410 --> 00:07:40,200 si vous les gars ne savez pas où aller, nous aurons des problèmes. 161 00:07:40,200 --> 00:07:44,220 Et si votre dernière en termes avec A à N, aller à l'auditorium de l'école de droit. 162 00:07:44,220 --> 00:07:47,500 Et si vos derniers départs avec P à Z, aller à l'Auditorium Davies. 163 00:07:47,500 --> 00:07:50,240 Et cela ne vaut que pour les personnes dans la section mercredi. 164 00:07:50,240 --> 00:07:53,420 >> Si vous prenez le quiz sur Jeudi, vous aller à la SSS 114 165 00:07:53,420 --> 00:07:55,078 où votre conférence est typiquement. 166 00:07:55,078 --> 00:07:55,953 AUDIENCE: [inaudible] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSEUR: O à Z, vous allez pour aller à l'auditorium Davies. 169 00:08:01,940 --> 00:08:03,273 Je vais changer ça, non? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, oui, vous venez de basculer automatiquement. 172 00:08:09,698 --> 00:08:11,753 >> Oh oui, que vous est Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ouais, mon mauvais. 175 00:08:16,030 --> 00:08:17,610 Yep, O à Z, vous allez pour aller à Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Je vais corriger cela une fois que je télécharger. 177 00:08:19,140 --> 00:08:20,320 Ouais. 178 00:08:20,320 --> 00:08:22,160 >> Et puis aussi quelque chose important de l'esprit 179 00:08:22,160 --> 00:08:25,290 est que le mercredi, si vous êtes officiellement inscrits dans la section mercredi 180 00:08:25,290 --> 00:08:26,832 vous devez prendre votre quiz mercredi. 181 00:08:26,832 --> 00:08:29,706 Et si vous êtes inscrit à jeudi vous devez prendre votre quiz jeudi. 182 00:08:29,706 --> 00:08:31,000 Et il est pendant le temps de classe. 183 00:08:31,000 --> 00:08:35,970 Où, je pense qu'il est comme à 01:00 02h15 le mercredi et 2 heures 30-03:45 184 00:08:35,970 --> 00:08:37,220 les jeudis. 185 00:08:37,220 --> 00:08:41,710 >> Si vous avez un conflits irréconciliables, Les excuses de Dean sont la seule chose, 186 00:08:41,710 --> 00:08:43,030 Malheureusement, nous pouvons prendre. 187 00:08:43,030 --> 00:08:45,560 Parce que nous avons eu un grande majorité des demandes 188 00:08:45,560 --> 00:08:47,970 pour passer de mercredi à jeudi. 189 00:08:47,970 --> 00:08:51,265 Que nous ne pouvons pas honorer moins nous avons la demande d'un Dean. 190 00:08:51,265 --> 00:08:52,650 >> D'ACCORD. 191 00:08:52,650 --> 00:08:57,000 Donc, avant que nous commencions sur un quelques-uns des problèmes pratiques, 192 00:08:57,000 --> 00:09:00,540 Je vais juste aller sur Conseils utiles d'Andy pour le succès. 193 00:09:00,540 --> 00:09:04,140 Vous les gars, quand vous étudiez, vous avez vraiment vouloir pratiquer l'écriture de code à la main. 194 00:09:04,140 --> 00:09:07,050 La première fois que je a pris un quiz CS, je devais pas 195 00:09:07,050 --> 00:09:09,960 l'écriture de code de pratique à la main avant et il était extrêmement 196 00:09:09,960 --> 00:09:11,890 choquant combien il était difficile. 197 00:09:11,890 --> 00:09:16,125 >> Lorsque vous les gars ne pas entrer dans la habitude de taper sur tout, 198 00:09:16,125 --> 00:09:20,260 il vient très naturellement être pouvoir ont autocompleted 199 00:09:20,260 --> 00:09:22,015 les supports et les points-virgules là. 200 00:09:22,015 --> 00:09:23,890 Lorsque vous écrivez sur à la main, il est parfois 201 00:09:23,890 --> 00:09:27,100 très, très facile d'oublier un point-virgule, ou oublier de fermer une parenthèse, 202 00:09:27,100 --> 00:09:30,970 ou oublier de fermer un colon, ou quelque chose comme ça. 203 00:09:30,970 --> 00:09:34,322 >> Ainsi, lorsque vous écrivez du code à la main, il est une sensation très différente. 204 00:09:34,322 --> 00:09:37,280 Alors vous les gars, quand vous travaillez à travers quelques-uns des problèmes pratiques, 205 00:09:37,280 --> 00:09:38,904 il serait bon de pratiquer vraiment aujourd'hui. 206 00:09:38,904 --> 00:09:41,770 Ou demain, je suppose, si vous êtes prenant le quiz le jeudi. 207 00:09:41,770 --> 00:09:45,280 >> Deuxièmement, nous avons le dernier, comme, la valeur de la pratique de huit ans 208 00:09:45,280 --> 00:09:47,070 des questionnaires en ligne. 209 00:09:47,070 --> 00:09:50,759 Quiz de cette année sera probablement très, très semblable à chacun d'eux. 210 00:09:50,759 --> 00:09:51,800 Ils sont tous très similaires. 211 00:09:51,800 --> 00:09:54,220 Vous sorte de obtenez dans le style de type de questions 212 00:09:54,220 --> 00:09:57,250 ce que nous demandons, le type de fonctions que nous allons écrire dans, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Donc, faire les tests de pratique, particulièrement sous des contraintes de temps. 215 00:10:01,980 --> 00:10:05,390 75 minutes pour faire le quiz est pas beaucoup de temps. 216 00:10:05,390 --> 00:10:07,254 Il est très, très longtemps. 217 00:10:07,254 --> 00:10:09,670 Et vous les gars veulent vraiment pour vous assurer que vous les gars sont 218 00:10:09,670 --> 00:10:11,990 l'habitude de l'écriture code à la main rapidement. 219 00:10:11,990 --> 00:10:15,070 Parce que vous ne voulez pas la première le temps de voir un quiz de cette longueur 220 00:10:15,070 --> 00:10:16,560 sur votre quiz. 221 00:10:16,560 --> 00:10:20,540 Les gars, vous voulez vraiment vous assurer que vous pratiquez à l'avance. 222 00:10:20,540 --> 00:10:24,550 >> Quatrièmement, vous voulez examiner la conférences et section diapositives. 223 00:10:24,550 --> 00:10:25,980 Vous ne devez pas mémoriser des choses. 224 00:10:25,980 --> 00:10:30,430 En fait, tout le monde a droit à un une feuille de notes de papier blanc, 225 00:10:30,430 --> 00:10:31,090 avant et arrière. 226 00:10:31,090 --> 00:10:32,920 Les gars, vous pouvez taper ou écrire. 227 00:10:32,920 --> 00:10:37,070 Si vous vous trouvez avoir besoin de mémoriser quoi que ce soit, le posa sur cette feuille. 228 00:10:37,070 --> 00:10:40,810 >> Je vous garantis, vous ne voulez pas être coincé au milieu de ce jeu-questionnaire 229 00:10:40,810 --> 00:10:43,890 étant comme, oh oui, quelle est la l'exécution de ce genre contre ce genre. 230 00:10:43,890 --> 00:10:46,490 Il suffit de mettre le bas et de le copier directement à partir de votre feuille de note. 231 00:10:46,490 --> 00:10:50,420 Ensuite, vous pouvez réellement suffit d'utiliser votre cerveau pour réfléchir sur les problèmes 232 00:10:50,420 --> 00:10:52,190 plutôt que d'avoir à rappeler des faits. 233 00:10:52,190 --> 00:10:55,250 Et si vraiment profiter de tous les détails de niche 234 00:10:55,250 --> 00:11:00,140 que vous pensez que vous avez besoin de mémoriser, plop vers le bas sur la feuille d'examen. 235 00:11:00,140 --> 00:11:02,680 >> OK, des questions sur le plan logistique en ce qui concerne le quiz 236 00:11:02,680 --> 00:11:05,510 avant que nous commencions un peu problèmes de quiz pratiquent? 237 00:11:05,510 --> 00:11:06,416 Ouais? 238 00:11:06,416 --> 00:11:10,040 >> AUDIENCE: Je ne l'ai pas eu la chance à regarder le quiz [inaudible] 239 00:11:10,040 --> 00:11:11,757 mais est ce que ça va être demande la plupart du temps, 240 00:11:11,757 --> 00:11:14,090 ou est-il aussi va être, comme, questions de connaissances? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSEUR: Il est beaucoup. 242 00:11:14,940 --> 00:11:16,731 Donc, la façon dont je serait décrit le quiz 243 00:11:16,731 --> 00:11:18,810 est-- je mets ensemble certains problèmes pratiques 244 00:11:18,810 --> 00:11:20,960 que je tirais de tous les questionnaires. 245 00:11:20,960 --> 00:11:25,210 Mais vous verrez qu'il ya deux principaux types de questions que nous vous demanderont. 246 00:11:25,210 --> 00:11:28,750 >> L'un est un très faible niveau de détail de choses. 247 00:11:28,750 --> 00:11:31,720 Nous allons vous donner un petit morceau de code et dire, y at-il une erreur ici? 248 00:11:31,720 --> 00:11:33,110 Quel serait l'impression ici? 249 00:11:33,110 --> 00:11:35,980 Que va produire ce code, et cetera. 250 00:11:35,980 --> 00:11:38,710 Donc les détails de l'information très faible niveau. 251 00:11:38,710 --> 00:11:42,700 >> Et sur le revers de la médaille, nous avons de très de haut niveau des questions de base de connaissances. 252 00:11:42,700 --> 00:11:45,190 Pouvez-vous expliquer ce que le différence entre une recherche binaire 253 00:11:45,190 --> 00:11:46,148 et une recherche linéaire est? 254 00:11:46,148 --> 00:11:48,500 Pourquoi voudrions-nous utiliser l'un sur l'autre? 255 00:11:48,500 --> 00:11:49,960 Peut-être, ce qui est GDB? 256 00:11:49,960 --> 00:11:51,560 Pourquoi voulons-nous d'utiliser GDB? 257 00:11:51,560 --> 00:11:54,590 Niveau plus élevé, plus fondamentale des questions de compréhension. 258 00:11:54,590 --> 00:11:58,240 Donc, vous verrez un mélange de deux d'entre eux sur votre quiz. 259 00:11:58,240 --> 00:12:01,462 >> Toute autre chose avant que nous la tête droite en elle? 260 00:12:01,462 --> 00:12:02,879 D'ACCORD. 261 00:12:02,879 --> 00:12:03,670 PUBLIC: Un de plus. 262 00:12:03,670 --> 00:12:04,030 PROFESSEUR: Oh, un de plus. 263 00:12:04,030 --> 00:12:04,340 Pardon. 264 00:12:04,340 --> 00:12:05,631 >> AUDIENCE: Ouais, tout va bien. 265 00:12:05,631 --> 00:12:10,140 Donc, vous dites 75 minutes est trop court, comme il est peu probable 266 00:12:10,140 --> 00:12:11,640 que nous allons terminer? 267 00:12:11,640 --> 00:12:13,571 Ou, comme, 75 minutes est exactement autant de temps 268 00:12:13,571 --> 00:12:15,700 que nous aurions besoin si nous étions préparé de manière appropriée? 269 00:12:15,700 --> 00:12:17,450 PROFESSEUR: OK, donc le quiz est difficile. 270 00:12:17,450 --> 00:12:19,550 Il est certainement difficile. 271 00:12:19,550 --> 00:12:21,092 Vous vous trouverez à court de temps. 272 00:12:21,092 --> 00:12:24,341 Vous allez probablement pour frapper, comme 10, 15 minutes pour aller, et être comme, merde. 273 00:12:24,341 --> 00:12:25,520 Je l'ai tellement à faire. 274 00:12:25,520 --> 00:12:26,520 Et cela est tout à fait bien. 275 00:12:26,520 --> 00:12:28,740 Tout le monde va se sentir de la même façon. 276 00:12:28,740 --> 00:12:31,074 >> Juste être très conscients de Combien de temps as-tu. 277 00:12:31,074 --> 00:12:33,490 Et voilà pourquoi je vous dis gars font les questionnaires de pratique. 278 00:12:33,490 --> 00:12:36,672 Parce qu'il donne vraiment un grand sens de ce que le quiz va être comme. 279 00:12:36,672 --> 00:12:39,130 Donc, si vous vous trouvez être pouvoir fini la pratique 280 00:12:39,130 --> 00:12:41,671 quiz dans une bonne quantité de temps, vous pouvez vous arpenter ainsi, 281 00:12:41,671 --> 00:12:45,695 alors vous ne devrez pas un problème mercredi ou jeudi. 282 00:12:45,695 --> 00:12:46,575 >> Frais. 283 00:12:46,575 --> 00:12:49,200 Donc, si tout le monde je pense wants-- la plupart des gens ont des feuilles de papier 284 00:12:49,200 --> 00:12:49,810 out déjà. 285 00:12:49,810 --> 00:12:52,604 Je vais essentiellement juste vous donner des exemples de questions, 286 00:12:52,604 --> 00:12:54,520 vous donner les gars, comme un quelques minutes pour les faire. 287 00:12:54,520 --> 00:12:59,610 Et nous allons passer en tant que classe ce que les réponses à ces questions sont. 288 00:12:59,610 --> 00:13:02,860 >> Alors ceci est un très typique début question nous allons 289 00:13:02,860 --> 00:13:06,720 vous demander, juste convertir nombres entre différentes bases. 290 00:13:06,720 --> 00:13:09,070 Binaires, comme vous pouvez gars rappel, est la base de deux. 291 00:13:09,070 --> 00:13:12,470 Décimal est base 10, ou ce que nous comme les humains interprètent généralement. 292 00:13:12,470 --> 00:13:17,120 Hexadécimal est base 16, qui est nulle par neuf ainsi que de A à F. 293 00:13:17,120 --> 00:13:19,990 >> Donc, il ya quatre numéros je suis vous demandant de convertir gars ici. 294 00:13:19,990 --> 00:13:23,909 Je vais vous donner vous aimez, trois à quatre minutes pour réfléchir à la façon dont 295 00:13:23,909 --> 00:13:25,200 nous irions à propos de la résolution de ce. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> AUDIENCE: Sommes-nous autorisés calculatrices? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSEUR: Vous ne besoin de calculatrices, ouais. 299 00:13:37,630 --> 00:13:42,420 Je pense que plus de base, je pense, est tous vous les gars seront invités à le faire. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Et juste pour que je sorte de ai un sens quand tout le monde est fait, regarder, 302 00:14:45,070 --> 00:14:47,429 vague, je ne sais pas, le sourire, l'air heureux si vous avez terminé. 303 00:14:47,429 --> 00:14:47,929 Ouais. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Peut-être un ou deux minutes de plus. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, nous allons le mettre en. 308 00:18:29,600 --> 00:18:31,580 Je vais volontairement vous donner les gars moins de temps 309 00:18:31,580 --> 00:18:33,760 que vous avez probablement besoin faire certains de ces problèmes, 310 00:18:33,760 --> 00:18:37,124 tout simplement parce que je veux faire en sorte que nous obtenons grâce à un tas de problèmes. 311 00:18:37,124 --> 00:18:39,290 Donc pas de soucis si vous ne avoir une chance de finir. 312 00:18:39,290 --> 00:18:43,770 Totalement OK tant que vous avez une idée de la façon d'aller à ce sujet. 313 00:18:43,770 --> 00:18:45,850 Donc, nous allons aller de l'avant et de faire le premier. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Alors d'abord, personne ne veut me dire en binaire, qu'est-ce que chacun de ces chiffres 316 00:18:57,870 --> 00:19:00,484 représenter en termes de leurs valeurs? 317 00:19:00,484 --> 00:19:01,250 Ouais? 318 00:19:01,250 --> 00:19:03,349 >> AUDIENCE: Deux à la la puissance zéro, deux à un. 319 00:19:03,349 --> 00:19:04,140 PROFESSEUR: Exactement. 320 00:19:04,140 --> 00:19:04,640 Ainsi. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Droite, si typiquement quand nous sommes en base 10 323 00:19:16,430 --> 00:19:20,580 Tout cela représente sont, comme, 10 à la base de zéro, non? 324 00:19:20,580 --> 00:19:21,810 Voilà la place de votre bien. 325 00:19:21,810 --> 00:19:24,520 Tout votre lieu de 10 est est 10 à la puissance de un. 326 00:19:24,520 --> 00:19:26,600 La place de vous 100 est 10 à la puissance de deux. 327 00:19:26,600 --> 00:19:29,570 >> Quelle que soit la base vous êtes en va à voir avec exactement la même chose, 328 00:19:29,570 --> 00:19:31,480 juste avec une base différente. 329 00:19:31,480 --> 00:19:34,130 Donc binaire, tout ce qui est est base deux. 330 00:19:34,130 --> 00:19:37,110 Vous allez convertir tous les chiffres en deux pour tout le pouvoir 331 00:19:37,110 --> 00:19:38,190 de ce chiffre. 332 00:19:38,190 --> 00:19:41,450 Et dans ce sens, nous peut avoir un moyen plus facile 333 00:19:41,450 --> 00:19:43,800 d'être capable d'ajouter ou la somme de toutes les nombres dans l'ordre 334 00:19:43,800 --> 00:19:46,010 à convertir en base 10. 335 00:19:46,010 --> 00:19:50,362 >> Quiconque ne veut donc me dire ce que le réponse à la première est à base dix? 336 00:19:50,362 --> 00:19:51,674 >> AUDIENCE: Deux, [inaudible] 337 00:19:51,674 --> 00:19:52,340 PROFESSEUR: Ouais. 338 00:19:52,340 --> 00:19:53,230 AUDIENCE: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSEUR: 42, là vous allez. 340 00:19:56,560 --> 00:20:00,660 Donc, la façon dont nous avons obtenu cette réponse était par faire deux la première, qui est de deux. 341 00:20:00,660 --> 00:20:02,760 Plus deux la troisième, qui est de huit. 342 00:20:02,760 --> 00:20:07,590 De plus deux à la cinquième, qui est ce qui reste. 343 00:20:07,590 --> 00:20:09,390 Vous les résumer et il est 42. 344 00:20:09,390 --> 00:20:12,000 >> Quelqu'un est-il confus sur comment nous sommes arrivés là? 345 00:20:12,000 --> 00:20:15,630 Donc, plus de base, comme Je l'ai dit, vous devriez être OK. 346 00:20:15,630 --> 00:20:17,410 Sinon, eh bien, nous pouvons pratiquer aussi. 347 00:20:17,410 --> 00:20:18,720 Mais cela est tout droit. 348 00:20:18,720 --> 00:20:20,560 Frais. 349 00:20:20,560 --> 00:20:25,570 >> Quelqu'un veut-il me donner le répondre à la seconde ainsi? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bien. 352 00:20:27,600 --> 00:20:30,044 Toute personne confus sur la façon nous avons obtenu que soit? 353 00:20:30,044 --> 00:20:31,960 Cool, je vais prendre le réponses sur la diapositive suivante. 354 00:20:31,960 --> 00:20:34,440 Donc pas de soucis si vous besoin de copier vers le bas. 355 00:20:34,440 --> 00:20:38,860 >> OK, donc hexadécimal est un peu plus compliqué. 356 00:20:38,860 --> 00:20:41,840 mais je vais vous montrer les gars un raccourci pour savoir comment faire. 357 00:20:41,840 --> 00:20:44,800 Donc, hexadécimal, comme vous rappelez-vous, tout ce qu'il est de 16. 358 00:20:44,800 --> 00:20:48,920 Et parce que nous, les humains ne sont pas effectivement avoir 16 numéros pour représenter ce que, 359 00:20:48,920 --> 00:20:56,940 nous allons de zéro à neuf, dont notre premier 10 valeurs, puis nous faisons de A à F, 360 00:20:56,940 --> 00:20:58,630 qui sont les six valeurs suivantes. 361 00:20:58,630 --> 00:21:03,040 >> Et la meilleure façon d'aller de un nombre binaire en hexadécimal 362 00:21:03,040 --> 00:21:05,350 est de les diviser en deux moitiés. 363 00:21:05,350 --> 00:21:10,042 Et donc tout nombre binaire nous donnerons vous aurez probablement huit chiffres. 364 00:21:10,042 --> 00:21:11,750 Vous pouvez simplement briser les dans le milieu. 365 00:21:11,750 --> 00:21:17,460 >> Ainsi, le One-- un premier, un un, un, un, un un. 366 00:21:17,460 --> 00:21:21,340 Type de réfléchir, vous savez, dessinez une barre ou une virgule entre eux. 367 00:21:21,340 --> 00:21:23,800 Et vous pouvez simplement convertir directement quelque 368 00:21:23,800 --> 00:21:26,670 ceci est de la première nombre de hexadécimal, 369 00:21:26,670 --> 00:21:29,880 et quelle que soit ici consiste à la seconde de hexadécimal. 370 00:21:29,880 --> 00:21:37,584 >> Alors rappelez-vous de la notation commune, qu'est-ce que les valeurs hexadécimaux commencer? 371 00:21:37,584 --> 00:21:38,460 >> AUDIENCE: Zéro. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSEUR: 0x. 373 00:21:39,270 --> 00:21:45,210 Donc, nous savons que chaque fois que nous vous demandons pour convertir un nombre en hexadécimal, 374 00:21:45,210 --> 00:21:48,230 ou à tout moment vous voyez toute numéro qui commence par 0x, 375 00:21:48,230 --> 00:21:50,230 vous savez qu'il est une valeur hexadécimale. 376 00:21:50,230 --> 00:21:54,160 >> Et puis vous allez être invité à déterminer ce que ces deux chiffres sont. 377 00:21:54,160 --> 00:21:59,690 Et la façon dont vous faites cela, le décompte de que la moitié et le décompte jusqu'à la moitié. 378 00:21:59,690 --> 00:22:02,870 Donc, dans cet exemple, ce que aurait un, un, un, un être? 379 00:22:02,870 --> 00:22:04,890 Quelle est la valeur que ce serait? 380 00:22:04,890 --> 00:22:06,040 Ce serait F, non? 381 00:22:06,040 --> 00:22:08,050 Ce serait 15. 382 00:22:08,050 --> 00:22:11,780 >> Donc, ce serait F. Un, un, un, un ici est également 383 00:22:11,780 --> 00:22:21,270 F. Donc, un, un, un, un, un, un, un, l'un en hexadécimal, tout ce qu'il est est 0xFF. 384 00:22:21,270 --> 00:22:25,350 Parce que cette demi-représenté F, la valeur de 15, 385 00:22:25,350 --> 00:22:27,331 et cette moitié représentés F, la valeur 15. 386 00:22:27,331 --> 00:22:29,456 Parce que souvenez-vous, nous sommes comptant à partir de zéro à neuf. 387 00:22:29,456 --> 00:22:35,290 Un est comme 10, B est comme 11, F est 15. 388 00:22:35,290 --> 00:22:41,690 >> Est-ce logique à tout le monde comment nous avons eu de binaire en hexadécimal? 389 00:22:41,690 --> 00:22:44,595 >> Public: Et alors comment sommes-nous arrivés 15 de l'un, un, un, un? 390 00:22:44,595 --> 00:22:46,220 PROFESSEUR: Oui, cela est binaire, non? 391 00:22:46,220 --> 00:22:48,090 Imaginez ceci est juste un nombre binaire. 392 00:22:48,090 --> 00:22:50,792 Donc, vous avez deux à la zéro, ce qui est une. 393 00:22:50,792 --> 00:22:51,500 AUDIENCE: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Donc, vous venez de totaliser sur. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSEUR: Ouais, et puis vous faites le total juste cela. 396 00:22:52,670 --> 00:22:53,380 Voilà tout ce qu'il est. 397 00:22:53,380 --> 00:22:54,890 >> AUDIENCE: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSEUR: OK. 399 00:22:55,830 --> 00:23:00,740 >> Auditoire: Alors, vous allez partir binaire décimal en hexadécimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSEUR: Voilà le manière la plus facile de le faire, oui. 401 00:23:04,590 --> 00:23:11,390 Tu ne vas pas à la décimale parce décimal a seulement zéro à neuf. 402 00:23:11,390 --> 00:23:13,410 Nous sommes juste un peu diviser cette place en deux. 403 00:23:13,410 --> 00:23:15,201 >> AUDIENCE: [inaudible] utilisant décimal à trouver 404 00:23:15,201 --> 00:23:17,809 ce qu'il correspond à en hexadécimal. 405 00:23:17,809 --> 00:23:20,100 PROFESSEUR: Je veux dire, vous êtes le décompte de l'aide de base en mathématiques. 406 00:23:20,100 --> 00:23:20,725 AUDIENCE: Ouais. 407 00:23:20,725 --> 00:23:22,300 PROFESSEUR: Oui, à peu près. 408 00:23:22,300 --> 00:23:23,630 Il est un peu déroutant. 409 00:23:23,630 --> 00:23:26,410 Mais il suffit de savoir que vous peut diviser ce que 410 00:23:26,410 --> 00:23:28,160 cette valeur est seulement en moitiés. 411 00:23:28,160 --> 00:23:29,570 Regardez, quel est ce en binaire? 412 00:23:29,570 --> 00:23:30,610 Quel numéro est-ce? 413 00:23:30,610 --> 00:23:33,270 Ce sera quelque chose à partir de zéro à F. 414 00:23:33,270 --> 00:23:35,722 >> Ici va également être quelque chose à partir de zéro à F. 415 00:23:35,722 --> 00:23:37,722 Et puis, vous pouvez simplement mettre ces deux là. 416 00:23:37,722 --> 00:23:38,263 >> AUDIENCE: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSEUR: Yep. 418 00:23:38,910 --> 00:23:39,410 D'ACCORD. 419 00:23:39,410 --> 00:23:42,320 Donc, vous voulez les gars essayez le suivant alors? 420 00:23:42,320 --> 00:23:49,601 Zéro, un, zéro un, un, zéro, un zéro. 421 00:23:49,601 --> 00:23:52,350 Je vais vous donner des gars comme 30 secondes, puisque vous ne saviez probablement pas 422 00:23:52,350 --> 00:23:53,850 le truc pour la façon de procéder plus tôt. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, quelqu'un veut obtenir celui-ci un coup de feu? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 PROFESSEUR: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Bien. 429 00:24:31,340 --> 00:24:37,050 Donc, ce serait ici être-- vous voulez pour nous dire comment vous avez obtenu ce que? 430 00:24:37,050 --> 00:24:38,920 Tout d'abord, comment avez-vous les cinq? 431 00:24:38,920 --> 00:24:42,030 >> AUDIENCE: Parce que zéro, un, zéro, on est cinq. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSEUR: Tout le monde comprend pourquoi zéro, une, zéro, une est cinq? 433 00:24:45,170 --> 00:24:46,260 Vous avez un ici. 434 00:24:46,260 --> 00:24:48,010 Vous avez rien en deux pour le premier. 435 00:24:48,010 --> 00:24:50,300 En deux à la deuxième, vous avoir une, qui est de quatre. 436 00:24:50,300 --> 00:24:52,600 Donc, vous ajoutez le quatre plus l'un, vous avez cinq. 437 00:24:52,600 --> 00:24:53,600 Tout le monde la bonne? 438 00:24:53,600 --> 00:24:54,100 D'ACCORD. 439 00:24:54,100 --> 00:24:56,570 Et puis ce que ce soit et pourquoi? 440 00:24:56,570 --> 00:24:58,350 Qu'est-ce nombre ne correspond à A? 441 00:24:58,350 --> 00:24:59,350 >> AUDIENCE: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSEUR: Et ce qui est à la base de deux? 443 00:25:00,976 --> 00:25:01,850 AUDIENCE: [inaudible] 444 00:25:01,850 --> 00:25:03,010 PROFESSEUR: Exactement. 445 00:25:03,010 --> 00:25:06,370 Donc cette deuxième valeur ici serait 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Tout le monde bien sur la façon de convertir? 447 00:25:08,410 --> 00:25:10,770 Il est beaucoup plus simple que vous pensez qu'elle est. 448 00:25:10,770 --> 00:25:13,330 Je veux juste vous assurer vous savez conseils utiles 449 00:25:13,330 --> 00:25:14,950 et astuces pour savoir comment faire. 450 00:25:14,950 --> 00:25:18,432 >> Public: Pourquoi ne pouvez-vous juste de se séparer dans le milieu comme ça? 451 00:25:18,432 --> 00:25:21,390 Juste comme, OK, je vais seulement soucier de ces premiers [inaudible]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSEUR: Parce que ce fait la façon dont les valeurs hexadécimaux sont représentés. 453 00:25:24,240 --> 00:25:26,890 0X, que signifie réellement rien d'autre que de vous dire 454 00:25:26,890 --> 00:25:28,710 qu'il est un nombre hexadécimal. 455 00:25:28,710 --> 00:25:31,580 Et cela représente toujours les quatre premiers chiffres. 456 00:25:31,580 --> 00:25:34,330 Et cela représente toujours les quatre derniers chiffres. 457 00:25:34,330 --> 00:25:37,835 Et donc ces deux chiffres seulement correspondre à différents bits. 458 00:25:37,835 --> 00:25:39,200 >> PUBLIC: Nous allons donc always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESSEUR: Vous êtes toujours allez obtenir huit bits de valeur. 460 00:25:41,830 --> 00:25:44,580 >> Public: Est-ce tout simplement comme une chose ici ou qu'une chose partout? 461 00:25:44,580 --> 00:25:46,883 PROFESSEUR: Voilà juste un chose dans les ordinateurs, oui. 462 00:25:46,883 --> 00:25:47,424 AUDIENCE: OK. 463 00:25:47,424 --> 00:25:48,240 Génial. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSEUR: Aussi, si dans cet exemple nous avons converti de binaire en décimal, 465 00:25:51,290 --> 00:25:53,290 et de binaire en hexadécimal. 466 00:25:53,290 --> 00:25:56,610 Les gars, vous voulez vous assurer que vous avez aussi la pratique d'aller dans l'autre sens. 467 00:25:56,610 --> 00:26:03,370 Donc, si je vous ai donné 0xFF, vous pourriez tirer cette dans la binaire, non? 468 00:26:03,370 --> 00:26:06,820 >> Vous convertissez F en binaire, qui est l'un, un, un, un, 469 00:26:06,820 --> 00:26:09,380 F pour convertir binaire, qui est un, un, un, un. 470 00:26:09,380 --> 00:26:11,310 >> Donc, nous pouvons vous demander de faire l'inverse. 471 00:26:11,310 --> 00:26:14,817 Donc décimal en binaire, ou hexadécimal en binaire. 472 00:26:14,817 --> 00:26:16,650 Donc, vous voulez faire vous que vous savez dans les deux sens. 473 00:26:16,650 --> 00:26:19,371 Nous allons probablement vous poser une combinaison des deux. 474 00:26:19,371 --> 00:26:20,660 >> Ouais, vous avez une question? 475 00:26:20,660 --> 00:26:22,724 Je peux see-- vous êtes bon? 476 00:26:22,724 --> 00:26:23,348 AUDIENCE: Ouais. 477 00:26:23,348 --> 00:26:24,560 PROFESSEUR: OK. 478 00:26:24,560 --> 00:26:26,101 Suis-je bien à effacer cela? 479 00:26:26,101 --> 00:26:26,600 Génial. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Très bien, alors les réponses sont ici si quelqu'un est curieux plus tard et se confondre. 482 00:26:40,437 --> 00:26:41,844 D'ACCORD. 483 00:26:41,844 --> 00:26:46,070 >> Public: Est-ce important si nous mettons nos lettres en capitale ou minuscule? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSEUR: Il le fait, parce en hexadécimal, par convention, 485 00:26:50,360 --> 00:26:52,840 tous les personnages sont en majuscules. 486 00:26:52,840 --> 00:26:54,650 Donc A à F sont va être en majuscules. 487 00:26:54,650 --> 00:26:58,660 Si vous mettez un a minuscule, je ne sais pas si nous voulons marquer nécessairement tort. 488 00:26:58,660 --> 00:27:00,679 Mais théoriquement, ce est pas techniquement 489 00:27:00,679 --> 00:27:01,970 comment vous êtes censé avoir. 490 00:27:01,970 --> 00:27:03,303 Donc, ils devraient tous être en majuscules. 491 00:27:03,303 --> 00:27:05,910 Ouais, bonne question. 492 00:27:05,910 --> 00:27:07,780 >> D'ACCORD. 493 00:27:07,780 --> 00:27:08,790 Deuxième question. 494 00:27:08,790 --> 00:27:12,750 Considérez ce charmant programme ici. 495 00:27:12,750 --> 00:27:15,180 Je vais poser la question, Je reviendrai cela. 496 00:27:15,180 --> 00:27:23,170 >> Donc, tout d'abord, ce qui est à l'intérieur de la norme io.h qui est d'intérêt pour le programme? 497 00:27:23,170 --> 00:27:26,640 Deuxièmement, ce qui donne un look signifier à la troisième ligne? 498 00:27:26,640 --> 00:27:30,572 Et troisièmement, ce qui ne retournant zéro à partir de principale, que la ligne de six, généralement signifier? 499 00:27:30,572 --> 00:27:33,280 Si vous voulez les gars d'écrire ces vers le bas, puisque je dois revenir 500 00:27:33,280 --> 00:27:36,810 à la diapositive juste pour que vous pouvez voir code. 501 00:27:36,810 --> 00:27:40,400 Ceci est un exemple de, comme, peut-être un plus question de niveau où nous vous demandons 502 00:27:40,400 --> 00:27:42,435 ce qui signifie des choses dans un programme. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Tout le monde bon pour moi de revenir à la diapositive? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK cool. 507 00:27:54,361 --> 00:27:57,610 Donc, je vais vous donner des gars comme peut-être trois minutes pour regarder celui réel rapide. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, si celui-ci est comme assez facile, sur le plan conceptuel. 510 00:28:44,140 --> 00:28:49,280 Quelqu'un veut-il me dire ce qui est abord à l'intérieur par hachage compris 511 00:28:49,280 --> 00:28:52,630 notre fichier de bibliothèque de io.h norme? 512 00:28:52,630 --> 00:28:55,510 Pourquoi avons-nous besoin de cette bibliothèque inclus pour ce programme? 513 00:28:55,510 --> 00:28:56,930 Que devons-nous ici pour? 514 00:28:56,930 --> 00:28:56,980 >> Ouais? 515 00:28:56,980 --> 00:28:58,340 >> Public: Est-ce que quand vous mettez que printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESSEUR: Exactement. 517 00:28:59,131 --> 00:29:01,780 Donc printf, chaque fois que vous prendre une entrée de l'utilisateur 518 00:29:01,780 --> 00:29:04,140 et quelque chose d'impression à l'écran, qui est 519 00:29:04,140 --> 00:29:05,600 l'entrée standard, bibliothèque de sortie. 520 00:29:05,600 --> 00:29:07,170 Pensez-y que way-- entrée, de sortie. 521 00:29:07,170 --> 00:29:08,430 >> Dois-je une sortie? 522 00:29:08,430 --> 00:29:09,207 Oui. 523 00:29:09,207 --> 00:29:12,040 Donc, je sais que je vais toujours besoin de normaliser la bibliothèque i.o. 524 00:29:12,040 --> 00:29:16,400 >> Donc la fonction printf est par lequel nous avons besoin pour accéder à 525 00:29:16,400 --> 00:29:19,370 et inclure le hashtag bibliothèque de i.o standard. 526 00:29:19,370 --> 00:29:20,280 D'ACCORD. 527 00:29:20,280 --> 00:29:22,660 >> Deuxièmement, il ne vide ce qui signifie? 528 00:29:22,660 --> 00:29:26,970 Nous avons l'int main (void), ce qui ne annulera ici signifie ici sur la ligne de trois? 529 00:29:26,970 --> 00:29:28,080 Ouais, dans le dos. 530 00:29:28,080 --> 00:29:29,020 >> AUDIENCE: [inaudible] 531 00:29:29,020 --> 00:29:29,920 >> PROFESSEUR: Exactement. 532 00:29:29,920 --> 00:29:33,320 Alors rappelez-vous, nous avons appris à commencer par notre pset 533 00:29:33,320 --> 00:29:35,360 que vous pouvez réellement indiquer la ligne de commande 534 00:29:35,360 --> 00:29:39,010 arguments que votre programme, que vous fonction principale, prend comme vous, l'utilisateur, 535 00:29:39,010 --> 00:29:39,650 appelle. 536 00:29:39,650 --> 00:29:42,650 Si nous avons vide, cela signifie que vous pourrait suffit d'exécuter le programme directement 537 00:29:42,650 --> 00:29:44,680 sans arguments de ligne de commande. 538 00:29:44,680 --> 00:29:46,160 Tout le monde a bien compris? 539 00:29:46,160 --> 00:29:46,660 D'ACCORD. 540 00:29:46,660 --> 00:29:52,850 >> Et enfin pourquoi avons-nous la peine de faire cette chose retour à zéro ici? 541 00:29:52,850 --> 00:29:54,740 Pourquoi avons-nous même une principale int? 542 00:29:54,740 --> 00:29:57,330 Pourquoi ne pouvons-nous pas avoir simplement void void principale? 543 00:29:57,330 --> 00:29:59,216 Ouais? 544 00:29:59,216 --> 00:30:01,590 AUDIENCE: Juste pour que nous puissions être sûr que le programme est 545 00:30:01,590 --> 00:30:04,247 sortant avec succès, en tant que opposition à si elle a été compté. 546 00:30:04,247 --> 00:30:06,580 Et nous savons que cela est un autre type d'erreur. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSEUR: Oui, exactement. 548 00:30:07,621 --> 00:30:10,670 Ceci est juste un très chose conventionnelle que nous faisons, 549 00:30:10,670 --> 00:30:13,840 qui est juste à la fin de votre programme, juste vous assurer 550 00:30:13,840 --> 00:30:15,830 que votre fonction principale fonctionne correctement, 551 00:30:15,830 --> 00:30:17,940 nous voulons toujours faire retour à zéro. 552 00:30:17,940 --> 00:30:21,160 Même si nous pouvons nécessairement ne voit pas qui a imprimé partout. 553 00:30:21,160 --> 00:30:25,092 >> Parce que les programmeurs, vous savez, si vous avez beaucoup de différentes lignes de code 554 00:30:25,092 --> 00:30:27,050 et vous ne savez pas où ceux-ci vont mal, 555 00:30:27,050 --> 00:30:30,240 et si une erreur se produit, vous voulez assurez-vous que vous obtenez cette erreur. 556 00:30:30,240 --> 00:30:33,240 Et si typiquement si quelque chose va mal, nous aurons un retour d'un juste 557 00:30:33,240 --> 00:30:34,669 nous assurer que nous savons qu'il est. 558 00:30:34,669 --> 00:30:36,460 Donc, si vous voyez un retour zéro, que typiquement 559 00:30:36,460 --> 00:30:38,293 signifie que votre programme est exécutée avec succès. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Bien? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Frais. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, second programme ici. 566 00:30:52,680 --> 00:30:54,827 Considérez que. 567 00:30:54,827 --> 00:30:56,910 Et si vous voyez un gars flotter, vous les gars pouvez probablement 568 00:30:56,910 --> 00:31:00,810 avoir une bonne idée de ce que Je suis sur le point de vous demander. 569 00:31:00,810 --> 00:31:05,200 >> Ainsi, lorsque ce programme exécute, comme vous pouvez le voir, 570 00:31:05,200 --> 00:31:09,330 Je déclare un flotteur l'intérieur de ma fonction principale. 571 00:31:09,330 --> 00:31:13,470 Je le nommant "répondre", et je suis la mise qui égale à un divisé par 10. 572 00:31:13,470 --> 00:31:17,860 Je imprimer, l'une décimale, qui flottent. 573 00:31:17,860 --> 00:31:19,880 Et puis je suis de retour à zéro. 574 00:31:19,880 --> 00:31:24,470 >> Ainsi, lorsque l'exécution du programme, penser à avide maintenant, 575 00:31:24,470 --> 00:31:26,550 ce programme imprime 0.0. 576 00:31:26,550 --> 00:31:29,993 Comme nous le savons tous, nous espérons tous le savent, un divisé par 10 est pas un 0,00, 577 00:31:29,993 --> 00:31:32,350 il est de 0,1. 578 00:31:32,350 --> 00:31:37,810 Mais expliquer pourquoi ce programme pense que 1 divisé par 10 tirages à 0,1 autre 579 00:31:37,810 --> 00:31:39,504 à 0,1? 580 00:31:39,504 --> 00:31:42,545 Je vais vous donner les gars peut-être comme 30 secondes pensent juste rapidement à ce sujet 581 00:31:42,545 --> 00:31:43,878 et je vais revenir au programme. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> D'ACCORD. 584 00:32:20,290 --> 00:32:22,205 Tout le monde veut donner un coup de feu? 585 00:32:22,205 --> 00:32:24,330 En trois phrases ou moins, parce que généralement nous sommes 586 00:32:24,330 --> 00:32:27,650 aller à restreindre toutes les réponses trois phrases ou moins 587 00:32:27,650 --> 00:32:31,130 de sorte que vous ne vous contentez pas de régurgiter les choses au hasard sur votre questionnaire. 588 00:32:31,130 --> 00:32:32,740 >> Ouais, prendre une photo. 589 00:32:32,740 --> 00:32:36,390 >> Auditoire: Alors, je pense qu'il ya cette chose appelée, comme, [inaudible] 590 00:32:36,390 --> 00:32:42,320 Donc il pourrait y avoir, par exemple, il pourrait y avoir, comme, 0,09, 591 00:32:42,320 --> 00:32:47,250 que lorsque vous imprimez la première chiffre, il serait de 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSEUR: Fermer, pas tout à fait. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Public: Vous êtes l'un et divisant 10, et ils sont tous les deux des nombres entiers. 595 00:32:51,770 --> 00:32:54,610 Et la façon dont il va pour stocker, il est comme un entier. 596 00:32:54,610 --> 00:32:56,480 Et donc l'entier le plus proche serait 0.0. 597 00:32:56,480 --> 00:32:57,471 Et donc ce est de 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESSEUR: Ouais, ce est vraiment bon. 599 00:32:58,970 --> 00:33:00,040 Voilà la bonne réponse. 600 00:33:00,040 --> 00:33:03,597 Donc, cela est une très déroutant concept pour beaucoup d'enfants. 601 00:33:03,597 --> 00:33:06,680 Et je veux vraiment faire en sorte que cela est renforcé dans la tête de tout le monde. 602 00:33:06,680 --> 00:33:10,090 >> Donc, ce que nous appelons flottante Point imprécision, 603 00:33:10,090 --> 00:33:12,800 où la raison pour laquelle beaucoup de vos programmes dans gourmande 604 00:33:12,800 --> 00:33:17,010 ne pas travailler était initialement parce vous avez oublié de jeter votre variable. 605 00:33:17,010 --> 00:33:19,370 Alors, que dit Christabell était tout à fait correct. 606 00:33:19,370 --> 00:33:21,990 >> Un flotteur est intrinsèquement imprécis. 607 00:33:21,990 --> 00:33:26,400 Parce que dans un ordinateur, à droite, nous avons une quantité finie de bits de mémoire 608 00:33:26,400 --> 00:33:28,480 nous pouvons utiliser pour représenter des nombres. 609 00:33:28,480 --> 00:33:33,480 Ainsi, par exemple, ce CS50 ID est-- Je pense qu'il est un ordinateur 64 bits. 610 00:33:33,480 --> 00:33:37,520 >> Un flotteur ne peut être représenté par une quantité limitée de ces bits. 611 00:33:37,520 --> 00:33:42,260 Et ainsi de 0,1 avec des zéros infinies, qui était de 0,1 est, non? 612 00:33:42,260 --> 00:33:45,450 Mais nous ne pouvons pas réellement stocker ce nombre dans notre ordinateur. 613 00:33:45,450 --> 00:33:47,810 Nous ne disposons pas juste assez de mémoire pour le faire. 614 00:33:47,810 --> 00:33:52,340 >> Et donc l'approximation la plus proche de ce qui est stocké dans la mémoire est en fait 615 00:33:52,340 --> 00:33:55,390 quelque chose comme 0.000 quelque chose, quelque chose, quelque chose, quelque chose. 616 00:33:55,390 --> 00:34:01,240 Qui, une fois que vous tronquer il, arrondit à 0,0. 617 00:34:01,240 --> 00:34:05,640 >> Et cet exemple est juste un qui démontre beaucoup de questions 618 00:34:05,640 --> 00:34:08,469 nous avons chaque fois que nous sommes essayer de faire mal mathématiques 619 00:34:08,469 --> 00:34:11,000 sans jeter comme un entier différent. 620 00:34:11,000 --> 00:34:14,870 Il suffit donc de se méfier de ce qui se passe. 621 00:34:14,870 --> 00:34:18,239 >> Le quiz, si nous vous donnons une bloc de code et il est comme, 622 00:34:18,239 --> 00:34:19,510 ce qui imprime à la fin? 623 00:34:19,510 --> 00:34:24,096 Et si elle est une valeur aléatoire vous les gars doivent savoir pourquoi ce qui se passe. 624 00:34:24,096 --> 00:34:24,909 Ouais? 625 00:34:24,909 --> 00:34:27,926 >> AUDIENCE: Truncate est de se débarrasser de tout après un certain point? 626 00:34:27,926 --> 00:34:28,513 [INAUDIBLE] 627 00:34:28,513 --> 00:34:30,929 PROFESSEUR: Ouais, donc en fait ce est un très mauvais exemple, 628 00:34:30,929 --> 00:34:37,870 parce que tout ce qui fait 0,100 serait tronquer à 0,1. 629 00:34:37,870 --> 00:34:41,389 Mais si vous étiez à it-- courir je ne sais pas rappelez-vous, car l'année dernière, ils 630 00:34:41,389 --> 00:34:42,830 il a couru sur un programme différent. 631 00:34:42,830 --> 00:34:45,300 Ils ont couru dans quelque chose appelé le CS50 Appliance, qui 632 00:34:45,300 --> 00:34:46,389 est différent de l'ID. 633 00:34:46,389 --> 00:34:48,520 Ce fut un système 32 bits, je pense. 634 00:34:48,520 --> 00:34:50,290 Et donc il y avait des numéros différents. 635 00:34:50,290 --> 00:34:53,330 >> Mais essentiellement, il suffit de savoir que tout le concept de troncature 636 00:34:53,330 --> 00:34:54,815 et comment il coupe simplement les choses au large. 637 00:34:54,815 --> 00:34:55,690 Et donc si elle rounds-- 638 00:34:55,690 --> 00:34:56,300 >> AUDIENCE: Sans arrondissement. 639 00:34:56,300 --> 00:34:57,370 >> PROFESSEUR: Exactement. 640 00:34:57,370 --> 00:34:57,870 Ouais. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Frais. 643 00:35:04,380 --> 00:35:05,250 >> Salut, dans le dos. 644 00:35:05,250 --> 00:35:07,634 Nous allons juste sur certaines consultation de quiz des questions. 645 00:35:07,634 --> 00:35:08,430 >> Bien. 646 00:35:08,430 --> 00:35:10,150 Alors envisager un programme différent ici. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Je vais vous donner un gars quelques minutes pour lire à ce sujet. 649 00:35:15,380 --> 00:35:18,588 Ceci est quelque chose qui a été pendant très récemment que je pense soufflait beaucoup d'entre vous 650 00:35:18,588 --> 00:35:19,142 l'esprit des gars. 651 00:35:19,142 --> 00:35:21,100 Mais nous allons parler à travers ce nouveau juste 652 00:35:21,100 --> 00:35:24,152 pour vous assurer de comprendre complètement. 653 00:35:24,152 --> 00:35:24,652 D'ACCORD. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 D'ACCORD. 656 00:35:41,780 --> 00:35:44,342 Toute personne a besoin plus de temps pour lire à travers ce code? 657 00:35:44,342 --> 00:35:45,650 D'ACCORD. 658 00:35:45,650 --> 00:35:50,630 >> Il me semble donc que dans ce programme, je suis 659 00:35:50,630 --> 00:35:53,460 la création de deux chaînes à l'aide GetString. 660 00:35:53,460 --> 00:35:55,180 Un appelés s et un autre appelé t. 661 00:35:55,180 --> 00:35:58,680 Et si elles sont égales est égal à l'autre, 662 00:35:58,680 --> 00:36:00,880 il devrait imprimer "Vous tapez la même chose. " 663 00:36:00,880 --> 00:36:04,170 >> Mais elsewise, il serait imprimer, "Vous tapé des choses différentes ", non? 664 00:36:04,170 --> 00:36:05,990 Semble très, très simple. 665 00:36:05,990 --> 00:36:08,720 Mais, cependant, si je fait essayer d'écrire ce programme, 666 00:36:08,720 --> 00:36:12,230 il semble que même quand je entrée les mêmes chaînes exactes, 667 00:36:12,230 --> 00:36:15,490 elle imprime toujours dehors, "Vous tapé des choses différentes! " 668 00:36:15,490 --> 00:36:18,020 Quelqu'un veut-il prendre une tir à la raison pour laquelle ce programme toujours 669 00:36:18,020 --> 00:36:20,370 répond que les entrées sont différents, même 670 00:36:20,370 --> 00:36:22,090 lorsque les mots eux-mêmes sont les mêmes? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Donc, si je devais input-- David amour d'utiliser un exemple comme maman, non? 673 00:36:29,170 --> 00:36:37,890 Minuscules M-O-M S, T égaux minuscules M-O-M. 674 00:36:37,890 --> 00:36:40,340 Si je courais à travers ce ce code, pourquoi serait-il 675 00:36:40,340 --> 00:36:44,180 imprimer "vous avez saisi des choses différentes?" 676 00:36:44,180 --> 00:36:46,336 >> Quelqu'un at besoin de plus le temps de penser à ce sujet? 677 00:36:46,336 --> 00:36:47,294 OK, je pense que nous sommes bons. 678 00:36:47,294 --> 00:36:48,716 Ouais? 679 00:36:48,716 --> 00:36:53,930 >> AUDIENCE: OK, il est donc quelque chose à propos où il est stocké dans la mémoire, non? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSEUR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> AUDIENCE: Où il est comme, si cela chaîne s est stocké à la mémoire spot-- 682 00:37:00,400 --> 00:37:01,689 Je invente this-- est zéro. 683 00:37:01,689 --> 00:37:02,355 PROFESSEUR: Bien sûr. 684 00:37:02,355 --> 00:37:05,290 Public: Et chaîne t est stocké au lieu de la mémoire, 685 00:37:05,290 --> 00:37:11,000 comme, 167, puis zéro ne correspond pas à 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESSEUR: Exactement. 687 00:37:12,610 --> 00:37:18,350 OK, donc rappeler cette incroyable révélation nous l'avons expliqué à vous les gars 688 00:37:18,350 --> 00:37:21,530 la semaine dernière, que cordes ne sont pas vraiment existent pas? 689 00:37:21,530 --> 00:37:25,380 Lorsque nous créons quelque chose appelé chaîne, nous sommes, en réalité, 690 00:37:25,380 --> 00:37:29,330 créant ce qu'on appelle l'omble étoiles. 691 00:37:29,330 --> 00:37:34,470 Qui est tout ce qu'il est un pointeur vers une chaîne ou un tableau de caractères. 692 00:37:34,470 --> 00:37:39,480 >> Et donc, dans cet exemple, si je étaient à l'entrée M-O-M le chemin 693 00:37:39,480 --> 00:37:49,350 que mon ordinateur serait stocker il est De mémoire barre oblique inverse de zéro, non? 694 00:37:49,350 --> 00:37:53,180 Ces quatre personnages, caractères, seraient stockés quelque part. 695 00:37:53,180 --> 00:37:59,290 >> Et puis ces quatre caractères, barre oblique inverse zéro, 696 00:37:59,290 --> 00:38:01,275 sont stockées quelque part, non? 697 00:38:01,275 --> 00:38:04,685 Je ne sais pas où les adresses sont, ils sont quelque part dans mon ordinateur. 698 00:38:04,685 --> 00:38:07,080 Mais je ne sais pas exactement où ils sont. 699 00:38:07,080 --> 00:38:10,170 >> Quand je crée une chaîne s, tout ce qui est vraiment 700 00:38:10,170 --> 00:38:15,550 est un pointeur sur la commencer de cette chaîne. 701 00:38:15,550 --> 00:38:21,130 Et quand je crée cette valeur de t, tout ce qui est un pointeur vers ici. 702 00:38:21,130 --> 00:38:23,980 Et donc quand vous essayez à assimiler et vérifier 703 00:38:23,980 --> 00:38:27,710 pour voir si s est égal à égal est égal à t, l'ordinateur 704 00:38:27,710 --> 00:38:31,635 est vraiment juste de retourner à vous l'adresse de cette m 705 00:38:31,635 --> 00:38:33,390 et l'adresse de ce m. 706 00:38:33,390 --> 00:38:36,230 Et parce qu'ils sont deux morceaux de données 707 00:38:36,230 --> 00:38:38,750 qui sont stockés dans deux différents adresses dans votre ordinateur, 708 00:38:38,750 --> 00:38:41,750 votre ordinateur ne va jamais les reconnaître comme étant la même. 709 00:38:41,750 --> 00:38:43,500 Quelqu'un veut- donner un coup à ce que nous 710 00:38:43,500 --> 00:38:46,900 aurait à faire si nous voulions corriger cela et avoir un programme de course correcte 711 00:38:46,900 --> 00:38:49,360 au lieu? 712 00:38:49,360 --> 00:38:52,070 Pensez que pour quelques secondes. 713 00:38:52,070 --> 00:38:54,929 Que devons-nous changer pour obtenir ce programme fonctionnement 714 00:38:54,929 --> 00:38:56,220 la façon dont nous voulons qu'elle fonctionne? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ouais, vouloir prendre un coup de poignard à elle? 717 00:39:18,918 --> 00:39:24,082 >> AUDIENCE: Pouvons-nous essayer de déréférencer la pointeur et vérifier à travers le réseau? 718 00:39:24,082 --> 00:39:25,540 PROFESSEUR: Voilà une façon de le faire. 719 00:39:25,540 --> 00:39:27,880 Alors, quel est votre nom? 720 00:39:27,880 --> 00:39:29,010 Je suis désolé, me rappeler. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSEUR: Ouais, donc ce Zee suggérée serait absolument travailler. 723 00:39:32,130 --> 00:39:32,629 Droit? 724 00:39:32,629 --> 00:39:35,730 Nous pourrions déréférence le pointeur et effectivement aller et l'accès 725 00:39:35,730 --> 00:39:38,460 les données physiques à l'intérieur d'ici. 726 00:39:38,460 --> 00:39:40,300 Et nous ne pouvons comparer la totalité de l'écran. 727 00:39:40,300 --> 00:39:43,670 >> Nous pouvons dire, OK, pointeur, me donner ce qu'il ya dedans ici. 728 00:39:43,670 --> 00:39:44,960 Ce serait retourner un m. 729 00:39:44,960 --> 00:39:47,168 Et je dirais, pointeur, me donner ce qu'il ya dedans ici. 730 00:39:47,168 --> 00:39:47,750 Retour d'un m. 731 00:39:47,750 --> 00:39:48,410 Avez celles match? 732 00:39:48,410 --> 00:39:49,410 Oui. 733 00:39:49,410 --> 00:39:50,340 Puis nous passons. 734 00:39:50,340 --> 00:39:54,240 >> Nous continuons à vérifier l'ensemble de deux cordes tout le chemin jusqu'à la fin 735 00:39:54,240 --> 00:39:56,635 et voir si ceux qui sont égaux, si toutes les valeurs sont égales. 736 00:39:56,635 --> 00:39:59,680 Et lorsque toutes les valeurs sont égales, alors nous savons que les chaînes sont vrai. 737 00:39:59,680 --> 00:40:01,600 Absolument, voilà comment nous pourrions le faire? 738 00:40:01,600 --> 00:40:03,930 >> Quelqu'un at confus sur tout cela? 739 00:40:03,930 --> 00:40:06,970 Le concept de la façon dont les chaînes sont vraiment seulement des pointeurs, 740 00:40:06,970 --> 00:40:08,440 et comment ils ne sont pas vraiment existe pas? 741 00:40:08,440 --> 00:40:10,480 Et pourquoi nous obtenons des erreurs comme la façon dont nous l'obtenons? 742 00:40:10,480 --> 00:40:15,070 Parce que je vous garantis gars, pointeurs et l'allocation de chaîne et de la mémoire 743 00:40:15,070 --> 00:40:16,470 vont venir. 744 00:40:16,470 --> 00:40:17,410 >> Ouais? 745 00:40:17,410 --> 00:40:21,072 >> AUDIENCE: [inaudible] déréférencer il, vous venez de mettre une étoile [inaudible] 746 00:40:21,072 --> 00:40:21,780 PROFESSEUR: Droit. 747 00:40:21,780 --> 00:40:28,430 Donc, pour derererence un moyen de pointeur d'aller à cette adresse du pointeur 748 00:40:28,430 --> 00:40:30,390 et d'obtenir les données, la valeur il. 749 00:40:30,390 --> 00:40:32,700 Et la façon de le faire est pointeur étoiles. 750 00:40:32,700 --> 00:40:34,262 Ne confondez pas cela. 751 00:40:34,262 --> 00:40:35,186 >> AUDIENCE: [inaudible]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSEUR: Ouais. 753 00:40:35,852 --> 00:40:39,750 Auditoire: Alors, vous pouvez simplement écrire en cas d'égalité égaux étoiles t star. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSEUR: Eh bien, non. 755 00:40:40,630 --> 00:40:40,960 Non. 756 00:40:40,960 --> 00:40:41,640 >> Public: Cela ne veut pas assez bon, non? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSEUR: Il est pas, parce que vous êtes qu'un contrôle de la première lettre. 758 00:40:43,760 --> 00:40:46,010 Vous allez probablement besoin d'une sorte de boucle qui 759 00:40:46,010 --> 00:40:49,055 parcourt chaque simple caractère dans les deux chaînes. 760 00:40:49,055 --> 00:40:49,837 Ouais. 761 00:40:49,837 --> 00:40:52,920 Donc, si vous voulez vérifier, juste pour voir si ils ont commencé avec la même chose, 762 00:40:52,920 --> 00:40:58,220 vous pouvez faire si, étoile s est égal à étoiles t. 763 00:40:58,220 --> 00:41:01,300 Alors, vous savez qu'au moins ils commencé avec le même caractère. 764 00:41:01,300 --> 00:41:01,952 >> Ouais? 765 00:41:01,952 --> 00:41:04,056 >> AUDIENCE: Donc, la façon vous ne seriez que 766 00:41:04,056 --> 00:41:06,064 comme un noyé pour boucle ou pointeur? 767 00:41:06,064 --> 00:41:06,730 PROFESSEUR: Ouais. 768 00:41:06,730 --> 00:41:08,170 À peu près juste une boucle for. 769 00:41:08,170 --> 00:41:12,430 Rappelez-vous, David en classe mentionné le sucre syntaxique libre? 770 00:41:12,430 --> 00:41:17,690 Et il avait cette très chose de déroutant étoiles t 771 00:41:17,690 --> 00:41:22,030 plus un, où il intégrer à travers et il déplacer le pointeur? 772 00:41:22,030 --> 00:41:29,910 La façon la plus facile de le faire ceci est juste t de i. 773 00:41:29,910 --> 00:41:31,090 >> Donc, il est juste un tableau. 774 00:41:31,090 --> 00:41:34,630 La façon dont vous auriez un pour boucle qui a couru de zéro à i, 775 00:41:34,630 --> 00:41:36,580 i est la longueur de la chaîne, vous pouvez simplement 776 00:41:36,580 --> 00:41:39,510 écrire que lieu de faire la pointeur ensemble, chose de référence. 777 00:41:39,510 --> 00:41:43,510 Donc, ces choses sont exactement équivalent dans votre ordinateur. 778 00:41:43,510 --> 00:41:45,905 >> Les gars, vous ne sera probablement pas besoin de savoir que, 779 00:41:45,905 --> 00:41:48,280 mais il est bon de tout type de avoir dans le dos de votre esprit. 780 00:41:48,280 --> 00:41:52,630 Il suffit de savoir que l'ordinateur reconnaît différents blocs de code 781 00:41:52,630 --> 00:41:53,890 que la même chose. 782 00:41:53,890 --> 00:41:57,510 Parce que cela est juste beaucoup plus l'utilisateur amicale pour nous de présenter les choses comme il est 783 00:41:57,510 --> 00:41:58,150 un tableau. 784 00:41:58,150 --> 00:42:00,990 Il est juste plus facile. 785 00:42:00,990 --> 00:42:02,719 >> Auditoire: Alors utiliser strlen à aimer, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSEUR: Ouais. 787 00:42:03,385 --> 00:42:03,926 AUDIENCE: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSEUR: Vous pourriez utiliser strlen ou, si vous 789 00:42:05,940 --> 00:42:10,420 n'a pas eu strlen vous pouvez juste faire jusqu'à jusqu'à ce que vous frappez barre oblique inverse de zéro pour les deux. 790 00:42:10,420 --> 00:42:11,568 Soit pourrait fonctionner. 791 00:42:11,568 --> 00:42:12,068 Ouais. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Auditoire: Alors, il est de déréférencer tous seul caractère si nous étions réellement 794 00:42:17,996 --> 00:42:21,044 la rédaction de ce code, nous pourrait juste faire t parenthèses i 795 00:42:21,044 --> 00:42:22,460 comme avec les étoiles en face de lui? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSEUR: Ouais, est égale à égaux s support i, puis continuer à aller de i 797 00:42:27,700 --> 00:42:29,790 bas jusqu'à ce que vous atteignez la fin. 798 00:42:29,790 --> 00:42:31,286 Ouais, voilà ce que vous feriez. 799 00:42:31,286 --> 00:42:33,660 Et je vais réellement avoir un prochain exemple de cas où nous avons effectivement 800 00:42:33,660 --> 00:42:36,740 écrire strlen si vous les gars seront genre d'arriver à jouer avec elle un peu. 801 00:42:36,740 --> 00:42:43,567 >> Donc tout le monde est clair sur tout mémoire, cordes, les pointeurs, les adresses de qualité? 802 00:42:43,567 --> 00:42:46,650 Certains concepts de plus haut niveau que vous sera à coup sûr besoin de savoir sur le quiz 803 00:42:46,650 --> 00:42:48,928 demain. 804 00:42:48,928 --> 00:42:49,904 >> Bien. 805 00:42:49,904 --> 00:42:50,404 Bien. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Oui. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, donc une chose que nous vous demanderons également vous, comme nous le faisons chaque année un questionnaire, est, 810 00:43:04,180 --> 00:43:08,340 supposons que vous avez oublié (qui nous semblons oublier de le faire chaque année) 811 00:43:08,340 --> 00:43:10,810 dans lequel fichier d'entête strlen est déclarée. 812 00:43:10,810 --> 00:43:13,860 Et donc nous devons réécrire nous-mêmes. 813 00:43:13,860 --> 00:43:16,350 >> Voici une liste de lignes directrices que nous pouvons vous présenter 814 00:43:16,350 --> 00:43:20,660 gars où vous aurez à supposer que la chaîne s ne sera pas nulle. 815 00:43:20,660 --> 00:43:23,830 Vous pouvez supposer que S sera terminé par une barre oblique inverse zéro. 816 00:43:23,830 --> 00:43:26,670 Donc, vous savez ce que est ce que ça va se terminer par. 817 00:43:26,670 --> 00:43:29,500 >> Et, par exemple, que le longueur de bonjour serait de cinq ans. 818 00:43:29,500 --> 00:43:32,890 Ainsi, vous pouvez supposer que bonjour sera de cinq, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Vous ne disposez pas de supposer que le backside zéro comptes de la longueur. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Cette dernière chose ici, ne pas soucier de débordement d'entier. 822 00:43:42,300 --> 00:43:45,270 Quelqu'un se souvient ce débordement d'entier est? 823 00:43:45,270 --> 00:43:48,041 >> AUDIENCE: dépasse les longueur de la [inaudible]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSEUR: Oui, pouvez-vous expliquer un peu, ça veut dire quoi? 825 00:43:50,740 --> 00:43:55,330 >> Auditoire: Alors, je suppose que cela remonte à l'exemple en tronquant plus tôt. 826 00:43:55,330 --> 00:43:58,380 Mais si vous avez seulement tant de numéros qui vont au-delà du nombre de bits 827 00:43:58,380 --> 00:44:01,409 que vous pouvez réellement assigner qu'il sera juste un peu coupé. 828 00:44:01,409 --> 00:44:04,242 PROFESSEUR: Ouais, donc sur un typique ordinateur, combien de bits avons-nous? 829 00:44:04,242 --> 00:44:05,306 AUDIENCE: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSEUR: Oui, 32, à droite. 831 00:44:06,430 --> 00:44:10,030 Et donc voilà, quoi, quatre milliards, deux milliards? 832 00:44:10,030 --> 00:44:13,579 Quatre milliards, jusqu'à quatre milliards entiers positifs, non? 833 00:44:13,579 --> 00:44:15,370 Deux milliards négative, deux milliards positif, 834 00:44:15,370 --> 00:44:16,900 dépend de comment vous voulez le faire. 835 00:44:16,900 --> 00:44:21,470 >> Et donc en gros nous pouvons avoir suffisamment de nombres entiers qui peuvent aller jusqu'à 836 00:44:21,470 --> 00:44:25,800 à deux pour le 31 moins 1, à droite? 837 00:44:25,800 --> 00:44:27,980 Parce qu'une fois que nous avons atteint deux à la 32e, nous ne faisons pas 838 00:44:27,980 --> 00:44:30,040 avoir autant de mémoire dans notre ordinateur. 839 00:44:30,040 --> 00:44:32,310 >> Et donc, théoriquement, je pourrait venir avec un certain nombre 840 00:44:32,310 --> 00:44:34,560 qui est, comme, deux à la 46e. 841 00:44:34,560 --> 00:44:38,040 Il est un grand nombre-cul, mais Théoriquement, vous pouvez. 842 00:44:38,040 --> 00:44:42,730 Et si le débordement entier est si vous essayez de créer un entier qui va au-delà 843 00:44:42,730 --> 00:44:44,790 votre ordinateur est capable de stocker. 844 00:44:44,790 --> 00:44:46,590 >> Et vous les gars pour cet exemple ne pas 845 00:44:46,590 --> 00:44:51,330 à vous soucier de nous, vous donnant un géant chaîne qui est de deux à les caractères 32e 846 00:44:51,330 --> 00:44:51,830 long. 847 00:44:51,830 --> 00:44:54,010 Ce serait vraiment dire. 848 00:44:54,010 --> 00:44:59,430 >> Très bien, alors je vais juste donner vous les gars de la structure de base de cette. 849 00:44:59,430 --> 00:45:02,020 Vous allez créer un fonction appelée int strlen où 850 00:45:02,020 --> 00:45:08,436 une passe dans, une star de char, ou de la ficelle, pointeur vers la chaîne appelé s. 851 00:45:08,436 --> 00:45:10,820 >> Tout droit, tout le monde copie que vers le bas. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Frais. 854 00:45:14,850 --> 00:45:17,020 Oops-- autre manière. 855 00:45:17,020 --> 00:45:21,360 >> Donc, cela est un peu comme un pièce plus difficile de problème, 856 00:45:21,360 --> 00:45:25,320 donc je vais vous donner les gars peut-être cinq à six minutes à type de remue-méninges 857 00:45:25,320 --> 00:45:27,478 et d'écrire sur cette fonction. 858 00:45:27,478 --> 00:45:29,710 >> PUBLIC: Nous ne faisons pas compte pour [inaudible], 859 00:45:29,710 --> 00:45:30,200 nous ne devons pas utiliser des entiers? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSEUR: Non, vous ne le faites pas. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Je vais vous donner un indice gars. 863 00:48:06,930 --> 00:48:12,325 Une boucle while peut être très utile ici. 864 00:48:12,325 --> 00:48:12,825 Ouais. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Voici 867 00:48:45,495 --> 00:48:45,995 bonbons. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Bonbons sera également disponible pour le quiz, je pense. 870 00:48:53,410 --> 00:48:55,315 Alors vous les gars seront tous sucrée jusqu'à demain. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Peut i-- vous l'avez obtenu. 873 00:49:02,962 --> 00:49:03,718 >> AUDIENCE: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESSEUR: Ouais. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Peut-être 30 secondes ou plus. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Très bien, si vous êtes pas fait, pas de soucis. 879 00:50:07,340 --> 00:50:08,810 Nous allons passer à travers cette ensemble. 880 00:50:08,810 --> 00:50:09,310 D'ACCORD. 881 00:50:09,310 --> 00:50:13,800 Donc, je vais simplement la disposition du structure de base pour cette fonction ici. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Tout d'abord, ce que quelqu'un veut dire moi ce que signifie int? 885 00:50:23,460 --> 00:50:25,160 Nous avons besoin de cette fonction. 886 00:50:25,160 --> 00:50:26,709 >> AUDIENCE: strlen [inaudible]. 887 00:50:26,709 --> 00:50:27,500 PROFESSEUR: Exactement. 888 00:50:27,500 --> 00:50:31,140 Donc, quoi qu'il arrive ici, nous devons retourner un entier. 889 00:50:31,140 --> 00:50:36,367 Et comme spécifié dans la spec, nous voulons return-- 890 00:50:36,367 --> 00:50:37,700 Allez-y les gars, juste continuer. 891 00:50:37,700 --> 00:50:40,480 C'est parfait. 892 00:50:40,480 --> 00:50:42,960 Mangez tout cela si je ne ai pas de le reprendre, effectivement. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 L'int signifie simplement que vous êtes va être retournant un entier. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Quel est ce omble étoiles s? 897 00:50:57,106 --> 00:50:58,640 Qu'est-ce que cela veut dire? 898 00:50:58,640 --> 00:51:00,879 >> AUDIENCE: Comme, ce qui est entrée en. 899 00:51:00,879 --> 00:51:01,670 PROFESSEUR: Exactement. 900 00:51:01,670 --> 00:51:04,142 Et ce qui est presque même chose en tant que char étoiles? 901 00:51:04,142 --> 00:51:04,850 AUDIENCE: String? 902 00:51:04,850 --> 00:51:05,641 PROFESSEUR: Exactement. 903 00:51:05,641 --> 00:51:09,080 Donc, tout ce que nous faisons est de donner ce un pointeur vers une chaîne. 904 00:51:09,080 --> 00:51:09,580 D'ACCORD. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Frais. 907 00:51:13,360 --> 00:51:16,650 >> Aussi, ne pas oublier, si nous oublions pour vous donner ces supports, 908 00:51:16,650 --> 00:51:18,330 ne pas oublier de les écrire vous-même. 909 00:51:18,330 --> 00:51:20,720 Parce que, théoriquement, votre code est incorrecte si vous oubliez de les écrire. 910 00:51:20,720 --> 00:51:21,803 Il suffit de payer toujours l'attention. 911 00:51:21,803 --> 00:51:23,750 Comme, petites choses que vous ne remarquez pas 912 00:51:23,750 --> 00:51:26,917 lorsque vous programmez sur votre ordinateur portable, parce que votre ordinateur portable fait pour vous? 913 00:51:26,917 --> 00:51:28,624 Ne pas oublier quand vous écrivez à la main. 914 00:51:28,624 --> 00:51:29,170 Ouais? 915 00:51:29,170 --> 00:51:30,954 >> AUDIENCE: Mais comment incorrect? 916 00:51:30,954 --> 00:51:33,190 Comme, ne nous obtenons l'ensemble du problème de mal? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSEUR: Non, non. 918 00:51:34,190 --> 00:51:34,860 Ne vous inquiétez pas. 919 00:51:34,860 --> 00:51:39,270 Il est en fait théoriquement possible pour vous d'obtenir la totalité des points sur une question 920 00:51:39,270 --> 00:51:41,980 même si votre code ne jamais courir dans la vie réelle. 921 00:51:41,980 --> 00:51:46,052 Je vous suggère de ne pas essayer pour que cela se produise. 922 00:51:46,052 --> 00:51:48,260 Par exemple, comme si tout qui est ici est exact, 923 00:51:48,260 --> 00:51:51,850 mais vous oubliez une virgule ou une parenthèse, votre code ne sera pas réellement fonctionner. 924 00:51:51,850 --> 00:51:53,740 Mais nous pouvons être miséricordieux. 925 00:51:53,740 --> 00:51:54,394 >> Ouais? 926 00:51:54,394 --> 00:51:56,050 >> Public: Avez-vous de commenter sur notre écriture? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSEUR: Non, non, non soucis à ce sujet. 928 00:51:57,758 --> 00:51:58,440 Pas de commentaires. 929 00:51:58,440 --> 00:51:59,400 Style devrait être bon. 930 00:51:59,400 --> 00:52:01,470 Comme, ne pas Meuch tout sur une seule ligne. 931 00:52:01,470 --> 00:52:04,580 Nous ne serons pas heureux avec vous si vous faites cela. 932 00:52:04,580 --> 00:52:07,250 >> Quelqu'un veut- me donner la première ligne? 933 00:52:07,250 --> 00:52:08,633 Hint, il est très facile. 934 00:52:08,633 --> 00:52:09,320 >> Ouais? 935 00:52:09,320 --> 00:52:11,920 >> AUDIENCE: Int, n est égal à zéro. 936 00:52:11,920 --> 00:52:13,734 Il suffit de configurer comptoir. 937 00:52:13,734 --> 00:52:15,900 PROFESSEUR: Donc, nous voulons une certaine une sorte de comptoir, à droite? 938 00:52:15,900 --> 00:52:19,780 Je vais juste de le nommer "compter" pour des raisons de lisibilité. 939 00:52:19,780 --> 00:52:21,265 Que voulons-nous pour le mettre égale à? 940 00:52:21,265 --> 00:52:21,890 >> AUDIENCE: Zéro. 941 00:52:21,890 --> 00:52:23,840 PROFESSEUR: Yep. 942 00:52:23,840 --> 00:52:24,340 Point-virgule. 943 00:52:24,340 --> 00:52:26,250 Il est également un point-virgule de tirage très étranges. 944 00:52:26,250 --> 00:52:28,870 Juste pratiquer le faire. 945 00:52:28,870 --> 00:52:31,990 >> Donc, nous voulons d'abord un compteur de type int. 946 00:52:31,990 --> 00:52:35,360 Parce que nous voulons compter jusqu'à combien de nombreux personnages ou des lettres sont 947 00:52:35,360 --> 00:52:36,780 dans cette chaîne, non? 948 00:52:36,780 --> 00:52:38,330 Très facile première étape. 949 00:52:38,330 --> 00:52:42,140 >> OK, peut-être un peu plus complexe Maintenant, comment allons-nous faire? 950 00:52:42,140 --> 00:52:45,400 Quelqu'un veut- me donner la ligne de code 951 00:52:45,400 --> 00:52:48,450 qui peut être en mesure d'aider la boucle Quoi que ce soit à travers? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Ouais, âme courageuse dans le dos? 954 00:52:56,900 --> 00:53:06,832 >> AUDIENCE: OK, donc alors que le point astérisques, l'ouais, star de s, 955 00:53:06,832 --> 00:53:09,465 est pas égal à zéro, puis faire quelque chose? 956 00:53:09,465 --> 00:53:11,090 PROFESSEUR: Voilà vraiment, vraiment proche. 957 00:53:11,090 --> 00:53:11,835 Vraiment proche. 958 00:53:11,835 --> 00:53:13,710 Donc, je vais aborder deux choses avec cela. 959 00:53:13,710 --> 00:53:18,240 Tout d'abord, il est pas exactement zéro. 960 00:53:18,240 --> 00:53:20,110 Qu'Est-ce que c'est? 961 00:53:20,110 --> 00:53:22,550 Il est le terminateur null, qui est oblique zéro. 962 00:53:22,550 --> 00:53:24,960 Donc, ils sont différents dans termes de la façon dont ils sont stockés. 963 00:53:24,960 --> 00:53:26,270 Donc, vous êtes vraiment proche. 964 00:53:26,270 --> 00:53:30,330 >> Et d'autre part, nous ne voulons pas pour déplacer simplement le pointeur. 965 00:53:30,330 --> 00:53:32,320 Nous voulons effectivement accéder aux valeurs, à droite? 966 00:53:32,320 --> 00:53:34,050 Et alors comment faisons-nous cela? 967 00:53:34,050 --> 00:53:34,550 Très facile. 968 00:53:34,550 --> 00:53:36,841 Ne pas penser à des pointeurs, ne pas penser à des souvenirs. 969 00:53:36,841 --> 00:53:38,525 Retour à deux semaines de ce cours. 970 00:53:38,525 --> 00:53:39,555 >> AUDIENCE: [inaudible]. 971 00:53:39,555 --> 00:53:40,680 PROFESSEUR: Au, vous vous souvenez? 972 00:53:40,680 --> 00:53:41,400 Quelles sont les chaînes? 973 00:53:41,400 --> 00:53:42,650 Comment sont-ils stockés dans la mémoire? 974 00:53:42,650 --> 00:53:43,300 >> AUDIENCE: Ils sont soulevées. 975 00:53:43,300 --> 00:53:43,810 >> PROFESSEUR: Ils sont élevés. 976 00:53:43,810 --> 00:53:45,550 Alors, comment faisons nous accédons chaque personnage à l'intérieur? 977 00:53:45,550 --> 00:53:46,466 >> AUDIENCE: [inaudible]. 978 00:53:46,466 --> 00:53:47,530 PROFESSEUR: Exactement. 979 00:53:47,530 --> 00:53:53,195 Donc ce qui se passe à l'intérieur while-- ici? 980 00:53:53,195 --> 00:53:54,940 S - 981 00:53:54,940 --> 00:53:55,920 >> AUDIENCE: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSEUR: Oh, je ne existe pas, il le fait? 983 00:53:58,216 --> 00:53:59,620 >> AUDIENCE: Oh, compter? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSEUR: Nous pouvons simplement utiliser count, pas nous? 985 00:54:01,640 --> 00:54:03,050 >> AUDIENCE: Désolé, je l'ai appelé i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSEUR: Oui, il est tout bon. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Nous avons une variable ici, qui est déjà été déclaré comme notre compteur. 989 00:54:10,760 --> 00:54:13,650 Alors, pourquoi ne pas simplement utiliser que se déplacer à travers la boucle while? 990 00:54:13,650 --> 00:54:15,230 Cela a-t-il du sens? 991 00:54:15,230 --> 00:54:20,864 >> Ainsi, alors que s de count-- Quelqu'un veut- de me donner ce qui arrive après ici? 992 00:54:20,864 --> 00:54:22,030 PUBLIC: Il ne fait pas égale. 993 00:54:22,030 --> 00:54:23,405 PROFESSEUR: Ne correspond pas, non? 994 00:54:23,405 --> 00:54:26,200 Il est le bang est égal, point d'exclamation est égal, 995 00:54:26,200 --> 00:54:28,500 tout ce que vous voulez les gars appeler ne pas equal-- 996 00:54:28,500 --> 00:54:29,496 >> AUDIENCE: [inaudible]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSEUR: Ouais. 998 00:54:30,990 --> 00:54:37,110 Rappelez-vous apostrophe est pour un char, guillemets sont pour une chaîne. 999 00:54:37,110 --> 00:54:38,630 Soyez prudent lorsque vous les utilisez. 1000 00:54:38,630 --> 00:54:42,430 Alors, quand nous sommes à la recherche par le biais le tableau, le dernier caractère, 1001 00:54:42,430 --> 00:54:46,420 nous savons que nous ne voulons pas qu'il soit anti-slash zéro. 1002 00:54:46,420 --> 00:54:47,340 >> Ainsi, alors que. 1003 00:54:47,340 --> 00:54:48,840 Nous ne sommes pas à la fin de la chaîne. 1004 00:54:48,840 --> 00:54:52,335 Que voulons-nous faire à l'intérieur? 1005 00:54:52,335 --> 00:54:55,269 >> PUBLIC: Nous voulons ajouter à la compteur de sorte qu'il compte plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESSEUR: Exactement. 1007 00:54:56,060 --> 00:55:03,064 Donc, nous allons faire ici compter, compter plus plus. 1008 00:55:03,064 --> 00:55:03,980 Il manque une ligne de plus. 1009 00:55:03,980 --> 00:55:05,090 Nous y sommes presque. 1010 00:55:05,090 --> 00:55:07,398 Que sommes-nous oublions de le faire? 1011 00:55:07,398 --> 00:55:08,770 >> AUDIENCE: retour à zéro? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESSEUR: Vous voulez revenir à zéro? 1013 00:55:10,820 --> 00:55:12,962 >> AUDIENCE: Non, retour à strlen. 1014 00:55:12,962 --> 00:55:13,511 Attendez. 1015 00:55:13,511 --> 00:55:14,760 PROFESSEUR: qui est stocké dans? 1016 00:55:14,760 --> 00:55:15,090 AUDIENCE: le comte. 1017 00:55:15,090 --> 00:55:15,589 Compter. 1018 00:55:15,589 --> 00:55:17,150 PROFESSEUR: Exactement. 1019 00:55:17,150 --> 00:55:20,760 Nous sommes donc ici va revenir comptage. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Parce que ce que nous sommes fais ici ultimately-- 1022 00:55:25,380 --> 00:55:29,780 nous avons un compteur variable qui est va incrémenter le biais de notre chaîne. 1023 00:55:29,780 --> 00:55:33,050 Nous allons continuer, gardons aller, autour et autour dans cette boucle. 1024 00:55:33,050 --> 00:55:37,700 Et tandis que nous ne sommes pas sur la fin de cette chaîne, qui est le terminateur null. 1025 00:55:37,700 --> 00:55:40,410 >> Et chaque fois que nous passons par , nous ajoutons à notre comptoir. 1026 00:55:40,410 --> 00:55:42,640 Et nous allons encore le long de ce tableau. 1027 00:55:42,640 --> 00:55:44,880 Et à la fin, une fois que nous frapper la terminaison nulle, 1028 00:55:44,880 --> 00:55:48,469 nous savons, oh, nous pouvons casser, retourner le nombre. 1029 00:55:48,469 --> 00:55:49,260 Nous avons notre strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Est-ce que tout le monde se comment cela a été mis en œuvre? 1032 00:55:56,400 --> 00:55:58,830 Alors que loops-- Je sais que nous avons pas trop fait avec eux, 1033 00:55:58,830 --> 00:56:01,240 mais ils sont généralement très, très utile si vous 1034 00:56:01,240 --> 00:56:05,390 ne savez pas ce que vous faites un arrêt état doit nécessairement être. 1035 00:56:05,390 --> 00:56:06,220 >> Question? 1036 00:56:06,220 --> 00:56:10,080 >> AUDIENCE: Pouvons-nous écrire null à la condition de tout? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSEUR: Alors? 1038 00:56:10,940 --> 00:56:15,304 Ouais, donc dans ce problème, je vous avais gars supposent que s ne sera pas nulle. 1039 00:56:15,304 --> 00:56:17,220 Parce que souvenez-vous, Théoriquement, si je vous donnais 1040 00:56:17,220 --> 00:56:21,180 un pointeur qui est trop grand de la mémoire, cela vous donnerait l'hypothèse nulle, non? 1041 00:56:21,180 --> 00:56:23,770 Voilà ce que l'exploitation système ferait. 1042 00:56:23,770 --> 00:56:26,960 >> Donc, si je ne vous dis pas à assumer s serait nulle, vous devez vérifier. 1043 00:56:26,960 --> 00:56:32,050 Donc, ici, vous feriez, si s est égal à égal nulle, retourner un. 1044 00:56:32,050 --> 00:56:33,028 Quelque chose comme ça. 1045 00:56:33,028 --> 00:56:34,153 AUDIENCE: [inaudible] zéro. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSEUR: OK, je vais le dire vous pourquoi nous ne pouvons pas faire cela. 1048 00:56:39,370 --> 00:56:43,357 Parce souvenir dans la mémoire, à droite, ici. 1049 00:56:43,357 --> 00:56:43,940 Nous allons ici. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Vous avez blocs géants de toute mémoire de grilles 1052 00:56:54,090 --> 00:56:56,680 qui stockent des valeurs différentes, non? 1053 00:56:56,680 --> 00:57:00,110 Et ainsi tout une chaîne pour est-- par exemple, si nous sommes à l'entrée bonjour, 1054 00:57:00,110 --> 00:57:05,490 il serait H-E-L-L-O barre oblique inverse de zéro, non? 1055 00:57:05,490 --> 00:57:09,570 Et puis, qui sait, comme aléatoire choses qui sont ici après. 1056 00:57:09,570 --> 00:57:11,220 >> Nous ne savons pas vraiment ce qui est là. 1057 00:57:11,220 --> 00:57:13,350 Et si vous aviez à faire au lieu de barre oblique inverse zéro, 1058 00:57:13,350 --> 00:57:15,590 null, il ne peut pas être nulle. 1059 00:57:15,590 --> 00:57:17,680 Parce qu'il peut simplement signifier quelques autres choses au hasard 1060 00:57:17,680 --> 00:57:19,270 qui ne font pas partie de votre chaîne. 1061 00:57:19,270 --> 00:57:23,219 Et la façon dont nous savons toujours que une chaîne se termine avec une barre oblique inverse est zéro. 1062 00:57:23,219 --> 00:57:25,760 Et pour que ya toujours comment nous vérifier pour voir la fin d'une chaîne. 1063 00:57:25,760 --> 00:57:30,820 >> Null, tout ce qui signifie que si vous avez un pointeur inexistant, tout d'abord, 1064 00:57:30,820 --> 00:57:36,160 ou si votre mémoire est tellement grande que vous ne pouvez pas revenir, alors il serait nulle. 1065 00:57:36,160 --> 00:57:40,150 Soyez donc très prudent lorsque la différenciation la différence entre null 1066 00:57:40,150 --> 00:57:42,130 et la barre oblique inverse zéro. 1067 00:57:42,130 --> 00:57:43,670 Ouais. 1068 00:57:43,670 --> 00:57:46,886 >> Tout le monde OK avec ça? 1069 00:57:46,886 --> 00:57:48,150 D'ACCORD. 1070 00:57:48,150 --> 00:57:50,440 >> Donc je devais vous les gars écrivez strlen. 1071 00:57:50,440 --> 00:57:53,790 Réalistement nous pourrions aussi demander que vous écrivez sur A à I, rappeler que "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 ou ce que vous voulez les gars de l'appeler? 1073 00:57:55,400 --> 00:57:58,010 Cette fonction en Vigenère et César, qui 1074 00:57:58,010 --> 00:58:00,900 convertit une valeur ASCII à un nombre entier? 1075 00:58:00,900 --> 00:58:04,360 Cela a également venir sur les dernières quiz des fonctions que nous vous avons demandé d'écrire. 1076 00:58:04,360 --> 00:58:08,280 >> Quasiment toute fonction que vous avez utilisé et est 1077 00:58:08,280 --> 00:58:11,660 très facile à écrire vous-même, capteurs aiment est inférieure, 1078 00:58:11,660 --> 00:58:14,620 est supérieur, à réduire, à supérieure. 1079 00:58:14,620 --> 00:58:17,964 Fonctions qui convertissent une chaîne de minuscules en majuscules. 1080 00:58:17,964 --> 00:58:19,380 Nous savons tous comment le faire, non? 1081 00:58:19,380 --> 00:58:21,100 Il est assez facile. 1082 00:58:21,100 --> 00:58:24,770 Je veux juste vous assurer que vous can-- il est le même processus de pensée. 1083 00:58:24,770 --> 00:58:26,940 Vous itération juste par et vous mettez les choses. 1084 00:58:26,940 --> 00:58:30,190 Vous pouvez soit compter ou lorsque vous mettez les choses différemment. 1085 00:58:30,190 --> 00:58:32,280 >> Je voudrais suggest-- I Je ne sais pas si nous allons 1086 00:58:32,280 --> 00:58:39,080 vous demander de mémoriser ce que le capital A ou capitale Z, ou en minuscules ou en minuscules A 1087 00:58:39,080 --> 00:58:42,640 Z sont en ASCII, mais je dirais peut-être écrit que dans le cas 1088 00:58:42,640 --> 00:58:44,124 Nous faisons. 1089 00:58:44,124 --> 00:58:45,540 Juste pour que vous les gars ont une référence. 1090 00:58:45,540 --> 00:58:47,180 Comme majuscule est, quoi, 197? 1091 00:58:47,180 --> 00:58:51,320 Et puis minuscules est comme 50 quelque chose. 1092 00:58:51,320 --> 00:58:52,492 65, ouais, là vous allez. 1093 00:58:52,492 --> 00:58:54,950 Il suffit donc de savoir à peu près la différence entre eux est de 32. 1094 00:58:54,950 --> 00:58:57,670 Cela est assez importante. 1095 00:58:57,670 --> 00:58:58,170 Ouais. 1096 00:58:58,170 --> 00:59:01,445 Suis-je bien à ce sujet? 1097 00:59:01,445 --> 00:59:01,945 D'ACCORD. 1098 00:59:01,945 --> 00:59:03,109 >> PUBLIC: Nous pourrions théoriquement écrire quelques 1099 00:59:03,109 --> 00:59:04,410 de ces vers le bas ainsi sur notre little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSEUR: Vous théoriquement pourrait suffit de copier la fonction vers le bas. 1101 00:59:07,035 --> 00:59:08,482 C'est vrai. 1102 00:59:08,482 --> 00:59:11,080 >> Audience: non [inaudible]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESSEUR: Vous les gars ont une feuille. 1104 00:59:12,720 --> 00:59:14,194 Les gars, vous avez une feuille de note. 1105 00:59:14,194 --> 00:59:14,860 Vous pouvez le saisir. 1106 00:59:14,860 --> 00:59:15,490 Vous pouvez l'écrire. 1107 00:59:15,490 --> 00:59:17,031 Vous pouvez faire ce que vous voulez avec elle. 1108 00:59:17,031 --> 00:59:18,530 Ouais. 1109 00:59:18,530 --> 00:59:21,406 Donc, théoriquement, si vous voulez, allez. 1110 00:59:21,406 --> 00:59:23,338 >> AUDIENCE: [inaudible] mais nous ne le faisons pas vraiment 1111 00:59:23,338 --> 00:59:25,994 nécessairement besoin de se rappeler la valeur, nous pouvons simplement 1112 00:59:25,994 --> 00:59:28,914 utiliser le majuscules ou à fonctions inférieur, à droite? 1113 00:59:28,914 --> 00:59:29,580 PROFESSEUR: Ouais. 1114 00:59:29,580 --> 00:59:32,740 Mais si nous vous avons donné une question qui dit écrire à supérieure, 1115 00:59:32,740 --> 00:59:34,350 alors vous auriez besoin de l'écrire. 1116 00:59:34,350 --> 00:59:38,150 Alors vous les gars peut supposer que vous les gars ont accès à toutes les fonctions, 1117 00:59:38,150 --> 00:59:41,523 mais si vous souhaitez utiliser pour supérieure ou inférieur, qu'est-ce que vous avez aussi à faire? 1118 00:59:41,523 --> 00:59:43,840 >> AUDIENCE: [inaudible] utiliser CS50 [inaudible] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSEUR: Est-il CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Soyez prudent là-bas. 1122 00:59:48,310 --> 00:59:50,640 >> Donc, pour supérieure, d'abaisser, est supérieure, est inférieur, 1123 00:59:50,640 --> 00:59:52,990 fonctions qui impliquent la manipulation de chaînes sont 1124 00:59:52,990 --> 00:59:55,490 le tout dans l'une ou l'autre Ascii ou dans la bibliothèque de mathématiques 1125 00:59:55,490 --> 00:59:57,350 ou dans la bibliothèque de chaîne. 1126 00:59:57,350 --> 01:00:00,290 Donc, si vous les gars utiliser ces fonctions, soyez prudent de se rappeler 1127 01:00:00,290 --> 01:00:01,451 d'inclure cet en-tête. 1128 01:00:01,451 --> 01:00:03,950 Donc, peut-être aussi quelque chose que vous vouloir inclure dans votre feuille, 1129 01:00:03,950 --> 01:00:04,892 ce sont l'en-tête? 1130 01:00:04,892 --> 01:00:06,600 Quelles sont les bibliothèques vous avez utilisé? 1131 01:00:06,600 --> 01:00:08,550 Quelles sont les fonctions l'intérieur de ces bibliothèques? 1132 01:00:08,550 --> 01:00:09,230 C'est important. 1133 01:00:09,230 --> 01:00:10,420 >> Ouais? 1134 01:00:10,420 --> 01:00:12,570 >> AUDIENCE: Pourrions-nous Cop Out et faire hashtag 1135 01:00:12,570 --> 01:00:14,955 à travers la absolument chaque lettre que nous ayons jamais 1136 01:00:14,955 --> 01:00:17,340 vu comme sur toutes les questions? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSEUR: Vous pourriez. 1138 01:00:18,320 --> 01:00:20,361 Je ne sais pas comment heureux nous allons être au grade 1139 01:00:20,361 --> 01:00:25,090 que quizz où chaque morceau de code est deux fois plus longtemps que cela doit être. 1140 01:00:25,090 --> 01:00:27,200 Je ne sais pas, nous pourrions enlever un point pour le style. 1141 01:00:27,200 --> 01:00:28,790 Mais théoriquement votre Code serait juste. 1142 01:00:28,790 --> 01:00:30,915 Vous les gars pouvait flic et vient tout inclure. 1143 01:00:30,915 --> 01:00:32,044 Cela est très bien aussi, ouais. 1144 01:00:32,044 --> 01:00:32,960 AUDIENCE: [inaudible]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSEUR: Ouais. 1146 01:00:33,270 --> 01:00:34,900 Je suggère de ne pas le faire si. 1147 01:00:34,900 --> 01:00:35,505 Ouais. 1148 01:00:35,505 --> 01:00:36,130 AUDIENCE: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSEUR: Bonne question. 1150 01:00:36,620 --> 01:00:37,480 Auditoire: Alors, le pire des cas. 1151 01:00:37,480 --> 01:00:38,563 PROFESSEUR: Le pire des cas. 1152 01:00:38,563 --> 01:00:40,350 Si vous oubliez totalement, vous pourriez le faire. 1153 01:00:40,350 --> 01:00:40,850 Ouais. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Yep, le code est juste là. 1156 01:00:45,400 --> 01:00:49,176 Je n utilisé au lieu de décompte, mais, vous savoir, quel que soit votre bateau flotte. 1157 01:00:49,176 --> 01:00:51,092 AUDIENCE: Attendez, donc nous ne pas avoir à hashtag 1158 01:00:51,092 --> 01:00:53,460 inclure parce que nous sommes à partir de l'int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSEUR: Oui, je viens de supposer que on nous a demandé d'écrire la fonction. 1161 01:00:59,924 --> 01:01:02,340 Si vous voulez être sûr, vous pourrait probablement y mettre. 1162 01:01:02,340 --> 01:01:05,650 Mais je viens de ne pas la peine, oui. 1163 01:01:05,650 --> 01:01:09,919 >> Je ne sais même pas si vous besoin de toute bibliothèque pour cela. 1164 01:01:09,919 --> 01:01:12,710 Parce que vous n'êtes pas vraiment l'impression quoi que ce soit ou quoi que ce soit, non? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ouais, je ne sais pas si vous avez besoin d'une bibliothèque. 1167 01:01:19,568 --> 01:01:22,400 >> D'ACCORD. 1168 01:01:22,400 --> 01:01:26,020 Ceci est également un peu plus long les lignes de la manipulation de la mémoire. 1169 01:01:26,020 --> 01:01:27,400 Ce genre de peu délicat. 1170 01:01:27,400 --> 01:01:28,960 Penses-y. 1171 01:01:28,960 --> 01:01:30,580 Vous avez une fonction appelée FUNC. 1172 01:01:30,580 --> 01:01:33,570 Je pourrais l'ai nommé que ce soit, mais je choisis de nommer FUNC. 1173 01:01:33,570 --> 01:01:36,000 Je l'ai dessus de ma principale. 1174 01:01:36,000 --> 01:01:39,790 Rappelez-vous, vous voulez avoir une fonction après votre principale, 1175 01:01:39,790 --> 01:01:42,370 vous voulez vous assurer que vous inclure le prototype de la partie supérieure. 1176 01:01:42,370 --> 01:01:45,750 >> Mais dans ce cas, il était si court que je sentais que je ne pouvais tout simplement 1177 01:01:45,750 --> 01:01:47,260 inclure au sommet de la principale. 1178 01:01:47,260 --> 01:01:51,170 Je ne l'ai pas besoin d'avoir le prototype, car il est déjà écrit ci-dessus. 1179 01:01:51,170 --> 01:01:55,430 Donc, tout ce que je fais dans ma fonction principale est de créer entier x est égal à 10. 1180 01:01:55,430 --> 01:02:00,490 Je vais appeler ma fonction FUNC, puis imprimer quelque chose. 1181 01:02:00,490 --> 01:02:02,840 >> Et alors que ce fait ce FUNC fait. 1182 01:02:02,840 --> 01:02:04,340 Les gars, vous voulez réfléchir à cela. 1183 01:02:04,340 --> 01:02:05,423 Parce qu'il est un peu délicat. 1184 01:02:05,423 --> 01:02:07,220 Il est très, très difficile, en fait. 1185 01:02:07,220 --> 01:02:09,549 Pensez à ce que cela programme serait en sortie. 1186 01:02:09,549 --> 01:02:10,840 Je vais vous donner deux minutes les gars. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Bonnes discussions? 1189 01:03:37,891 --> 01:03:38,853 >> AUDIENCE: Ouais. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSEUR: Ouais. 1191 01:03:39,815 --> 01:03:42,220 Très bien, alors cela est difficile pour une raison. 1192 01:03:42,220 --> 01:03:44,845 Et voilà pourquoi je voulais apporter ce à l'attention de tout le monde. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Quelqu'un veut-il me donner une suggestion, une tentative? 1195 01:03:51,147 --> 01:03:52,230 Que serait-ce imprimer? 1196 01:03:52,230 --> 01:03:53,930 Totalement très bien si vous avez tort. 1197 01:03:53,930 --> 01:03:55,619 Ouais? 1198 01:03:55,619 --> 01:03:59,483 >> AUDIENCE: Je pense qu'il est 100 et puis 10 sur deux lignes distinctes. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSEUR: Et un 10? 1200 01:04:00,940 --> 01:04:03,154 Quelqu'un at-il d'autres suppositions? 1201 01:04:03,154 --> 01:04:04,150 Ouais? 1202 01:04:04,150 --> 01:04:09,040 >> AUDIENCE: Peut-être juste parce que 10 FUNC ne revient pas quelque chose? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSEUR: OK, donc nous avoir conjecture numéro un 1204 01:04:11,610 --> 01:04:14,990 conjecture est que le numéro deux est aller juste pour imprimer 10. 1205 01:04:14,990 --> 01:04:17,623 Quelqu'un at-il d'autres suppositions? 1206 01:04:17,623 --> 01:04:19,654 D'ACCORD. 1207 01:04:19,654 --> 01:04:21,070 Donc, nous allons marcher à travers cela, non? 1208 01:04:21,070 --> 01:04:23,903 Chaque fois que vous obtenez un morceau de code, ne regardez pas seulement à elle et être comme, 1209 01:04:23,903 --> 01:04:25,060 Ah, voilà tellement de choses! 1210 01:04:25,060 --> 01:04:26,460 Je suis tellement confus! 1211 01:04:26,460 --> 01:04:28,220 Comme, vous calmer. 1212 01:04:28,220 --> 01:04:31,602 Il suffit de savoir que vous pourrait tout regarder à travers la ligne de code en ligne. 1213 01:04:31,602 --> 01:04:32,310 Voilà tout ce qu'il est. 1214 01:04:32,310 --> 01:04:33,840 Il est comme lire un livre. 1215 01:04:33,840 --> 01:04:38,000 >> Donc, avec toute fonction, nous commençons toujours au principal. 1216 01:04:38,000 --> 01:04:40,860 Nous allons donc commencer à void main int, 1217 01:04:40,860 --> 01:04:43,010 même le programme de déjà exécuté bas, à droite? 1218 01:04:43,010 --> 01:04:45,070 Commencez par en void main. 1219 01:04:45,070 --> 01:04:48,030 Int x est égal à 10. 1220 01:04:48,030 --> 01:04:50,400 >> Donc, je vais effacer cela. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Je vais tirer la mémoire juste pour que vous les gars peuvent sorte de voir ce qui se passe. 1223 01:04:58,470 --> 01:05:02,190 >> Rappelez-vous ici-bas nous avons notre pile? 1224 01:05:02,190 --> 01:05:05,810 Jusqu'à ici, nous avons notre tas quelque part ici. 1225 01:05:05,810 --> 01:05:07,470 Pile grandit, non? 1226 01:05:07,470 --> 01:05:10,150 Et au sein de la pile, vous avez le réseau fonctionnent ainsi que 1227 01:05:10,150 --> 01:05:12,230 tous viabilisé variables locales. 1228 01:05:12,230 --> 01:05:14,310 >> Donc, ici, int x égale à 10. 1229 01:05:14,310 --> 01:05:17,670 Au sein de notre fonction principale nous sommes la création d'une variable appelée x. 1230 01:05:17,670 --> 01:05:20,590 Nous mettons en place qui égale à 10. 1231 01:05:20,590 --> 01:05:24,200 Ici vous avez quelques x, et vous êtes paramètre qui égale à 10, à droite, 1232 01:05:24,200 --> 01:05:25,400 à l'intérieur principale. 1233 01:05:25,400 --> 01:05:27,430 Tout le monde la bonne? 1234 01:05:27,430 --> 01:05:28,070 >> Fonction. 1235 01:05:28,070 --> 01:05:30,330 Alors maintenant, au sein de notre principale fonction, nous appelons 1236 01:05:30,330 --> 01:05:31,810 la fonction que nous avons écrit ci-dessus. 1237 01:05:31,810 --> 01:05:34,550 Donc, nous allons maintenant entrer dans la deuxième fonction. 1238 01:05:34,550 --> 01:05:40,120 Nous allons créer un autre la variable int x est égal à 100. 1239 01:05:40,120 --> 01:05:42,410 Qu'est-ce qui se passe ici à la pile? 1240 01:05:42,410 --> 01:05:46,980 Qu'advient-il lorsque vous appelez un fonction qui crée de nouvelles variables? 1241 01:05:46,980 --> 01:05:50,038 Qu'est-ce qui se passe ici à la pile? 1242 01:05:50,038 --> 01:05:52,134 >> AUDIENCE: [inaudible] des tas sur le dessus? 1243 01:05:52,134 --> 01:05:52,800 PROFESSEUR: Ouais. 1244 01:05:52,800 --> 01:05:54,050 Donc, il crée en fait une copie. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Et ce type de piles sur le dessus. 1247 01:05:57,740 --> 01:06:00,700 Pensez à la stack-- une pile de livres, une pile de quoi que ce soit. 1248 01:06:00,700 --> 01:06:06,520 Piles sur le dessus, d'abord en dernier out, dernier entré, premier sorti. 1249 01:06:06,520 --> 01:06:08,471 >> Cela va donc de créer un x ici. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Cela va avoir funcs toutes les variables. 1252 01:06:14,450 --> 01:06:14,950 Génial. 1253 01:06:14,950 --> 01:06:20,980 Nous avons donc maintenant deux x différents qui représenter deux choses très différentes. 1254 01:06:20,980 --> 01:06:24,470 Ensuite, nous allons imprimer le nombre entier de x. 1255 01:06:24,470 --> 01:06:26,430 Donc, nous allons imprimer 100, non? 1256 01:06:26,430 --> 01:06:29,389 Parce que là, il est 100. 1257 01:06:29,389 --> 01:06:31,680 Voilà donc la première chose que ça va imprimer. 1258 01:06:31,680 --> 01:06:35,710 Comme cette fonction retourne rien, maintenant que la fonction, cette ligne principale 1259 01:06:35,710 --> 01:06:37,070 est fait. 1260 01:06:37,070 --> 01:06:39,160 Tout le monde bien avec moi jusqu'à présent? 1261 01:06:39,160 --> 01:06:43,034 >> Donc, nous sommes maintenant à travers deux des trois lignes de notre fonction principale. 1262 01:06:43,034 --> 01:06:44,450 Maintenant, nous allons à la troisième ligne. 1263 01:06:44,450 --> 01:06:46,350 Nous allons à printf. 1264 01:06:46,350 --> 01:06:48,222 Quel est ce x au sein principale? 1265 01:06:48,222 --> 01:06:49,263 Qu'est-ce que cela représente? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Quelle est la valeur x maintenant? 1268 01:06:54,280 --> 01:06:55,220 >> Audience: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSEUR: Il est de 100? 1270 01:06:56,799 --> 01:06:57,590 AUDIENCE: Toujours 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSEUR: Toujours 10. 1272 01:06:58,878 --> 01:07:00,870 Ouais. 1273 01:07:00,870 --> 01:07:06,810 Parce que rappelez-vous, au sein de notre FUNC, x est égal à 100. 1274 01:07:06,810 --> 01:07:09,690 Mais si nous retournons à notre fonction principale, 1275 01:07:09,690 --> 01:07:12,440 cette variable est stockée dans un endroit différent sur notre pile. 1276 01:07:12,440 --> 01:07:16,250 >> Alors maintenant, nous devons revenir à la pile principale, tout à variables locales. 1277 01:07:16,250 --> 01:07:18,460 Et ici x est égal à 10. 1278 01:07:18,460 --> 01:07:20,300 Et donc nous allons imprimer 10. 1279 01:07:20,300 --> 01:07:22,530 >> Elle était donc tout à fait raison. 1280 01:07:22,530 --> 01:07:25,053 Nous allons avoir la de sortie 100 et 10. 1281 01:07:25,053 --> 01:07:25,553 Ouais? 1282 01:07:25,553 --> 01:07:28,700 AUDIENCE: Lorsque vous malloc, est-ce le tas ou la pile qui est [inaudible]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSEUR: Lorsque vous malloc, vous prenez la mémoire du tas 1284 01:07:31,950 --> 01:07:32,830 et distributeurs. 1285 01:07:32,830 --> 01:07:34,950 Alors que vous ne disposez pas de jouer avec tout cela. 1286 01:07:34,950 --> 01:07:38,100 Donc je suppose que la plus grande livraison ici est quelque chose appelé la portée. 1287 01:07:38,100 --> 01:07:39,650 >> Pour ceux d'entre vous qui étaient à la session d'examen de la nuit dernière, 1288 01:07:39,650 --> 01:07:41,080 nous avons parlé brièvement à ce sujet. 1289 01:07:41,080 --> 01:07:45,380 Portée définit comment et lorsque vos variables existent. 1290 01:07:45,380 --> 01:07:48,050 Ou dans quels délais font vos variables existent. 1291 01:07:48,050 --> 01:07:51,690 >> A peu près la règle générale est, votre variables-- si vous les créez 1292 01:07:51,690 --> 01:07:56,660 l'intérieur braces-- bouclés ils existent seulement à l'intérieur de ces accolades. 1293 01:07:56,660 --> 01:08:00,312 >> Ainsi, par exemple dans notre fonction de FUNC, vous voyez ces deux accolades. 1294 01:08:00,312 --> 01:08:02,020 Si vous créez quelque chose à l'intérieur, 1295 01:08:02,020 --> 01:08:06,500 les chances sont tout ce que vous faites est la création d'une pile et le stockage qu'il n'y. 1296 01:08:06,500 --> 01:08:07,430 Même chose dans le principal. 1297 01:08:07,430 --> 01:08:09,950 Cela est juste stocké à l'intérieur de la principale. 1298 01:08:09,950 --> 01:08:13,560 >> Aussi, vous voulez être très, très prudent ici. 1299 01:08:13,560 --> 01:08:18,310 Parce que la portée prête également lui-même aux différents exemples. 1300 01:08:18,310 --> 01:08:25,950 Ainsi, par exemple pour un boucle, par int i est égal à 0. 1301 01:08:25,950 --> 01:08:28,460 I est moins, je ne sais pas, 10. 1302 01:08:28,460 --> 01:08:32,111 Je plus plus. 1303 01:08:32,111 --> 01:08:34,560 Et vous avez code à l'intérieur de celui-ci, non? 1304 01:08:34,560 --> 01:08:38,830 >> D'où vient cette variable, i, en fait seulement existe? 1305 01:08:38,830 --> 01:08:40,510 Seulement à l'intérieur de votre boucle. 1306 01:08:40,510 --> 01:08:43,640 Donc, je parie que beaucoup d'entre vous les gars ont probablement rencontré cette erreur lorsque 1307 01:08:43,640 --> 01:08:45,930 vous faites dans vos programmes psets. 1308 01:08:45,930 --> 01:08:49,990 Combien d'entre vous les gars ont essayé d'utiliser i en dehors d'une boucle for et avait une erreur? 1309 01:08:49,990 --> 01:08:53,310 Comme un entiers non référencés ou quelque chose comme ça? 1310 01:08:53,310 --> 01:08:56,069 >> La raison pour laquelle cela se produit est parce que vous êtes ici 1311 01:08:56,069 --> 01:08:59,109 créer quelque chose qui ne existe au sein de votre boucle. 1312 01:08:59,109 --> 01:09:01,972 Et si vous essayez de l'utiliser, je ne pas réellement exister en dehors d'elle. 1313 01:09:01,972 --> 01:09:04,930 Donc, fondamentalement, un ordinateur en disant, je ne savez pas ce que vous parlez. 1314 01:09:04,930 --> 01:09:08,689 Tout ce que je sais est que je suis un ici, mais maintenant plus. 1315 01:09:08,689 --> 01:09:12,580 >> Donc, si je devais créer un pour boucle à l'intérieur, à droite? 1316 01:09:12,580 --> 01:09:19,080 Et je vais créer un autre, comme int j, et le faire faire tout. 1317 01:09:19,080 --> 01:09:23,689 Et vous avez un code intérieur de cette boucle, j existe seulement ici. 1318 01:09:23,689 --> 01:09:26,029 Mais cela existe aussi dans les i. 1319 01:09:26,029 --> 01:09:29,310 Et si j existe seulement au sein de cette boucle, 1320 01:09:29,310 --> 01:09:33,850 alors i existe dans la chose entière. 1321 01:09:33,850 --> 01:09:34,500 >> Tout le monde est clair? 1322 01:09:34,500 --> 01:09:37,416 Même chose avec des instructions conditionnelles si vous voulez créer quelque chose. 1323 01:09:37,416 --> 01:09:40,390 Même chose avec les boucles de temps si vous voulez créer quelque chose. 1324 01:09:40,390 --> 01:09:42,390 Voilà quelque chose d'être très, très prudent sur. 1325 01:09:42,390 --> 01:09:45,681 Donc, ce fut un très bon problème dans le détecter qu'il a démontré deux choses. 1326 01:09:45,681 --> 01:09:47,160 Il a démontré la première, la portée. 1327 01:09:47,160 --> 01:09:49,550 Et elle a démontré également allocation de mémoire. 1328 01:09:49,550 --> 01:09:54,130 Parce que vous les gars doivent savoir que pousser vers le haut les fonctions de la pile. 1329 01:09:54,130 --> 01:09:56,710 Et que lorsque vous appelez fonctions, vous créez 1330 01:09:56,710 --> 01:09:59,060 essentiellement une nouvelle pile de la mémoire. 1331 01:09:59,060 --> 01:10:02,100 Cela est très différent de ce que la mémoire de votre secteur est. 1332 01:10:02,100 --> 01:10:03,300 Ouais. 1333 01:10:03,300 --> 01:10:03,800 Ouf! 1334 01:10:03,800 --> 01:10:05,470 Tout le monde OK à ce sujet? 1335 01:10:05,470 --> 01:10:06,750 Cela a été source de confusion. 1336 01:10:06,750 --> 01:10:09,380 Très bons sujets pour aller sur, parce que vous êtes probablement 1337 01:10:09,380 --> 01:10:12,255 allez obtenir quelque délicate des choses comme ça sur le quiz. 1338 01:10:12,255 --> 01:10:13,350 Ouais. 1339 01:10:13,350 --> 01:10:13,850 Frais. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Je mettrai vous obtenez 100 sur un ligne 10, puis de l'autre. 1342 01:10:18,430 --> 01:10:21,468 Oui, très bien. 1343 01:10:21,468 --> 01:10:26,350 >> OK, maintenant vous les gars obtiendrez la chance d'être les AT. 1344 01:10:26,350 --> 01:10:30,600 Vous obtenez de répondre à toutes la belle e-mails que je reçois parfois. 1345 01:10:30,600 --> 01:10:34,290 >> Alors, chers Andi, je vois, je pense que quelque chose est qui ne va pas avec mon compilateur. 1346 01:10:34,290 --> 01:10:37,910 Je suis certain que mon code est correct, mais je reçois une erreur de segmentation 1347 01:10:37,910 --> 01:10:39,074 chaque fois que je lance. 1348 01:10:39,074 --> 01:10:39,740 Ce qui se passe? 1349 01:10:39,740 --> 01:10:42,844 S'il vous plaît aider, beaucoup d'amour. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Si vous les gars par quelque chose comme que comment réagiriez-vous? 1352 01:10:49,410 --> 01:10:51,860 Ce sont en fait très commun questions que nous vous demanderont. 1353 01:10:51,860 --> 01:10:54,090 Est de savoir si, nous allons vous donner un scénario, nous nous donnons 1354 01:10:54,090 --> 01:10:56,350 votre meilleure estimation à ce qui se passe. 1355 01:10:56,350 --> 01:11:00,710 Quelqu'un at-il un coup de couteau à ce qui se passe? 1356 01:11:00,710 --> 01:11:02,654 Ouais? 1357 01:11:02,654 --> 01:11:06,056 >> AUDIENCE: Peut-être déréférencé la null, quelque chose comme le pointeur 1358 01:11:06,056 --> 01:11:08,924 est en montrant quelque chose nulle. 1359 01:11:08,924 --> 01:11:11,590 PROFESSEUR: Oui, ce serait une exemple de cas où cela se produirait. 1360 01:11:11,590 --> 01:11:14,467 Mais ce qui est l'image plus grande de ce qui se passe ici? 1361 01:11:14,467 --> 01:11:17,050 Public: Est-ce que vous essayez accéder à la mémoire que vous n'êtes pas 1362 01:11:17,050 --> 01:11:18,175 censés avoir accès? 1363 01:11:18,175 --> 01:11:19,200 PROFESSEUR: Exactement. 1364 01:11:19,200 --> 01:11:24,800 Alors, pensez à un défaut de seg, un hors limites, zone d'accès restreint en mémoire 1365 01:11:24,800 --> 01:11:27,780 que vous ne devriez pas être touchante. 1366 01:11:27,780 --> 01:11:31,670 >> Donc à peu près quand vous essayez à index-- comme par exemple, 1367 01:11:31,670 --> 01:11:34,110 vous avez déclaré une matrice de zéro à neuf. 1368 01:11:34,110 --> 01:11:37,360 Mais vous essayez de toucher que 10 valeur, vous ne disposez pas accès à cela. 1369 01:11:37,360 --> 01:11:38,694 Parce que vous avez pas déclaré. 1370 01:11:38,694 --> 01:11:40,943 Et si votre ordinateur va à regarder que comme, 1371 01:11:40,943 --> 01:11:43,440 uh oh, vous essayez d'aller en dehors des limites d'un index. 1372 01:11:43,440 --> 01:11:45,270 Je vais vous donner une erreur de segmentation. 1373 01:11:45,270 --> 01:11:46,590 >> Pensez que le segment, à droite? 1374 01:11:46,590 --> 01:11:49,665 Un segment supplémentaire, la faute est lorsque vous essayez de violer quelque chose 1375 01:11:49,665 --> 01:11:50,790 et vous ne devriez pas être là. 1376 01:11:50,790 --> 01:11:53,660 Segmentation fault est à tout moment vous essayez de toucher les choses 1377 01:11:53,660 --> 01:11:54,970 que vous ne devriez pas être touchante. 1378 01:11:54,970 --> 01:11:56,815 >> Donc exemples communs sont un indice. 1379 01:11:56,815 --> 01:11:58,940 Bien sûr, si vous essayez toucher qui était nulle, 1380 01:11:58,940 --> 01:12:00,220 ce serait aussi travailler ainsi. 1381 01:12:00,220 --> 01:12:02,300 Si votre pointeur essayait de toucher des choses qui ne devraient pas toucher, 1382 01:12:02,300 --> 01:12:03,730 qui pourrait aussi fonctionner aussi bien. 1383 01:12:03,730 --> 01:12:07,120 Le plus souvent vous aurez voir dans un tableau. 1384 01:12:07,120 --> 01:12:07,740 Tout le monde la bonne? 1385 01:12:07,740 --> 01:12:10,374 >> Auditoire: Alors, si vous voulez pour accéder à la 10e point de 1386 01:12:10,374 --> 01:12:12,290 et il ya seulement une limite de neuf ou quelque chose. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSEUR: Oui, exactement. 1388 01:12:13,160 --> 01:12:13,660 Pas mal. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Frais. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Cher Andi. 1393 01:12:19,920 --> 01:12:23,440 Donc nous avons ces merveilleux choses appelées sortes. 1394 01:12:23,440 --> 01:12:25,472 Si Merge sort-- comme nous scie dans l'exemple lorsque 1395 01:12:25,472 --> 01:12:27,180 David a fait l'ensemble chose en class-- pourquoi, 1396 01:12:27,180 --> 01:12:29,760 si elle est tellement plus rapide que l'un des autres sortes, 1397 01:12:29,760 --> 01:12:33,310 pourquoi avons-nous pris la peine même le savoir l'un des autres sortes? 1398 01:12:33,310 --> 01:12:35,100 >> Quelle est cette question vraiment vous demander? 1399 01:12:35,100 --> 01:12:36,659 Quel est le trois word-- 1400 01:12:36,659 --> 01:12:37,950 Public: Quel est le compromis? 1401 01:12:37,950 --> 01:12:38,530 PROFESSEUR: Exactement. 1402 01:12:38,530 --> 01:12:39,946 Voilà ce que la question est posée. 1403 01:12:39,946 --> 01:12:43,682 Quel est le compromis entre Fusionner sorte versets d'autres sortes? 1404 01:12:43,682 --> 01:12:45,850 >> AUDIENCE: Prend la mémoire, non? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSEUR: Avez-vous expliquer que un peu plus? 1406 01:12:47,720 --> 01:12:49,490 D'abord nous allons expliquer magasin de fusion. 1407 01:12:49,490 --> 01:12:50,970 Comment ne Fusionner sorte travailler? 1408 01:12:50,970 --> 01:12:55,220 >> Auditoire: Alors, cela fonctionne par divisant le tout dans la moitié 1409 01:12:55,220 --> 01:13:00,660 puis mettre ensemble et réaffecter dans l'ordre, 1410 01:13:00,660 --> 01:13:02,862 comme à chaque fois que vous fusionnez les ensembles. 1411 01:13:02,862 --> 01:13:03,820 PROFESSEUR: Pretty much. 1412 01:13:03,820 --> 01:13:06,861 Donc, je peux tirer de cette, mais il serait me prendre cinq minutes pour puiser. 1413 01:13:06,861 --> 01:13:10,220 Regardez en arrière sur les rails en section où nous avons couvert le tri par fusion. 1414 01:13:10,220 --> 01:13:10,790 Exactement. 1415 01:13:10,790 --> 01:13:13,406 >> Ainsi, la manière Merge œuvres de tri est-il divise les choses en deux, 1416 01:13:13,406 --> 01:13:15,780 puis il ressemble juste à la des premières valeurs de chacun d'eux 1417 01:13:15,780 --> 01:13:17,000 et que seulement trie. 1418 01:13:17,000 --> 01:13:20,364 Crée en permanence de nouveaux tableaux et met les choses de plus en plus dans l'ordre. 1419 01:13:20,364 --> 01:13:23,030 Et donc tout ce est vraiment, vraiment rapide car it's-- vous le savez, 1420 01:13:23,030 --> 01:13:25,380 une recherche binaire est n log n. 1421 01:13:25,380 --> 01:13:27,880 Vous créez un si grand nombre différents tableaux que vous êtes 1422 01:13:27,880 --> 01:13:29,700 en utilisant une grande quantité de mémoire. 1423 01:13:29,700 --> 01:13:33,080 Et si bien qu'il est plus rapide, le compromis ici est que vous utilisez plus de mémoire. 1424 01:13:33,080 --> 01:13:38,490 >> Et donc, soupçon, trie et recherches ont couvert beaucoup plus cette année 1425 01:13:38,490 --> 01:13:41,610 qu'ils ne l'ont été au cours des années précédentes. 1426 01:13:41,610 --> 01:13:45,100 Les gars, vous devriez voir que reflétés en conséquence sur le quiz. 1427 01:13:45,100 --> 01:13:49,160 Je voudrais certainement passer du temps aller sur ce que toutes les différentes sortes 1428 01:13:49,160 --> 01:13:52,320 sont, comment la recherche binaire, comment linéaire travaux de recherche. 1429 01:13:52,320 --> 01:13:54,750 Comment peut-être pseudocode coder ceux dehors. 1430 01:13:54,750 --> 01:13:55,950 Quels sont les temps de fonctionnement? 1431 01:13:55,950 --> 01:13:59,210 Quelque chose comme temps de fonctionnement est très facile à copier vers le bas sur une feuille de note, 1432 01:13:59,210 --> 01:13:59,710 droit? 1433 01:13:59,710 --> 01:14:01,420 >> Il est vraiment difficile quand vous êtes au milieu du test 1434 01:14:01,420 --> 01:14:02,390 et vous devez comprendre cela. 1435 01:14:02,390 --> 01:14:03,160 Copiez le bas. 1436 01:14:03,160 --> 01:14:05,550 Je vous garantis que vous êtes allez avoir besoin de le savoir. 1437 01:14:05,550 --> 01:14:06,860 Quels sont les compromis? 1438 01:14:06,860 --> 01:14:10,064 Le pire des cas, meilleurs scénarios de cas pour chacun d'eux, très apprendre à se connaître. 1439 01:14:10,064 --> 01:14:10,564 Ouais? 1440 01:14:10,564 --> 01:14:12,730 >> AUDIENCE: Devons-nous savoir comment coder Merge sorte? 1441 01:14:12,730 --> 01:14:15,470 Comme, devons-nous rappeler le récursive? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSEUR: Je doute fortement, juste parce qu'il est comme assez compliqué. 1443 01:14:18,950 --> 01:14:22,282 Mais il ne peut pas être impossible si nous vous demander d'utiliser pseudo-it out. 1444 01:14:22,282 --> 01:14:22,781 Ouais. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Yep, OK, un de plus. 1447 01:14:29,170 --> 01:14:31,387 Ce peut-être venu dans vous dernière pièce en un peu. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Ouais? 1450 01:14:43,090 --> 01:14:44,930 Tout le monde a entendu? 1451 01:14:44,930 --> 01:14:48,360 >> OK, donc assez bien d'abord tout, ce type de programme 1452 01:14:48,360 --> 01:14:51,000 serait vous donner une sortie comme ça? 1453 01:14:51,000 --> 01:14:54,350 Souvenons nous vous avons demandé de se renseigner sur ce nouveau type d'outil de débogage? 1454 01:14:54,350 --> 01:14:57,340 Quel était le nom de celui-ci? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, droit 1456 01:14:59,460 --> 01:15:02,600 >> Il était un programme où vous pourriez appeler cela pourrait 1457 01:15:02,600 --> 01:15:05,940 garder une trace de toute la mémoire que vous êtes l'aide dans votre programme et qui se passait. 1458 01:15:05,940 --> 01:15:11,090 Donc, si vous avez quelque chose, comme, définitivement perdu, 40 octets dans un seul bloc. 1459 01:15:11,090 --> 01:15:14,870 Probablement vous n'êtes pas ne pas oublier de le libérer. 1460 01:15:14,870 --> 01:15:18,710 Parce que si vous utilisez octets de mémoire, cela signifie que vous avez accédé à cette mémoire, 1461 01:15:18,710 --> 01:15:20,240 mais vous ne l'avez pas été en mesure de libérer. 1462 01:15:20,240 --> 01:15:21,948 Donc, vous voulez faire vous que vous êtes aussi 1463 01:15:21,948 --> 01:15:31,420 utilisant free-- qui est un function-- de libérer tous 1464 01:15:31,420 --> 01:15:34,930 de la mémoire réaffectés par malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Frais. 1466 01:15:35,500 --> 01:15:37,140 Donc cette diapositive, je vais devoir en place. 1467 01:15:37,140 --> 01:15:41,050 Il est partout dans un grand nombre de conférences, dans un lot de lames de section. 1468 01:15:41,050 --> 01:15:44,254 Vous voulez vraiment vous assurer vous savez tout cela. 1469 01:15:44,254 --> 01:15:47,170 Soit dans votre feuille de note ou si vous vouloir mémoriser, libre à vous. 1470 01:15:47,170 --> 01:15:48,836 Voilà vraiment, vraiment, vraiment important. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Aussi une très bonne question que nous pouvons demander. 1473 01:15:56,890 --> 01:16:00,320 Pourquoi le regard de sélection est à Sélection sort-- tous les runtimes 1474 01:16:00,320 --> 01:16:02,060 sont n au carré. 1475 01:16:02,060 --> 01:16:06,714 Indépendamment de la façon dont la liste vient à vous aussi, alors pourquoi est-sélection sort-- 1476 01:16:06,714 --> 01:16:08,630 Je vais vous donner les gars 30 deuxième penser à ce sujet. 1477 01:16:08,630 --> 01:16:10,700 Parce qu'il est une sorte de confusion. 1478 01:16:10,700 --> 01:16:12,710 Il implique une certaine pensée conceptuelle. 1479 01:16:12,710 --> 01:16:16,470 Pourquoi les durées de fonctionnement serait le même en à la fois les meilleurs et les pires scénarios? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Ouais? 1482 01:16:30,000 --> 01:16:38,084 >> AUDIENCE: Parce que chaque sorte de sélection position ou de l'espace dans ce petit tableau 1483 01:16:38,084 --> 01:16:40,350 chose ou que ce soit. 1484 01:16:40,350 --> 01:16:44,430 Ainsi, même dans le meilleur des cas, même si elle est parfaitement réglé, 1485 01:16:44,430 --> 01:16:47,380 il serait encore à être comme, OK, un. 1486 01:16:47,380 --> 01:16:49,000 Dans mon premier endroit où je ai une. 1487 01:16:49,000 --> 01:16:50,250 Et passer par chacun d'eux. 1488 01:16:50,250 --> 01:16:51,249 OK, on ​​est la plus petite. 1489 01:16:51,249 --> 01:16:53,053 Et puis il va à nouveau et est comme, OK, deux 1490 01:16:53,053 --> 01:16:54,594 est la plus petite de toutes les choses. 1491 01:16:54,594 --> 01:16:56,804 Mais il doit encore vérifier tous et chacun. 1492 01:16:56,804 --> 01:16:57,470 PROFESSEUR: Ouais. 1493 01:16:57,470 --> 01:17:00,490 Ainsi, par exemple, disons simplement nous avons une liste, déjà triés, 1494 01:17:00,490 --> 01:17:03,390 un tableau un à cinq. 1495 01:17:03,390 --> 01:17:07,100 La façon dont sortes de sélection est que il traverse, il vérifie les deux. 1496 01:17:07,100 --> 01:17:08,234 Ensuite, il vérifie les deux. 1497 01:17:08,234 --> 01:17:09,650 Et puis il vérifie, et il vérifie. 1498 01:17:09,650 --> 01:17:13,285 Il ne cesse de vérifier chacun d'eux, indépendamment de si oui ou non 1499 01:17:13,285 --> 01:17:14,160 il est effectivement triée. 1500 01:17:14,160 --> 01:17:16,450 Parce que ce tout simplement la façon dont le genre fonctionne. 1501 01:17:16,450 --> 01:17:19,530 >> Et si cette question est un peu comme une question conceptuelle nous demandons. 1502 01:17:19,530 --> 01:17:21,430 Où abord, vous savoir quelle sorte de sélection 1503 01:17:21,430 --> 01:17:23,304 est, à droite, pour être en mesure pour répondre à la question. 1504 01:17:23,304 --> 01:17:26,200 Vous devez être en mesure de comprendre conceptuellement ce qui se passe. 1505 01:17:26,200 --> 01:17:30,760 Et puis vous pouvez l'appliquer et de penser, OK disons simplement imaginer pire scénario. 1506 01:17:30,760 --> 01:17:32,230 Ils sont tous dans l'ordre décroissant. 1507 01:17:32,230 --> 01:17:33,290 Comment cela affecterait-il? 1508 01:17:33,290 --> 01:17:34,650 >> Que faire si ça ordre croissant? 1509 01:17:34,650 --> 01:17:35,640 Si elle est déjà triée? 1510 01:17:35,640 --> 01:17:37,240 Comment cela affecterait les runtimes? 1511 01:17:37,240 --> 01:17:40,270 Et puis Sélection sorte, vous remarquerez qu'il n'a pas réellement d'importance. 1512 01:17:40,270 --> 01:17:43,500 Parce que vous vérifiez tous les valeurs indépendamment de ce qui se passe. 1513 01:17:43,500 --> 01:17:45,810 >> Et ainsi de bonnes choses à retenir. 1514 01:17:45,810 --> 01:17:50,290 Pourquoi certaines sortes diffèrent des autres et la meilleure façon et les pires scénarios 1515 01:17:50,290 --> 01:17:52,740 aurait une incidence sur chacun d'eux. 1516 01:17:52,740 --> 01:17:56,700 >> Je vais vraiment frappé dans sortes parce que ce sera sur le quiz. 1517 01:17:56,700 --> 01:17:57,199 Ouais. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 D'ACCORD. 1520 01:18:01,320 --> 01:18:05,590 Il ya six minutes. 1521 01:18:05,590 --> 01:18:09,880 Je peux prendre trois minutes de questions. 1522 01:18:09,880 --> 01:18:12,290 Je peux aussi traîner pour comme 20 minutes après l'article 1523 01:18:12,290 --> 01:18:13,850 si vous voulez poser des questions ainsi. 1524 01:18:13,850 --> 01:18:16,330 Quelqu'un at-il vraiment brève questions ou problèmes conceptuels 1525 01:18:16,330 --> 01:18:17,360 ils sont pas claires sur ce moment? 1526 01:18:17,360 --> 01:18:17,832 Ouais? 1527 01:18:17,832 --> 01:18:19,720 >> AUDIENCE: Pouvez-vous parler un peu peu sur les opérateurs de bits? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSEUR: Ouais. 1529 01:18:20,280 --> 01:18:22,446 Donc, les opérateurs sont binaires quelque chose que vous avez probablement 1530 01:18:22,446 --> 01:18:24,170 pourriez vouloir mettre sur votre feuille. 1531 01:18:24,170 --> 01:18:27,540 Donc quickly-- Je ne veux pas aller trop en profondeur 1532 01:18:27,540 --> 01:18:31,164 parce Harvard, dans leur examen session, couvert assez bien. 1533 01:18:31,164 --> 01:18:33,080 L'opérateur au niveau du bit, il est cinq d'entre eux, non? 1534 01:18:33,080 --> 01:18:41,370 >> Il ya ce qui est x ou de la fonction, il ya esperluette, qui est la et. 1535 01:18:41,370 --> 01:18:44,050 Pipe, qui est le ou. 1536 01:18:44,050 --> 01:18:46,790 Et puis vous avez les deux différents types de déplacements. 1537 01:18:46,790 --> 01:18:50,610 >> Si je vous donne deux valeurs, le cas Je vous donne, comme, l'un et l'autre. 1538 01:18:50,610 --> 01:18:52,390 Qu'est-ce que cela à évaluer? 1539 01:18:52,390 --> 01:18:55,490 Si je vous donne vrai et vrai, vrai? 1540 01:18:55,490 --> 01:18:56,930 Qu'en est-il vrai ou faux? 1541 01:18:56,930 --> 01:18:57,830 Toujours vrai, non? 1542 01:18:57,830 --> 01:18:59,762 Parce qu'il ya un ou. 1543 01:18:59,762 --> 01:19:01,220 Nous allons très probablement vous donner des chiffres. 1544 01:19:01,220 --> 01:19:03,780 Alors rappelez-vous, un égale vrai, zéro est égal à faux. 1545 01:19:03,780 --> 01:19:07,407 Et nous pourrions vous donner ces choses et vous demander de nous dire ce qui se passe. 1546 01:19:07,407 --> 01:19:10,240 Harvard couvre au sein de la première 10 minutes de leur session d'étude 1547 01:19:10,240 --> 01:19:11,230 vraiment, vraiment bien. 1548 01:19:11,230 --> 01:19:14,260 Donc, vous voulez les gars à faire que vous regardez en arrière sur ce point. 1549 01:19:14,260 --> 01:19:16,387 >> Public: Est-pisa5 va être sur le quiz? 1550 01:19:16,387 --> 01:19:16,970 PROFESSEUR: Non 1551 01:19:16,970 --> 01:19:18,240 Ne même pas regarder pisa5 dès maintenant. 1552 01:19:18,240 --> 01:19:18,810 C'est dur. 1553 01:19:18,810 --> 01:19:22,830 Il suffit de ne même pas la peine regardant pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Cependant, comme quelques conseils et des suggestions, je 1555 01:19:25,665 --> 01:19:28,320 vous suggère de commencer pisa5 dès que le test est terminé. 1556 01:19:28,320 --> 01:19:30,319 Ce sera le plus dur semaine, mais vous les gars 1557 01:19:30,319 --> 01:19:34,590 seront transmises sur les collines de rouler vert et chiots, 1558 01:19:34,590 --> 01:19:36,115 et il est très bien. 1559 01:19:36,115 --> 01:19:39,810 >> Cette classe devient significative plus facile après le cinquième jeu de processeurs. 1560 01:19:39,810 --> 01:19:41,560 Heures d'ouverture: PUBLIC sont dimanche, lundi? 1561 01:19:41,560 --> 01:19:44,260 PROFESSEUR: Ouais, donc les heures de bureau le dimanche à lundi pour le pset. 1562 01:19:44,260 --> 01:19:47,009 Les heures d'ouverture de ce soir essentiellement sera juste examen pour le quiz. 1563 01:19:47,009 --> 01:19:50,350 Si quelqu'un veut venir et poser Tas une question, nous serons là. 1564 01:19:50,350 --> 01:19:53,220 >> Je prendrai peut-être une question de plus si quelqu'un a une question? 1565 01:19:53,220 --> 01:19:53,809 Ouais? 1566 01:19:53,809 --> 01:19:55,850 PUBLIC: Quand vous êtes noeuds définissant, [inaudible] 1567 01:19:55,850 --> 01:20:00,700 si vous dites étoiles de noeud et puis la prochaine, fait automatiquement l'ordinateur 1568 01:20:00,700 --> 01:20:03,610 comprenez que vous êtes se référant à un autre pointeur? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSEUR: Non 1570 01:20:04,580 --> 01:20:06,710 >> AUDIENCE: Vous devez de rétablir le lien [inaudible]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSEUR: Donc, fondamentalement, la struct d'un noeud est, souvenez-vous, 1572 01:20:09,270 --> 01:20:12,620 il est comme vous créez le noeud et alors vous avez un pointeur appelé prochaine. 1573 01:20:12,620 --> 01:20:14,630 Tout ce que vous faites est d'avoir la structure il. 1574 01:20:14,630 --> 01:20:16,387 Vous devez assigner ce pointeur quelque part. 1575 01:20:16,387 --> 01:20:18,470 Ainsi, les ordinateurs ne pas sait ce qu'il fait encore. 1576 01:20:18,470 --> 01:20:20,250 Vous devez effectivement attribuer quand vous créez votre liste chaînée. 1577 01:20:20,250 --> 01:20:22,170 Et voilà ce principalement pset 5 sera sur. 1578 01:20:22,170 --> 01:20:24,106 Donc pas de soucis au sujet tout cela en ce moment. 1579 01:20:24,106 --> 01:20:26,380 >> AUDIENCE: Donc, nous ne devons pas trop se concentrer sur la liste de liens, juste 1580 01:20:26,380 --> 01:20:27,440 la conception générale? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSEUR: Juste assez bien piles, files d'attente, listes de liens, arbres, tables de hachage. 1582 01:20:30,980 --> 01:20:33,639 Juste être capable de savoir ce qu'ils sont. 1583 01:20:33,639 --> 01:20:35,680 On ne va pas demander vous aimez quelque chose de spécifique 1584 01:20:35,680 --> 01:20:39,300 parce que nous avons vraiment fait un pas pset que le couvre tout cela encore. 1585 01:20:39,300 --> 01:20:45,540 >> Donc, dans les deux dernières minutes avant Je vous libérer de tuer ce quiz. 1586 01:20:45,540 --> 01:20:49,370 Joli beaucoup, comme, pensez à comment loin vous les gars êtes venus dans cette classe. 1587 01:20:49,370 --> 01:20:52,820 >> Je me souviens quand deux semaines de cette classe, certains d'entre vous 1588 01:20:52,820 --> 01:20:55,720 passer trois heures d'eau par écrit. 1589 01:20:55,720 --> 01:20:57,970 Combien de temps vous faudrait-il les gars à écrire l'eau maintenant? 1590 01:20:57,970 --> 01:20:59,670 30 secondes, peut-être? 1591 01:20:59,670 --> 01:21:01,810 Pensez à combien vous les gars ont appris. 1592 01:21:01,810 --> 01:21:04,320 CS est un sujet vraiment, vraiment dur. 1593 01:21:04,320 --> 01:21:06,190 Il ne fait aucun doute de cela. 1594 01:21:06,190 --> 01:21:09,160 Il est difficile, voilà pourquoi on ne l'étudie. 1595 01:21:09,160 --> 01:21:10,730 Il est juste difficile. 1596 01:21:10,730 --> 01:21:11,650 Et il est tout à fait bien. 1597 01:21:11,650 --> 01:21:14,150 >> Et je suis vraiment fier que tout le monde a rendu à ce point. 1598 01:21:14,150 --> 01:21:16,380 Psets ne sont pas faciles. 1599 01:21:16,380 --> 01:21:17,790 Ils prennent beaucoup de temps. 1600 01:21:17,790 --> 01:21:22,580 Vous les gars, je ne vous demandera jamais d'écrire le jeu de 15 ou Vigenère sur le pset. 1601 01:21:22,580 --> 01:21:24,160 Pas besoin de paniquer juste à ce sujet. 1602 01:21:24,160 --> 01:21:28,080 Tout ce que nous testons ici est d'évaluer votre connaissance conceptuelle, ainsi 1603 01:21:28,080 --> 01:21:31,524 comme certains de vos compétences de base de codage. 1604 01:21:31,524 --> 01:21:33,440 Le test est conçu pour être vraiment difficile. 1605 01:21:33,440 --> 01:21:36,180 Comme, il est conçu pour que vous ne recevez pas 100. 1606 01:21:36,180 --> 01:21:39,880 Il est également conçu pour que vous probablement ne pas être en mesure de terminer en 75 minutes. 1607 01:21:39,880 --> 01:21:41,995 Et cela est tout à fait bien. 1608 01:21:41,995 --> 01:21:42,870 Je suis un étudiant moi-même. 1609 01:21:42,870 --> 01:21:45,960 Je sais, je déteste quand je marche sur un quiz être comme, merde. 1610 01:21:45,960 --> 01:21:47,044 Cela a été vraiment difficile. 1611 01:21:47,044 --> 01:21:49,460 Probablement ce qui va se happen-- et est tout à fait bien, 1612 01:21:49,460 --> 01:21:50,751 Je vous le dis les gars en ce moment. 1613 01:21:50,751 --> 01:21:53,190 Les moyens sur ces choses ne sont pas élevés du tout. 1614 01:21:53,190 --> 01:21:55,360 >> Et pour ceux d'entre vous qui ont été d'obtenir, comme, 1615 01:21:55,360 --> 01:21:57,870 trois par trois sur vos ensembles de problèmes, cela ne signifie pas que vous êtes 1616 01:21:57,870 --> 01:21:59,536 allez obtenir un 60 pour cent dans cette classe. 1617 01:21:59,536 --> 01:22:01,440 Si vous obtenez 60% sur la quizz, qui ne fonctionne pas 1618 01:22:01,440 --> 01:22:03,330 dire que vous allez obtenir un D dans cette classe. 1619 01:22:03,330 --> 01:22:05,740 Nous voyons, en particulier, pour ma ceux d'entre vous dans ma section, 1620 01:22:05,740 --> 01:22:07,406 Je vois comment dur vous les gars travaillent tous. 1621 01:22:07,406 --> 01:22:09,190 Et je garde une trace de cela. 1622 01:22:09,190 --> 01:22:11,420 >> Les gars, vous serez très bien. 1623 01:22:11,420 --> 01:22:14,580 Il n'y a pas de mémoire institutionnelle le bonheur à la fin du semestre. 1624 01:22:14,580 --> 01:22:16,840 Parce que tous les enfants de Harvard disent leurs amis, oh, vous serez amende. 1625 01:22:16,840 --> 01:22:18,381 Personne ne vous dit les gars ici. 1626 01:22:18,381 --> 01:22:20,950 Donc, je dois vous dire que les gars ici. 1627 01:22:20,950 --> 01:22:22,280 >> Les gars, vous serez très bien. 1628 01:22:22,280 --> 01:22:24,080 Je suis tellement fier de vous tous les gars. 1629 01:22:24,080 --> 01:22:25,680 Le test sera difficile. 1630 01:22:25,680 --> 01:22:28,140 Étudier pour elle, et ensuite juste le jeter. 1631 01:22:28,140 --> 01:22:31,280 Préparez-vous à apprendre de nouvelles choses. 1632 01:22:31,280 --> 01:22:33,990 Et manger des bonbons. 1633 01:22:33,990 --> 01:22:35,940 Nous avons avoir beaucoup de bonbons. 1634 01:22:35,940 --> 01:22:37,760 >> Obtenez un sommeil de bonne nuit. 1635 01:22:37,760 --> 01:22:40,420 Ne pas dormir, parce ce serait vraiment mauvais. 1636 01:22:40,420 --> 01:22:41,490 CS est un beaucoup de logique. 1637 01:22:41,490 --> 01:22:44,960 Si vous ne dormez pas, vous ne pouvez pas fonctionner, et votre cerveau ne peut pas fonctionner. 1638 01:22:44,960 --> 01:22:48,780 Et je serai ici pour les prochaines 20 minutes si quelqu'un veut traîner. 1639 01:22:48,780 --> 01:22:51,150 Les gars, vous allez le tuer. 1640 01:22:51,150 --> 01:22:53,000 Bon chance. 1641 01:22:53,000 --> 01:22:55,663