ZAMYLA CHAN: Il est un-moi, Zamyla.
Aujourd'hui, nous allons mettre en œuvre Mario, où nous attirons Mario
une pyramide pleine pour lui de sauter par-dessus.
Décomposons la sous-tâches pour ce problème.
>> Tout d'abord, nous voulons inviter l'utilisateur la hauteur de la pyramide.
Et puis, nous voulons nous assurer que que cette entrée est valide.
Et puis nous allons vouloir dessiner la pyramide.
>> Donc, nous allons parler incitant et la validation de l'entrée utilisateur.
Il pourrait ressembler cela, une boucle do-while que
invite l'utilisateur à un entiers, puis seulement les répétitions
si ce nombre entier est invalide.
Alors, quelle devrait être cette condition?
>> Pour cela, nous allons revenir à la spécification.
Eh bien, la spec nous dit que tout valide hauteur va être comprise entre 0 et 23,
compris.
Donc, alors cela signifie que tout invalide hauteur va être inférieure à 0
ou plus de 23.
>> Alors, maintenant que nous avons cette information, nous allons concevoir notre condition.
Mais nous devons être prudents, parce que maintenant nous avons
deux booléens que nous voulons évaluer.
>> Ici, je vous ai fourni avec une table de vérité.
Cela nous permet de prendre deux Booléens, Boolean un et deux.
Et nous pouvons évaluer soit bool1 et bool2 ou bool1 ou bool2.
>> Alors, quelle est la différence entre et et ou?
Eh bien, bool1 et bool2 sera évaluer true si et seulement
si les deux booléens sont vraies, tandis que l'opération ou
sera vrai si l'un des les booléens ou les deux sont vrais.
Donc, avec cela à l'esprit, voir si vous pouvez comprendre
ce que la condition appropriée pour votre boucle do-temps pour un malade n
va être.
>> Avec cela, nous avons incité et validé l'utilisateur à la hauteur de la pyramide,
qu'ils veulent.
Alors maintenant, il est à nous dessiner la pyramide.
La pyramide complète de cette problème se penchera un peu
comme celui-ci, où nous avons une pyramide gauche, un certain écart, puis une pyramide droite.
Donc, nous allons décomposer un peu.
>> Si je vais à mon éditeur de texte, ici, je l'ai nous dessiné une pyramide aligné à gauche.
Mais ça ne va pas.
Ce que nous voulons faire est que nous voulons d'abord créer une pyramide aligné à droite.
Donc, pour ce faire, de pousser juste mes hachages le long du côté,
Je vais juste mettre quelques caractères entre les deux, seulement ces points.
Ensuite, je vais mettre deux sur la ligne suivante, et l'autre sur cette ligne.
Et ici, j'ai un pyramide aligné à droite.
>> Après cela, je vais revenir à la rangée supérieure
et mettre dans le fossé, qui est, par la spécification, deux espaces.
Ensuite, je vais remplir le l'autre côté de la pyramide.
Je vais aller à la deuxième rangée, écris deux espaces pour l'écart et puis deux
hachages.
Retour à la troisième rangée, deux espaces l'écart et trois hashes.
Et à la fin, deux espaces l'écart et quatre hachages.
Voilà donc ce plein pyramide va ressembler.
>> Bien sûr, nous ne voulons pas ces points de la manière.
Nous allons donc remplacer ces points en mettant certains espaces.
Un, deux, trois sur la première ligne.
Un, deux sur le second.
Et un sur la troisième ligne.
Voilà donc ce que nous ferions si nous voulait juste faire une pyramide complète,
dire, dans notre éditeur de texte.
>> Prenons donc cela, comprendre les tendances,
et le convertir vers un certain pseudocode.
Pour chaque ligne de la pyramide, nous voulons d'imprimer la pyramide à gauche puis
l'écart, puis la droite pyramide.
Pour la pyramide gauche, nous imprimons la quantité requise d'espaces,
suivie par les hashes.
Ensuite, nous imprimons l'écart, qui est seulement deux espaces à chaque fois.
Et dans la bonne pyramide, nous imprimons le nombre requis de hash.
>> Pour la deuxième ligne, nous avons mené le même processus exact.
Nous imprimons les espaces pour la gauche pyramide, la quantité requise
de hash, l'écart, deux places, et puis les hashes pour la droite pyramide.
>> Abordons le motif pour la pyramide gauche.
Si je devais, à des fins de cet exemple, une hauteur
de huit demandé par le utilisateur, puis ma première rangée
aurait un hachage et sept espaces.
Ma deuxième ligne aurait deux hachages, six espaces.
Troisième rangée, trois hashes, cinq espaces.
Vous pouvez probablement faire vous pour une hauteur de huit
et de déterminer pour chaque ligne combien hashes et combien de places vous avez besoin.
Mais ce que nous voulons faire est nous voulons abstraire.
Je vous demande donc de toute nième ligne, combien hashes et combien de places avons-nous besoin?
>> Maintenant, comme vous déterminez le modèle pour combien de hashes
et combien de places vous avez besoin pour toute nième ligne pour une hauteur donnée,
rappelez-vous d'être prudent de la façon dont vous l'indexation.
Ce que je veux dire par là que, dans tous les jours la vie la plupart d'entre nous commencent à compter par un.
Donc, la première ligne serait numéro un.
Et la deuxième rangée serait rangée numéro deux, ainsi de suite et ainsi de suite.
>> Mais dans la science informatique et CS50, nous sommes zéro indexé.
Donc, nous commençons à compter effectivement à zéro.
Donc, la première ligne serait être le numéro de la ligne zéro.
Et la deuxième rangée serait rangée numéro un.
Donc, si je devais une hauteur de huit pour ma pyramide, la dernière valeur de n
serait en fait sept et huit.
>> Soyez donc prudent à ce sujet.
Et être conscient quand vous déterminer votre modèle si votre zéro indexé
ou un indexé
>> D'ACCORD.
Alors, maintenant que nous avons la modèle pour la pyramide gauche,
nous devons déterminer le motif de l'écart.
Heureusement, cela est vraiment facile.
Il est juste toujours deux espaces.
>> Alors maintenant, nous procédons à la bonne configuration.
La première ligne aura un hachage.
La deuxième rangée, deux.
Troisième rangée, trois.
Etc., etc.
Donc, encore une fois, de déterminer pour tout abstrait n et toute hauteur combien hashes
et le nombre de places chaque ligne doit avoir.
>> D'ACCORD.
Donc, nous savons que pour chaque rangée de nous besoin de procéder à un certain processus.
Comment fait-on cela?
Eh bien, nous utilisons la boucle for construction, constitué d'une initialisation,
une condition, et une mise à jour.
Pour les boucles peuvent être utilisées à répéter les processus.
>> Alors dis que je veux dire bonjour, monde 50 fois, alors ma boucle for
ressemblerait à quelque chose comme ça, où J'initialise ma variable à zéro.
La condition est que i est inférieur à 50.
Puis la mise à jour est qu'elle incréments par un à chaque fois.
Alors, que ce serait faire serait de imprimer bonjour, monde 50 fois dans une rangée.
>> Maintenant, disons que je voulais itérer sur toute la hauteur de la pyramide.
Ensuite, au lieu de codage en dur une certaine valeur dans l'état,
Je viens d'utiliser la hauteur variable.
Alors qu'est-ce que cela va faire est iterate sur la hauteur de chaque rangée.
Et je peux faire quelque chose à l'intérieur du corps de cette boucle.
>> Que voulons-nous faire à l'intérieur du corps de la boucle?
Eh bien, comme nous l'avons indiqué précédemment, nous voulons pour imprimer les espaces et les hashes
pour la pyramide gauche et puis imprimez deux espaces, puis imprimer les hashes.
Donc, nous avons déjà pensé cela.
Donc, nous pouvons commencer à remplir dans notre programme beaucoup plus.
>> Ici, j'ai un externe pour boucle itère sur chaque ligne de la pyramide.
Et à l'intérieur de cet organe, je vais d'imprimer des espaces à plusieurs reprises,
hachages à plusieurs reprises, puis l'écart, et hachages puis pour le droit pyramide,
puis, enfin, un nouveau ligne pour commencer la rangée suivante.
>> Avec cela, nous avons incités l'utilisateur pour l'entrée.
Nous avons fait en sorte qu'il est valide.
Et puis nous avons dessiné la pyramide.
Donc, Mario peut avec succès grimper la pyramide.
>> Mon nom est Zamyla.
Et cela est CS50.