ZAMYLA CHAN: Il est moi, Zamyla.
Aujourd'hui à Mario, nous allons être dessin de la demi-pyramide pour Mario
grimper.
>> Donc, nous allons parler de notre à faire de ce problème.
Nous allons vouloir pour inciter et valider
l'utilisateur pour une entrée valide de la façon dont élevé, ils veulent la pyramide de Mario soit.
Et puis, nous allons dessiner.
Donc, nous allons commencer avec l'incitation et la validation de l'utilisateur pour leur entrée.
>> Nous pouvons faire usage de la Fonction CS50 Bibliothèque
obtenir int qui veillera à ce que l'utilisateur entre un entier.
Tous les nombres entiers positifs, négatifs entiers, numéro 0 sont tout le jeu juste.
Dans le cas contraire, l'utilisateur sera invité à réessayez jusqu'à ce qu'ils entrée un entier valide.
Maintenant, bien que get int fait beaucoup de travail pour nous
en veillant à ce que le utilisateur nous donne un nombre entier,
nous avons encore besoin d'appliquer certaines des contraintes supplémentaires sur cela.
Après tout, nous ne pouvons pas avoir Mario escalade une demi-pyramide d'une hauteur négative 12.
>> En plus de cela, la spécification du problème
dit que nous ne pouvons permettre à Mario de grimper
une pyramide de hauteurs entre 0 et 23.
OK, ce qui signifie que nous avons besoin pour inviter l'utilisateur en continu
pour nous donner une validité nombre et seulement continuer
une fois qu'ils nous ont donné une hauteur valide.
Comment fait-on cela?
>> Eh bien, les procédés continus nous donnent l'idée de quelque chose de loops-- faire
répétitivement.
Une boucle dans C comme un tout boucle qui sera en continu
exécuter le corps de la boucle tant que la condition donnée est évaluée à true.
Dès que cette condition évalue à faux,
le programme passera à tout ce qui vient après.
Ainsi, alors que les boucles sont un moyen de faire en sorte que nous avons toujours
inviter l'utilisateur à une entrée valide.
Et une fois qu'ils nous donnent une entrée valide, nous allons procéder à tout ce qui vient ensuite.
Nous savons que nous allons demander l'utilisateur pour l'entrée au moins une fois.
Alors maintenant, nous arrivons à une sœur de la tandis que la boucle, qui est le do while.
>> Ne while exécutera le le corps de la boucle au moins une fois.
Donc, sans vérification de l'état, il exécutera le corps de la boucle.
Et puis vérifier l'état pour voir si elle a besoin de se répéter.
Cela est très pratique lorsque nous valider l'entrée utilisateur.
Nous savons que nous allons pour leur demander au moins une fois.
Ainsi, un do while pourrait ressembler à quelque chose comme ça.
Nous avons un nombre entier n.
Et à l'intérieur de la DO tandis que la boucle, nous avons immédiatement
inviter l'utilisateur à un entier.
Si n est pas valide, alors nous allons les inciter encore et encore et encore jusqu'à ce qu'ils
nous donner cet entier valide.
Enfin, une fois n est une entrée valide, nous allons procéder au reste de notre programme.
>> Donc, nous allons revenir à la spécification et la vérification ce que les conditions d'une entrée valide
va être.
Les hauteurs valides vont entre 0 et 23 inclusivement.
hauteurs donc invalides vont être inférieure à 0 ou supérieure à 23.
Pensez donc à concevoir attentivement votre état,
sachant que la condition pour le do while
devrait être tout n est pas valide.
Maintenant, cela ne va pas être un expression simple booléenne unique.
Nous allons avoir à combiner deux expressions différentes
de faire toute notre condition.
>> Donc, nous allons simplement regarder une table de vérité, je l'ai déjà donné l'indication que nous sommes
va avoir affaire à deux booléens.
Alors, voici une table de vérité où je ont deux Booleans-- Boolean 1 et 2.
Donc, nous avons la possibilité d'évaluer bool1 et bool2 ou bool1 ou bool2.
Et ne sera vrai si les deux Booléens évaluent true, alors que tous
ou sera vrai tant que l'un des les deux booléens est évaluée à true.
OK, donc prendre un moment, une pause ce vidéo et digérer cette table de vérité.
Je serai là à attendre.
Lorsque vous revenez, voir si vous pouvez rassembler
une expression booléenne pour votre condition de n étant une entrée non valide.
>> Alors, maintenant que nous avons entrée d'utilisateur valide, nous allons
aller de l'avant et de parler de la façon dont nous pourrait tirer la moitié pyramide.
Ici, dans ce simple éditeur de texte, J'ai dessiné une pyramide aligné à gauche.
Mais nous savons que nous avons besoin de notre pyramide pour être aligné à droite.
Alors, comment pourrais-je faire cela?
Eh bien, je pourrais essayer de pousser tout à côté
simplement en mettant un peu caractère entre les deux.
Et puis, pour la prochaine ligne, je vais mettre
certains caractères pour pousser le long, et further-- ainsi de forth--
jusqu'à ce que j'ai la pyramide aligné à droite.
Nous avons donc une pyramide aligner à droite, mais il ne semble pas si grand avec les points.
Mais nous voulons toujours maintenir ce bel espace.
Donc, je vais littéralement insérer des espaces.
>> Au lieu de trois points, je vais mettre un, deux, trois espaces.
Sur la deuxième ligne.
Je vais mettre un, deux espaces.
Et l'avant-dernier ligne, un seul espace.
Et là, j'ai une pyramide aligné à droite.
De faire l'exemple dans le texte rédacteur en chef, nous avons une idée pour le modèle
que nous allons utiliser pour dessiner la moitié pyramide.
Pour chaque ligne, ce que nous avons fait est que nous tapons certains espaces,
puis tapé un peu hachages, puis tapé
la touche Entrée, qui est la création d'une nouvelle ligne.
Alors, maintenant que nous avons cela, nous allons aller un peu plus loin et trouver un modèle.
>> Donc, je vais dire, pour le l'intérêt de cet exemple,
nous avons affaire à une hauteur de 8.
La première ligne va avoir deux hashes que suit sept espaces.
Les second-- trois hashes, six espaces.
Troisième row-- quatre hachages, cinq spaces-- ainsi de suite et ainsi de suite
jusqu'à ce que nous arrivons à la ligne NTH.
Alors, je vous demande de la ligne NTH, combien hashes allons-nous avoir
et combien de places?
Il est donc à vous de trouver un formule pour représenter le nombre de hachages
et combien de places sont nécessaires pour la ligne NTH lorsque vous avez une certaine hauteur.
>> Maintenant, quand vous êtes essayant de se faire, soyez prudent comment vous l'indexation.
Ce que je veux dire par là est que dans la vie quotidienne nous tous
commencer à compter, généralement par 1.
Mais en CS50 et en informatique en général, nous sommes 0 indexées.
Donc, la première ligne serait n de 0 contre 1.
Faites attention quand vous êtes à essayer de comprendre votre modèle.
Alors maintenant, nous allons revenir à la façon dont nous allons attirer notre pyramide.
Pour chaque ligne, nous allons vouloir imprimer les espaces, imprimer les hashs,
puis imprimer une nouvelle ligne.
L'indice ici est le mot "pour" chaque ligne.
En C, nous avons une construction appelé une boucle,
qui est constitué d'un initialisation, une condition, une mise à jour,
et le corps de la boucle.
>> Disons que je voulais dire, bonjour monde, 50 fois, mes pour la boucle
ressemblerait à quelque chose comme ça.
J'initialise mon entier à 0.
La condition est que I est inférieur à 50.
Et puis ma mise à jour est juste incrémenter I par un à chaque fois.
Nous pouvons également utiliser des boucles pour itérer sur les choses.
Remarquez ici comment nous avons pas codé en dur un certain nombre,
mais plutôt placé la variable hauteur à la place dans l'état.
Donc ce que je fais ici est que je suis itérer sur chaque ligne de la pyramide.
Je peux faire quelque chose pour chaque la rangée à l'intérieur du corps de ma boucle.
>> Que faisons-nous à l'intérieur le corps de la boucle?
Eh bien, comme nous l'avons déjà dit, nous l'impression espaces et nous l'impression hashes
et nous l'impression d'une nouvelle ligne.
Donc, mon externe pour la boucle ressemblera à ceci.
J'itérer sur chaque ligne de la pyramide, à l'aide,
dans ce cas, la hauteur comme variable qui stocke la hauteur de la pyramide.
A l'intérieur du corps de cette boucle, je suis va imprimer des espaces à plusieurs reprises, imprimer
les hashs à plusieurs reprises, puis imprimer une nouvelle ligne.
>> Alors maintenant, en utilisant tous les concepts qui Je vous ai parlé dans ce rendez-vous par le biais,
vous devriez être en mesure d'inciter le utilisateur pour l'entrée, de valider cette entrée,
puis dessiner la moitié pyramide.
>> Mon nom est Zamyla, et cela est CS50.