ENCEINTE 1: Parlons de l'eau.
Dans ce problème, nous demandons à l'utilisateur de dire nous combien de temps en minutes de leur douche était
puis on calcule l'équivalent nombre de bouteilles d'eau
que leur douche utilisée.
>> Alors, quelles sont nos choses à faire pour ce problème?
Tout d'abord, nous allons vouloir pour inviter et puis validez
l'entrée que l'utilisateur nous donne.
Une fois que nous nous assurons que nous ont l'entrée d'utilisateur valide,
nous allons calculer la nombre équivalent de bouteilles d'eau
que l'utilisateur avait lors leur douche, puis nous sommes
allez leur dire par l'impression de ce numéro.
>> Donc, nous allons aborder notre premier tâche, ce qui incite et valider
l'entrée d'utilisateur.
Pour cela, nous avons écrit un fonction pour que vous avez appelé
get_int situé dans la Bibliothèque CS50.
get_int garantit que les entrées de l'utilisateur un nombre entier, de sorte que toute les nombres positifs,
les nombres négatifs, ou zéro sont acceptées.
Mais si l'utilisateur entre autre chose, de sorte que toute combinaison de lettres ou de chiffres
ou des nombres décimaux, le utilisateur sera invité à réessayer
et la fonction ne sera pas accepter quoi que ce soit jusqu'à ce que l'utilisateur leur donne un entier.
>> Alors, comment nous utilisons get_int?
Si vous ouvrez votre espace de travail et créer un fichier nommé entier.c nous allons
tapez la commande suivante.
Hashtag comprennent cs50.h.
Ceci est nécessaire parce que get_int est une fonction de bibliothèque CS50,
nous devons donc inclure hashtag sa déclaration pour
d'utiliser la fonction.
Et puis, dans mon principal Fonction Je vais juste
simplement appeler la fonction get_int.
>> Donc, nous allons exécuter cela et voir comment cela fonctionne.
Je l'ai déjà compilé, afin de laisser juste aller de l'avant et exécuter ce programme,
./entier.
Ici, j'ai une invite et voici où je saisir la valeur.
Disons que je mets dans juste un entier, 50, les excepts et quitte programme
et c'est ça.
>> Mais dis que je le lance à nouveau et Je entrée autre chose.
Peut-être, bonjour monde.
Ce n'est pas un nombre entier de sorte que le programme me demandera de réessayer.
Essayons à nouveau avec peut-être un nombre décimal cette fois.
0,5, encore une fois, pas un entier afin le programme ne sera pas l'accepter
et il va me dire de réessayer.
Donc, nous allons lui donner un autre numéro.
Le programme accepte, quittes, et nous avons terminé.
>> Alors maintenant, nous avons une fonction qui nous permet et assure
que l'utilisateur saisit un entier, mais comment pouvons-nous
effectivement garder une trace de la entier entré par l'utilisateur?
Eh bien, tout ce que nous ferons est un magasin cette valeur dans une variable, disons n.
Donc, si je déclare un entier n, et je mets cette valeur à get_int,
alors n sera ensuite stocker quelque la valeur de l'utilisateur entré.
>> Très bien, alors maintenant nous avons veillé à ce que l'utilisateur va nous donner un nombre entier
et nous savons comment garder une trace de l'entier, mais rappelez-vous,
entiers sont à la fois positif et négatif.
Donc, il n'a pas vraiment de sens dans le contexte de ce problème
que l'utilisateur prend une douche de dire négatifs 12 minutes.
Nous devons donc faire en sorte que l'utilisateur nous donne effectivement un nombre entier positif.
Maintenant, nous ne disposons pas juste un fonction unique pour cela,
de sorte que nous allons avoir pour créer ce que nous-mêmes.
>> Donc, nous voulons continuellement invite l'utilisateur
jusqu'à ce qu'ils nous donnent un nombre entier positif.
Si je fais quelque chose en continu alors qui est semblable à une boucle, une répétition.
Donc, l'une des constructions que nous utilisons à c pour mettre en œuvre la répétition et boucles
est une boucle while.
Donc, une boucle while, comme montré ici, exécutera
tout ce qui est dans le corps de la boucle que tant que la condition évalue donné
à true.
Dès que cette condition évalue à faux,
le programme se déroulera à tout vient après que le corps de la boucle.
>> Ainsi, alors que les boucles vont être vraiment utile dans CS50.
Mais dans ce cas particulier cas, nous savons que nous sommes
va demander à l'utilisateur au moins une fois, puis seulement en boucle si nécessaire.
Donc, ici nous arrivons à un construction spéciale et c'est
très similaire au temps boucle appelée une boucle do-while.
>> Donc, une boucle do-while exécute la corps de la boucle au moins une fois
puis il vérifie si elle doit exécuter,
par opposition à une boucle while, qui va vérifier l'état
puis exécuter le corps.
Donc, dans une boucle do-tout ce que nous pourrions faire est inviter l'utilisateur à un nombre entier,
puis vérifier si elle est valide ou non.
Si elle est valide, nous allons répéter le processus demandant à l'utilisateur
pour nous donner un autre entier, puis seulement quand cet entier est valide,
nous allons continuer à tout ce qui vient après.
>> Maintenant, vous remarquerez que la déclaration de l'entier n
est légèrement différent de ce que nous fait avant dans l'exemple précédent
et cela est à cause de la portée.
Si nous avions déclaré l'entier n intérieur du corps de la boucle do-temps,
alors nous ne serions pas en mesure d'accéder que la valeur de n en dehors de ceux bouclés
croisillons indiquant le corps de la boucle.
Mais nous ne voulons en fait d'accéder à la valeur de n plus tard dans notre programme.
>> OK, donc maintenant nous allons parler ce que cette condition devrait être.
Nous voulons seulement le reprompt l'utilisateur aussi longtemps que n est invalide.
Alors, pensez à vous-même ce qui invalide un valeur entière ressemblerait
et puis créer un booléen expression pour exprimer cela.
>> Nous avons presque terminé avec notre sous-tâche d'inciter et de valider l'entrée utilisateur.
Donc, nous allons faire cela un peu peu plus convivial
et donner un peu de l'utilisateur peu plus d'informations
de ce que nous sommes les incitant pour.
Donc, nous allons demander à l'utilisateur, par le spec, avec les minutes de chaîne.
Donc, en utilisant vos instructions printf, faire vous que vous correspondez exactement cela.
>> D'accord.
Nous avons donc maintenant un utilisateur valide entrée, un nombre entier positif
la valeur pour le nombre de minutes ils ont passé dans la douche.
Alors, quelle est la prochaine étape consiste à calculer le nombre équivalent de bouteilles.
Ce que nous allons faire ici pourrait être très évident pour vous au premier abord,
et c'est OK.
Ce que nous voulons faire est de nous veulent commencer à pratiquer
l'idée de détecter des motifs et développer des formules pour le problème.
>> Donc, nous dit par la spécification qu'une minute dans la douche
est équivalente à environ 12 bouteilles d'eau.
Alors deux minutes serait équivalent à 24,
et cinq minutes serait équivalent à 60.
Alors maintenant, si vous pensez vous avez, puis nous allons
voir si vous pouvez venir avec un motif ou de formule
pour exprimer si nous avons dit, n minutes, combien de bouteilles d'eau
cela serait-il exprimé en termes de n?
>> Encore une fois, même si cela pourrait être simple au premier abord,
plus tard, quand nous arrivons à des problèmes les plus compliqués
nous allons vouloir entrer dans la pratique consistant à identifier
les modèles et les formules en développement pour comprendre ces choses.
>> En c vous avez accès à des opérations arithmétiques standard,
addition, soustraction, multiplication et division.
Donc, je vais laisser à vous maintenant à comprendre
comment exprimer la nombre équivalent de bouteilles
que l'utilisateur a consommé pendant leur douche.
>> Très bien, nous avons presque terminé.
Nous avons incité les utilisateurs pour leur entrée, nous avons veillé à ce que c'est entrée valide,
puis nous avons compris comment pour calculer l'équivalent
nombre de bouteilles qu'ils consommaient.
Donc la dernière chose à faire est de sortie le nombre équivalent de bouteilles
et nous espérons encourager qu'ils conservent un peu d'eau.
>> Restitution la valeur sera une instruction printf.
Si je voulais vous dire que je avoir trois animaux de compagnie, par exemple,
Je pourrais utiliser une instruction printf qui ressemble à quelque chose comme ça.
J'ai trois animaux de compagnie, et un nouveau ligne pour belle mise en forme.
>> Maintenant, nous ne voulons pas simplement les choses de code dur.
Dites le numéro de ma animaux de compagnie change au fil du temps.
Ensuite, je vais faire usage de placeholders dans ma déclaration de printf.
Alors, voici mon numéro est un entier.
Donc, je vais faire un espace réservé pour un entier en utilisant% i.
Je vais écrire la chaîne, puis après la chaîne
Je vous écris une virgule, puis le variables que je veux imprimer.
Alors que la valeur sera imprimée en lieu et place de cet espace réservé,% i.
>> Vous pouvez utiliser des espaces réservés, comme ainsi, pour les flotteurs avec un% f.
Vous pouvez également avoir plusieurs placeholders dans une chaîne.
Par exemple, si je dois un certain nombre des chiens et un certain nombre de chats,
Je mets deux espaces réservés ici, puis mes deux variables dans l'ordre respectif.
>> Alors, maintenant que nous savons comment imprimer les valeurs mémorisées dans des variables,
la dernière chose à faire est de veiller à ce que nous
imprimer la valeur dans le format exact indiqué dans la description.
Avec cela, nous avons incité les utilisateur et validé leur entrée.
Nous avons ensuite calculé l'équivalent nombre de bouteilles d'eau
qu'ils consomment pendant leur douche, et nous avons fourni en sortie que la valeur pour eux.
Et donc, nous avons terminé l'eau.
>> Mon nom est [? Zamila,?] et cela est CS50.