1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA CHAN: Il est un-moi, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Aujourd'hui, nous allons mettre en œuvre Mario, où nous attirons Mario 4 00:00:06,950 --> 00:00:10,730 une pyramide pleine pour lui de sauter par-dessus. 5 00:00:10,730 --> 00:00:14,430 Décomposons la sous-tâches pour ce problème. 6 00:00:14,430 --> 00:00:17,930 >> Tout d'abord, nous voulons inviter l'utilisateur la hauteur de la pyramide. 7 00:00:17,930 --> 00:00:20,510 Et puis, nous voulons nous assurer que que cette entrée est valide. 8 00:00:20,510 --> 00:00:23,280 Et puis nous allons vouloir dessiner la pyramide. 9 00:00:23,280 --> 00:00:26,850 >> Donc, nous allons parler incitant et la validation de l'entrée utilisateur. 10 00:00:26,850 --> 00:00:29,920 Il pourrait ressembler cela, une boucle do-while que 11 00:00:29,920 --> 00:00:33,250 invite l'utilisateur à un entiers, puis seulement les répétitions 12 00:00:33,250 --> 00:00:35,700 si ce nombre entier est invalide. 13 00:00:35,700 --> 00:00:38,220 Alors, quelle devrait être cette condition? 14 00:00:38,220 --> 00:00:40,630 >> Pour cela, nous allons revenir à la spécification. 15 00:00:40,630 --> 00:00:46,240 Eh bien, la spec nous dit que tout valide hauteur va être comprise entre 0 et 23, 16 00:00:46,240 --> 00:00:47,350 compris. 17 00:00:47,350 --> 00:00:51,400 Donc, alors cela signifie que tout invalide hauteur va être inférieure à 0 18 00:00:51,400 --> 00:00:53,840 ou plus de 23. 19 00:00:53,840 --> 00:00:57,220 >> Alors, maintenant que nous avons cette information, nous allons concevoir notre condition. 20 00:00:57,220 --> 00:00:59,230 Mais nous devons être prudents, parce que maintenant nous avons 21 00:00:59,230 --> 00:01:02,130 deux booléens que nous voulons évaluer. 22 00:01:02,130 --> 00:01:04,150 >> Ici, je vous ai fourni avec une table de vérité. 23 00:01:04,150 --> 00:01:07,520 Cela nous permet de prendre deux Booléens, Boolean un et deux. 24 00:01:07,520 --> 00:01:13,600 Et nous pouvons évaluer soit bool1 et bool2 ou bool1 ou bool2. 25 00:01:13,600 --> 00:01:17,390 >> Alors, quelle est la différence entre et et ou? 26 00:01:17,390 --> 00:01:21,810 Eh bien, bool1 et bool2 sera évaluer true si et seulement 27 00:01:21,810 --> 00:01:25,680 si les deux booléens sont vraies, tandis que l'opération ou 28 00:01:25,680 --> 00:01:30,190 sera vrai si l'un des les booléens ou les deux sont vrais. 29 00:01:30,190 --> 00:01:33,110 Donc, avec cela à l'esprit, voir si vous pouvez comprendre 30 00:01:33,110 --> 00:01:37,460 ce que la condition appropriée pour votre boucle do-temps pour un malade n 31 00:01:37,460 --> 00:01:38,850 va être. 32 00:01:38,850 --> 00:01:43,540 >> Avec cela, nous avons incité et validé l'utilisateur à la hauteur de la pyramide, 33 00:01:43,540 --> 00:01:44,550 qu'ils veulent. 34 00:01:44,550 --> 00:01:47,740 Alors maintenant, il est à nous dessiner la pyramide. 35 00:01:47,740 --> 00:01:50,520 La pyramide complète de cette problème se penchera un peu 36 00:01:50,520 --> 00:01:56,340 comme celui-ci, où nous avons une pyramide gauche, un certain écart, puis une pyramide droite. 37 00:01:56,340 --> 00:01:58,630 Donc, nous allons décomposer un peu. 38 00:01:58,630 --> 00:02:03,510 >> Si je vais à mon éditeur de texte, ici, je l'ai nous dessiné une pyramide aligné à gauche. 39 00:02:03,510 --> 00:02:05,160 Mais ça ne va pas. 40 00:02:05,160 --> 00:02:10,139 Ce que nous voulons faire est que nous voulons d'abord créer une pyramide aligné à droite. 41 00:02:10,139 --> 00:02:13,580 Donc, pour ce faire, de pousser juste mes hachages le long du côté, 42 00:02:13,580 --> 00:02:18,240 Je vais juste mettre quelques caractères entre les deux, seulement ces points. 43 00:02:18,240 --> 00:02:22,560 Ensuite, je vais mettre deux sur la ligne suivante, et l'autre sur cette ligne. 44 00:02:22,560 --> 00:02:26,070 Et ici, j'ai un pyramide aligné à droite. 45 00:02:26,070 --> 00:02:28,540 >> Après cela, je vais revenir à la rangée supérieure 46 00:02:28,540 --> 00:02:33,930 et mettre dans le fossé, qui est, par la spécification, deux espaces. 47 00:02:33,930 --> 00:02:37,680 Ensuite, je vais remplir le l'autre côté de la pyramide. 48 00:02:37,680 --> 00:02:42,030 Je vais aller à la deuxième rangée, écris deux espaces pour l'écart et puis deux 49 00:02:42,030 --> 00:02:42,920 hachages. 50 00:02:42,920 --> 00:02:47,020 Retour à la troisième rangée, deux espaces l'écart et trois hashes. 51 00:02:47,020 --> 00:02:51,480 Et à la fin, deux espaces l'écart et quatre hachages. 52 00:02:51,480 --> 00:02:54,400 Voilà donc ce plein pyramide va ressembler. 53 00:02:54,400 --> 00:02:57,260 >> Bien sûr, nous ne voulons pas ces points de la manière. 54 00:02:57,260 --> 00:03:01,220 Nous allons donc remplacer ces points en mettant certains espaces. 55 00:03:01,220 --> 00:03:03,720 Un, deux, trois sur la première ligne. 56 00:03:03,720 --> 00:03:05,650 Un, deux sur le second. 57 00:03:05,650 --> 00:03:08,200 Et un sur la troisième ligne. 58 00:03:08,200 --> 00:03:12,060 Voilà donc ce que nous ferions si nous voulait juste faire une pyramide complète, 59 00:03:12,060 --> 00:03:13,700 dire, dans notre éditeur de texte. 60 00:03:13,700 --> 00:03:15,860 >> Prenons donc cela, comprendre les tendances, 61 00:03:15,860 --> 00:03:19,870 et le convertir vers un certain pseudocode. 62 00:03:19,870 --> 00:03:24,500 Pour chaque ligne de la pyramide, nous voulons d'imprimer la pyramide à gauche puis 63 00:03:24,500 --> 00:03:26,580 l'écart, puis la droite pyramide. 64 00:03:26,580 --> 00:03:30,260 Pour la pyramide gauche, nous imprimons la quantité requise d'espaces, 65 00:03:30,260 --> 00:03:31,740 suivie par les hashes. 66 00:03:31,740 --> 00:03:35,030 Ensuite, nous imprimons l'écart, qui est seulement deux espaces à chaque fois. 67 00:03:35,030 --> 00:03:38,080 Et dans la bonne pyramide, nous imprimons le nombre requis de hash. 68 00:03:38,080 --> 00:03:41,410 >> Pour la deuxième ligne, nous avons mené le même processus exact. 69 00:03:41,410 --> 00:03:44,510 Nous imprimons les espaces pour la gauche pyramide, la quantité requise 70 00:03:44,510 --> 00:03:49,930 de hash, l'écart, deux places, et puis les hashes pour la droite pyramide. 71 00:03:49,930 --> 00:03:52,490 >> Abordons le motif pour la pyramide gauche. 72 00:03:52,490 --> 00:03:55,660 Si je devais, à des fins de cet exemple, une hauteur 73 00:03:55,660 --> 00:03:58,790 de huit demandé par le utilisateur, puis ma première rangée 74 00:03:58,790 --> 00:04:01,020 aurait un hachage et sept espaces. 75 00:04:01,020 --> 00:04:03,860 Ma deuxième ligne aurait deux hachages, six espaces. 76 00:04:03,860 --> 00:04:06,749 Troisième rangée, trois hashes, cinq espaces. 77 00:04:06,749 --> 00:04:09,040 Vous pouvez probablement faire vous pour une hauteur de huit 78 00:04:09,040 --> 00:04:13,470 et de déterminer pour chaque ligne combien hashes et combien de places vous avez besoin. 79 00:04:13,470 --> 00:04:16,209 Mais ce que nous voulons faire est nous voulons abstraire. 80 00:04:16,209 --> 00:04:22,660 Je vous demande donc de toute nième ligne, combien hashes et combien de places avons-nous besoin? 81 00:04:22,660 --> 00:04:25,410 >> Maintenant, comme vous déterminez le modèle pour combien de hashes 82 00:04:25,410 --> 00:04:29,920 et combien de places vous avez besoin pour toute nième ligne pour une hauteur donnée, 83 00:04:29,920 --> 00:04:32,910 rappelez-vous d'être prudent de la façon dont vous l'indexation. 84 00:04:32,910 --> 00:04:37,160 Ce que je veux dire par là que, dans tous les jours la vie la plupart d'entre nous commencent à compter par un. 85 00:04:37,160 --> 00:04:39,680 Donc, la première ligne serait numéro un. 86 00:04:39,680 --> 00:04:43,620 Et la deuxième rangée serait rangée numéro deux, ainsi de suite et ainsi de suite. 87 00:04:43,620 --> 00:04:47,620 >> Mais dans la science informatique et CS50, nous sommes zéro indexé. 88 00:04:47,620 --> 00:04:50,750 Donc, nous commençons à compter effectivement à zéro. 89 00:04:50,750 --> 00:04:54,020 Donc, la première ligne serait être le numéro de la ligne zéro. 90 00:04:54,020 --> 00:04:56,640 Et la deuxième rangée serait rangée numéro un. 91 00:04:56,640 --> 00:05:02,510 Donc, si je devais une hauteur de huit pour ma pyramide, la dernière valeur de n 92 00:05:02,510 --> 00:05:05,850 serait en fait sept et huit. 93 00:05:05,850 --> 00:05:07,010 >> Soyez donc prudent à ce sujet. 94 00:05:07,010 --> 00:05:10,750 Et être conscient quand vous déterminer votre modèle si votre zéro indexé 95 00:05:10,750 --> 00:05:12,360 ou un indexé 96 00:05:12,360 --> 00:05:13,070 >> D'ACCORD. 97 00:05:13,070 --> 00:05:15,380 Alors, maintenant que nous avons la modèle pour la pyramide gauche, 98 00:05:15,380 --> 00:05:18,650 nous devons déterminer le motif de l'écart. 99 00:05:18,650 --> 00:05:20,480 Heureusement, cela est vraiment facile. 100 00:05:20,480 --> 00:05:22,690 Il est juste toujours deux espaces. 101 00:05:22,690 --> 00:05:25,240 >> Alors maintenant, nous procédons à la bonne configuration. 102 00:05:25,240 --> 00:05:27,220 La première ligne aura un hachage. 103 00:05:27,220 --> 00:05:28,640 La deuxième rangée, deux. 104 00:05:28,640 --> 00:05:29,530 Troisième rangée, trois. 105 00:05:29,530 --> 00:05:30,790 Etc., etc. 106 00:05:30,790 --> 00:05:35,540 Donc, encore une fois, de déterminer pour tout abstrait n et toute hauteur combien hashes 107 00:05:35,540 --> 00:05:38,810 et le nombre de places chaque ligne doit avoir. 108 00:05:38,810 --> 00:05:39,700 >> D'ACCORD. 109 00:05:39,700 --> 00:05:45,050 Donc, nous savons que pour chaque rangée de nous besoin de procéder à un certain processus. 110 00:05:45,050 --> 00:05:46,600 Comment fait-on cela? 111 00:05:46,600 --> 00:05:50,440 Eh bien, nous utilisons la boucle for construction, constitué d'une initialisation, 112 00:05:50,440 --> 00:05:52,310 une condition, et une mise à jour. 113 00:05:52,310 --> 00:05:54,830 Pour les boucles peuvent être utilisées à répéter les processus. 114 00:05:54,830 --> 00:05:59,610 >> Alors dis que je veux dire bonjour, monde 50 fois, alors ma boucle for 115 00:05:59,610 --> 00:06:03,510 ressemblerait à quelque chose comme ça, où J'initialise ma variable à zéro. 116 00:06:03,510 --> 00:06:06,200 La condition est que i est inférieur à 50. 117 00:06:06,200 --> 00:06:09,670 Puis la mise à jour est qu'elle incréments par un à chaque fois. 118 00:06:09,670 --> 00:06:14,700 Alors, que ce serait faire serait de imprimer bonjour, monde 50 fois dans une rangée. 119 00:06:14,700 --> 00:06:18,080 >> Maintenant, disons que je voulais itérer sur toute la hauteur de la pyramide. 120 00:06:18,080 --> 00:06:21,560 Ensuite, au lieu de codage en dur une certaine valeur dans l'état, 121 00:06:21,560 --> 00:06:23,280 Je viens d'utiliser la hauteur variable. 122 00:06:23,280 --> 00:06:27,180 Alors qu'est-ce que cela va faire est iterate sur la hauteur de chaque rangée. 123 00:06:27,180 --> 00:06:30,280 Et je peux faire quelque chose à l'intérieur du corps de cette boucle. 124 00:06:30,280 --> 00:06:32,710 >> Que voulons-nous faire à l'intérieur du corps de la boucle? 125 00:06:32,710 --> 00:06:36,550 Eh bien, comme nous l'avons indiqué précédemment, nous voulons pour imprimer les espaces et les hashes 126 00:06:36,550 --> 00:06:40,730 pour la pyramide gauche et puis imprimez deux espaces, puis imprimer les hashes. 127 00:06:40,730 --> 00:06:42,500 Donc, nous avons déjà pensé cela. 128 00:06:42,500 --> 00:06:45,670 Donc, nous pouvons commencer à remplir dans notre programme beaucoup plus. 129 00:06:45,670 --> 00:06:49,850 >> Ici, j'ai un externe pour boucle itère sur chaque ligne de la pyramide. 130 00:06:49,850 --> 00:06:53,340 Et à l'intérieur de cet organe, je vais d'imprimer des espaces à plusieurs reprises, 131 00:06:53,340 --> 00:06:56,860 hachages à plusieurs reprises, puis l'écart, et hachages puis pour le droit pyramide, 132 00:06:56,860 --> 00:07:00,440 puis, enfin, un nouveau ligne pour commencer la rangée suivante. 133 00:07:00,440 --> 00:07:02,860 >> Avec cela, nous avons incités l'utilisateur pour l'entrée. 134 00:07:02,860 --> 00:07:04,510 Nous avons fait en sorte qu'il est valide. 135 00:07:04,510 --> 00:07:06,280 Et puis nous avons dessiné la pyramide. 136 00:07:06,280 --> 00:07:09,540 Donc, Mario peut avec succès grimper la pyramide. 137 00:07:09,540 --> 00:07:10,970 >> Mon nom est Zamyla. 138 00:07:10,970 --> 00:07:13,840 Et cela est CS50. 139 00:07:13,840 --> 00:07:15,419