1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Très bien. 3 00:00:13,870 --> 00:00:16,770 Bienvenue à la première section. 4 00:00:16,770 --> 00:00:17,480 Je suis Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Je suis Joseph. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Donc, nous allons plonger en plein dedans 7 00:00:21,540 --> 00:00:23,420 La première chose à parler est l'Appliance. 8 00:00:23,420 --> 00:00:27,150 Donc, j'espère plupart d'entre vous ont téléchargé déjà. 9 00:00:27,150 --> 00:00:37,180 Mais vous pouvez voir les instructions à cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh mon dieu, je suis maintenant conscient de soi. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Je l'entends encore. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, on dirait il est désorienté. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Ainsi, certaines personnes ont eu des problèmes avec elle, il ne faut pas attendre 15 00:00:52,460 --> 00:00:54,940 la dernière minute du problème réglé essayer de résoudre l'appareil et 16 00:00:54,940 --> 00:00:56,320 trouver que ça ne marche pas. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: Et si quelque chose ne fonctionne pas et vous avez besoin d'aide, vous pouvez aller à 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion où nous avoir un forum où vous 19 00:01:03,390 --> 00:01:04,110 pouvez poser vos questions. 20 00:01:04,110 --> 00:01:06,655 Et nous aurons à les éventuellement. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Très bien. 22 00:01:07,490 --> 00:01:12,180 Donc, c'est ce que l'appareil ressemble. 23 00:01:12,180 --> 00:01:15,480 Encore une fois, c'est juste un tout distinct système d'exploitation exécutant au sein de 24 00:01:15,480 --> 00:01:19,440 quel que soit le système d'exploitation que vous sont en cours d'exécution sur votre ordinateur portable. 25 00:01:19,440 --> 00:01:24,450 Et les principales choses que vous être à l'aide sont gedit. 26 00:01:24,450 --> 00:01:28,050 Donc, j'espère que cela a déjà devenir un site familier. 27 00:01:28,050 --> 00:01:29,470 Le terminal. 28 00:01:29,470 --> 00:01:31,890 >> Et vous pouvez également exécuter Chrome intérieur de l'appareil. 29 00:01:31,890 --> 00:01:33,860 Il ya eu un couple de personnes qui ont signalé Internet 30 00:01:33,860 --> 00:01:35,390 fonctionne pas dans l'appareil. 31 00:01:35,390 --> 00:01:38,090 Et certains d'entre eux ont simplement supposé qu'il n'est pas censé être 32 00:01:38,090 --> 00:01:39,190 Internet dans l'appareil. 33 00:01:39,190 --> 00:01:40,750 Mais oui, il est censé être Internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Je vais le dire en ce moment, mais il n'a pas vraiment dire quoi que ce soit. 36 00:01:46,410 --> 00:01:50,680 Si l'Internet ne fonctionne pas, c'est ce que vous avez tendance à avoir besoin 37 00:01:50,680 --> 00:01:52,180 à exécuter pour le fixer. 38 00:01:52,180 --> 00:01:55,602 Si vous rencontrez des problèmes d'Internet, ne sont pas rappelez-vous, il suffit de le mettre sur 39 00:01:55,602 --> 00:01:57,560 Discutez, et nous dirons, géré cela. 40 00:01:57,560 --> 00:02:00,420 Mais l'Internet devrait fonctionner. 41 00:02:00,420 --> 00:02:06,650 >> Donc, la seule autre chose - oui, rien le reste est vraiment pertinent. 42 00:02:06,650 --> 00:02:08,979 Mais je voulais juste souligner que - 43 00:02:08,979 --> 00:02:13,290 voir dans ce coin en bas à droite. 44 00:02:13,290 --> 00:02:16,530 Donc, chacun de vos appareils électroménagers devrait disposer d'une adresse IP. 45 00:02:16,530 --> 00:02:22,350 Et plus tard dans le semestre, cette adresse IP adresse deviendra plus pertinent quand 46 00:02:22,350 --> 00:02:27,230 vous travaillez sur le web p-ensemble, parce vous serez en mesure d'accéder à la 47 00:02:27,230 --> 00:02:32,310 site sur lequel vous travaillez à partir de votre Chrome local en utilisant cette adresse IP. 48 00:02:32,310 --> 00:02:35,400 >> Mais ce que je tiens à utiliser l'adresse IP pour - et vous n'avez pas à faire cela, je 49 00:02:35,400 --> 00:02:37,460 je veux juste de le souligner - 50 00:02:37,460 --> 00:02:39,540 est ici. 51 00:02:39,540 --> 00:02:42,910 Donc, c'est une fenêtre de terminal sur mon Mac, ce n'est pas dans l' 52 00:02:42,910 --> 00:02:44,580 Appareil à tous. 53 00:02:44,580 --> 00:02:47,190 Et vous pouvez voir ce que cette commande fait. 54 00:02:47,190 --> 00:02:51,855 Mais je vais SSH directement à mon appareil. 55 00:02:51,855 --> 00:02:53,410 Je ne sais pas ce que l'IP est. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Donc, une fois que je suis fait avec cela, vous connecter 59 00:02:59,950 --> 00:03:05,450 Maintenant, au fond, elle est identique à une fenêtre de terminal dans mon appareil. 60 00:03:05,450 --> 00:03:10,280 Donc je suis assez jamais travaillé à partir de l'appareil lui-même. 61 00:03:10,280 --> 00:03:12,550 Je viens de l'avoir toujours en cours d'exécution dans le fond minimisé 62 00:03:12,550 --> 00:03:15,890 et SSHed dedans. 63 00:03:15,890 --> 00:03:24,270 >> Le problème avec cela est que vous n'allez pas pour être en mesure d'utiliser gedit facilement 64 00:03:24,270 --> 00:03:25,600 directement à partir de ce produit. 65 00:03:25,600 --> 00:03:31,500 Mais si vous voulez être un vraiment cool hacker, alors vous devriez vous habituer à un 66 00:03:31,500 --> 00:03:34,220 ligne de commande éditeur de texte de toute façon. 67 00:03:34,220 --> 00:03:39,620 Donc, Vim et Emacs et Nano, tous ces existe différentes alternatives. 68 00:03:39,620 --> 00:03:41,560 Nano a tendance à être le plus facile. 69 00:03:41,560 --> 00:03:45,006 Et je pense qu'il n'a pas la coloration syntaxique. 70 00:03:45,006 --> 00:03:47,620 Oh, non, ce n'est totalement. 71 00:03:47,620 --> 00:03:49,870 Ainsi, vous pouvez utiliser Nano, parce que l'on est assez facile. 72 00:03:49,870 --> 00:03:52,000 >> Vous voyez toutes ces commandes en bas. 73 00:03:52,000 --> 00:03:54,750 Ce petit symbole de carotte. 74 00:03:54,750 --> 00:03:57,620 Si vous n'avez pas vu avant, vous aurez probablement voir beaucoup maintenant. 75 00:03:57,620 --> 00:04:02,350 Cela signifie généralement la carotte de contrôle, comme le bas à gauche de votre clavier 76 00:04:02,350 --> 00:04:04,130 caractère de contrôle. 77 00:04:04,130 --> 00:04:07,260 Donc, ici, il me dit ici - 78 00:04:07,260 --> 00:04:08,710 oh, ce n'est pas coupée si je agrandir 79 00:04:08,710 --> 00:04:11,040 Donc contrôle, X est de savoir comment Je vais sortir. 80 00:04:11,040 --> 00:04:14,710 Et il me dit que je peux frapper Y pour Oui, pour l'économie, N pour Non 81 00:04:14,710 --> 00:04:17,190 C'est donc Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim et Emacs ont tendance à être un peu plus compliqué et écrasante. 83 00:04:22,860 --> 00:04:28,840 Mais vous pouvez vous habituer à elle, et alors vous allez adorer. 84 00:04:28,840 --> 00:04:30,590 Alors voilà. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Pas besoin de le faire. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Ouais. 87 00:04:31,840 --> 00:04:37,510 Vous êtes libre d'utiliser gedit pour la reste du semestre. 88 00:04:37,510 --> 00:04:40,630 Ainsi toutes les questions liées appareil-? 89 00:04:40,630 --> 00:04:42,820 Ou avez-vous des idées sur quoi d'autre doit être parlé à propos de 90 00:04:42,820 --> 00:04:43,610 l'appareil? 91 00:04:43,610 --> 00:04:43,996 Oui. 92 00:04:43,996 --> 00:04:47,720 >> INTERLOCUTEUR 1: Lorsque vous SSHed dans votre chose, était le Crimson de mot de passe? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Ouais. 94 00:04:48,390 --> 00:04:50,170 Le mot de passe pour à peu près tout dans l'appareil va 95 00:04:50,170 --> 00:04:52,473 être Crimson. 96 00:04:52,473 --> 00:04:56,517 >> ENCEINTE 2: Installation comme un vrai IDE sur l'appareil, ça va marcher? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: J'imagine Eclipse a un La version de Fedora, dans ce cas, oui, 99 00:05:07,290 --> 00:05:08,420 vous pouvez le faire. 100 00:05:08,420 --> 00:05:10,875 Ce n'est probablement pas vraiment la peine. 101 00:05:10,875 --> 00:05:11,742 >> ENCEINTE 2: OK. 102 00:05:11,742 --> 00:05:15,924 Donc, il est probablement plus facile si je voulais utiliser Eclipse, il suffit d'utiliser le natif et 103 00:05:15,924 --> 00:05:17,646 puis télécharger à - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, qui est aussi probablement plus facile. 105 00:05:21,090 --> 00:05:24,046 Mais vous pouvez le faire fonctionner intérieur de l'appareil. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: Et pour la caméra, la question était, pouvez vous installez un autre 107 00:05:27,740 --> 00:05:29,490 IDE à l'intérieur de l'appareil? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse étant une exemple d'un IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 D'autres questions d'appareils? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Très bien. 113 00:05:38,680 --> 00:05:44,920 >> Donc, nous allons maintenant passer à la ligne de commande choses associées à l'interface, si CLI. 114 00:05:44,920 --> 00:05:47,990 Et encore, je vais juste travailler dans ici, car elle est identique à 115 00:05:47,990 --> 00:05:52,780 travailler dans une fenêtre de terminal intérieur de l'appareil. 116 00:05:52,780 --> 00:05:54,160 Comment cette police de regard? 117 00:05:54,160 --> 00:05:55,970 Est-ce assez grand? 118 00:05:55,970 --> 00:05:57,000 Très bien. 119 00:05:57,000 --> 00:06:02,480 >> Donc, il ya beaucoup de commandes vous devriez obtenir assez utilisé pour 120 00:06:02,480 --> 00:06:04,490 tout au long du semestre. 121 00:06:04,490 --> 00:06:09,480 Le gros deux pour la navigation sont ls, liste les fichiers de ce répertoire, et 122 00:06:09,480 --> 00:06:11,380 cd, donc changer de répertoire. 123 00:06:11,380 --> 00:06:18,390 Donc, je peux changer de bureau, puis un motif très fréquent est cd pour un 124 00:06:18,390 --> 00:06:22,550 Annuaire et immédiatement ls ce qui est dans le répertoire. 125 00:06:22,550 --> 00:06:25,540 >> Les gens parfois ne se rendent pas que l'achèvement Tab est une chose. 126 00:06:25,540 --> 00:06:28,370 Donc, comme cd, vh, puis j'ai frappé Tab. 127 00:06:28,370 --> 00:06:30,790 Je n'ai presque jamais taper la chose entière. 128 00:06:30,790 --> 00:06:32,920 Et puis si je continue à frapper Tab encore une fois, ça va automatiquement 129 00:06:32,920 --> 00:06:33,670 commencer à lister pour moi. 130 00:06:33,670 --> 00:06:37,000 Je ne peux donc cd vhosts, hôte local. 131 00:06:37,000 --> 00:06:39,880 Et c'est juste aller à - 132 00:06:39,880 --> 00:06:43,380 au cas où vous n'avez pas entendu le terme avant, le répertoire est juste un autre mot 133 00:06:43,380 --> 00:06:45,170 pour le dossier. 134 00:06:45,170 --> 00:06:49,930 Alors maintenant, si vous voyez - 135 00:06:49,930 --> 00:06:51,810 nous allons faire que vers le haut. 136 00:06:51,810 --> 00:06:55,380 >> Alors maintenant, si vous voyez entre parenthèses, vous voir le tilde peu, slash, serveur virtuel, 137 00:06:55,380 --> 00:06:56,810 slash, hôte local. 138 00:06:56,810 --> 00:07:00,040 Ainsi, le tilde, qui fait référence à mon répertoire. 139 00:07:00,040 --> 00:07:03,090 C'est un répertoire que vous êtes lorsque vous SSH po 140 00:07:03,090 --> 00:07:05,660 C'est le répertoire que vous êtes quand vous ouvrez un terminal. 141 00:07:05,660 --> 00:07:08,650 C'est là que vous commencez. 142 00:07:08,650 --> 00:07:13,110 Et si je suis à l'intérieur de mon répertoire, et je suis à l'intérieur de l'hôte virtuel 143 00:07:13,110 --> 00:07:14,475 répertoire à l'intérieur de mon répertoire. 144 00:07:14,475 --> 00:07:19,670 Et puis, je suis à l'intérieur de la section locale accueillir répertoire à l'intérieur de cela. 145 00:07:19,670 --> 00:07:23,740 >> Alors d'autres choses utiles avec cd - 146 00:07:23,740 --> 00:07:29,220 ou bien, en général, de sorte dot toujours fait référence au répertoire courant. 147 00:07:29,220 --> 00:07:31,130 Cd, point est une commande assez inutile. 148 00:07:31,130 --> 00:07:35,150 Mais les choses changent à l' répertoire courant. 149 00:07:35,150 --> 00:07:38,230 A un plus utile en termes de cd est point, point, qui est 150 00:07:38,230 --> 00:07:40,220 juste remonter d'un répertoire. 151 00:07:40,220 --> 00:07:43,360 >> Et notez que ces - 152 00:07:43,360 --> 00:07:48,610 Je veux dire alias, mais ceux-ci symboles, point, et point, point, ceux qui travaillent 153 00:07:48,610 --> 00:07:51,740 pour à peu près n'importe quelle commande vous êtes allez penser de la course. 154 00:07:51,740 --> 00:07:55,370 Cd Donc, comme c'est probablement le cas, vous serez en utilisant le plus, mais ceux-ci ne sont pas 155 00:07:55,370 --> 00:07:56,780 choses qui ne cd comprend. 156 00:07:56,780 --> 00:07:59,980 C'est à peu près quelque chose de tout votre ligne de commande comprend. 157 00:07:59,980 --> 00:08:01,932 Un grand nombre de programmes comprendre point et point, dot. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Ainsi, les autres très utiles - cd, tableau de bord. 160 00:08:09,090 --> 00:08:13,460 Alors qui va me conduire à la dernier répertoire que j'étais po 161 00:08:13,460 --> 00:08:15,980 Alors parfois je vais faire quelque chose comme: oh, je travaille ici. 162 00:08:15,980 --> 00:08:21,110 Et je vois une erreur de quelque chose, et Je vais étudier en allant à 163 00:08:21,110 --> 00:08:24,020 un répertoire aléatoire quelque part. 164 00:08:24,020 --> 00:08:25,260 Et je ne sais pas si ça va permettez-moi de là. 165 00:08:25,260 --> 00:08:25,720 Il le fera. 166 00:08:25,720 --> 00:08:27,615 Alors, je fais ce que je veux dans ce répertoire. 167 00:08:27,615 --> 00:08:28,950 Blah, blah, blah, blah, blah. 168 00:08:28,950 --> 00:08:31,770 Et je me suis dit, bon, je veux pour retourner à l'endroit où je me trouvais. 169 00:08:31,770 --> 00:08:34,490 cd, tableau de bord, et il me ramène tout droit. 170 00:08:34,490 --> 00:08:39,970 >> Donc, je vais jeter un sort de ceux-ci à vous aujourd'hui. 171 00:08:39,970 --> 00:08:43,730 Je ne m'attends pas à mémoriser chacun d'eux. 172 00:08:43,730 --> 00:08:46,170 C'est une sorte de juste savoir qu'ils existent. 173 00:08:46,170 --> 00:08:48,690 Et puis plus tard, quand vous êtes comme, hmm, je veux revenir à la 174 00:08:48,690 --> 00:08:51,870 répertoire que j'étais juste à, oh, attendez, quelque chose comme ce qui existe. 175 00:08:51,870 --> 00:08:53,980 Vous n'avez pas à vous suffit de taper dans tout le répertoire nouveau. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: et vous finirez juste les utiliser encore et encore, et 177 00:08:56,090 --> 00:08:57,830 il deviendra la mémoire musculaire. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Ouais. 179 00:09:00,090 --> 00:09:02,930 Alors, comment je l'ai dit avant, que tilde est votre répertoire home. 180 00:09:02,930 --> 00:09:04,820 Je ne peux donc cd, tilde. 181 00:09:04,820 --> 00:09:07,280 Mais je n'ai même pas à faire que si je - 182 00:09:07,280 --> 00:09:09,760 Je vais revenir au répertoire si ce n'est pas un exemple inutile. 183 00:09:09,760 --> 00:09:14,560 Mais si je fais juste cd, c'est aussi le même que, aller à mon répertoire. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Je fais de commande, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Vous pouvez également taper clair, le mot, et il faut l'effacer. 187 00:09:24,015 --> 00:09:28,650 >> ROB: Et je pense aussi de contrôle, L le fait aussi. 188 00:09:28,650 --> 00:09:29,690 Donc beaucoup de façons différentes. 189 00:09:29,690 --> 00:09:34,070 Je pense qu'il ya quelques différences où clair et de contrôle, L sera juste 190 00:09:34,070 --> 00:09:37,280 vraiment pousser vers le haut et Je ne peux toujours revenir en arrière. 191 00:09:37,280 --> 00:09:40,580 Commande, K littéralement détruit tout, et vous 192 00:09:40,580 --> 00:09:42,960 ne peut pas revenir en arrière vers le haut. 193 00:09:42,960 --> 00:09:45,530 À tout le moins, c'est comment cela fonctionne dans ITERM2. 194 00:09:45,530 --> 00:09:48,690 Je ne sais pas combien d'autres choses - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Avec l'exécution de ssh, donc si vous êtes sur Windows, vous allez avoir à télécharger PuTTY 197 00:09:55,450 --> 00:10:02,360 afin de SSH depuis Windows ne pas avoir comme un outil intégré dans SSH. 198 00:10:02,360 --> 00:10:06,150 De Mac, il vous suffit de SSH directement à partir d'une fenêtre de terminal. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Questions? 202 00:10:11,840 --> 00:10:19,260 >> Avec ls, donc quelque chose de s'habituer à avec la plupart de ces commandes est - 203 00:10:19,260 --> 00:10:20,060 bien, je vais juste faire un. 204 00:10:20,060 --> 00:10:21,310 Ls, tableau de bord, l. 205 00:10:21,310 --> 00:10:26,330 Donc, tableau de bord, l est ce que nous allons appeler un drapeau pour ls. 206 00:10:26,330 --> 00:10:30,770 Et beaucoup de ces commandes les drapeaux que vous pouvez passer pour eux. 207 00:10:30,770 --> 00:10:35,020 Donc dans ce cas, tableau de bord, l est un drapeau qui lui dit de me donner un plein 208 00:10:35,020 --> 00:10:37,850 liste de toutes les informations de ces fichiers. 209 00:10:37,850 --> 00:10:44,790 >> Ainsi, nous voyons ici que le bureau était modifié le 30 Juillet à 12h54. 210 00:10:44,790 --> 00:10:47,160 Téléchargements été modifié de 6 Septembre. 211 00:10:47,160 --> 00:10:52,350 Il s'agit de la taille actuelle et octets de ces répertoires. 212 00:10:52,350 --> 00:10:54,412 Vous n'avez pas à comprendre tout cela. 213 00:10:54,412 --> 00:11:00,380 >> Ce truc sur la gauche, ces drwx de, qui deviendra beaucoup plus pertinente 214 00:11:00,380 --> 00:11:02,290 plus tard, lorsque vous avez à traiter - 215 00:11:02,290 --> 00:11:05,900 qui a à voir avec qui dispose des autorisations regarder ces fichiers. 216 00:11:05,900 --> 00:11:09,880 Et si vous n'étiez pas le seul utilisateur sur cet ordinateur, vous serait en mesure de 217 00:11:09,880 --> 00:11:13,345 par exemple, OK, je dois être le seul le droit de consulter ce fichier ou je suis 218 00:11:13,345 --> 00:11:14,870 va permettre à chacun à consulter ce fichier. 219 00:11:14,870 --> 00:11:17,710 Donc quelqu'un d'autre sur mon ordinateur peut consulter ce fichier. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Je ne sais même pas ce que cela - qu'est-ce que cela fait? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Je ne suis pas sûr, en fait. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Aucune idée. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Mais si vous ne connaissez pas, il est une commande utile que vous pouvez utiliser 225 00:11:30,530 --> 00:11:31,680 pour vous dire ce que signifie la sortie. 226 00:11:31,680 --> 00:11:33,780 Et si vous tapez dans l'homme avant la commande - 227 00:11:33,780 --> 00:11:35,000 si M-A-N. ROB: Man. 228 00:11:35,000 --> 00:11:37,690 Ainsi, l'homme est un autre cela est très utile. 229 00:11:37,690 --> 00:11:39,540 Et l'homme, cl. 230 00:11:39,540 --> 00:11:47,320 Ainsi, les pages de manuel, ils ont à la fois commandes que vous allez utiliser 231 00:11:47,320 --> 00:11:50,330 à la ligne de commande, et ils ont aussi fonctions qui seront pertinents 232 00:11:50,330 --> 00:11:52,530 avec C. Ainsi, vous pouvez l'homme - 233 00:11:52,530 --> 00:11:53,720 et j'ai ignoré 3. 234 00:11:53,720 --> 00:11:57,410 Mais man 3 printf va apporter jusqu'à la version C de printf. 235 00:11:57,410 --> 00:12:01,030 Mais si je fais juste man printf, c'est va faire apparaître la commande printf 236 00:12:01,030 --> 00:12:03,540 ce qui se passe à la ligne de commande. 237 00:12:03,540 --> 00:12:05,730 >> Ainsi l'homme, cl. 238 00:12:05,730 --> 00:12:09,030 Les pages peuvent être assez écrasante. 239 00:12:09,030 --> 00:12:12,770 Ici, cependant, vous verrez cette annonce de l'ensemble de ces drapeaux qui ls 240 00:12:12,770 --> 00:12:14,300 comprend. 241 00:12:14,300 --> 00:12:17,876 Donc, si nous allons à se lancer, l, et - 242 00:12:17,876 --> 00:12:19,300 Je vais jeter ce à vous. 243 00:12:19,300 --> 00:12:23,050 Mais afin de chercher, vous voulez d'abord frappé la question 244 00:12:23,050 --> 00:12:24,780 marque ou un bouton de barre oblique. 245 00:12:24,780 --> 00:12:26,040 Donc slash. 246 00:12:26,040 --> 00:12:29,000 >> Et puis je peux chercher pour ce que je veux. 247 00:12:29,000 --> 00:12:33,780 Donc, je vais réduire pour tableau de bord, l. 248 00:12:33,780 --> 00:12:35,110 Et il était là. 249 00:12:35,110 --> 00:12:37,450 Il faut donc utiliser un format de liste longue. 250 00:12:37,450 --> 00:12:40,060 Cela n'aide pas me comprendre ce cette colonne particulière signifiait, mais je 251 00:12:40,060 --> 00:12:44,480 assumer quelque part ici cela expliquerait cela. 252 00:12:44,480 --> 00:12:48,740 Il faut donc utiliser les pages de manuel pour toute commande que vous ne comprenez pas immédiatement. 253 00:12:48,740 --> 00:12:51,080 >> Je suis sûr que vous pouvez même homme, l'homme. 254 00:12:51,080 --> 00:12:53,070 Une interface pour la ligne manuels de référence. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Oh, un dernier qui est peut-être légèrement est LS pertinentes, tableau de bord, une. 257 00:13:03,570 --> 00:13:08,490 Donc remarquer si je fais ls, Je reçois ces cinq dossiers. 258 00:13:08,490 --> 00:13:11,480 Si je fais ls, tableau de bord, un, je obtenir beaucoup plus de fichiers. 259 00:13:11,480 --> 00:13:15,350 Donc, la chose de commun entre tous ces nouveaux fichiers est le point à l'avance. 260 00:13:15,350 --> 00:13:21,220 >> Ainsi, la convention est que le fichier que commence par un point est caché. 261 00:13:21,220 --> 00:13:25,300 Donc, vous ne voulez pas voir ce fichier, vous ne veulent pas avoir jouer avec 262 00:13:25,300 --> 00:13:26,750 votre inscription dans l'annuaire. 263 00:13:26,750 --> 00:13:30,020 C'est seulement quand vous demandez explicitement, tout droit, ls, tableau de bord, un, me montrer. 264 00:13:30,020 --> 00:13:32,830 L'un représente tous les fichiers, y compris celles qui sont cachées. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Ainsi, certaines autres commandes. 267 00:13:39,270 --> 00:13:41,323 Oh, des questions à ce point? 268 00:13:41,323 --> 00:13:41,746 Oui. 269 00:13:41,746 --> 00:13:45,914 >> ENCEINTE 3: Quand vous faites ls, un, ce qui est le point, point? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Donc, c'est ce que je parlais. 272 00:13:48,780 --> 00:13:50,890 C'est la même chose où Je peux certainement cd, point, point. 273 00:13:50,890 --> 00:13:56,790 Ainsi, techniquement, des points et point, point sont fichiers qui existent dans chaque simple 274 00:13:56,790 --> 00:14:03,620 répertoire où le fichier de point de référence dans le répertoire courant. 275 00:14:03,620 --> 00:14:06,930 Donc, si je cd, point, je vais pour rester dans le répertoire. 276 00:14:06,930 --> 00:14:10,870 Et point, point se réfère toujours à la précédente répertoire d'un niveau. 277 00:14:10,870 --> 00:14:18,200 Donc, si je vais dans les journaux et ls, tableau de bord, al, Je verrai point, point. cd à point, point 278 00:14:18,200 --> 00:14:20,390 m'amène au répertoire précédent. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Ouais. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Donc, une autre très importante commande rm. 284 00:14:33,070 --> 00:14:35,650 C'est ce que nous allons à utiliser pour supprimer. 285 00:14:35,650 --> 00:14:38,100 Et permettez-moi de faire une autre réalité première commande. 286 00:14:38,100 --> 00:14:39,610 Donc mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir est de savoir comment vous pouvez créer des répertoires. 288 00:14:42,770 --> 00:14:47,530 Et je vais créer un répertoire temporaire et aller dans ce répertoire temporaire. 289 00:14:47,530 --> 00:14:49,590 Et comme prévu, elle est vide. 290 00:14:49,590 --> 00:14:53,680 Mais si ls I, tableau de bord, un, j'ai encore point et point, point, car point fait référence à 291 00:14:53,680 --> 00:14:54,480 le répertoire courant. 292 00:14:54,480 --> 00:14:56,170 Et point, point fait référence à la répertoire précédent. 293 00:14:56,170 --> 00:14:58,700 Et ceux existera toujours, peu importe le répertoire que vous êtes 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Et c'est un fait inutile commande, mais tactile. 296 00:15:09,010 --> 00:15:11,880 Je suis juste l'utiliser, parce que c'est un moyen facile de créer des fichiers. 297 00:15:11,880 --> 00:15:16,180 Donc toucher un, appuyez sur b, c est juste toucher va créer trois fichiers appelés a, 298 00:15:16,180 --> 00:15:17,845 b, et c qui sont complètement vide. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Ainsi, le point de me créer ceux de la la première place est juste pour que rm est 301 00:15:24,980 --> 00:15:26,250 comment nous pouvons les retirer. 302 00:15:26,250 --> 00:15:27,850 Donc, rm, un. 303 00:15:27,850 --> 00:15:30,960 Il va me demander, retirez fichier régulier vide un? 304 00:15:30,960 --> 00:15:33,170 Et puis je vais dire oui. 305 00:15:33,170 --> 00:15:39,090 >> Donc, si je sais pour sûr que je veux effacer ce fichier sans avoir à être 306 00:15:39,090 --> 00:15:44,500 invité, retirez régulière fichier vide?, alors rm, tableau de bord, f sera la 307 00:15:44,500 --> 00:15:48,230 drapeau qui dit, forcer le supprimer sans même ce qui m'a incité, oh, vous êtes 308 00:15:48,230 --> 00:15:49,710 sûr que vous voulez supprimer le fichier? 309 00:15:49,710 --> 00:15:50,810 Oui, j'en suis sûr. 310 00:15:50,810 --> 00:15:56,050 Donc, rm, tableau de bord, FB juste le faire sans demander. 311 00:15:56,050 --> 00:15:57,950 >> Faisons donc un peu plus de répertoires. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, toucher un, touche b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Alors maintenant, je veux supprimer tmp2 comme un répertoire. 315 00:16:08,180 --> 00:16:10,316 Tmp2 Donc rm. 316 00:16:10,316 --> 00:16:12,920 Vous ne pouvez pas supprimer tmp2, c'est un répertoire. 317 00:16:12,920 --> 00:16:21,370 Ainsi, le problème ici est que rm ne travailler immédiatement sur les répertoires. 318 00:16:21,370 --> 00:16:26,530 Il est seulement destiné à des fichiers comme fichiers non-annuaire. 319 00:16:26,530 --> 00:16:30,800 >> Et si ce que nous pouvons faire voici rm, tableau de bord, r. 320 00:16:30,800 --> 00:16:35,160 Cela signifie de manière récursive, ce qui pourrait encore rien pas signifier pour vous. 321 00:16:35,160 --> 00:16:38,280 Mais quand vous arrivez à la récursivité, il va dire plus. 322 00:16:38,280 --> 00:16:43,540 Donc, rm, tableau de bord, r, tmp2 va aller récursivement dans ce répertoire. 323 00:16:43,540 --> 00:16:45,540 Alors descendre dans le répertoire tmp2? 324 00:16:45,540 --> 00:16:47,330 Oui, allons-dedans. 325 00:16:47,330 --> 00:16:49,360 Voulons-nous d'enlever tmp2 / a? 326 00:16:49,360 --> 00:16:49,745 Oui. 327 00:16:49,745 --> 00:16:51,830 Voulons-nous d'enlever tmp2 / b? 328 00:16:51,830 --> 00:16:52,840 Oui. 329 00:16:52,840 --> 00:16:55,170 Maintenant que nous voulons pour supprimer le répertoire tmp2? 330 00:16:55,170 --> 00:16:56,040 Oui. 331 00:16:56,040 --> 00:16:58,410 Et maintenant le répertoire et tout à l'intérieur 332 00:16:58,410 --> 00:16:59,660 de celui-ci a été éliminée. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Il est techniquement une commande rmdir que vous pouvez utiliser pour supprimer 335 00:17:07,250 --> 00:17:11,670 répertoires, mais il ne fonctionne que sur les répertoires vides de toute façon. 336 00:17:11,670 --> 00:17:14,109 Et de voir que, disons simplement refaire mkdir, tmp2. 337 00:17:14,109 --> 00:17:15,940 Tmp2, toucher un. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Donc, si je tente de supprimer dirtmp2, ça va dire, le répertoire n'est pas vide. 340 00:17:22,770 --> 00:17:29,540 Donc je suis assez n'utilise jamais le supprimer commande dir de toute façon, parce que rm, tableau de bord, 341 00:17:29,540 --> 00:17:35,140 r va travailler sur les répertoires vides et les répertoires non-vides. 342 00:17:35,140 --> 00:17:37,760 >> Et aussi, si je ne veux pas avoir à passer par tout le processus de 343 00:17:37,760 --> 00:17:40,720 descendant dans le répertoire et enlever chaque fichier, rm, 344 00:17:40,720 --> 00:17:44,190 tableau de bord, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 Et maintenant il est parti. 346 00:17:45,670 --> 00:17:51,220 >> Quelque chose d'être prudent est d'environ rm, tableau de bord, rf. 347 00:17:51,220 --> 00:17:53,660 Et il me fait peur même à taper, parce que si j'ai accidentellement 348 00:17:53,660 --> 00:17:55,090 appuyez sur Entrée ou quelque chose. 349 00:17:55,090 --> 00:18:02,735 Donc, rm, tableau de bord, rf, tilde serait, sans ce qui m'a incité, le f ne demande pas 350 00:18:02,735 --> 00:18:05,670 moi, il sera automatiquement supprimer mon répertoire entier et 351 00:18:05,670 --> 00:18:06,780 tout en elle. 352 00:18:06,780 --> 00:18:11,460 Alors vous pouvez penser que c'est une chose stupide à faire. 353 00:18:11,460 --> 00:18:12,830 Et bien, il est. 354 00:18:12,830 --> 00:18:18,600 >> Mais il peut arriver très facilement par accident si, par exemple, je voulais enlever 355 00:18:18,600 --> 00:18:21,640 mon slash, répertoire de serveur virtuel. 356 00:18:21,640 --> 00:18:26,610 Et juste au typage rapide, J'ai accidentellement fais. 357 00:18:26,610 --> 00:18:31,880 Ce sera effacer de façon récursive la fois mon Accueil annuaire et le répertoire de serveur virtuel 358 00:18:31,880 --> 00:18:35,450 dans ce répertoire particulier qui vient arrive de ne pas exister en ce moment. 359 00:18:35,450 --> 00:18:39,520 Mais ce serait encore retirer mon répertoire entier. 360 00:18:39,520 --> 00:18:43,090 Au moins de ne pas avoir une f, il me demandera en premier. 361 00:18:43,090 --> 00:18:45,670 Et je serais comme, oh, non, je ne veulent pas le faire. 362 00:18:45,670 --> 00:18:50,570 Mais les gens, barre oblique, y compris me tendance à entrer dans le 363 00:18:50,570 --> 00:18:53,090 habitude de toujours rf-ing. 364 00:18:53,090 --> 00:18:58,713 Même les fichiers réguliers que je ne peux RM, c, j'ai tendance à juste rm, tableau de bord, rf, c. 365 00:18:58,713 --> 00:19:01,330 Juste être prudent lorsque vous êtes rf-ing. 366 00:19:01,330 --> 00:19:03,160 >> SPEAKER 4: Qu'est-ce que C faire? 367 00:19:03,160 --> 00:19:11,570 >> ROB: c est que je parle de ce fichier C dans ce répertoire, que rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: Et plus dangereusement, si vous utilisez une étoile, il se réfère à tout 369 00:19:15,730 --> 00:19:16,450 le répertoire. 370 00:19:16,450 --> 00:19:20,040 Donc ce que je généralement tendance à faire est je vais aller dans un répertoire et je veux 371 00:19:20,040 --> 00:19:21,510 supprimer tous les fichiers dedans. 372 00:19:21,510 --> 00:19:23,640 Donc, rm, tableau de bord, rf, étoiles. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Ouais. 374 00:19:25,700 --> 00:19:26,780 Rm, tableau de bord, rf, étoiles. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: Et si vous ne faites pas attention ce répertoire que vous êtes dans - 376 00:19:29,530 --> 00:19:33,340 Je n'étais pas en température, mais j'étais accidentellement dans mon répertoire, 377 00:19:33,340 --> 00:19:35,450 alors je vais enlever tout dans mon répertoire. 378 00:19:35,450 --> 00:19:39,095 Et j'ai effectivement fait ça avant, et Je pense que vous avez fait avant ou 379 00:19:39,095 --> 00:19:40,640 Jay a fait ça avant. 380 00:19:40,640 --> 00:19:42,480 >> ROB: J'ai accidentellement supprimé - 381 00:19:42,480 --> 00:19:44,480 donc ignorer cette commande un peu. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Pas drôle. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Donc, dans le répertoire de barre bin est un tas de fichiers binaires où il y 384 00:19:52,650 --> 00:19:54,840 être les familiers comme bruit. 385 00:19:54,840 --> 00:20:00,740 Eh bien, clang et essentiellement tous ces choses que je suis en cours d'exécution à la commande 386 00:20:00,740 --> 00:20:02,060 ligne sont dans ce répertoire slash bin. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Comme ls est ici. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Donc, point, barre oblique, ls seraient la liste de ce répertoire. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm est également dans ce répertoire. 390 00:20:08,120 --> 00:20:12,770 >> ROB: J'ai accidentellement rm, rf-ed bin, qui a supprimé toute commande je pouvais 391 00:20:12,770 --> 00:20:14,380 peut-être voulez jamais. 392 00:20:14,380 --> 00:20:18,085 Lequel donc je viens de réinstaller un nouvel appareil à ce stade. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Soyez donc très prudent lorsque vous vous utilisez cette commande. 394 00:20:20,170 --> 00:20:21,120 >> PUBLIC: [inaudible]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Oui. 396 00:20:22,640 --> 00:20:24,135 C'est aussi une mauvaise habitude à prendre. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Si vous remarquez, je suis maintenant - 399 00:20:30,170 --> 00:20:33,580 bien, vous pouvez ne pas remarquer, mais mon zoom-in peut-être possible. 400 00:20:33,580 --> 00:20:35,360 Je suis donc maintenant root @ appareil. 401 00:20:35,360 --> 00:20:39,790 Donc jharvard est l'utilisateur que nous voulons vous utilisez toujours. 402 00:20:39,790 --> 00:20:43,820 Root est l'utilisateur qui a l'autorisation de faire n'importe quoi. 403 00:20:43,820 --> 00:20:50,260 >> Donc remarquer quand je suis jharvard, si j'essaie de cd - 404 00:20:50,260 --> 00:20:52,461 ce qui est un répertoire? 405 00:20:52,461 --> 00:20:53,980 Oh, la racine est un bon exemple. 406 00:20:53,980 --> 00:20:54,950 Donc, cd, racine. 407 00:20:54,950 --> 00:20:56,030 Permission denied. 408 00:20:56,030 --> 00:21:00,060 Parce que si on regarde cette liste - 409 00:21:00,060 --> 00:21:02,410 et encore, vous n'avez pas à comprendre tout cela. 410 00:21:02,410 --> 00:21:09,210 Mais ces trois tirets disent qui ne laissent pas d'autre 411 00:21:09,210 --> 00:21:11,120 utilisateur dans ce répertoire. 412 00:21:11,120 --> 00:21:14,540 Et le répertoire se trouve être détenue par l'utilisateur root. 413 00:21:14,540 --> 00:21:20,310 >> Donc, le fait que je suis jharvard et pas celui qui n'est pas racine est autorisé dans 414 00:21:20,310 --> 00:21:23,490 ce répertoire, cela signifie que je suis va se permission denied quand je 415 00:21:23,490 --> 00:21:25,160 essayer de cd dedans. 416 00:21:25,160 --> 00:21:31,370 Alors, quand je suis racine, j'ai l'autorisation à faire n'importe quoi, y compris 417 00:21:31,370 --> 00:21:34,660 supprimer des fichiers essentiels de l'appareil et 418 00:21:34,660 --> 00:21:36,640 détruire la chose entière. 419 00:21:36,640 --> 00:21:41,240 >> Donc, c'est une mauvaise habitude à prendre se balader autour de votre 420 00:21:41,240 --> 00:21:43,650 système d'exploitation en tant que root. 421 00:21:43,650 --> 00:21:46,520 Je le fais quand même. 422 00:21:46,520 --> 00:21:48,710 Questions? 423 00:21:48,710 --> 00:21:52,230 Et je sors racine, reste comme jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Commandes plus pertinents. 426 00:21:55,820 --> 00:22:03,975 Pour en revenir à notre température, la commande mv signifie mouvement. 427 00:22:03,975 --> 00:22:05,450 Vous pouvez déplacer un. 428 00:22:05,450 --> 00:22:07,610 Maintenant, nous voulons appeler b, alors maintenant il s'appelle b. 429 00:22:07,610 --> 00:22:10,650 Ou peut-être que nous voulons aller b d'un répertoire. 430 00:22:10,650 --> 00:22:12,730 Alors maintenant vide de ce répertoire. 431 00:22:12,730 --> 00:22:15,410 Je vais revenir à mon répertoire personnel, et on voit que b est ici, parce que l' 432 00:22:15,410 --> 00:22:19,230 Accueil annuaire était un répertoire à partir le répertoire b avait été po 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Il ya aussi cp. 435 00:22:26,580 --> 00:22:33,210 Alors cp est la copie de l'article superbe, point, le texte. 436 00:22:33,210 --> 00:22:35,750 Je peux l'appeler s, point, texte. 437 00:22:35,750 --> 00:22:39,780 Maintenant, nous avons à la fois la section superbe, point, le texte, et s, point, texte. 438 00:22:39,780 --> 00:22:41,340 Cela fonctionne également sur les répertoires. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Je RF-ed un seul fichier. 441 00:22:46,560 --> 00:22:48,200 Alors cp - 442 00:22:48,200 --> 00:22:51,710 bien, d'abord nous allons essayer cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 Donc, en omettant répertoire tmp. 444 00:22:53,220 --> 00:22:57,440 , Le comportement par défaut si semblable à rm est de ne pas travailler sur des répertoires. 445 00:22:57,440 --> 00:23:01,570 >> Et encore une fois, semblable à rm, la valeur par défaut comportement - et bien, le faire fonctionner 446 00:23:01,570 --> 00:23:04,230 avec des répertoires est un tableau de r loin. 447 00:23:04,230 --> 00:23:09,240 Donc copier de manière récursive la température répertoire dans tmp2. 448 00:23:09,240 --> 00:23:13,700 Et maintenant nous avons à la fois tmp et tmp2, et ce n'est pas que utile car tmp 449 00:23:13,700 --> 00:23:16,814 était vide en premier lieu. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Maintenant, nous allons copier tmp dans tmp2. 452 00:23:22,680 --> 00:23:27,900 Et nous voyons que tmp2 a également le fichier un, parce que le répertoire et 453 00:23:27,900 --> 00:23:32,220 tout à l'intérieur de ladite répertoire a été copié. 454 00:23:32,220 --> 00:23:36,000 Et cela peut être assez utile Si, par exemple vous travaillez 455 00:23:36,000 --> 00:23:38,860 sur un ensemble de problèmes - 456 00:23:38,860 --> 00:23:41,320 ou en fait, des ensembles de problèmes ultérieurs sont encore plus important, car il 457 00:23:41,320 --> 00:23:43,660 sera tout un tas des fichiers et des choses. 458 00:23:43,660 --> 00:23:47,010 >> Mais vous voulez juste, pour une fraction de deuxième, vous êtes comme, bon, je suis 459 00:23:47,010 --> 00:23:50,210 vais essayer quelque chose de différent. 460 00:23:50,210 --> 00:23:57,860 Permettez-moi de copier toute ma pset1 répertoire dans la sauvegarde de pset1 de sorte que si 461 00:23:57,860 --> 00:24:01,490 Je finis par vissage les choses, je ne peux retourner dans mon répertoire de sauvegarde. 462 00:24:01,490 --> 00:24:07,340 Il existe des façons plus appropriées de versioning sauvegarde de votre code, mais 463 00:24:07,340 --> 00:24:10,610 ce qui est toujours un moyen rapide de faire juste que vous avez une copie de quelque chose 464 00:24:10,610 --> 00:24:11,860 que vous êtes sur le point de modifier. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Donc écho est également une commande ponctuelle que type de niaisement sera simplement imprimer à l' 467 00:24:27,090 --> 00:24:31,540 ligne de commande exactement ce que vous vouliez faire l'écho. 468 00:24:31,540 --> 00:24:32,680 Donc écho salut. 469 00:24:32,680 --> 00:24:35,420 Nous allons imprimer salut. 470 00:24:35,420 --> 00:24:38,030 Echo Bonjour tout le monde. 471 00:24:38,030 --> 00:24:39,800 Nous imprimons Bonjour tout le monde. 472 00:24:39,800 --> 00:24:44,350 Cela vient en utilisation lorsque vous lancer des commandes de combinaison. 473 00:24:44,350 --> 00:24:48,300 >> Et encore une fois, ne vous attendez pas à tout comprendre encore, mais il est 474 00:24:48,300 --> 00:24:49,910 quelque chose à voir. 475 00:24:49,910 --> 00:24:52,470 Et puis si vous googler pour exemples ou vous vous rendez compte que vous voulez faire 476 00:24:52,470 --> 00:24:55,030 quelque chose, il peut être utile. 477 00:24:55,030 --> 00:24:59,020 Donc, nous allons, par exemple, donc ls, tableau de bord, l. 478 00:24:59,020 --> 00:25:01,160 Donc ici, je vois la sortie de ls, tableau de bord, l. 479 00:25:01,160 --> 00:25:06,560 Et je dis, OK, je veux stocker que dans un fichier. 480 00:25:06,560 --> 00:25:11,620 Tous de cette sortie ici, je veux à mettre dans un fichier séparé. 481 00:25:11,620 --> 00:25:16,080 >> Donc ce petit symbole supérieur c'est ce que nous allons appeler. 482 00:25:16,080 --> 00:25:18,570 Nous rediriger l' sortie dans un fichier. 483 00:25:18,570 --> 00:25:21,680 Appelons le fichier bla, parce que c'est ce que je tendance à toujours appeler. 484 00:25:21,680 --> 00:25:26,430 Alors maintenant, nous voir, nous avons un déposer bla ici. 485 00:25:26,430 --> 00:25:30,270 Et si je l'ouvre, je vais voir c'est exactement la sortie de la commande 486 00:25:30,270 --> 00:25:31,990 que j'ai juste couru. 487 00:25:31,990 --> 00:25:36,020 Et de même, vous pouvez - 488 00:25:36,020 --> 00:25:41,260 si cela était sortie dans un fichier, ce est d'obtenir l'entrée d'un fichier. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Qu'est-ce qu'une commande que je - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Je pense que vous pouvez utiliser plus ou moins, sans doute. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Mais que diriez-vous un peu moins fade? 493 00:25:53,031 --> 00:25:53,930 Je ne sais pas. 494 00:25:53,930 --> 00:25:57,870 Si vous venez dans ce scénario, comme il ya psets que c'est utile pour. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Vous pouvez diriger en écho. 496 00:25:59,950 --> 00:26:02,920 Tuyau le fichier en écho à voir. 497 00:26:02,920 --> 00:26:04,060 >> ROB: C'est tuyau. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Désolé. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Très bien. 500 00:26:06,190 --> 00:26:12,720 Donc, c'est la sortie dans un fichier. 501 00:26:12,720 --> 00:26:18,700 C'est rendre le texte à partir du fichier et le remettre au programme. 502 00:26:18,700 --> 00:26:20,560 Et vous verrez également ce type. 503 00:26:20,560 --> 00:26:24,410 Donc, ce genre est de faire deux à la fois. 504 00:26:24,410 --> 00:26:28,310 Et en fait, je vais vous présenter deux nouveaux commandes juste de faire usage de celui-ci. 505 00:26:28,310 --> 00:26:33,060 >> L'histoire est une commande très pratique qui est juste va imprimer une liste de 506 00:26:33,060 --> 00:26:34,940 tout ce que j'ai jamais couru une ligne de commande. 507 00:26:34,940 --> 00:26:38,290 Nous voyons donc ici tout ce que j'ai été en cours d'exécution tout ce temps. 508 00:26:38,290 --> 00:26:39,540 Beaucoup de ls de. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> Et une autre commande utile est que grep son but est à la recherche sur 511 00:26:48,470 --> 00:26:52,060 texte à la recherche de modèles, ainsi, à la recherche de ce que vous 512 00:26:52,060 --> 00:26:53,310 il veut chercher. 513 00:26:53,310 --> 00:26:59,770 Et si une utilisation pratique ici est, disons nous voulons saisir l'histoire. 514 00:26:59,770 --> 00:27:03,860 Et je tiens à regarder pour les commandes où I - Qu'est-ce qu'un 515 00:27:03,860 --> 00:27:05,000 utiles les uns aux chercher? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [inaudible]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Ou disons simplement regarder pour tous touche, pour une raison quelconque. 518 00:27:09,710 --> 00:27:13,850 Donc, c'est ce qu'il va ressembler. 519 00:27:13,850 --> 00:27:15,560 Et vous n'avez pas complètement comprendre. 520 00:27:15,560 --> 00:27:20,570 Mais l'idée est là, l'histoire donne la même sortie, il fait ici 521 00:27:20,570 --> 00:27:25,030 où il est l'impression de l'ensemble du l'histoire de tout ce que j'ai jamais couru. 522 00:27:25,030 --> 00:27:27,030 Nous sommes alors passant que - 523 00:27:27,030 --> 00:27:30,230 alors au lieu de l'imprimer à l'écran, nous voulons transmettre cela à la 524 00:27:30,230 --> 00:27:34,640 grep, qui est à la recherche d' toutes les instances du mot tactile. 525 00:27:34,640 --> 00:27:40,280 >> Et donc l'utilisation de cette combinaison de la l'histoire des outils et grep, je peux voir, OK, 526 00:27:40,280 --> 00:27:44,820 voici toutes les commandes que j'ai jamais exécuté, et voici un peu une commune. 527 00:27:44,820 --> 00:27:45,510 Nous sommes au fond. 528 00:27:45,510 --> 00:27:47,930 Et c'est aussi me donner la commande J'ai juste couru qui a eu le 529 00:27:47,930 --> 00:27:51,240 mot toucher en elle. 530 00:27:51,240 --> 00:27:58,500 Mais la conduite est une chose très utile pour la combinaison de plusieurs programmes. 531 00:27:58,500 --> 00:28:04,670 Et en fait, c'est un raccourci pour let moi l'histoire sortie de déposer bla, et 532 00:28:04,670 --> 00:28:10,190 permettez-moi de grep en utilisant le fichier bla que ce que je veux regarder par-dessus. 533 00:28:10,190 --> 00:28:13,460 Ainsi, le tuyau est juste un raccourci de ces deux commandes. 534 00:28:13,460 --> 00:28:13,950 Oui. 535 00:28:13,950 --> 00:28:15,306 >> SPEAKER 4: [inaudible]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Oui. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Qu'est-ce que - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Testons. 541 00:28:24,820 --> 00:28:29,170 Donc, chat, chien, poisson. 542 00:28:29,170 --> 00:28:33,770 Je tiens donc à grep. 543 00:28:33,770 --> 00:28:37,680 Tableau de bord, r, encore une fois, va être récursive, donc je veux descendre en bas 544 00:28:37,680 --> 00:28:38,870 tous les répertoires. 545 00:28:38,870 --> 00:28:43,210 Je veux grep récursivement pour tous - et laissez-moi temporairement 546 00:28:43,210 --> 00:28:44,460 ce de la route. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 M'ignorer. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Je tiens donc à grep temporairement pour toutes les instances du mot poisson. 551 00:28:56,740 --> 00:29:00,510 Et alors voici ce que je fais est grepper récursive pour le mot poisson. 552 00:29:00,510 --> 00:29:05,410 Et étoiles signifie plus de tous ces fichiers de ce répertoire. 553 00:29:05,410 --> 00:29:08,930 Et il m'a donné une autorisation refusée, car il n'est pas autorisé à lire que 554 00:29:08,930 --> 00:29:10,060 fichier particulier. 555 00:29:10,060 --> 00:29:14,040 Mais il a trouvé des poissons dans le fichier, test. 556 00:29:14,040 --> 00:29:18,450 >> Je pourrais aussi dire, précisément, je ne vouloir regarder dans le fichier blah, dans 557 00:29:18,450 --> 00:29:19,580 auquel cas il ne trouvera rien. 558 00:29:19,580 --> 00:29:20,990 Je veux seulement regarder dans le fichier, test. 559 00:29:20,990 --> 00:29:22,240 Il trouvera les poissons. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 C'est une commande très utile à savoir en général. 562 00:29:29,260 --> 00:29:31,640 Il existe des alternatives à grep qui sont censés être plus 563 00:29:31,640 --> 00:29:36,780 programmeur amical, mais j'ai tendance de tomber encore de retour sur grep. 564 00:29:36,780 --> 00:29:38,030 Questions? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Y at-il d'autres commandes? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Juste une seule fois l'un que j'ai toujours trouver pour être amusant est cal. 570 00:29:48,370 --> 00:29:55,610 Donc remarquer quand je suis dans cette belle mode plein écran, je n'ai pas de haut comme 571 00:29:55,610 --> 00:29:56,720 barre d'outils ou quoi que ce soit. 572 00:29:56,720 --> 00:29:59,530 Donc cal me donne juste un peu agréable calendrier qui vous convient 573 00:29:59,530 --> 00:30:02,380 maintenant coupé, je suppose. 574 00:30:02,380 --> 00:30:04,770 Mais jolie petite commande. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Il est [inaudible]. 576 00:30:06,540 --> 00:30:09,170 D'autres commandes que vous pourriez avoir vu comprennent clang et crée. 577 00:30:09,170 --> 00:30:11,180 Nous allons passer en revue les dans plus en détail plus tard. 578 00:30:11,180 --> 00:30:13,400 Mais si vous avez travaillé sur le PSET, vous devriez être 579 00:30:13,400 --> 00:30:15,160 familiariser avec celles-ci. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Très bien. 581 00:30:16,640 --> 00:30:18,520 Questions sur les choses de la ligne de commande? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Très bien. 584 00:30:23,260 --> 00:30:27,416 Passons donc sur une certaine Trucs C-liés. 585 00:30:27,416 --> 00:30:28,666 Variables mathématiques. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Ainsi, tout comme nous avions mathématiques dans Scratch, vous pouvez également utiliser les mathématiques dans C. 589 00:30:45,230 --> 00:30:49,270 >> Avant d'en arriver là entièrement, donc variables. 590 00:30:49,270 --> 00:30:53,920 Rappelez-vous que chaque fois que vous déclarez une variables comme int x ou float y, vous 591 00:30:53,920 --> 00:30:56,710 avoir à donner de type avant le nom de la variable. 592 00:30:56,710 --> 00:31:03,020 Donc types que nous avons vu jusqu'à présent sont int, float, double, long long, que je 593 00:31:03,020 --> 00:31:06,150 ne savons pas vraiment si nous avons vu que jusqu'à présent. 594 00:31:06,150 --> 00:31:07,700 >> Il ya quelques autres. 595 00:31:07,700 --> 00:31:09,990 Nous avons vu l'omble. 596 00:31:09,990 --> 00:31:13,920 Il ya peu, qui est, comme c'est le opposé de long long où il est 597 00:31:13,920 --> 00:31:16,650 inférieure à un nombre entier. 598 00:31:16,650 --> 00:31:18,580 Nous avons également vu chaîne. 599 00:31:18,580 --> 00:31:23,070 Alors, quelle est la particularité de chaîne? 600 00:31:23,070 --> 00:31:25,350 Pourquoi devrais-je dire que c'est pas tout à fait comme int? 601 00:31:25,350 --> 00:31:27,030 >> SPEAKER 4: Il n'existe pas vraiment. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Ouais. 603 00:31:27,990 --> 00:31:31,820 Donc, la seule raison pour laquelle nous avons chaîne C'est parce que quand vous faites 604 00:31:31,820 --> 00:31:33,215 hachage, inclure cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 Et nous voyons des exemples de cela plus tard - oh, que ne gère pas très bien - 607 00:31:42,670 --> 00:31:46,160 où cs50.h fait quelque chose le long des lignes de caractères 608 00:31:46,160 --> 00:31:49,230 def, char étoile, chaîne. 609 00:31:49,230 --> 00:31:53,280 >> Et c'est peu dire que nous n'avons pas encore savoir ce que une star de char est encore. 610 00:31:53,280 --> 00:31:56,770 Mais cela veut dire que nous voulons chaîne. 611 00:31:56,770 --> 00:32:00,250 Tout endroit où vous avez utilisé chaîne, vous aurait pu être que char étoiles, 612 00:32:00,250 --> 00:32:04,670 qui est en fait un type qui existe dans le langage C. 613 00:32:04,670 --> 00:32:06,680 Mais nous y reviendrons. 614 00:32:06,680 --> 00:32:07,860 Oh, et il va tout de suite. 615 00:32:07,860 --> 00:32:10,170 Neat. 616 00:32:10,170 --> 00:32:15,370 >> Donc même chose avec bool où le vrai et le faux. 617 00:32:15,370 --> 00:32:22,510 Ce n'est pas vraiment un type intégré dans C. Au lieu de cela, c'est juste, que cela a 618 00:32:22,510 --> 00:32:23,740 la valeur zéro? 619 00:32:23,740 --> 00:32:26,200 Ensuite, nous allons considérer qu'il est faux. 620 00:32:26,200 --> 00:32:27,350 Est-ce que cela a de la valeur - 621 00:32:27,350 --> 00:32:30,530 bien, cela at-il une La valeur non nulle? 622 00:32:30,530 --> 00:32:32,200 Ensuite, nous considérons que c'est vrai. 623 00:32:32,200 --> 00:32:35,940 Donc, on est vrai, deux c'est vrai, rien non nulle est vraie. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Donc, ce sont ceux-là. 626 00:32:42,790 --> 00:32:47,624 Questions sur la déclaration de variables et types de variables et tout ce qui? 627 00:32:47,624 --> 00:32:48,100 Ouais. 628 00:32:48,100 --> 00:32:52,384 >> SPEAKER 4: Pendant longtemps, longtemps, dans le livre, il a dit qu'il fallait être long long int. 629 00:32:52,384 --> 00:32:54,288 Mais fonctionnera tout long long? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Donc ces modificateurs de type. 632 00:33:01,470 --> 00:33:04,170 Alors int x. 633 00:33:04,170 --> 00:33:07,710 Donc, nous pouvons dire aussi unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Nous pouvons dire short int x. 635 00:33:09,640 --> 00:33:12,570 Nous pouvons dire long long int x. 636 00:33:12,570 --> 00:33:17,250 Mais à peu près tout de ces choses que je vient d'être dit, unsigned int, short int, 637 00:33:17,250 --> 00:33:21,480 long long int, vous pouvez vous débarrasser de l'int et il va juste prendre 638 00:33:21,480 --> 00:33:22,510 que vous vouliez dire int. 639 00:33:22,510 --> 00:33:26,045 X Donc non signés, ce qui signifie tout simplement - 640 00:33:26,045 --> 00:33:29,400 vous savez comment normalement avec un int, vous pouvez dire x est égal à 3 négative? 641 00:33:29,400 --> 00:33:31,636 Avec un unsigned int, vous ne pouvez pas. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: Et encore une fois, pour l'appareil photo, le question était, quelle est la différence 643 00:33:34,480 --> 00:33:37,796 entre long long int et juste le temps de temps? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Ouais. 645 00:33:38,410 --> 00:33:42,850 Je vais donc presque jamais écrire long long int. 646 00:33:42,850 --> 00:33:44,100 Je vais écrire long long. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Des questions? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Si bête petit rappel de ce que c'est la façon dont nous déclarons une variable et initialise 652 00:34:02,390 --> 00:34:04,450 la variable et déclarer une autre et initialiser la variable 653 00:34:04,450 --> 00:34:05,870 tout en une seule étape. 654 00:34:05,870 --> 00:34:09,370 Ainsi, la déclaration de la variable et la variable d'initialisation n'ont pas 655 00:34:09,370 --> 00:34:11,120 pour mais peut être sur la même ligne. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Nous avons donc les opérateurs mathématiques standard que vous êtes habitué à - 658 00:34:20,060 --> 00:34:22,199 plus, moins, diviser, fois. 659 00:34:22,199 --> 00:34:24,389 Il ya aussi modulo, que nous verrons plus. 660 00:34:24,389 --> 00:34:29,060 Il n'y a pas, au moins dans C, une alimentation intégrée 661 00:34:29,060 --> 00:34:31,765 exponentiation opérateur du curseur. 662 00:34:31,765 --> 00:34:33,770 Eh bien, il est un opérateur de caret, mais ce n'est pas courant. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Mais ce n'est pas exponentiation, Oui. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Ne pas utiliser le curseur à supposer que cela signifie 665 00:34:36,210 --> 00:34:39,980 comme carré ou autre. 666 00:34:39,980 --> 00:34:42,289 Donc certaines choses à garder à l' l'esprit à propos de division. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Je me tiendrai. 669 00:34:48,880 --> 00:34:51,315 C'est ce qu'a déclaré initialize réponse. 670 00:34:51,315 --> 00:34:54,670 Nous disons donc flotteur réponse est égal à 1 divisé par 10. 671 00:34:54,670 --> 00:34:57,500 Imprimer réponse à deux décimales. 672 00:34:57,500 --> 00:35:02,180 >> Et c'est le genre de chose que je serait l'homme printf pour comprendre que 673 00:35:02,180 --> 00:35:05,110 ce que le diable ne%, point, 2f veut dire? 674 00:35:05,110 --> 00:35:07,930 Et cela signifie juste, bien, ignorant l'0,2. 675 00:35:07,930 --> 00:35:10,420 Et%, f est ce que nous utilisons pour imprimer à flotter. 676 00:35:10,420 --> 00:35:15,370 Le 0,2 n'est pas peu dire, l'impression que flotter à deux décimales. 677 00:35:15,370 --> 00:35:19,600 Donc, ce programme a un bug, et vous pourriez ont vu cela dans certains 678 00:35:19,600 --> 00:35:20,870 Bien sûr CS avant. 679 00:35:20,870 --> 00:35:22,170 Mais qu'est-ce qui bug? 680 00:35:22,170 --> 00:35:23,050 >> SPEAKER 5: zéro. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Ouais. 682 00:35:24,130 --> 00:35:29,630 Donc, quand nous disons, la réponse est égale à 1 divisé par 10, nous voulons que le 683 00:35:29,630 --> 00:35:31,610 répondre à 0,1. 684 00:35:31,610 --> 00:35:37,450 Mais une divisée par 10, la figure 1 est une nombre entier, la figure 10 est un nombre entier. 685 00:35:37,450 --> 00:35:41,060 Et quand nous faisons un entier divisé par un nombre entier, nous allons revenir 686 00:35:41,060 --> 00:35:42,190 un nombre entier. 687 00:35:42,190 --> 00:35:43,660 Donc 1 divisé par 10 est de 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Depuis il a besoin de nous donner un nombre entier, il va juste jeter cette 689 00:35:46,760 --> 00:35:49,410 décimale et dire que la réponse est 0. 690 00:35:49,410 --> 00:35:55,314 Et quand nous imprimons répondre ici, il va imprimer 0,00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: Et comme une note, il fait jette ce qui est après le 692 00:35:58,430 --> 00:35:59,390 virgule. 693 00:35:59,390 --> 00:36:03,180 Donc, si vous aviez la place 6 divisé par 10, vous pourriez penser que cela vous donnerait 694 00:36:03,180 --> 00:36:05,200 0,6 puis vous arrondir à 1. 695 00:36:05,200 --> 00:36:10,520 Mais en réalité, ce qui se passe quand il tapez tâches qu'il est qu'il tombe ce qui est 696 00:36:10,520 --> 00:36:11,470 après la virgule. 697 00:36:11,470 --> 00:36:13,020 Donc, 0,6 ne devient 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Ouais. 699 00:36:13,370 --> 00:36:15,160 Et nous dirons tronquée pour cela. 700 00:36:15,160 --> 00:36:21,760 Donc, chaque fois que vous lancez un int, la décimale est tronquée. 701 00:36:21,760 --> 00:36:23,980 Ainsi, le correctif pour que - il ya en fait deux. 702 00:36:23,980 --> 00:36:27,890 Et je vais faire ensuite, parce que celui-ci est une solution beaucoup plus facile. 703 00:36:27,890 --> 00:36:32,670 >> Donc, un correctif est d'utiliser des flotteurs dans la division. 704 00:36:32,670 --> 00:36:34,720 Et vraiment, il suffit de faire d'eux un flotteur. 705 00:36:34,720 --> 00:36:37,400 Mais c'est juste un peu plus clair de faire tous les deux flotteurs. 706 00:36:37,400 --> 00:36:41,170 Donc 1,0 divisé par 10,0 est la division de deux flotteurs. 707 00:36:41,170 --> 00:36:43,970 Donc, la réponse va finir par être un flotteur, et si vous voulez 708 00:36:43,970 --> 00:36:48,050 imprimer correctement 0.10 ici. 709 00:36:48,050 --> 00:36:52,220 >> Quelque chose qui ne fonctionne pas si bien à ce sujet est, bien, sûr, il était facile 710 00:36:52,220 --> 00:36:56,240 suffisant pour convertir une à une en faisant flotter 1.0. 711 00:36:56,240 --> 00:37:02,180 Mais si à la place, nous avons eu deux entiers comme int x est égal à 1 et int y 712 00:37:02,180 --> 00:37:05,660 est égal à 10, puis nous voulions à ne x divisé par y? 713 00:37:05,660 --> 00:37:10,420 Il n'est donc pas facile de simplement faire x.0 ou quelque chose. 714 00:37:10,420 --> 00:37:12,790 >> Donc, la solution à cette question est prépondérante. 715 00:37:12,790 --> 00:37:19,780 Donc casting est une façon pour convertir C d'un type de variable à l'autre. 716 00:37:19,780 --> 00:37:22,320 Donc ici, 1 est un nombre entier. 717 00:37:22,320 --> 00:37:27,050 Et en mettant ce flotteur devant il, nous jette 1 à un flotteur. 718 00:37:27,050 --> 00:37:30,350 Et alors ce sera convertir la 1 à 1,0. 719 00:37:30,350 --> 00:37:33,380 Et ce sera de convertir 10 à l'un 10.0. 720 00:37:33,380 --> 00:37:36,790 >> Et puis les choses se comportent de façon similaire à la version précédente, nous n'avons vu que 721 00:37:36,790 --> 00:37:42,190 où, comme on s'y attendait, on obtient 0,10 et il va imprimer que. 722 00:37:42,190 --> 00:37:44,120 Et nous pouvons le faire avec variables, aussi. 723 00:37:44,120 --> 00:37:47,376 Donc nous pouvons dire, float x divisé par float y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Des questions? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Ainsi, tout comme en mathématiques régulière, nous avons la priorité des opérateurs. 727 00:38:00,090 --> 00:38:06,960 Ainsi, dans la classe de mathématiques, vous avez plus de chances pour appeler l'ordre des opérations. 728 00:38:06,960 --> 00:38:09,890 Ici, le terme officiel est priorité de l'opérateur. 729 00:38:09,890 --> 00:38:15,230 Mais la priorité de l'opérateur, ou plus opérateurs, est comme vous le souhaitez. 730 00:38:15,230 --> 00:38:22,660 >> Ainsi, tout comme en mathématiques, en 2 fois 10 est va être regroupés plus étroitement que 731 00:38:22,660 --> 00:38:25,410 ce 10 divisé par 2, puis 2. 732 00:38:25,410 --> 00:38:29,745 L'ordre des opérations, il fera 2 fois 10, 10 divisé par 2, puis 733 00:38:29,745 --> 00:38:32,720 ça va faire 20 + 5 + 2. 734 00:38:32,720 --> 00:38:37,020 Il est donc comme prévu, et vous pouvez utiliser parenthèses pour grouper des expressions. 735 00:38:37,020 --> 00:38:41,063 Vous ne pouvez pas utiliser des crochets à des expressions de groupe. 736 00:38:41,063 --> 00:38:41,544 Ouais? 737 00:38:41,544 --> 00:38:43,468 >> SPEAKER 5: Pourriez-vous fait juste revenir une seconde? 738 00:38:43,468 --> 00:38:47,316 Pouvez-vous jeter un int à une chaîne? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Donc, en C, vous pouvez jeter quoi que ce soit vous voulez ce que vous voulez. 740 00:38:53,330 --> 00:38:55,600 Cela ne signifie pas qu'il est une bonne chose à faire. 741 00:38:55,600 --> 00:38:59,760 Ainsi, lorsque vous lancez un int une chaîne, ce qui signifie - 742 00:38:59,760 --> 00:39:03,240 et nous allons entrer dans ce beaucoup plus approfondie - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Beaucoup plus tard. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Je ne veux pas en dire beaucoup plus tard, alors j'ai essayé de changer ma phrase. 745 00:39:06,840 --> 00:39:13,370 Nous allons entrer dans beaucoup plus approfondie plus tard où vraiment quand vous avez un 746 00:39:13,370 --> 00:39:14,810 variable chaîne - 747 00:39:14,810 --> 00:39:17,160 si une chaîne peut être arbitrairement longtemps, non? 748 00:39:17,160 --> 00:39:21,850 Et nous avons dit que un int est quatre octets et longue est la durée de huit 749 00:39:21,850 --> 00:39:23,620 octets et un flotteur est de quatre octets. 750 00:39:23,620 --> 00:39:29,520 Donc une chaîne, tout comme un int, ne dispose que d' un certain nombre d'octets à elle. 751 00:39:29,520 --> 00:39:31,800 Et ce sera quatre octets. 752 00:39:31,800 --> 00:39:34,750 >> Mais une chaîne peut être assez arbitrairement longue, non? 753 00:39:34,750 --> 00:39:40,190 Déjà si Bonjour tout le monde, si ce n'est 10 caractères ou que ce soit, c'est déjà 754 00:39:40,190 --> 00:39:42,670 va être sur les 4 octets Je peux entrer dans une chaîne. 755 00:39:42,670 --> 00:39:51,140 Et comment les chaînes fonctionnent vraiment, c'est que ils sont où en mémoire cette chaîne 756 00:39:51,140 --> 00:39:52,380 est conservé. 757 00:39:52,380 --> 00:39:57,290 >> Et ici, quand je dis chaîne x Bonjour tout le monde est égal, à l'intérieur de x est 758 00:39:57,290 --> 00:40:01,840 juste dire, oh, bonjour le monde est stocké à cet endroit particulier dans la mémoire. 759 00:40:01,840 --> 00:40:07,060 Donc, si nous essayons de jeter un entier à un chaîne, puis nous essayons d'interpréter 760 00:40:07,060 --> 00:40:10,500 une partie aléatoire de la mémoire comme une chaîne. 761 00:40:10,500 --> 00:40:14,465 Et qui rompt presque toujours les choses. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Mais si cela confond vous, nous couvrirons il 763 00:40:17,040 --> 00:40:17,550 plus en profondeur plus tard. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Ouais. 765 00:40:17,850 --> 00:40:20,540 C'est là que vous allez d'entrer dans les pointeurs. 766 00:40:20,540 --> 00:40:25,485 Et c'est une partie importante de deux semaines de ce cours. 767 00:40:25,485 --> 00:40:28,275 >> ENCEINTE 6: Est-ce que ça marche comme des objets dans d'autres langues ou pas vraiment? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Donc en d'autres langues, objets seraient représentés en utilisant des pointeurs. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Ce n'est pas la même chose, cependant. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Des pensées? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Non 774 00:40:43,760 --> 00:40:44,185 Pas de pensées. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Suivant. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Il suffit d'aller avec ça. 778 00:40:48,255 --> 00:40:48,670 Très bien. 779 00:40:48,670 --> 00:40:51,120 Donc modulo. 780 00:40:51,120 --> 00:40:53,900 Tout comme nous avons plus, moins, diviser et se multiplier. 781 00:40:53,900 --> 00:40:56,720 Donc modulo est celui que vous pouvez ne pas avoir vu avant. 782 00:40:56,720 --> 00:40:59,540 Et il dit simplement, donner moi le reste de. 783 00:40:59,540 --> 00:41:02,850 Ainsi, 55% de 10. 784 00:41:02,850 --> 00:41:06,840 Le reste de faire 55 divisé 10 serait 5. 785 00:41:06,840 --> 00:41:09,630 Ainsi, 55% de 10 est 5. 786 00:41:09,630 --> 00:41:12,260 Et 3% 5 serait 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 sera 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 sera de 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Une chose à noter à cela, aussi, est-il pourrait ne pas fonctionner comme prévu 790 00:41:20,670 --> 00:41:22,700 si vous utilisez un nombre négatif. 791 00:41:22,700 --> 00:41:26,215 Donc négative de 5% 4, certaines personnes pourriez penser que c'est - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 Que penseriez-vous négatif 5% 4 serait? 794 00:41:33,808 --> 00:41:34,792 >> SPEAKER 5: Une. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Ainsi, certaines personnes disent un, certains disent négative. 796 00:41:37,920 --> 00:41:38,450 Mais ce qui - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Je ne voudrais pas même avoir dit l'un d'entre eux. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Deux, désolé. 799 00:41:42,370 --> 00:41:43,240 Certaines personnes disent - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Trois. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Trois? 802 00:41:43,800 --> 00:41:44,890 >> ROB: négatif - 803 00:41:44,890 --> 00:41:45,950 ce qui était le - négatif cinq - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Trois, trois, trois. 805 00:41:47,100 --> 00:41:48,450 Désolé. 806 00:41:48,450 --> 00:41:51,910 Parce que modulo, en général, lorsque vous avez vu ailleurs, cela signifie généralement 807 00:41:51,910 --> 00:41:54,000 retourner un nombre positif, non? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Donc, quand nous disons en mathématiques, 10% de, ils ont tendance à vouloir vous donner - 809 00:42:01,160 --> 00:42:05,980 si nous MOD par 10, alors nous nous attendons à obtenir un nombre entre 0 et 9. 810 00:42:05,980 --> 00:42:09,860 Ici, ce n'est pas le cas que vous obtiendra des nombres négatifs retournés. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Donc négative de 5% 4 serait négative 1. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Mais il est rare que vous êtes mod-ment nombres négatifs pour commencer. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Passer ce. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Ouais. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Alors une dernière chose à signaler à propos de flotteurs, c'est que c'est un comportement dangereux, 819 00:42:36,400 --> 00:42:39,850 mais flotteurs ne sont pas une science exacte représentation. 820 00:42:39,850 --> 00:42:46,190 Pour en revenir à octets de nouveau, n'oubliez pas que int est toujours quatre octets et un 821 00:42:46,190 --> 00:42:47,830 flotteur est toujours quatre octets. 822 00:42:47,830 --> 00:42:51,340 Ainsi l'exemple de Lucas est très bonne. 823 00:42:51,340 --> 00:42:55,730 >> Alors, pensez à 1 divisé par 3. 824 00:42:55,730 --> 00:42:57,800 Donc, 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Si je n'ai que 32 bits, comment peut- Je stocke 0,33333 exactement? 826 00:43:03,540 --> 00:43:07,250 Et peut-être, pour une raison quelconque, vous dites, bien, bien, disons simplement 827 00:43:07,250 --> 00:43:13,210 que ce particulier 1011001, nous allons Autant dire que cela devrait être 0.333333. 828 00:43:13,210 --> 00:43:16,960 Eh bien, vous avez seulement un nombre fini de ces bits, il est donc impossible de 829 00:43:16,960 --> 00:43:22,550 représenter chaque virgule flottante simple valeur donnée seulement 32 bits. 830 00:43:22,550 --> 00:43:25,580 >> Eh bien, il est impossible de représenter une valeur en virgule flottante donnée infini - 831 00:43:25,580 --> 00:43:28,480 bien, étant donné un nombre fini de bits. 832 00:43:28,480 --> 00:43:38,265 Donc, la question ici est, bien, lorsque nous avons utilisé pour imprimer à deux décimales, 833 00:43:38,265 --> 00:43:42,000 Nous avons pris correctement la réponse 0,10. 834 00:43:42,000 --> 00:43:47,510 Mais sous le capot, c'est vraiment étant stocké le plus proche possible de 835 00:43:47,510 --> 00:43:51,790 0.10 que ces bits peut représenter. 836 00:43:51,790 --> 00:43:53,200 Est-ce sur la diapositive suivante? 837 00:43:53,200 --> 00:43:53,830 Ou n'est-ce pas? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Ouais, c'est ça. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Oui, vous pouvez simplement tirer les notes un peu. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Je vais juste faire un zoom dans le dernier sur ce point. 842 00:43:59,700 --> 00:44:00,950 Oh mon Dieu, c'est [inaudible]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Alors que nombre. 845 00:44:08,300 --> 00:44:12,300 C'est ce qui va être imprimé si nous courons ce programme. 846 00:44:12,300 --> 00:44:20,340 Et notez que ce n'est pas vraiment un gros problème si nous ne se soucier comme 847 00:44:20,340 --> 00:44:21,920 deux à trois décimales. 848 00:44:21,920 --> 00:44:26,700 Comme nous ne l'origine imprimé 0,10, et c'est pourquoi nous l'avons vu rien de mal. 849 00:44:26,700 --> 00:44:31,380 Mais une fois que nous commençons à entrer dans la exact, le nombre exact que c'est 850 00:44:31,380 --> 00:44:35,660 représentant, on voit qu'il ne peut pas représenter exactement 0,1. 851 00:44:35,660 --> 00:44:40,900 >> Et une partie du problème ici, c'est comme, bien, c'est très bien, mais, bien, 852 00:44:40,900 --> 00:44:46,120 en premier lieu, si nous avons essayé de faire, réponse est égale à 0,1 est égal? 853 00:44:46,120 --> 00:44:49,200 Est-ce que cela va revenir vrai ou faux? 854 00:44:49,200 --> 00:44:51,850 Et donc c'est difficile à dire. 855 00:44:51,850 --> 00:44:53,330 Je pense qu'il fait peut retourner true. 856 00:44:53,330 --> 00:44:55,265 Est-ce que le premier - 857 00:44:55,265 --> 00:44:56,180 Je ne sais pas. 858 00:44:56,180 --> 00:45:00,090 La réponse est une fois que vous commencer à traiter avec des valeurs en virgule flottante, vous avez à peu 859 00:45:00,090 --> 00:45:05,150 beaucoup ne devriez pas utiliser l'égalité à cause de cette imprécision. 860 00:45:05,150 --> 00:45:09,470 >> Et pour tout ce que vous savez, c'est la centième décimale que le 861 00:45:09,470 --> 00:45:13,670 virgule flottante n'a pas pu pour gérer correctement. 862 00:45:13,670 --> 00:45:18,180 Et si l'égalité sera simplement échouer même si le nombre - si vous aviez été 863 00:45:18,180 --> 00:45:24,450 en utilisant les chiffres exacts, les chiffres devraient ont été exactement les mêmes. 864 00:45:24,450 --> 00:45:27,790 C'est au cours de comme 50 calculs utilisant ces flottante 865 00:45:27,790 --> 00:45:30,270 valeurs de point, l'erreur peut construire et plus et plus, et 866 00:45:30,270 --> 00:45:31,125 les choses simplement se tromper. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: Et il ya eu vraiment exemples célèbres de ce qui se passe. 868 00:45:33,870 --> 00:45:37,190 Comme les ingénieurs de la NASA ont obtenu ce mauvaises, provoquant roquettes à exploser dans 869 00:45:37,190 --> 00:45:38,665 l'air après qu'ils ont été lancés. 870 00:45:38,665 --> 00:45:41,490 Et beaucoup de questions de ce genre. 871 00:45:41,490 --> 00:45:41,956 Donc oui. 872 00:45:41,956 --> 00:45:45,218 >> ENCEINTE 6: Quand vous dites 0,3 f, ça tronque le reste? 873 00:45:45,218 --> 00:45:46,468 Ou faut-il arrondir ou vers le bas? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Est-ce que printf autour d'elle? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Je pense tronque printf. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Ainsi, nous pouvons aller de même dans le sens opposé direction de celui-ci où, dans ce cas, 879 00:45:59,890 --> 00:46:03,320 le plus proche, il pourrait représenter 0,1 était avec ce numéro. 880 00:46:03,320 --> 00:46:06,820 Le plus proche, il pourrait être en mesure de représenter 0,2 est en face de l' 881 00:46:06,820 --> 00:46:11,420 direction, 0,199999996356 ou quelque chose. 882 00:46:11,420 --> 00:46:17,480 Donc, si nous sommes allés dans cette direction choses, alors printf 0,3 f reviendraient 883 00:46:17,480 --> 00:46:20,866 1,99 au lieu de 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Et je ne suis pas tout à fait vous sur ce point. 885 00:46:22,960 --> 00:46:25,430 Vous pouvez écrire un petit peu programme pour vérifier cela. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Bien, ce que nous sommes sûrs, c'est que si vous avez essayé de lancer ce à un 887 00:46:29,370 --> 00:46:33,660 int, et jetant un int va amener à tronquer la décimale, si 888 00:46:33,660 --> 00:46:38,140 vous essayez de jeter 1.9999999 à un int, vous obtiendrez 1. 889 00:46:38,140 --> 00:46:41,440 Et si vous devez généralement utiliser la fonction de tour dans la bibliothèque de mathématiques. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Questions? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Donc passer à conditions et les expressions booléennes. 895 00:46:54,000 --> 00:46:58,120 Donc, vous avez vu ces avant. 896 00:46:58,120 --> 00:47:07,420 Et en fait, permettez-moi de m'assurer que mon ordinateur est dans le bon format ici. 897 00:47:07,420 --> 00:47:08,670 Espace. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Désolé, nous allons avoir à traiter une peu à coupure au niveau des bords. 900 00:47:13,870 --> 00:47:15,830 >> Mais oui, vous les gars ont vu ce avant dans Scratch. 901 00:47:15,830 --> 00:47:19,930 Donc, ce droit est ici une expression qui est utilisé dans 902 00:47:19,930 --> 00:47:21,250 une instruction conditionnelle. 903 00:47:21,250 --> 00:47:23,930 Donc répondre à plus de volonté zéro vous dire vrai ou faux. 904 00:47:23,930 --> 00:47:26,530 Et ceux-ci sont très importants, car ils nous permettent d'introduire 905 00:47:26,530 --> 00:47:28,670 logique dans notre code. 906 00:47:28,670 --> 00:47:32,820 >> Ainsi, par exemple, il s'agit d'un programme écrit en Scratch qui demande à l'utilisateur 907 00:47:32,820 --> 00:47:36,980 pour un nombre entier et leur dit si l'entier que l'on vous a donné était un 908 00:47:36,980 --> 00:47:38,690 nombre positif ou négatif. 909 00:47:38,690 --> 00:47:42,980 Et la conversion ici pour voir est vous imprimez d'abord la déclaration, 910 00:47:42,980 --> 00:47:43,870 me donner un nombre entier. 911 00:47:43,870 --> 00:47:45,980 Et puis vous leur demandez un entier. 912 00:47:45,980 --> 00:47:49,870 >> Et puis vous utilisez la logique conditionnelle sur ici pour vérifier si ce nombre 913 00:47:49,870 --> 00:47:52,030 était en fait supérieur à zéro ou non. 914 00:47:52,030 --> 00:47:58,960 Nous avons donc ici une expression booléenne l'intérieur d'une conditionnelle If. 915 00:47:58,960 --> 00:48:00,660 Y at-il des questions? 916 00:48:00,660 --> 00:48:03,030 Y at-il des questions à ce sujet? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Il n'y a donc plus que plus grand que, bien sûr. 919 00:48:06,140 --> 00:48:10,385 Vous pouvez construire des expressions booléennes utilisant la plupart des sortes de choses que vous 920 00:48:10,385 --> 00:48:11,150 songerait en mathématiques. 921 00:48:11,150 --> 00:48:12,370 Ainsi supérieure. 922 00:48:12,370 --> 00:48:13,740 Cela devrait être un moins que. 923 00:48:13,740 --> 00:48:14,990 Désolé. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 Et l'espacement. 926 00:48:19,760 --> 00:48:22,971 >> ROB: A Dieu ne plaise que vous quittez. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: Très bien. 928 00:48:23,620 --> 00:48:25,950 Donc, supérieur à, inférieur à, supérieur que, ou égale à, inférieure 929 00:48:25,950 --> 00:48:27,070 que, ou égale à. 930 00:48:27,070 --> 00:48:31,980 Nous utilisons égaux doubles pour vérifier l'égalité, car seul moyen est égal à 931 00:48:31,980 --> 00:48:32,810 affectation, non? 932 00:48:32,810 --> 00:48:33,140 Oui. 933 00:48:33,140 --> 00:48:37,130 Et puis nous pouvons également faire des égaux et non par en utilisant le point d'exclamation, des égaux. 934 00:48:37,130 --> 00:48:41,530 >> Et ce point d'exclamation peut également être étendue de sorte que si vous voulez 935 00:48:41,530 --> 00:48:44,050 pour inverser toute sorte de Boolean expression, vous pouvez le faire. 936 00:48:44,050 --> 00:48:48,530 Donc, ce sera la valeur true que si la réponse est moins 937 00:48:48,530 --> 00:48:51,240 supérieure ou égale à zéro. 938 00:48:51,240 --> 00:48:53,950 Vous avez des questions à ce sujet? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Ainsi, vous pouvez également combiner ces expressions utilisant logique et et 941 00:48:58,840 --> 00:48:59,790 Ou logique. 942 00:48:59,790 --> 00:49:03,530 Donc, ce n'est que le symbole et, qui devrait être Shift, 7. 943 00:49:03,530 --> 00:49:07,720 Et c'est le symbole de la conduite, ce qui est pas un minuscule L. C'est une 944 00:49:07,720 --> 00:49:09,440 c'est juste au-dessus de votre touche Entrée. 945 00:49:09,440 --> 00:49:12,870 Donc, vous utilisez deux d'entre eux pour symboliser Et la logique logique Ou. 946 00:49:12,870 --> 00:49:18,180 >> Donc, cela ne fera que retourner vrai si la réponse est un, deux, trois, ou quatre. 947 00:49:18,180 --> 00:49:23,030 Et cela ne fera que retourner vrai si la réponse est au-delà de chaque côté. 948 00:49:23,030 --> 00:49:26,190 Donc ce n'est pas un, deux, trois, ou quatre. 949 00:49:26,190 --> 00:49:28,385 Et la façon dont vous souhaitez utiliser que, dans une expression - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Ou un zéro ou un cinq. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: zéro ou un cinq. 952 00:49:32,200 --> 00:49:32,380 Désolé. 953 00:49:32,380 --> 00:49:33,320 Oui, oui, oui. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 Et ici maintenant, de la même façon que vous utiliserait cette expression, une plus petite 956 00:49:38,980 --> 00:49:42,000 côté de l'expression d'un Si conditionnelle déclaration, vous devez également utiliser la 957 00:49:42,000 --> 00:49:47,800 même en mettant simplement à l'intérieur de les parenthèses de l'instruction If. 958 00:49:47,800 --> 00:49:54,020 Donc ce printf ne tirer si la réponse est un, deux, trois, ou quatre. 959 00:49:54,020 --> 00:49:56,002 Toutes les questions sur la combinaison expressions? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Donc, il ya une autre condition construire que nous appelons un if / else. 962 00:50:04,240 --> 00:50:08,120 Donc, fondamentalement, cela signifie maintenant, OK, Si quelque chose que je voulais vérifier était pas 963 00:50:08,120 --> 00:50:11,600 vrai, puis aller à la Else et effectuer que d'autres mesures. 964 00:50:11,600 --> 00:50:15,570 Donc, dans ce cas particulier, j'ai demandé l'utilisateur pour un nombre entier. 965 00:50:15,570 --> 00:50:17,790 Est le nombre entier plus grand que zéro? 966 00:50:17,790 --> 00:50:18,310 Oui? 967 00:50:18,310 --> 00:50:20,100 Eh bien, ils ont choisi un nombre positif. 968 00:50:20,100 --> 00:50:22,320 Si non, alors il doit avoir négatif ou égal à zéro. 969 00:50:22,320 --> 00:50:27,530 Donc, vous avez choisi un nombre négatif ou un zéro dans ce cas. 970 00:50:27,530 --> 00:50:29,235 Oui. 971 00:50:29,235 --> 00:50:30,485 Ou un zéro. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> Et puis nous avons également if / else, Si et Else. 974 00:50:39,300 --> 00:50:45,640 Donc nous permet exécuter une séquence d' les choses que si les premiers ne. 975 00:50:45,640 --> 00:50:49,540 Donc dans ce cas, maintenant que nous faisons le dernier que vous choisissez zéro. 976 00:50:49,540 --> 00:50:53,080 Donc, si ils ne ramassés positive ni un nombre négatif, alors ils doivent 977 00:50:53,080 --> 00:50:53,640 ont repris à zéro. 978 00:50:53,640 --> 00:50:56,720 Donc, il va juste en bas de la chaîne comme ceci. 979 00:50:56,720 --> 00:50:59,960 >> Ainsi, un exemple de la façon dont un Si c'est différent de - 980 00:50:59,960 --> 00:51:02,590 If / Else est différent de juste une séquence de Ifs. 981 00:51:02,590 --> 00:51:07,680 Et c'est une question commune que les gens demandent est, bien, si vous obtenez comme un 982 00:51:07,680 --> 00:51:11,265 95 CS50, ce sera cette programme vous dire? 983 00:51:11,265 --> 00:51:12,600 >> SPEAKER 5: Vous avez un A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Oui. 985 00:51:13,490 --> 00:51:14,960 Vous avez tout seul l'un de ceux de droite. 986 00:51:14,960 --> 00:51:17,130 Vous avez un A, vous avez obtenu un B, vous obtenu un C et un D, ​​non? 987 00:51:17,130 --> 00:51:19,770 Donc, tous ces composants sont évalués dans l'ordre. 988 00:51:19,770 --> 00:51:23,570 Ainsi, alors que la 95 est supérieur à 90, il est également supérieur à 80, il est aussi 989 00:51:23,570 --> 00:51:25,790 supérieur à 70, et il est également supérieur à 60. 990 00:51:25,790 --> 00:51:27,620 Donc, vous avez toutes ces qualités. 991 00:51:27,620 --> 00:51:31,630 Et je suppose que vous le feriez ne veut A. 992 00:51:31,630 --> 00:51:34,060 >> La façon de résoudre ce problème est de remplacer ceux qui Else / s «Si. 993 00:51:34,060 --> 00:51:37,540 Donc, dans ce scénario, il voit que 95 est supérieur à 90, puis il le fait 994 00:51:37,540 --> 00:51:38,885 pas évaluer le reste des états. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Vous avez des questions à ce sujet? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Donc, il ya une autre sorte de condition structure que nous avons ici, qui nous 999 00:51:52,470 --> 00:51:53,390 appeler une instruction switch. 1000 00:51:53,390 --> 00:51:57,390 Donc, ce qui vous permet de vérifier essentiellement quelle est la valeur d'un numéro que vous mettez 1001 00:51:57,390 --> 00:51:59,000 dans l'instruction switch est. 1002 00:51:59,000 --> 00:52:03,200 Donc, dans ce scénario, nous commutation sur n, et nous disons, oh, si n est 1003 00:52:03,200 --> 00:52:04,710 un, puis imprimer cette déclaration. 1004 00:52:04,710 --> 00:52:07,910 Et puis briser, ce qui signifie sortie de l'instruction switch. 1005 00:52:07,910 --> 00:52:12,670 >> Si ce n'était pas un, alors, bien, juste vérifier éventuellement l'ensemble de ces cas. 1006 00:52:12,670 --> 00:52:16,280 Et il vérifie si c'est un ou deux ou trois, et il imprime en conséquence. 1007 00:52:16,280 --> 00:52:19,780 Et ce que ce mot-clé par défaut ici moyen est si elles ne sont pas entrés tout 1008 00:52:19,780 --> 00:52:21,690 de ceux, dites non valide. 1009 00:52:21,690 --> 00:52:25,910 Alors disons que je demande n et l'utilisateur me donne quatre. 1010 00:52:25,910 --> 00:52:29,470 Eh bien, il correspond à aucun de ces cas, il permet d'imprimer ce qui est dans le 1011 00:52:29,470 --> 00:52:30,540 section par défaut. 1012 00:52:30,540 --> 00:52:31,180 Oui, la question? 1013 00:52:31,180 --> 00:52:32,614 >> SPEAKER 5: Pouvez-vous utiliser booléenne au lieu d'expressions 1014 00:52:32,614 --> 00:52:33,570 un, deux, ou trois? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Donc la question est peut-on utiliser Expressions booléennes au lieu d'un, 1016 00:52:36,940 --> 00:52:37,940 deux, trois et? 1017 00:52:37,940 --> 00:52:40,520 Et en C, je vous crois ne peut pas le faire. 1018 00:52:40,520 --> 00:52:44,320 Mais dans d'autres langues, dont vous pourriez rencontrer à la fin de l' 1019 00:52:44,320 --> 00:52:46,460 semestre comme le JavaScript, vous pouvez. 1020 00:52:46,460 --> 00:52:50,050 Eh bien, vous auriez à calculer première que la valeur et l'utiliser ensuite dans le 1021 00:52:50,050 --> 00:52:50,650 déclaration basculer. 1022 00:52:50,650 --> 00:52:50,930 Ouais? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Donc, une partie de la prestation de l'interrupteur déclarations est de penser si vous l'avez fait 1024 00:52:54,760 --> 00:52:58,680 comme un if / else, si comme si n est égal à est égal à un ou que ce soit. 1025 00:52:58,680 --> 00:53:00,300 Else / Si n est égal à égale deux, peu importe. 1026 00:53:00,300 --> 00:53:01,960 Else / Si n est égal à égale trois. 1027 00:53:01,960 --> 00:53:05,930 Donc, la façon dont le programme est-il courrait serait séquentiellement aller dans cette liste 1028 00:53:05,930 --> 00:53:07,500 et vérifier, l'un est N? 1029 00:53:07,500 --> 00:53:08,040 Nan. 1030 00:53:08,040 --> 00:53:09,070 Est n deux? 1031 00:53:09,070 --> 00:53:09,490 Nan. 1032 00:53:09,490 --> 00:53:10,940 Est n trois? 1033 00:53:10,940 --> 00:53:11,710 Ouais. 1034 00:53:11,710 --> 00:53:12,610 Faire. 1035 00:53:12,610 --> 00:53:15,270 >> Considérant que les états de commutation, il est effectivement en mesure de compiler pour être 1036 00:53:15,270 --> 00:53:16,360 vraiment très rapide. 1037 00:53:16,360 --> 00:53:19,550 Et dès qu'il dit commutateur, il dit, tout droit, n est deux, je suis 1038 00:53:19,550 --> 00:53:23,060 aller immédiatement pour aller à l'endroit où Je suis censé commencer à exécuter. 1039 00:53:23,060 --> 00:53:26,080 Je ne vais pas vérifier d'abord, n est un, deux est le N? 1040 00:53:26,080 --> 00:53:28,860 Il peut immédiatement commencer à faire ce qu'il est censé faire. 1041 00:53:28,860 --> 00:53:33,830 >> Et à cause de cela, il ne peut pas prendre conditions booléennes. 1042 00:53:33,830 --> 00:53:36,480 Ou bien il aurait à faire la séquentiel, comme, tout à droite, est n 1043 00:53:36,480 --> 00:53:37,820 supérieur à zéro? 1044 00:53:37,820 --> 00:53:41,140 C'est autre n supérieur à 10 ou autre. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: Dans ce cas, si vous avez utilisé Si / Sinon, Si de, puis le commutateur serait 1046 00:53:44,780 --> 00:53:47,792 fonctionner environ trois fois plus vite que le Si / Sinon, si. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Nous pouvons organiser le commutateur dans cette d'une manière que nous ne brisons pas 1049 00:53:56,040 --> 00:53:57,520 après chacun des cas. 1050 00:53:57,520 --> 00:54:00,960 Donc dans ce cas, je vais diviser l' numéros que nous choisissons en un seul et 1051 00:54:00,960 --> 00:54:04,250 deux n'étant pas un nombre élevé et trois étant un nombre élevé. 1052 00:54:04,250 --> 00:54:08,290 >> Donc dans ce cas, si n est égal à un ou deux, il a frappé le cas et alors il sera 1053 00:54:08,290 --> 00:54:10,640 passer à travers, parce il n'ya pas de pause. 1054 00:54:10,640 --> 00:54:11,610 Et il finira par ici. 1055 00:54:11,610 --> 00:54:15,360 Donc, si nous choisissons un, il fera le printf et puis casser afin qu'aucun de 1056 00:54:15,360 --> 00:54:17,610 ceci est exécuté. 1057 00:54:17,610 --> 00:54:21,870 Et bien sûr, si elles entrent dans trois ou quelque chose d'autre, alors il va sauter 1058 00:54:21,870 --> 00:54:25,320 ceux qui y sont et ne pas aller, et il va exécuter à la place le 1059 00:54:25,320 --> 00:54:27,490 ligne correspondant. 1060 00:54:27,490 --> 00:54:29,390 Y at-il des questions à ce sujet? 1061 00:54:29,390 --> 00:54:29,780 Oui? 1062 00:54:29,780 --> 00:54:32,642 >> SPEAKER 4: Souhaitez-vous obtenir une erreur si vous eu une pause après un cas mais il 1063 00:54:32,642 --> 00:54:34,550 ne pas avoir quelque chose pour qu'il fasse? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: La question est donc auriez-vous une erreur si vous avez une pause après 1065 00:54:37,820 --> 00:54:39,730 Premier cas, mais il n'y a rien à faire? 1066 00:54:39,730 --> 00:54:41,520 Et la réponse est non. 1067 00:54:41,520 --> 00:54:43,172 Vous n'obtiendrez pas réellement une erreur. 1068 00:54:43,172 --> 00:54:44,590 Ouais, hmm mm. 1069 00:54:44,590 --> 00:54:54,540 >> Donc, comme une sorte de petit changement ici, Je vais mettre un printf ici. 1070 00:54:54,540 --> 00:54:55,790 Oups. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Alors, que serait-ce si imprimer J'ai mis un en en entrée? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Ouais. 1075 00:55:07,770 --> 00:55:10,360 Il vous dira qu'il n'a pas pris un nombre élevé deux fois, non? 1076 00:55:10,360 --> 00:55:13,500 Parce que ce serait frapper ce premier cas, il ne serait pas briser, et il tomberait 1077 00:55:13,500 --> 00:55:15,730 à travers le deuxième cas. 1078 00:55:15,730 --> 00:55:16,950 Vous avez des questions à ce sujet? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Avez-vous une autre question? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, refroidir. 1081 00:55:20,840 --> 00:55:22,400 Très bien. 1082 00:55:22,400 --> 00:55:25,780 Donc, il ya quelque chose d'autre que nous appelons une opérateur ternaire qui est essentiellement un 1083 00:55:25,780 --> 00:55:29,010 syntaxe alternative pour faire Si puis le reste. 1084 00:55:29,010 --> 00:55:30,470 Et il vous permet de faire tout cela sur une seule ligne. 1085 00:55:30,470 --> 00:55:34,110 Donc, dans ce programme particulier, Je demande à l'utilisateur de n. 1086 00:55:34,110 --> 00:55:37,190 Et si n est supérieur à 100, je dis eux, ils ont choisi un nombre élevé. 1087 00:55:37,190 --> 00:55:39,560 Sinon je leur dis qu'ils choisi un faible nombre. 1088 00:55:39,560 --> 00:55:43,030 >> Nous pouvons donc utiliser cette syntaxe très long, chaîne, S, puis vérifiez si n est 1089 00:55:43,030 --> 00:55:45,260 supérieur à 100 et assigner en conséquence. 1090 00:55:45,260 --> 00:55:49,450 Mais nous pouvons faire cela beaucoup plus concise en utilisant cette syntaxe de l'opérateur ternaire 1091 00:55:49,450 --> 00:55:52,090 ce qui implique une question marque et un colon. 1092 00:55:52,090 --> 00:55:55,070 Donc, le point d'interrogation est essentiellement poser une question, non? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Peut-être zoomer sur ce point. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Oui. 1095 00:55:57,372 --> 00:56:00,210 Bon point. 1096 00:56:00,210 --> 00:56:02,550 Donc, c'est l'opérateur ternaire. 1097 00:56:02,550 --> 00:56:06,100 Je demande d'abord la question, n est supérieur à 100? 1098 00:56:06,100 --> 00:56:09,770 Si c'est le cas, j'exécute la première partie avant du côlon. 1099 00:56:09,770 --> 00:56:13,360 Si ce n'est pas, alors j'exécute l' deuxième partie après la virgule. 1100 00:56:13,360 --> 00:56:16,640 Donc, si n est supérieur à 100, il prend de haut et met 1101 00:56:16,640 --> 00:56:18,360 que dans la chaîne s. 1102 00:56:18,360 --> 00:56:22,170 Si n est inférieur à 100, il reprend bas et met alors que dans la chaîne s. 1103 00:56:22,170 --> 00:56:30,186 Donc, ça va condenser ce gros morceau vers le bas dans cette seule ligne. 1104 00:56:30,186 --> 00:56:32,010 >> SPEAKER 5: Est-ce populaire? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Oui, il est très populaire pour les choses où l'essentiel que vous souhaitez 1106 00:56:36,070 --> 00:56:38,700 ne une mission basée sur une sorte de condition. 1107 00:56:38,700 --> 00:56:43,110 Et dans ce cas, nous avons essayé d'attribuer une valeur à la chaîne s. 1108 00:56:43,110 --> 00:56:44,840 Ce n'est pas si - 1109 00:56:44,840 --> 00:56:47,670 Je suppose que je n'ai pas vraiment préfère ne pas dans les autres cas. 1110 00:56:47,670 --> 00:56:49,390 Mais il est particulièrement utile pour cette mission. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: C'est un modèle assez commun où vous avez une variable qui 1112 00:56:54,490 --> 00:56:58,200 vous allez me dire, si quelque chose, mettre en cette variable à un valeur; d'autre, mis en 1113 00:56:58,200 --> 00:56:59,810 cette variable à une autre valeur. 1114 00:56:59,810 --> 00:57:03,360 Et c'est le scénario où utiliser un ternaire. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: Et vous économisez beaucoup de lignes, non? 1116 00:57:05,220 --> 00:57:08,090 Et il est tout simplement votre code sans doute un peu plus lisible. 1117 00:57:08,090 --> 00:57:08,635 Oui, la question? 1118 00:57:08,635 --> 00:57:12,384 >> ENCEINTE 6: Pour un ternaire, pourriez-vous aller, les égaux chaîne de s, point d'interrogation? 1119 00:57:12,384 --> 00:57:15,280 Et puis vous pouvez avoir, par exemple, cinq options différentes. 1120 00:57:15,280 --> 00:57:18,310 Et en fonction de ce que le nombre de n a été, choisiriez-vous un de ceux? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Donc la question est, est-il un sorte de syntaxe où vous pouvez faire chaîne 1122 00:57:22,210 --> 00:57:25,910 s est égal à n, et ensuite plus de deux options après que point d'interrogation? 1123 00:57:25,910 --> 00:57:29,740 Et une réponse est simple: non, il n'y a pas vraiment une bonne façon de le faire que si 1124 00:57:29,740 --> 00:57:33,850 vous voulez nid ternaire multiple les opérateurs à l'intérieur de l'autre. 1125 00:57:33,850 --> 00:57:38,050 >> Vous pourriez faire comme n supérieur à 100, point d'interrogation, et puis un autre 1126 00:57:38,050 --> 00:57:41,850 opérateur ternaire, n supérieur à 50, point d'interrogation, et le nid de cette façon. 1127 00:57:41,850 --> 00:57:45,240 Mais dans ce scénario, votre code est se genre de illisible et désordonné, 1128 00:57:45,240 --> 00:57:47,920 et il pourrait être préférable de simplement aller à une instruction If / Else à ce point. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: Et aussi, comme une note côté, PHP met en œuvre de façon incorrecte le ternaire 1130 00:57:54,530 --> 00:57:58,053 de telle sorte que l'opérateur ternaires imbriqués ne même pas travailler comme ils le devraient. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Ouais. 1132 00:57:58,840 --> 00:58:01,170 Ainsi, il devient un peu confus, surtout quand vous sortez 1133 00:58:01,170 --> 00:58:02,145 à différentes langues. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Il est assez déroutant que langues sont mal à ce sujet. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Donc en fait, juste pour clarifier, que tout le monde sait ce que 1137 00:58:11,510 --> 00:58:13,900 % S fait ici? 1138 00:58:13,900 --> 00:58:15,650 Vous avez des questions à ce sujet? 1139 00:58:15,650 --> 00:58:19,760 Je pense juste pour la caméra, le% s permet essentiellement nous mettons un espace réservé 1140 00:58:19,760 --> 00:58:20,790 pour une chaîne. 1141 00:58:20,790 --> 00:58:23,920 Et puis à la fin, nous précisons que la variable que nous voulons mettre en ce 1142 00:58:23,920 --> 00:58:25,500 place holder est s. 1143 00:58:25,500 --> 00:58:27,730 Alors que prend essentiellement s et il met ici. 1144 00:58:27,730 --> 00:58:32,130 Et puis il affichera, vous avez choisi une grande ou que vous avez choisi un faible nombre. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Donc boucles vous permettent d'effectuer les choses en mouvements circulaires, non? 1147 00:58:36,970 --> 00:58:40,300 Vous pourriez avoir rencontré ce dans Scratch sous la forme de boucles toujours 1148 00:58:40,300 --> 00:58:45,650 ou Répéter jusqu'à ou Répéter un particulier nombre de fois. 1149 00:58:45,650 --> 00:58:47,540 Alors pourquoi est-ce bon pour nous? 1150 00:58:47,540 --> 00:58:51,500 Eh bien, en C, disons que nous avons cette chanson mise en œuvre dans Scratch 1151 00:58:51,500 --> 00:58:53,450 chante, c'est la chanson qui ne se termine jamais. 1152 00:58:53,450 --> 00:58:55,710 Il va juste encore et encore et pour toujours et à jamais. 1153 00:58:55,710 --> 00:58:59,395 Eh bien, vous ne pouvez pas vraiment faire un programme qui a un nombre infini de printf 1154 00:58:59,395 --> 00:59:00,850 déclarations en elle, non? 1155 00:59:00,850 --> 00:59:04,900 >> Donc, dans ce scénario particulier, d'une façon que vous pourriez faire ce travail et 1156 00:59:04,900 --> 00:59:09,330 à faire imprimer à jamais est à au lieu d'utiliser une boucle While. 1157 00:59:09,330 --> 00:59:13,640 Ainsi, une boucle While exécute ce qui est dans le corps des deux croisillons que 1158 00:59:13,640 --> 00:59:17,250 qui lui appartient sur la base de ce la condition est. 1159 00:59:17,250 --> 00:59:21,170 Donc, dans cet exemple particulier avant, si nous voulons imprimer à jamais, ce qui 1160 00:59:21,170 --> 00:59:23,590 pouvons-nous faire? 1161 00:59:23,590 --> 00:59:25,190 Oui, bien sûr, non? 1162 00:59:25,190 --> 00:59:32,290 >> Donc, ce genre de combine l'idée d'une expression booléenne 1163 00:59:32,290 --> 00:59:33,610 le long d'une boucle. 1164 00:59:33,610 --> 00:59:35,780 Et nous avons appris booléenne expressions antérieures. 1165 00:59:35,780 --> 00:59:39,650 Donc, chaque fois que l'état intérieur de Alors que reste vrai, cette boucle 1166 00:59:39,650 --> 00:59:41,480 exécutera sur et sur et sur. 1167 00:59:41,480 --> 00:59:44,640 Et dans ce cas, si nous lui fournissons juste avec la vraie, ce qui provoque une infinie 1168 00:59:44,640 --> 00:59:49,310 boucle qui imprime la chanson encore et encore et comme nous voulions avant sans 1169 00:59:49,310 --> 00:59:52,410 avoir un programme qui a une infinie nombre de printf, qui est 1170 00:59:52,410 --> 00:59:55,220 pas possible. 1171 00:59:55,220 --> 00:59:57,810 >> Donc, plus convaincante, même si, vous pouvez l'utiliser avec un 1172 00:59:57,810 --> 00:59:59,710 variable et une condition. 1173 00:59:59,710 --> 01:00:04,420 Alors disons que nous voulons répéter l' phrase, totalement loufoque, 10 fois. 1174 01:00:04,420 --> 01:00:08,380 Donc, ce que vous pouvez faire avec une boucle While est vous pouvez d'abord initialiser un compteur 1175 01:00:08,380 --> 01:00:10,860 extérieur variable de la Bien que la boucle à 10. 1176 01:00:10,860 --> 01:00:14,360 Et puis en fait, chaque fois que vous allez dans la boucle While, vous imprimez 1177 01:00:14,360 --> 01:00:19,090 la déclaration et vous diminuez la variable de compteur jusqu'à ce que, à la fin, 1178 01:00:19,090 --> 01:00:23,020 à un certain moment, une fois que nous soustrayons-je assez fois, 1 de I suffisamment de fois - 1179 01:00:23,020 --> 01:00:27,290 et juste pour clarifier, je minus minus signifie que je I est égale à moins 1. 1180 01:00:27,290 --> 01:00:31,280 >> Ce sera essentiellement apporter je jusqu'à la point où une fois que j'ai touché zéro, ce 1181 01:00:31,280 --> 01:00:35,260 condition n'est plus vrai et de sorte qu'il sort hors de la boucle. 1182 01:00:35,260 --> 01:00:37,045 Donc totalement loufoque que imprime 10 fois. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Une question sur une boucle While? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Donc, il ya une manière que nous pouvons faire ce que nous venons de fait d'une manière plus concise avec 1188 01:00:50,550 --> 01:00:51,715 ce que nous appelons une boucle. 1189 01:00:51,715 --> 01:00:55,750 Donc, pour une boucle est constitué d'un l'initialisation, un état, et un 1190 01:00:55,750 --> 01:00:58,950 mise à jour, tout comme nous avions avant dans cette boucle While. 1191 01:00:58,950 --> 01:00:59,890 Donc, nous allons jeter un coup d'oeil. 1192 01:00:59,890 --> 01:01:02,900 Dans cette boucle While, nous avons eu une l'initialisation, puis nous avons eu une 1193 01:01:02,900 --> 01:01:04,260 condition que nous avons vérifié. 1194 01:01:04,260 --> 01:01:06,450 Et puis nous avons eu une mise à jour étape au sommet. 1195 01:01:06,450 --> 01:01:10,060 >> Avec une boucle For, cela prend essentiellement ces trois choses et condense 1196 01:01:10,060 --> 01:01:11,370 décompose en une ligne. 1197 01:01:11,370 --> 01:01:15,130 Donc, la première chose qu'il fait dans la Pour la boucle est l'initialisation. 1198 01:01:15,130 --> 01:01:19,090 Et puis vous faites un point-virgule, puis vous faites la condition, qui est je 1199 01:01:19,090 --> 01:01:22,200 supérieur à zéro va là-bas, et ensuite l'étape de mise à jour. 1200 01:01:22,200 --> 01:01:26,470 Donc cela devient effectuée à la fin du corps de la boucle. 1201 01:01:26,470 --> 01:01:28,790 Donc, ces deux programmes sont essentiellement équivalent. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Vous avez des questions? 1204 01:01:33,870 --> 01:01:37,000 Alors, quelle est une différence entre les deux? 1205 01:01:37,000 --> 01:01:38,000 Quelqu'un peut-il le souligner? 1206 01:01:38,000 --> 01:01:40,480 Il pourrait être un peu subtile. 1207 01:01:40,480 --> 01:01:41,930 C'est juste une très petite différence. 1208 01:01:41,930 --> 01:01:42,330 Oui? 1209 01:01:42,330 --> 01:01:49,008 >> SPEAKER 5: Vous ne seriez pas en mesure d'utiliser Je la variable en dehors de la boucle Pour 1210 01:01:49,008 --> 01:01:49,962 [Inaudible]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Exactement. 1212 01:01:50,900 --> 01:01:53,550 Donc, c'est quelque chose que nous allons arriver à appelé plus tard la portée des variables. 1213 01:01:53,550 --> 01:01:56,610 Mais essentiellement, ce int vie I en dehors de cette boucle While. 1214 01:01:56,610 --> 01:01:59,800 Donc, une fois cette boucle While est fait l'exécution, je serai en mesure d'utiliser la suite, j'ai 1215 01:01:59,800 --> 01:02:00,880 dans le programme. 1216 01:02:00,880 --> 01:02:05,430 >> Considérant que cette boucle For, ce int je est scope intérieur de cette boucle For. 1217 01:02:05,430 --> 01:02:10,240 Et parce qu'il est à l'intérieur de cette partie Pour de la boucle, qui commence 1218 01:02:10,240 --> 01:02:13,200 les parenthèses et les extrémités avec l'accolade là-bas. 1219 01:02:13,200 --> 01:02:16,120 Tout ce qui est déclarée à l'intérieur de ici ne peut pas être utilisé à l'extérieur. 1220 01:02:16,120 --> 01:02:20,420 Donc, si je tente d'utiliser Je l'extérieur, ça va dites-moi, symbole non déclaré. 1221 01:02:20,420 --> 01:02:22,420 Et l'essentiel, je ne veux pas être capable de l'utiliser. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: Et bien, il ya 10 ans, en littéralement tous les cas, les accolades sont 1223 01:02:28,460 --> 01:02:31,140 ce que vous utilisez afin de déterminer la portée d'une variable. 1224 01:02:31,140 --> 01:02:37,240 Alors là, int i est égal à 10 est déclarée à l'intérieur de cette 1225 01:02:37,240 --> 01:02:38,520 jeu d'accolades. 1226 01:02:38,520 --> 01:02:42,530 Et alors aussi longtemps que vous essayez d'utiliser I avant cette accolade, c'est bien. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Vous pouvez voir lorsque vous tapez faire, vous voir tiret, tiret, std, égaux, c99. 1229 01:02:51,460 --> 01:02:57,100 >> C'est donc une version ultérieure de C que GCC a mis en place qui donne également 1230 01:02:57,100 --> 01:02:58,740 ce raccourci. 1231 01:02:58,740 --> 01:03:03,505 Donc, cette habitude de ne pas être autorisés dans C. Et vous pouvez voir pourquoi, parce que cette int 1232 01:03:03,505 --> 01:03:07,600 I est en dehors de cette accolade mais il est toujours considéré comme étant dans l' 1233 01:03:07,600 --> 01:03:09,750 champ d'application de ces accolades. 1234 01:03:09,750 --> 01:03:14,120 Mais c'est une chose très pratique, et il est donc une bonne extension. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Des questions? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Donc, ce qui est plus utile est que, parfois, vous voulez sorte de dynamisme 1239 01:03:22,820 --> 01:03:23,410 la boucle, non? 1240 01:03:23,410 --> 01:03:26,350 Vous ne voulez pas imprimer seulement nécessairement totalement dérangé tout le temps, vous 1241 01:03:26,350 --> 01:03:28,650 vouloir le compte à rebours à partir de 10 ou quelque chose. 1242 01:03:28,650 --> 01:03:32,010 Et si vous pouvez utiliser la variable compteur à l'intérieur de la boucle ainsi que. 1243 01:03:32,010 --> 01:03:35,530 Et dans ce cas, ce programme vient compte à rebours de 10 tout en bas. 1244 01:03:35,530 --> 01:03:39,260 Et que fait-il pas imprimer? 1245 01:03:39,260 --> 01:03:42,790 Il ne s'imprime pas zéro, droite, parce que quand - 1246 01:03:42,790 --> 01:03:45,460 Oui, il a également n'imprime pas 11. 1247 01:03:45,460 --> 01:03:49,200 >> Donc, il ne s'imprime pas zéro, parce que quand I est zéro, souviens, il évalue 1248 01:03:49,200 --> 01:03:52,170 l'état avant sa mise en pour exécuter le corps de la boucle. 1249 01:03:52,170 --> 01:03:56,820 Et quand je est nul, ce qui est faux, alors il n'imprime pas le compte à rebours 1250 01:03:56,820 --> 01:04:00,200 zéro, il se contente d'afficher le comptage en baisse de 10 tout en bas à 1. 1251 01:04:00,200 --> 01:04:03,420 Si nous voulions vraiment à imprimer zéro, alors nous mettre un signe égal 1252 01:04:03,420 --> 01:04:04,750 après ce signe supérieur. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Donc, une façon de faire la validation des entrées, qui c'est quand vous demandez à l'utilisateur de faire 1256 01:04:16,410 --> 01:04:18,620 quelque chose, vous voulez vous assurer qu'ils suivre vos instructions, est d'utiliser 1257 01:04:18,620 --> 01:04:19,400 la boucle While, non? 1258 01:04:19,400 --> 01:04:22,990 Donc, dans ce cas particulier, je demande pour un nombre positif et je suis 1259 01:04:22,990 --> 01:04:23,810 en attente d'entrée. 1260 01:04:23,810 --> 01:04:28,210 >> Et puis j'ai vérifié si la contribution est inférieur à zéro, maintenir leur demander. 1261 01:04:28,210 --> 01:04:32,100 Donc, tant que ils me donnent un certain nombre ce n'est pas positif, continuent à demander, 1262 01:04:32,100 --> 01:04:33,600 Demandez, continuez à demander. 1263 01:04:33,600 --> 01:04:35,860 Mais ce qui est une sorte de bizarre à ce sujet? 1264 01:04:35,860 --> 01:04:38,570 Ou ce que ne semble pas optimale sur cette structure ici? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 N'importe qui? 1267 01:04:44,758 --> 01:04:45,234 Oui? 1268 01:04:45,234 --> 01:04:47,614 >> ENCEINTE 6: Vous répétition l'instruction à deux reprises. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Droit. 1270 01:04:48,100 --> 01:04:50,090 Nous avons donc deux printf ici, non? 1271 01:04:50,090 --> 01:04:53,440 Donc, il ya une façon que nous pourrions obtenir ce juste vers celui qui rendrait notre 1272 01:04:53,440 --> 01:04:57,170 code plus facile à lire et un peu plus propre. 1273 01:04:57,170 --> 01:05:00,180 Et puis nous n'aurions pas à Obtenez ont deux fois ainsi. 1274 01:05:00,180 --> 01:05:03,740 Et d'une façon que vous pouvez faire est en utilisant une boucle do-while. 1275 01:05:03,740 --> 01:05:07,670 >> Et une boucle do-while est essentiellement un forme différente d'une boucle While où 1276 01:05:07,670 --> 01:05:11,460 tout ce qui est entre les accolades est exécuté au moins une fois. 1277 01:05:11,460 --> 01:05:14,840 Donc ici, je déclare, int l'entrée, à l'extérieur d'abord. 1278 01:05:14,840 --> 01:05:18,100 Et puis je viens de dire, faire ce instruction alors que l'entrée 1279 01:05:18,100 --> 01:05:19,140 est inférieur à zéro. 1280 01:05:19,140 --> 01:05:20,530 Alors il frappe le faire en premier. 1281 01:05:20,530 --> 01:05:24,190 Il sera toujours exécuter ce au moins une fois, donc il sera toujours demander à l'utilisateur 1282 01:05:24,190 --> 01:05:25,960 pour l'entrée au moins une fois. 1283 01:05:25,960 --> 01:05:29,390 Et puis il évalue cette entrée, et il se passe dans un cercle. 1284 01:05:29,390 --> 01:05:30,135 Oui, la question? 1285 01:05:30,135 --> 01:05:32,602 >> ENCEINTE 6: Est-il possible de le faire [Inaudible] types, comme si vous dites, 1286 01:05:32,602 --> 01:05:34,268 GetString, et quelqu'un [inaudible] 1287 01:05:34,268 --> 01:05:35,220 est-il un moyen de [inaudible] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Donc la question est, est-il un manière à faire la validation des entrées si le mode d' 1289 01:05:40,060 --> 01:05:41,850 ne pas mettre dans le bon type de variable? 1290 01:05:41,850 --> 01:05:44,460 Donc, si nous demandons un int et ils nous donner une chaîne à la place. 1291 01:05:44,460 --> 01:05:49,110 Et dans les fonctions que nous mettons en œuvre pour vous, GetInt, GetString dans tous 1292 01:05:49,110 --> 01:05:52,680 ces fonctions, ils réellement déjà faire ce genre de saisie de type de base 1293 01:05:52,680 --> 01:05:54,120 validation sous le capot. 1294 01:05:54,120 --> 01:05:57,390 Donc, si vous utilisez les fonctions que nous vous a donné, vous n'avez pas vraiment. 1295 01:05:57,390 --> 01:06:01,380 >> Mais si vous voulez regarder de plus sur la façon dont vous pouvez réellement faire cela, vous pouvez consulter 1296 01:06:01,380 --> 01:06:03,360 sous le capot le fichier I/O-- 1297 01:06:03,360 --> 01:06:07,990 pas déposer, les fonctions d'E / S standard comme une lecture de l'entrée standard et 1298 01:06:07,990 --> 01:06:08,580 sortie standard. 1299 01:06:08,580 --> 01:06:10,630 Et vous pouvez avoir une meilleure idée de la façon dont vous pourriez le faire. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Une question, cependant, est spécifiquement avec l'exemple que vous 1301 01:06:13,670 --> 01:06:17,070 dit, vous vous attendez à une chaîne et j'entre un int. 1302 01:06:17,070 --> 01:06:20,110 Comment voulez-vous faire la différence entre vouloir intentionnellement le 1303 01:06:20,110 --> 01:06:23,130 chaîne 123 par rapport à vouloir l'int 123? 1304 01:06:23,130 --> 01:06:29,230 Alors chaîne, il est à peu près il n'y a pas validation, c'est juste ce qu'ils 1305 01:06:29,230 --> 01:06:31,600 entré vous interpréter comme une chaîne. 1306 01:06:31,600 --> 01:06:35,790 >> Int est plus facile, parce que peu importe la entrée vous prenez de l'utilisateur, vous êtes 1307 01:06:35,790 --> 01:06:37,470 en prenant toujours une chaîne. 1308 01:06:37,470 --> 01:06:40,650 Et si cette chaîne, vous pouvez alors vérifier, sont tous ces 1309 01:06:40,650 --> 01:06:44,218 chiffres effectivement numériques? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Une question sur une boucle Do-Alors? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, et c'est aussi - 1313 01:06:49,170 --> 01:06:55,130 revenir à portée, un peu commun erreur est d'essayer d'utiliser certains locaux 1314 01:06:55,130 --> 01:06:59,540 variable dans un ce do-while boucle à l'intérieur de cette condition. 1315 01:06:59,540 --> 01:07:02,850 Et en fait, si nous venons juste de nous débarrasser de ce et dit, int entrée est égale à 1316 01:07:02,850 --> 01:07:06,990 GetInt, alors le compilateur crier nous, parce qu'il n'existe pas d'entrée 1317 01:07:06,990 --> 01:07:08,900 en dehors de la portée de l' ces accolades. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: Et c'est pourquoi nous besoin de cette gamme ici. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Ainsi, vous pouvez également sortir d'une boucle tôt si vous voulez. 1322 01:07:17,530 --> 01:07:21,240 Donc, c'est une façon différente de mise en œuvre de ce que nous venons mis en place. 1323 01:07:21,240 --> 01:07:24,340 Et au lieu d'utiliser la condition entre parenthèses, nous utilisons une 1324 01:07:24,340 --> 01:07:26,920 Si instruction à l'intérieur du corps de la boucle do-while. 1325 01:07:26,920 --> 01:07:30,000 >> Et dans le fond, lorsque l'entrée est enfin supérieur à zéro, nous allons 1326 01:07:30,000 --> 01:07:31,000 sortir de la boucle. 1327 01:07:31,000 --> 01:07:33,420 Et nous irons tous le chemin vers le bas ici. 1328 01:07:33,420 --> 01:07:37,920 Et vous pouvez voir que ce serait probablement préférable dans ce 1329 01:07:37,920 --> 01:07:39,870 scénario, parce que c'est un peu peu plus propre et un peu 1330 01:07:39,870 --> 01:07:41,380 peu plus facile à lire. 1331 01:07:41,380 --> 01:07:45,210 Considérant que la présente, vous sorte de avoir des lignes supplémentaires en elle. 1332 01:07:45,210 --> 01:07:47,890 C'est juste un peu plus laid, Je suppose que, dans un sens. 1333 01:07:47,890 --> 01:07:48,530 Oui, la question? 1334 01:07:48,530 --> 01:07:52,178 >> SPEAKER 4: briserai seulement obtenir vous sur un jeu de bretelles? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Droit. 1336 01:07:53,080 --> 01:07:58,100 Donc la question est brisera seulement vous sortez d'une boucle? 1337 01:07:58,100 --> 01:07:59,280 Et la réponse est oui. 1338 01:07:59,280 --> 01:08:04,290 Donc, si vous avez imbriqué des boucles For, pour exemple, si j'ai Pour int Je égal à 0 1339 01:08:04,290 --> 01:08:09,040 jusqu'au 10 puis Pour int J est égal à 0 jusqu'à 10, si je casse de la intérieure 1340 01:08:09,040 --> 01:08:12,310 boucle, je vais quand même aller à la boucle externe. 1341 01:08:12,310 --> 01:08:15,760 Donc, il va garder l'exécution du les opérations à l'extérieur. 1342 01:08:15,760 --> 01:08:17,640 Vous avez des questions à ce sujet? 1343 01:08:17,640 --> 01:08:18,000 Oui? 1344 01:08:18,000 --> 01:08:21,760 >> SPEAKER 5: Mais briser seules fonctions pour les accolades, pas pour les autres 1345 01:08:21,760 --> 01:08:22,230 déclarations? 1346 01:08:22,230 --> 01:08:22,700 [Inaudible] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Donc la question est cassera fonction que pour les boucles, par opposition à 1348 01:08:27,620 --> 01:08:29,014 autres déclarations comme si? 1349 01:08:29,014 --> 01:08:32,950 Et oui, c'est le cas, parce que vous sortir d'une boucle, à droite, 1350 01:08:32,950 --> 01:08:33,630 dans un sens. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: Dans la grande majorité des cas, c'est c'est le genre de Si quelque chose, 1352 01:08:37,215 --> 01:08:37,660 puis casser. 1353 01:08:37,660 --> 01:08:41,580 Donc, vous n'avez pas à briser à appliquer à Si le qui s'enroule autour d'elle. 1354 01:08:41,580 --> 01:08:45,250 Et aussi, ce n'est pas beaucoup d'une boucle, mais rappelez-vous que les commutateurs sont également 1355 01:08:45,250 --> 01:08:46,340 éclaté de par des pauses. 1356 01:08:46,340 --> 01:08:48,390 Nous avons vu les pauses utilisés avec les commutateurs avant. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: Et vous pouvez aussi les utiliser dans les boucles de boucles while et for. 1358 01:08:52,189 --> 01:08:54,560 Vous avez des questions? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Alors, la prochaine place est fonctions. 1361 01:08:57,779 --> 01:09:01,500 Ainsi, vous pourriez avoir utilisé l'un de ces BYOB blocs dans votre projet de Scratch. 1362 01:09:01,500 --> 01:09:04,569 Et cela permet essentiellement de définir un ensemble de 1363 01:09:04,569 --> 01:09:05,680 instructions à suivre. 1364 01:09:05,680 --> 01:09:09,569 >> Et ce que je veux dire par là, c'est qu'il faut penser de nouveau aux maths, à droite, l'algèbre. 1365 01:09:09,569 --> 01:09:13,370 Vous avez ce que nous appelons une fonction de x, une variable, et disons que ce 1366 01:09:13,370 --> 01:09:16,080 fonction est f de x égal à x + 5. 1367 01:09:16,080 --> 01:09:20,410 Ainsi, vous pouvez penser à f de x que ce noir boîte qui prend 15 puis 1368 01:09:20,410 --> 01:09:22,590 produit 20. 1369 01:09:22,590 --> 01:09:26,630 >> Donc, plus généralement, une fonction est quelque chose qui prend des entrées et 1370 01:09:26,630 --> 01:09:27,880 puis produit des sorties. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 Et pourquoi sont des fonctions bien? 1373 01:09:32,960 --> 01:09:35,189 Ils sont bons pour un certain nombre de raisons. 1374 01:09:35,189 --> 01:09:40,470 Quelqu'un veut-il donc de prendre un coup de couteau à ce que l'organisation des moyens? 1375 01:09:40,470 --> 01:09:42,630 En termes de pourquoi les fonctions sont utiles? 1376 01:09:42,630 --> 01:09:43,090 Oui? 1377 01:09:43,090 --> 01:09:44,735 >> SPEAKER 4: Il rend votre code plus lisible. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Droit. 1379 01:09:45,399 --> 01:09:47,670 Donc, une des choses est-il fait votre code plus lisible, non? 1380 01:09:47,670 --> 01:09:53,710 Au lieu d'avoir comme int x est égal à x fois x fois x, je peux avoir cube de x, 1381 01:09:53,710 --> 01:09:57,190 qui est plus lisible et plus compréhensible pour un lecteur. 1382 01:09:57,190 --> 01:10:01,150 >> L'organisation est également en termes de diviser votre code en gérable 1383 01:10:01,150 --> 01:10:05,610 parties, de sorte que, au lieu d'essayer de mettre en œuvre tout cela dans une longue section 1384 01:10:05,610 --> 01:10:09,070 en principal, vous pouvez sorte de scinder dans comme, OK, nous allons écrire une fonction 1385 01:10:09,070 --> 01:10:11,910 au cube quelque chose, nous allons écrire une fonctionner à la case quelque chose. 1386 01:10:11,910 --> 01:10:15,950 De cette façon, vous pouvez le diviser en minuscule, petites pièces que vous pouvez lutter contre 1387 01:10:15,950 --> 01:10:18,944 plutôt que d'essayer de s'attaquer à un grave problème à la fois. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Ou même minuscules, de petites pièces vous et un partenaire pouvez aborder. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Ouais. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Donc, au lieu de deux vous essayer d'implanter un 1391 01:10:23,855 --> 01:10:27,170 fonctionner en même temps. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: simplification. 1393 01:10:28,800 --> 01:10:30,050 Tout le monde veut prendre une supposition? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Oui? 1396 01:10:33,410 --> 01:10:34,675 >> SPEAKER 5: Plus répétition. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Droit. 1398 01:10:35,260 --> 01:10:39,210 Donc, une chose que vous pouvez faire avec simplification est que c'est une sorte de sur 1399 01:10:39,210 --> 01:10:42,520 les mêmes lignes que la réutilisabilité est que une fois que j'écris une fonction de cube, je peux 1400 01:10:42,520 --> 01:10:45,410 utiliser juste que plus et plus et plus nouveau dans mon programme au lieu de taper 1401 01:10:45,410 --> 01:10:49,610 x fois x fois x et plus encore et encore. 1402 01:10:49,610 --> 01:10:52,980 Et la simplification ici aussi juste signifie cela rend votre code sorte de 1403 01:10:52,980 --> 01:10:55,900 plus facile à déboguer une fois que vous divisez cette place en fonctions. 1404 01:10:55,900 --> 01:10:58,250 Parce que vous pouvez localiser où vos problèmes sorte de sont. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Vous avez des questions? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Donc, une autre idée est abstraction, non? 1409 01:11:06,540 --> 01:11:07,390 Cette boîte noire. 1410 01:11:07,390 --> 01:11:11,360 Comme vous savez ce que fait GetInt pour recevoir une entrée de l'utilisateur? 1411 01:11:11,360 --> 01:11:12,510 Nous n'avons pas vraiment vous le dire, non? 1412 01:11:12,510 --> 01:11:15,670 Tout ce que nous vous avons dit est fait GetInt exactement ce qu'il dit qu'il fait. 1413 01:11:15,670 --> 01:11:18,440 Donc, même si nous ne vous disons pas comment cela fonctionne, vous savez toujours. 1414 01:11:18,440 --> 01:11:21,670 >> Donc, dans ce cas particulier, ce n'est une quadruple fonction qui ne 1415 01:11:21,670 --> 01:11:24,520 des choses différentes pour une entrée pour produire un signal de sortie. 1416 01:11:24,520 --> 01:11:28,050 Et vous pouvez quadrupler un certain nombre en le multipliant par quatre. 1417 01:11:28,050 --> 01:11:30,790 Ou vous pouvez ce que nous appelons peu passer par deux. 1418 01:11:30,790 --> 01:11:32,960 Et nous verrons cela un peu plus tard. 1419 01:11:32,960 --> 01:11:36,570 Et il n'y a pas besoin de savoir comment ce fonction fonctionne réellement aussi longtemps qu'il 1420 01:11:36,570 --> 01:11:37,640 fonctionne comme indiqué. 1421 01:11:37,640 --> 01:11:40,740 >> Donc, sous le capot, je pourrais être comme, retourner fois d'entrée 1422 01:11:40,740 --> 01:11:41,690 huit divisé par deux. 1423 01:11:41,690 --> 01:11:42,510 Et vous ne savez pas, non? 1424 01:11:42,510 --> 01:11:44,970 Tout ce que vous devez savoir, c'est il fait ce qu'il dit. 1425 01:11:44,970 --> 01:11:48,070 Voilà donc la chose utile sur l'abstraction. 1426 01:11:48,070 --> 01:11:52,910 >> Et une autre chose est en quelque sorte de cette idée de localiser votre code à un 1427 01:11:52,910 --> 01:11:54,280 particulier l'article. 1428 01:11:54,280 --> 01:11:57,450 Donc, si vous avez un problème, vous n'avez pas avoir à aller partout dans votre code en essayant 1429 01:11:57,450 --> 01:11:58,730 à fixer où était le problème. 1430 01:11:58,730 --> 01:12:00,990 Donc dans ce cas, j'ai mis en place cube mal. 1431 01:12:00,990 --> 01:12:02,820 J'ai pensé cube multipliait par trois. 1432 01:12:02,820 --> 01:12:05,760 >> Donc dans ce cas, il s'agit d'un programme que tout a multipliant par trois 1433 01:12:05,760 --> 01:12:06,750 partout. 1434 01:12:06,750 --> 01:12:10,910 Et il ya un autre programme qui a cube pondérée sortir dans une fonction. 1435 01:12:10,910 --> 01:12:14,040 Et maintenant si je veux réparer mon erreur ici, je dois fixer chaque ligne 1436 01:12:14,040 --> 01:12:15,620 de code de ce programme. 1437 01:12:15,620 --> 01:12:19,190 Alors que d'autre part, si j'utilise le fonction, je seulement besoin de changer 1438 01:12:19,190 --> 01:12:20,650 ce qui n'allait pas dans un seul endroit. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Donc, en informatique, nous appeler les entrées et sorties. 1441 01:12:28,730 --> 01:12:31,640 Les entrées sont appelées paramètres ou arguments, et les sorties sont appelés 1442 01:12:31,640 --> 01:12:32,950 renvoyer des valeurs. 1443 01:12:32,950 --> 01:12:39,000 Et nous allons voir comment cela nous aide à trier de définir une fonction d'une seconde. 1444 01:12:39,000 --> 01:12:41,430 Donc, c'est une définition de fonction pour cubage. 1445 01:12:41,430 --> 01:12:45,110 Donc, il faut une entrée, puis il renvoie ce nombre de fois 1446 01:12:45,110 --> 01:12:47,020 lui-même trois fois. 1447 01:12:47,020 --> 01:12:48,020 Donc, nous allons décomposer. 1448 01:12:48,020 --> 01:12:53,090 >> Nous avons donc un en-tête de la fonction, qui se compose essentiellement de trois choses. 1449 01:12:53,090 --> 01:12:56,050 Nous avons donc les paramètres qui sont, comme je l'ai dit avant, la 1450 01:12:56,050 --> 01:12:57,680 entrées dans cette fonction. 1451 01:12:57,680 --> 01:12:59,300 Et puis nous donnons la fonction d'un nom. 1452 01:12:59,300 --> 01:13:00,740 Dans ce cas, il est appelé cube. 1453 01:13:00,740 --> 01:13:03,860 Et puis nous précisons que soit le type de la valeur de retour est. 1454 01:13:03,860 --> 01:13:06,760 >> Donc dans ce cas, ma fonction de cube prend en un nombre entier et il a également 1455 01:13:06,760 --> 01:13:07,890 retourne un entier. 1456 01:13:07,890 --> 01:13:11,510 Donc, si je passe à deux, deux est un nombre entier, il renvoie huit à moi, qui 1457 01:13:11,510 --> 01:13:13,250 est un nombre entier. 1458 01:13:13,250 --> 01:13:15,420 Donc renvoyer des paramètres de nom de type. 1459 01:13:15,420 --> 01:13:16,670 Questions à ce sujet? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> Et puis la valeur de retour est en fait spécifiée à la fin en disant retour 1462 01:13:24,230 --> 01:13:27,540 puis retour quel que soit contient la valeur de retour. 1463 01:13:27,540 --> 01:13:30,940 Donc dans ce cas, si nous mettons tout ensemble, une fonction prend en 1464 01:13:30,940 --> 01:13:35,100 paramètres, ça s'appelle quelque chose, et elle retourne quelque chose qui est du type 1465 01:13:35,100 --> 01:13:36,350 que nous disons qu'il allait être. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Vous avez des questions? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Alors, comment pouvons-nous utiliser une fonction? 1470 01:13:45,080 --> 01:13:49,230 Eh bien, nous écrivons une fonction, puis nous l'utilisons dans notre programme, non? 1471 01:13:49,230 --> 01:13:51,565 Donc je l'ai appelé cube, et alors je peux utiliser cube. 1472 01:13:51,565 --> 01:13:54,200 >> Mais ce qui est important de noter est que l'ordre des questions. 1473 01:13:54,200 --> 01:13:58,100 Si j'ai cube ci-dessous principale, il est allez courir dans le cube. 1474 01:13:58,100 --> 01:14:00,360 Et à ce stade, il n'y a rien appelée cube dans le programme, et il est 1475 01:14:00,360 --> 01:14:02,550 juste va être comme, j'ai aucune idée de ce cube est. 1476 01:14:02,550 --> 01:14:05,060 >> Alors il vous dira, implicite déclaration de la fonction. 1477 01:14:05,060 --> 01:14:06,690 C'est l'erreur qui apparaît. 1478 01:14:06,690 --> 01:14:10,230 Et dans ce cas, le cube est ci-dessous principale, donc ça ne va pas 1479 01:14:10,230 --> 01:14:12,006 savoir à ce sujet. 1480 01:14:12,006 --> 01:14:14,724 >> SPEAKER 5: Alors principal est généralement la dernière fonction définie? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Donc la question est, est le principal généralement la dernière 1482 01:14:17,290 --> 01:14:18,170 chose que vous souhaitez définir? 1483 01:14:18,170 --> 01:14:19,730 Et pas. 1484 01:14:19,730 --> 01:14:22,280 C'est parce que nous aimons habituellement principale pour être au top, non? 1485 01:14:22,280 --> 01:14:24,640 Parce que c'est la première chose que vous veut ouvrir le programmeur le 1486 01:14:24,640 --> 01:14:25,640 programme pour voir. 1487 01:14:25,640 --> 01:14:29,950 Et alors comment pouvons-nous résoudre ce problème de nous vouloir principal à être au top, mais la 1488 01:14:29,950 --> 01:14:33,750 fonctions que nous voulons, nous voulons qu'ils être inférieure principal encore en mesure d'utiliser 1489 01:14:33,750 --> 01:14:34,930 eux à l'intérieur de principal? 1490 01:14:34,930 --> 01:14:36,870 >> Eh bien, nous utilisons ce que nous appelons un prototype de fonction. 1491 01:14:36,870 --> 01:14:40,830 Alors qu'est-ce un prototype de fonction essentiellement est est qu'il faut d'abord ce 1492 01:14:40,830 --> 01:14:45,060 la signature ou la fonction header de ce que nous voulons mettre en œuvre le bas 1493 01:14:45,060 --> 01:14:47,420 ici, et nous l'avons mis à la partie supérieure d'un programme. 1494 01:14:47,420 --> 01:14:51,400 >> Donc dans ce cas, nous disons que, bien, plus tard dans notre programme, nous allons 1495 01:14:51,400 --> 01:14:55,010 à faire une promesse de mettre en œuvre ce fonction appelée int cube, qui prend 1496 01:14:55,010 --> 01:14:56,260 une entrée de nombre entier. 1497 01:14:56,260 --> 01:15:00,870 Alors maintenant, parce que c'est au-dessus de principal, principal, il va dire, oh, eh bien, 1498 01:15:00,870 --> 01:15:03,910 plus tard dans le programme, qui va être donc je peut se référer à elle, alors je vais 1499 01:15:03,910 --> 01:15:05,230 laisser faire par pour le moment. 1500 01:15:05,230 --> 01:15:07,660 >> Et puis au fond, nous mettons en œuvre cube. 1501 01:15:07,660 --> 01:15:11,180 Et puis principal va juste dire, bien, il va trier de lien 1502 01:15:11,180 --> 01:15:12,250 ces deux symboles ensemble. 1503 01:15:12,250 --> 01:15:14,320 Et nous allons couvrir ce que des moyens tard. 1504 01:15:14,320 --> 01:15:17,090 Et il saura que c'est la fonction de cube qu'il doit utiliser. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: Le [inaudible] de vouloir principale en bas ou 1507 01:15:23,383 --> 01:15:24,880 haut, j'ai vu les deux. 1508 01:15:24,880 --> 01:15:28,630 Il ya des choses qui aiment juste à mettre principale en bas. 1509 01:15:28,630 --> 01:15:32,520 Mais une fois qu'un projet devient particulièrement grand, généralement principal est dans un 1510 01:15:32,520 --> 01:15:34,290 déposer son. 1511 01:15:34,290 --> 01:15:38,170 Et à ce moment, comme le ligne de cube int serait - 1512 01:15:38,170 --> 01:15:42,460 l'intérieur de stdio.h sont un groupe de lignes juste comme ça int 1513 01:15:42,460 --> 01:15:44,010 ligne d'entrée cube int. 1514 01:15:44,010 --> 01:15:50,170 >> Et si ces prototypes sont des choses que vous ont tendance à mettre dans les fichiers d'en-tête, à 1515 01:15:50,170 --> 01:15:52,140 quel point, ce n'est pas grave. 1516 01:15:52,140 --> 01:15:54,700 Eh bien, ce n'est pas grave. 1517 01:15:54,700 --> 01:15:56,070 Ceux aller toujours au sommet. 1518 01:15:56,070 --> 01:15:59,490 Et si principal n'est pas un fichier qui lui est propre, vous n'avez pas à vous soucier de mettre 1519 01:15:59,490 --> 01:16:02,360 prototypes de fonctions individuelles dans le fichier. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: Et nous y reviendrons un peu peu plus tard, quand Rob commence à parler 1521 01:16:05,370 --> 01:16:06,380 sur la compilation. 1522 01:16:06,380 --> 01:16:09,480 Et il ya aussi une différence entre le paramètre et argument. 1523 01:16:09,480 --> 01:16:12,500 Et paramètre est exactement ce que nous appelons ces entrées quand 1524 01:16:12,500 --> 01:16:13,820 nous définissons la fonction. 1525 01:16:13,820 --> 01:16:16,950 Et nous appelons cela un argument lorsque nous fait passer dans la fonction. 1526 01:16:16,950 --> 01:16:19,600 >> Donc dans ce cas, il s'agit d'un paramètre, comme nous l'avons dit. 1527 01:16:19,600 --> 01:16:24,130 Et lorsque nous utilisons réellement là-bas, cube de x, alors x est lui-même 1528 01:16:24,130 --> 01:16:25,910 ce que nous appelons un argument à la fonction cube. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Donc, les arguments de paramètres sont - 1530 01:16:28,150 --> 01:16:33,270 il ya cette distinction, très confondre interchangeable. 1531 01:16:33,270 --> 01:16:37,090 À ce moment, pour moi, c'est comme un des ces mots que quand je le vois dans 1532 01:16:37,090 --> 01:16:41,190 la nature, je ne peux pas aider mais immédiatement question de savoir si ils l'utilisent dans 1533 01:16:41,190 --> 01:16:44,120 le contexte correct, parce que le la différence est assez subtile que juste 1534 01:16:44,120 --> 01:16:45,500 tout le monde a tendance - 1535 01:16:45,500 --> 01:16:48,530 Je dis presque toujours l'argument indépendamment de ce que je veux dire. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> Joseph, et les fonctions sont également utiles pour ce qu'on appelle des effets secondaires. 1538 01:16:54,630 --> 01:16:59,230 Ainsi, une fonction peut prendre aucune entrée, et il peut aussi produire aucune sortie. 1539 01:16:59,230 --> 01:17:03,280 Donc, dans ce cas particulier, je suis la définition d'un sous-programme qui n'a pas d' 1540 01:17:03,280 --> 01:17:03,970 valeur de retour. 1541 01:17:03,970 --> 01:17:07,730 Et afin de préciser que, nous utilisons ce que nous appelons un vide ici. 1542 01:17:07,730 --> 01:17:10,890 Et si l'effet secondaire de cette fonction est qu'il imprime juste des trucs 1543 01:17:10,890 --> 01:17:11,920 sur la page. 1544 01:17:11,920 --> 01:17:13,840 Il ne fait pas prendre tout entrées, et ce n'est pas 1545 01:17:13,840 --> 01:17:15,360 effectivement produire des résultats. 1546 01:17:15,360 --> 01:17:18,230 >> Mais cela pourrait être utile dans le sens si vous voulez, par exemple, débogage 1547 01:17:18,230 --> 01:17:21,530 quelque chose dans votre programme, si vous voulez d'écrire un petit sous-programme qui 1548 01:17:21,530 --> 01:17:25,160 imprime, disons, le contenu de mémoire ou quelque chose. 1549 01:17:25,160 --> 01:17:29,800 Et si ces effets secondaires sont parfois utile en dehors du contexte 1550 01:17:29,800 --> 01:17:33,010 de tout comme les entrées et sorties. 1551 01:17:33,010 --> 01:17:34,260 Vous avez des questions? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> Et pour terminer ce segment particulier, qu'est-ce que ce programme fait? 1554 01:17:44,240 --> 01:17:47,420 Je vais vous donner les gars un couple de secondes pour lire. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 A un niveau très basique, ce que nous voulons dire, c'est qu'il permute x et y, non? 1557 01:17:56,880 --> 01:18:00,090 >> Alors combien d'entre vous fait penser ce sera échanger x et y? 1558 01:18:00,090 --> 01:18:02,160 Levez la main. 1559 01:18:02,160 --> 01:18:02,760 Personne. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Qui pense que ce sera pas échanger x et y? 1562 01:18:06,720 --> 01:18:09,120 Et la somme qui était pas toute la pièce. 1563 01:18:09,120 --> 01:18:10,440 Ainsi, certaines personnes ne sont pas sûrs. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 C'est raisonnable. 1566 01:18:11,630 --> 01:18:16,450 >> Donc, nous allons passer par ce qui se passe quand vous appelez des fonctions effectivement la première fois en 1567 01:18:16,450 --> 01:18:18,320 Pour répondre à cette question. 1568 01:18:18,320 --> 01:18:21,430 C'est donc ce que la mémoire sorte de ressemble. 1569 01:18:21,430 --> 01:18:23,860 C'est en quelque sorte comme un modèle simplifié de ce mémoire ressemble quand 1570 01:18:23,860 --> 01:18:24,800 vous exécutez un programme. 1571 01:18:24,800 --> 01:18:27,270 Donc, il ya quelque chose qui s'appelle la pile ici et 1572 01:18:27,270 --> 01:18:28,330 quelque chose qui s'appelle le tas. 1573 01:18:28,330 --> 01:18:30,950 Et ceux-ci poussent vers le milieu de mémoire. 1574 01:18:30,950 --> 01:18:33,860 >> Donc dans ce cas particulier, lorsque vous appelez une fonction, il 1575 01:18:33,860 --> 01:18:35,680 qui est mis sur la pile. 1576 01:18:35,680 --> 01:18:38,900 Et puis tout ce qui est contenu dans ce fonction reste dans ce que nous appelons que 1577 01:18:38,900 --> 01:18:40,550 le cadre de pile de fonction. 1578 01:18:40,550 --> 01:18:44,500 Et pour obtenir une belle visualisation de ce, let's - par exemple, nous avons eu l' 1579 01:18:44,500 --> 01:18:45,960 programme principal plus tôt. 1580 01:18:45,960 --> 01:18:47,820 Et à l'intérieur de principal, nous avons appelé cube. 1581 01:18:47,820 --> 01:18:50,650 Alors principal serait d'abord aller sur la pile encadrer, parce que c'est la première fonction 1582 01:18:50,650 --> 01:18:51,640 c'est ce qu'on appelle. 1583 01:18:51,640 --> 01:18:55,740 >> Et puis, quand cube est appelée à l'intérieur de principal, il se met sur la principale 1584 01:18:55,740 --> 01:18:57,790 à l'intérieur de la mémoire. 1585 01:18:57,790 --> 01:19:02,090 Donc, ce que vous remarquerez est que cube a ses propres paramètres et son 1586 01:19:02,090 --> 01:19:02,950 propres habitants. 1587 01:19:02,950 --> 01:19:06,720 Ainsi, lorsque vous passez réellement quelque chose à une fonction, les paramètres qu'il 1588 01:19:06,720 --> 01:19:09,910 obtient des copies de ce qui était passée à partir principal. 1589 01:19:09,910 --> 01:19:14,140 >> Et en quelque sorte de l'expliquer, nous allons marcher à travers un programme. 1590 01:19:14,140 --> 01:19:16,960 Nous avons donc la pile, ce qui est seulement la partie de la pile. 1591 01:19:16,960 --> 01:19:21,240 Et ce que nous faisons, c'est que nous initialisons premier x et y à un et deux. 1592 01:19:21,240 --> 01:19:22,400 Nous avons donc ces petites boîtes. 1593 01:19:22,400 --> 01:19:25,310 Ils sont assis dans la pile principale encadrer sur la pile. 1594 01:19:25,310 --> 01:19:26,580 Ils contiennent un et deux. 1595 01:19:26,580 --> 01:19:28,820 >> Maintenant, nous appelons swap. 1596 01:19:28,820 --> 01:19:33,940 Qu'est-ce qui se passe, c'est que nous passons x et y dans swap et swap crée ses propres copies 1597 01:19:33,940 --> 01:19:36,520 de ces variables à utiliser dans les de son cadre de pile. 1598 01:19:36,520 --> 01:19:39,920 Alors maintenant, là-bas, nous avons un, qui contient la valeur que x a et b, 1599 01:19:39,920 --> 01:19:41,620 qui contient la valeur qui y avaient. 1600 01:19:41,620 --> 01:19:42,670 Donc, un, deux. 1601 01:19:42,670 --> 01:19:47,130 >> Et vous remarquerez que celui-ci ne à partir de x et y à l'intérieur du principale. 1602 01:19:47,130 --> 01:19:51,390 Donc nous créons maintenant un temporaire variable pour contenir un. 1603 01:19:51,390 --> 01:19:56,100 Nous avons établi un égal à b, il changements de un à deux. 1604 01:19:56,100 --> 01:19:59,340 Et puis nous avons mis b égal à température, qui est l'un. 1605 01:19:59,340 --> 01:20:01,640 >> Et puis maintenant nous sortons sur de cette fonction. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Lorsque vous quittez sur la fonction, la cadre de pile se extraite de la pile. 1608 01:20:07,410 --> 01:20:08,270 Nous appelons pousser. 1609 01:20:08,270 --> 01:20:12,750 Vous poussez un cadre de pile sur la pile et vous sautez si la pile. 1610 01:20:12,750 --> 01:20:16,080 Et qu'est-ce qui se passe est tout ce qui était dans cette pile cadre sorte de juste 1611 01:20:16,080 --> 01:20:17,280 monte en flammes. 1612 01:20:17,280 --> 01:20:19,180 Et pour que n'existe plus. 1613 01:20:19,180 --> 01:20:20,470 >> Mais qu'est-ce que nous constatons? 1614 01:20:20,470 --> 01:20:23,690 Nous n'avons jamais fait changé le les valeurs de x et y, non? 1615 01:20:23,690 --> 01:20:26,530 Donc, ceux qui sont restés local principal. 1616 01:20:26,530 --> 01:20:29,900 Et en passant les choses en échange, nous en fait jamais changé ces valeurs. 1617 01:20:29,900 --> 01:20:31,260 Et qu'est-ce que nous appelons cela? 1618 01:20:31,260 --> 01:20:33,040 Nous appelons ce passage par valeur. 1619 01:20:33,040 --> 01:20:36,860 >> Donc, en C, lorsque vous passez les choses en fonctions, il les transmet par valeur et 1620 01:20:36,860 --> 01:20:40,160 fait une copie d'eux pour la fonction à utiliser. 1621 01:20:40,160 --> 01:20:43,980 Et nous allons apprendre quelque chose appelé le passage par référence plus tard, mais c'est 1622 01:20:43,980 --> 01:20:45,390 une façon que vous pouvez résoudre ce problème. 1623 01:20:45,390 --> 01:20:47,080 Mais nous n'allons pas vous soucier de que plus tard. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: Et en fait, ce terme, passant par référence, si C n'a même pas 1625 01:20:52,200 --> 01:20:54,270 en passant par le référencement. 1626 01:20:54,270 --> 01:20:56,760 C est exclusivement passage par valeur. 1627 01:20:56,760 --> 01:20:59,630 Peu importe ce que vous faites, vous êtes toujours passer une copie de quelque chose. 1628 01:20:59,630 --> 01:21:03,395 C'est juste que, comme je l'ai mentionné sorte de avant que des pointeurs 1629 01:21:03,395 --> 01:21:07,690 et que la chaîne est vraiment juste quatre octets pointant vers quelque part en mémoire. 1630 01:21:07,690 --> 01:21:11,890 >> Eh bien, si j'ai cette chaîne et c'est en me disant que c'est là que la chaîne - 1631 01:21:11,890 --> 01:21:15,470 bien, si j'ai ce pointeur à cette placer en mémoire, alors je peux passer une 1632 01:21:15,470 --> 01:21:19,160 copie de ce pointeur à une fonction, et cette fonction sait toujours où en 1633 01:21:19,160 --> 01:21:19,780 mémoire, il est. 1634 01:21:19,780 --> 01:21:22,950 Donc, ces deux pointeurs pointent au même endroit dans la mémoire, et 1635 01:21:22,950 --> 01:21:26,460 c'est ainsi que nous allons être en mesure de modifier les choses au-delà de la 1636 01:21:26,460 --> 01:21:29,852 frame de pile actuel. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Voulez-vous faire la compilation? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Non, c'est 5h30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Il est 05h30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Donc, nous allons couvrir la compilation Je suppose que dans la section suivante, ou votre section 1643 01:21:39,280 --> 01:21:42,795 Leader sur ce point. 1644 01:21:42,795 --> 01:21:43,272 Et - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Des questions? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Des questions? 1647 01:21:46,760 --> 01:21:47,150 Oui? 1648 01:21:47,150 --> 01:21:52,469 >> SPEAKER 5: Utilisation de chaînes de CS50, tout fonctions que nous voulons utiliser pour 1649 01:21:52,469 --> 01:21:53,880 ceux-ci, ce sera comme des fonctions C. 1650 01:21:53,880 --> 01:21:59,050 CS50 n'est pas allé à l'intérieur et fait de plus. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: C'est exact. 1652 01:22:01,850 --> 01:22:08,155 Tout du C comme [inaudible], vous seraient les utiliser sur nos chaînes. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: Et une dernière chose que je veux mention, c'est que nous avons un guide de style 1654 01:22:12,400 --> 01:22:13,130 pour cette classe. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, oui. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Donc, si vous venez d'un programmation fond avant, vous 1657 01:22:15,270 --> 01:22:17,750 pourrait avoir certaines conventions quand vous écrire du code comme mettre 1658 01:22:17,750 --> 01:22:20,950 accolades sur la même ligne ou particulier les moyens de mise en retrait 1659 01:22:20,950 --> 01:22:22,240 ou nommer vos variables. 1660 01:22:22,240 --> 01:22:26,870 Dans cette classe, nous voulons suivre une Guide de style spécifique juste parce que, 1661 01:22:26,870 --> 01:22:31,100 bien, si vous sortez et travaillez dans industrie, vous allez être attendu 1662 01:22:31,100 --> 01:22:34,780 de suivre le guide de style de la entreprise à laquelle vous allez. 1663 01:22:34,780 --> 01:22:38,040 >> Comme par exemple, je pense que Facebook a un type particulier de nommer 1664 01:22:38,040 --> 01:22:38,760 convention. 1665 01:22:38,760 --> 01:22:42,570 Et il ya des différences entre chameau variables d'enveloppe et comme 1666 01:22:42,570 --> 01:22:44,610 les séparant par des caractères de soulignement. 1667 01:22:44,610 --> 01:22:52,170 Et aussi, je pense que le plus important, comme par exemple, le retrait, non? 1668 01:22:52,170 --> 01:22:56,440 >> Nous ne accolades commençons là où les la condition est, et ils 1669 01:22:56,440 --> 01:22:57,730 sont sur la ligne suivante. 1670 01:22:57,730 --> 01:23:01,230 Et nous mettons également accolades même si c'est une seule ligne. 1671 01:23:01,230 --> 01:23:06,100 Et un grand nombre de fois, il ya des façons de le faire où vous pouvez laisser ces accolades 1672 01:23:06,100 --> 01:23:08,380 off si c'est une seule ligne en vertu de la déclaration Si. 1673 01:23:08,380 --> 01:23:12,070 Mais dans cette classe, nous voulons suivre une Guide de style spécifique pour que vous obtenez 1674 01:23:12,070 --> 01:23:13,550 utilisé pour ce genre de chose. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Ouais, et le style 50 va appliquer ce guide de style, et nous sommes 1676 01:23:16,410 --> 01:23:18,080 allez utiliser style 50 au grade de votre code. 1677 01:23:18,080 --> 01:23:25,150 Donc, cela rend les choses plus facile pour nous et espérons ne doit pas faire des choses qui 1678 01:23:25,150 --> 01:23:30,120 tant pis pour vous a donné la modèle standard ne devrait pas être 1679 01:23:30,120 --> 01:23:31,460 irréaliste. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: Et enfin, de trouver le style guide, aller à manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 Et ouais. 1682 01:23:37,725 --> 01:23:40,575 >> SPEAKER 4: Allez-vous appliquer tous les caractères par ligne? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Oui. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Désolé, les gars. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: C'est comme l'un des seuls. 1686 01:23:47,680 --> 01:23:50,420 A ce point, je suis OK avec 120. 1687 01:23:50,420 --> 01:23:52,460 Je suis OK avec dire 120 caractères par ligne. 1688 01:23:52,460 --> 01:23:53,830 Je comprends qu'il y ait une limite. 1689 01:23:53,830 --> 01:23:57,130 Je pense que 80 est si petit, mais nous l'imposer. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Personnellement, je pense avec C, 80 caractères est plus OK. 1691 01:24:00,260 --> 01:24:04,160 Une fois que vous commencez à recevoir une autre langues comme JavaScript et PHP, et non 1692 01:24:04,160 --> 01:24:08,860 donc raisonnable de limiter tout à 80 caractères. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Eh bien, c'était la section superbe. 1695 01:24:12,780 --> 01:24:14,750 Quelqu'un veut des bonbons? 1696 01:24:14,750 --> 01:24:16,000 >> SPEAKER 4: Oui. 1697 01:24:16,000 --> 01:24:18,667