Bonjour et bienvenue.
Je souhaite faire une démonstration solution à notre défi précédent
qui consistait à mettre en œuvre un jeu de type de devinettes et de nombres.
Alors parlons du code blocs, fermez
mon projet actuel et créez-en un nouveau.
Ce nouveau projet, je vais juste pour appeler le jeu de nombres de devinettes.
Ça va être un application de la console.
Alors je vais juste appelez-le devinez le numéro.
Et ce que je vais faire ceci pour démarrer ce projet, je vais déclarer
mes variables.
J'aime toujours déclarer et ce sont mes variables en haut.
Mais je vais aussi utiliser le générateur de nombres aléatoires.
Alors je veux m'assurer que J'ai quelques inclus.
Stdlib est déjà là par défaut.
Donc tout ce que j'ai à faire est d'ajouter mon temps. h car encore une fois, c'est pour un générateur
de nombres aléatoires.
C'est essentiellement pour le siège générateur de nombres aléatoires.
Les autres variables que je suis va avoir besoin dans ce programme est
que je veux stocker mes nombres aléatoires.
Alors je vais juste dire nombre aléatoire, je vais l'initialiser à 0 jusqu'à ce
que je récupérez-le à partir de la bibliothèque réelle.
Alors déclarez initialize.
Je vais créer une variable pour stocker la supposition de l'utilisateur, et
je vais l'initialiser avec 0.
Je vais créer une autre variable qui va être
le nombre de suppositions, le nombre actuel de devine ou en
fait je devrais dire nombre maximal de suppositions, maximum nombre de suppositions, et je vais initialiser ceci à 5
car ils ne peuvent deviner que 5 fois.
Je dois aussi créer un temps variable afin que je puisse l'utiliser pour mon
générateur de nombres aléatoires.
Alors je vais juste dire le temps t t.
La première chose que je veux faire avant de demandez à l'utilisateur de saisir si je
veux générer le nombre aléatoire.
Je suppose que je pourrais le faire après avoir demandé l'utilisateur pour l'entrée, mais il est simplement facile de
faire la première chose que vous faites.
Je vais donc initialiser mon générateur de nombres aléatoires, je vais y
mettre un petit commentaire.
Assurez-vous d'utiliser un bon sens noms et assurez-vous de mettre en retrait.
Il va utiliser cette fonction srand dont j'ai parlé dans la conférence.
Tu peux juste le passer dans une graine essentiellement.
Alors je vais dire non signé, et je suis va juste passer dans ma variable t.
Cela va avoir du temps est un fonction qui obtient l'heure actuelle.
Je vais passer dans le t pour qu'il le semer et ensuite je vais y mettre fin.
Maintenant, j'ai vraiment besoin d'avoir mon générateur de nombres aléatoires, donc je vais
dire obtenir le nombre aléatoire.
Et tout cela va faire assigne une variable à ce qui est
retourné par la fonction rand.
Alors disons un nombre aléatoire qui ma variable locale est-elle
égale à et utilise-t-elle l'opérateur d'affectation dire rand qui appelle une fonction.
Tu n'as pas besoin de savoir quoi que ce soit, mais je vais le semer avec 21.
Cela garantira que mon aléatoire le nombre est uniquement compris entre 0 et 20.
Maintenant, je vais juste sortir un associez les messages à l'écran pour que l'utilisateur
sache ce qu'il fait.
Je vais donc créer une application d'impression et je suis va dire que c'est un jeu de devinettes.
Et puis je vais aussi dites-leur que j'ai
choisi à nouveau un nombre entre 0 et 20, juste pour qu'ils soient informés.
Et puis 0 et 20 que vous devez devinez et terminez-le avec le saut de ligne.
Maintenant que je leur ai dit ce que je voulez dans le jeu, je vais réellement
commencer à boucler.
Et je vais faire une boucle jusqu'à ce que mon le nombre de suppositions est égal à 5.
Alors qu'est-ce que je préférerais en fait faire est que je voulais effacer mon
nombre de suppositions ici, mais Je ne veux pas initialiser.
Je veux initialiser dans ma boucle juste pour te montrer que je peux faire ça.
Si je l'ai initialisé là-bas, avant le premier point-virgule de la boucle for, je pourrais
le garder vide.
Donc par exemple je pourrais faire quelque chose comme ça, initialisez-le ici.
Et puis dans ma boucle for, je le ferais il suffit de mettre un point-virgule car je
n'ai pas besoin de faire une initialisation.
Parce que rappelez-vous, dans notre boucle for, la première
chose que vous avez avant le point-virgule est l'initialisation de la variable de contrôle de boucle.
Je l'ai déjà initialisé donc je n'ai pas besoin de le
faire, mais je ne veux pas faire ça.
Je vais simplement déclarer ici, et je vais
l’initialiser ici.
Je vais dire maximum le nombre de suppositions est égal à 5.
C'est ma variable de contrôle de boucle, Je vais l'initialiser.
Je vais sauter hors de la boucle si mon nombre maximum
de suppositions est atteint.
Alors ici je dirais qu'en fait je suis va l'écrire d'une manière différente.
Je vais l'écrire pour que la boucle passe de 5 à 0.
Donc, mon nombre maximum est égal à 5.
Il vaudrait mieux renommez cette variable.
Renommons-le et dire le nombre de suppositions.
Et le nombre de suppositions va commencer comme 5.
Et je vais faire cela va en arrière.
Et quand le nombre de suppositions est 0, je veux sortir de la boucle.
Donc ma condition de sortie de boucle, Je vais dire que le nombre de
suppositions est supérieur à 0.
Voyez ce que je fais ici.
Je vais juste sauter hors du boucle si je n'ai plus de suppositions.
Donc, si je suis supérieur à 0, je suis va rester dans la boucle.
Et puis la dernière chose que je veux fournir dans la boucle for après
la deuxième modification climatique de cette variable de contrôle de boucle.
Alors je vais juste faire un moins moins le nombre de suppositions.
Et ce que vous devriez remarquer dans cette boucle for, c'est
que je commence ... Je recule presque.
Je commence à 5 et je vais à 0.
Pour tous les exemples que nous fournissons dans le conférence, on commence à 0 et on monte.
Mais tu peux faire les deux, ça n'a pas d'importance.
Vous répétez encore ici 5 fois.
Maintenant, je veux afficher un message leur indiquant
le nombre d'essais restants.
Alors je vais dire printf, et en fait je vais incorporer l’opérateur ternaire
ici puisque nous ne l'avons pas utilisé.
Pas besoin de le faire de cette façon, mais je vais le faire de
cette façon juste pour te montrer comment tu peut utiliser l'opérateur ternaire.
Alors là, je vais vous imprimer il reste pour cent d essais pour cent s.
Le pourcentage d sera nombre égal de suppositions et tr pour cent
s, ça va changer.
Ce sera soit des essais ou ça va être essayé.
Et donc je vais changer ce qui est affiché en fonction du
nombre de suppositions qu'il me reste.
Si le nombre de suppose est égal à 1.
Je ne veux pas planifier d'essais, un essayez est laissé, cela n'a pas de sens.
Je veux imprimer un essai.
Alors ici, je vais utiliser le opérateur termitaire ou plus
précisément l'opérateur conditionnel.
Je vais dire si le nombre de suppositions égal à 1, puis définissez un nombre de suppositions égal
à y sinon définissez-le sur IES.
Et je vais l'imprimer c'est ce que fait le pourcentage s, tout ce
qui est renvoyé ici
Donc ça va revenir soit un y un IES et afficher les informations
correctes.
Alors j'ai juste fait ça juste pour être un peu
de fantaisie vous montre comment vous pouvez utiliser le terminal, imprimer la bonne information.
Après avoir imprimé le numéro des essais durent, alors je veux leur
dire d'entrer une estimation.
Alors je vais supporter quelques informations
et dites simplement printf entrez simplement une estimation et cela aura un saut de ligne.
Alors entrez une estimation, et ensuite je pars pour lire dans cette hypothèse en utilisant scanf, nous savons comment lire à
partir du clavier.
Ça va être un entier, donc je suis va faire pour cent d et je vais
le mettre dans la variable guess.
J'ai donc besoin d'utiliser l'esperluette.
Maintenant, je dois faire ma vérification.
Je dois vérifier si je suppose que Je suis ce qui me préoccupe.
Alors ici nous avons une autre condition de sortie.
Je vais utiliser une instruction if.
Je vais dire si mon suppose est égal à mon nombre aléatoire, qu'est-ce que je
veux faire?
Eh bien, je veux d'abord imprimer et dites-leur
qu'ils sont devinés correctement.
Alors je vais imprimer, félicitations, vous l'avez deviné.
Qu'est-ce que je veux faire d'autre s'ils devinent correctement?
Je veux sortir de la boucle.
Alors, comment puis-je sortir de la boucle?
Je pourrais mettre la pause.
Je pourrais faire une pause, ça va sauter hors de ma boucle.
Maintenant, si ce n'était pas égal, alors Je veux ajouter un autre si.
Si ce n'est pas égal, je veux vérifier assurez-vous qu'ils ont validé le numéro.
Alors avant que je dise que tu aurais pu une boucle imbriquée pour validation afin qu'ils
entrent à nouveau, vous pas besoin de faire cela, vous pouvez juste
avoir une instruction f.
Alors là, je veux valider le numéro.
Si ce n'est pas égal au nombre aléatoire,
je veux m'assurer qu'il est compris entre 0 et 20.
Donc, si l'estimation est inférieure à 0 ou nous utilisons
un opérateur logique ou 2 barres parallèles ou la supposition est supérieur à 20, ce
qui vérifie essentiellement une estimation non valide.
Si tel est le cas et je ne le suis pas va utiliser un crochet car
je n'ai qu'une seule déclaration ici, les crochets sont facultatifs si vous n'avez
qu'une seule instruction.
Donc, s'ils ont entré une estimation invalide, tout ce que je vais faire est printf.
Je vais imprimer j'ai dit le nombre est compris entre 0 et 20.
Et ce qui se passera ici n'est rien.
Ça va juste imprimer cela et il
passera à la prochaine itération.
Ça va leur dire comment il leur reste beaucoup d'essais et cela
va entrer dans une supposition.
Maintenant si vous ne vouliez pas valide nombres s'ils ont entré des
nombres valides pour ne pas compter comme une supposition, alors vous pouvez avoir une boucle imbriquée.
Mais s'ils entrent dans quelque chose de 25, ça va toujours compter comme une supposition.
Alors je dis juste que j'ai mis un nombre entre 0 et 20.
S'ils ont entré un numéro valide mais ce n'était pas correct, ce
serait la clause else.
Ici, je vais juste dire, désolé, mauvais numéro, et je vais leur
dire si c'est supérieur ou inférieur à.
Et je pourrais utiliser le ternaire opérateur ici, mais je ne vais pas.
Alors ajoutons un si ici aussi.
Sinon si aléatoire est supérieur à devinez, alors qu'est-ce que je veux imprimer?
Je veux imprimer désolé le pourcentage d est faux, le pourcentage d sera leur estimation.
Mon nombre est le pourcentage s est le premier mot.
Si le hasard est plus grand, mon nombre est plus grand.
Mon nombre est plus grand que ça, et
je n'utilise aucun percentile et j'ai juste un saut de ligne.
Sinon si le nombre aléatoire est moins que deviner, alors je veux leur dire que c'est plus
bas.
Donc je peux faire la copie et collez la même chose.
Je pourrais dire désolé, le numéro est faux, mon nombre est inférieur à cela.
Et encore une fois, tu pourrais en fait mettez ces 2 autres ifs.
Tu pourrais en avoir un autre si
et vous pouvez en fait faire une déclaration conditionnelle ici.
Vous pourriez avoir l'opérateur ternaire, mais je vais utiliser 2 autres si et dire que c'est
moins que ça.
Et puis ça va être ça, cela va mettre fin à la boucle.
Et si nous sortons de la boucle et nous n'avons pas deviné correctement
et nous avons dépassé notre nombre d'essais, alors je vais juste leur dire qu’ils
ont fait 5 essais et qu’ils je n’ai pas deviné le nombre et je vais
leur dire le nombre.
Donc une dernière sortie à l'utilisateur pour dire leur dire qu'ils n'ont pas gagné le match et leur
dire quel était le nombre.
Vous avez donc eu 5 essais et échoué, le nombre était un nombre aléatoire.
D'accord, est-ce que cela a du sens?
Nous faisons beaucoup de choses ici.
Nous utilisons des instructions if, else déclarations en boucle et nous implémentons le
jeu des nombres.
Et puis la dernière chose est que nous retour de la fonction principale.
Alors allons-y et compilons et qu'auriez-vous dû faire tout au
long de cet exercice?
Vous auriez dû tester et travailler en petits morceaux.
Vous devriez probablement avoir a commencé à travailler d'abord, il
suffit de faire fonctionner le nombre aléatoire, puis tester et compiler et tester.
Ensuite, démarrez votre boucle.
Assurez-vous que votre boucle ne fonctionne que pour le nombre de suppositions, 5 fois maximum, puis faites en sorte
que cela fonctionne et teste.
Puis demandez à l'utilisateur de répondre quelques informations, faites en sorte que
cela fonctionne et testez.
Puis comparez au moment de quitter si ils devinent correctement, testent puis écrivent vos déclarations if
test, c'est comme ça que je mettrais en œuvre.
Alors construisons ça et voyez s'il compile.
J'espère que je n'ai fait aucune erreur.
Je vais dire construire.
J'ai une erreur, je ont un numéro invalide.
Ce doit être un nombre aléatoire, pas aléatoire car c'est le
nom de ma variable.
Et cette fois j'ai 0 erreurs 2 avertissements.
J'ai un pour cent d attendez-vous à un int correspondant.
J'ai oublié de mettre le nombre aléatoire ou la supposition.
La conjecture ici et le devinez et l'autre.
Je veux leur dire que leur supposition Désolé, je suppose que c'était faux, je n'ai pas à
faire ça, mais juste une petite chose sympa.
Maintenant, construisons-le parce que vous veulent toujours corriger vos avertissements.
Vous voulez avoir 0 avertissement 0 erreur.
Maintenant, lorsque nous exécutons cela, nous devons tester.
Et il y a beaucoup de tests différents cas que vous souhaitez exécuter ici.
Vous voudrez exécuter plusieurs tests cas car rappelez-vous qu'il n'est jamais bon de
tester une seule chose.
Alors ici, il est dit que c'est une supposition jeu, j'ai
choisi un nombre entre 0 et 20, que vous devez devinez, il vous reste 5 essais.
Je vais donc en mettre 16.
Désolé, 16 est faux, le le nombre est inférieur à cela.
Je vais essayer de l'avoir 8.
8 est faux, moins que cela.
Je vais faire 4.
4 est faux, mon numéro est plus grand que cela.
Oh j'ai fait une erreur, je n'a pas lu cela en premier.
Il est donc supérieur à 8.
Essayons 12.
Il ne me reste plus que 2 essais.
Je suppose que le droit avec 12.
Alors ça dit félicitations.
Mais vous souhaitez également tester un échec.
Vous voulez tester quelques trucs ici, mais ici laissez-moi tester et je vais
dire ma supposition et Je vais juste mettre 0.
0 est faux.
Je vais continuer à mettre 0, et là je suppose que 5 fois je me suis trompé.
Il dit que vous avez eu 5 essais et échoué.
Le nombre que vous voulait deviner était 3.
Alors ça marche.
Maintenant, testons pour nous assurer que se produit si nous entrons des nombres invalides.
si j'entre 45.
J'ai dit que le nombre était 0 et 20.
C'est donc un autre cas de test et cela comptait comme un essai.
Si je ne voulais pas que ce compte soit un essayez, il pourrait avoir une boucle imbriquée.
Je crois que c'est à propos de ça.
Nous avons testé tous les cas.
Nous avons testé les cas où vous avez deviné avec succès.
Nous avons testé le cas où vous n'avez pas deviné avec succès.
Et nous avons testé le cas où vous avez entré un numéro invalide.
Peut-être que le seul autre test être de s'assurer qu'il disait plus grand que et plus bas que, ce que je pense
que nous avons testé dans le premier nous aurait
dit pour entrer inférieur ou supérieur à.
Alors essayons ça.
Donc à ce moment où j'entre 20, il en dit moins que ce qui est bien.
Maintenant je vais entrer 10 et je l'ai deviné.
Alors je suppose qu'ils sont rapides.
Mais nous devrions voir moins que et plus grand que dans la même sortie.
Réessayez, et le hasard le nombre fonctionne parce que je génère des nombres différents
chaque fois que je lance le programme.
20 est faux.
Essayons maintenant 19.
Essayons 1 et c'est plus que ça.
Donc je vois plus et moins que.
Je suis donc assez sûr que cela fonctionne.
Ça me semble plutôt bien.
Une chose que tu aurais dû remarquer il y avait un petit bug dans
le programme, je vous testais un peu.
Alors quand tu l'as couru parce que nous avons cette pause ici, ça va
toujours imprimer que j'ai échoué même si quand j'ai réussi.
Donc tu aurais dû remarquer que dans la sortie précédente, je
suppose le bon nombre.
Il est imprimé félicitations.
Mais ensuite, il a également imprimé je échoué, cela ne semble pas juste.
Alors le moyen de résoudre ça c'est toi n'avez pas de percée,
vous voulez avoir un retour.
Et donc maintenant quand il revient il
ne sera pas imprimé à la ligne 39 si vous gagnez.
Ça ne va pas s'imprimer que vous avez échoué.
Alors un dernier test et tu devrais ont attrapé cela plus tôt, mais
lorsque nous construisons et que nous devinons correctement, il ne va pas afficher une erreur.
Ainsi nous pouvons sauver la course et quand nous exécutez celui-ci, vous avez 5 suppositions.
Je vais dire 10, moins que cela.
Nous allons dire 6, et je l'ai deviné.
Et tu remarqueras là-bas il dit félicitations.
Nous ne voyons pas cette sortie supplémentaire cela dit que j'ai aussi échoué.
Alors vous voulez vous assurer que vous ajoutez ce retour à la ligne
30 pour que le programme s'exécute correctement.
Vous pouvez ajouter une autre instruction if si vous vouliez
que cela n'imprime pas le printf, aurait pu faire une pause ici et
ensuite à printf vous auriez pu vérifier le nombre de comptages il fallait aussi déterminer si
c'était moins de 5 alors félicitations.
Mais un petit bug là-bas, et j'espère que vous l'avez
remarqué lors des tests, le retour le corrigera.
Donc un petit programme sympa.
J'espère que cela vous a aidé à apprendre un beaucoup sur la boucle et
toutes vos déclarations de décision et vraiment la résolution de problèmes.
J'espère que tu as sorti ça et conçu ceci avant
de commencer à écrire code, c'est toujours important.
J'espère que cela t'aides.
Je vous fournirai le code source pour que vous peut le comparer et le voir et l'analyser.
Merci.