Les langages de programmation Venez apprendre les langages de programmation à votre rythme |
| | Cours n°7 - Les structures de contrôle | |
| | Auteur | Message |
---|
koija Professeur
Nombre de messages : 81 Age : 28 Réputation : 11 Date d'inscription : 13/02/2011
| Sujet: Cours n°7 - Les structures de contrôle Sam 24 Sep - 12:38 | |
| Dans le cours précédent, nous avons vu comment gérer les valeurs booléennes (les booléens: type bool), maintenant, nous allons étudier l'utilité principale de celles-ci. Nous utiliserons les booléens pour gérer les structures de contrôle. Mais qu'est-ce que c'est ? C'est, en faisant simple, décider si un bloc d'instruction (on créer un bloc d'instruction avec des accolades {}) doit être parcourus lors du lancement du programme et si il faut le répéter plusieurs fois. Il existe 2 types principaux de structures de contrôles: les conditions et les boucles. Nous allons commencer par les conditions car c'est le plus facile à apprendre. Bon, je vais commencer par vous expliquer à quoi ça sert. Les conditions servent à décider si le bloc d'instruction doit être exécuter selon la valeur d'un booléen. Nous utiliserons les mots if et else qui veulent dire respectivement si et sinon pour faire notre condition. Voyons la syntaxe: - Code:
-
bool monBool = true; int nombre = 5;
if(monBool) { nombre = 4; }
cout << nombre;
Comme le montre notre exemple, il suffit d'écrire if pour ensuite mettre notre valeur booléennes à l'intérieur, puis créer un bloc d'instruction juste après. La valeur de monBool détermine si il faut exécuter le contenu de notre bloc d'instruction ou non. Ici, notre code affichera 4 dans la console. Maintenant, regardons ce code: - Code:
-
if(false) { cout << "Hello"; }
Le code à l'intérieur des accolades ne sera pas exécuté, la valeur entre parenthèse étant false. Bon ! Maintenant, je pense qu'il est temps de faire un petit exercice pour voir si vous avez bien compris le concept. Vous allez écrire un programme qui demande l'age à l'utilisateur et ensuite, vous allez afficher un message différent selon si il est adulte ou pas. - Spoiler:
Voilà, c'est le moment de la correction ! Pour ceux qui ont réussi, félicitations ! Pour les autres, je vous conseil de relire le début du cours, c'est pas vraiment difficile... Et je vous conseil aussi de lire attentivement la correction pour comprendre. Bon, pour commencer, on demande à l'utilisateur son age. Normalement, ça ne devrait plus vous poser de problèmes. - Code:
-
#include
using namespace std;
int main(int argc, char* argv[]) { int age(0); cout << "Entrez votre age: "; cin >> age;
return 0; }
Ensuite, il fallait juste faire nos conditions ! Voici à quoi votre programme pourrait ressembler. - Code:
-
#include
using namespace std;
int main(int argc, char* argv[]) { int age(0); cout << "Entrez votre age: "; cin >> age;
if(age < 18) { cout << "Vous etes mineur !"; } if(age >= 18) { cout << "Vous etes majeur !"; } return 0; }
Bon, bien entendu, c'est pas très grave si vous n'avez pas réussi. Le but est que à la fin du cours, vous soyez capable de le faire. On est loin d'y être ! Je vais maintenant vous parler d'un élément dont je vous ai parlé au début du cours mais pas avant l'exercice. Je voulais que vous fassiez aumoins 2 conditions lors de l'exercice (pour travailler les booléens) avant de continuer. L'élément en question est else, il est placé après le bloc d'instruction du if et est suivit par un autre bloc d'instruction. Pour faire simple, si la condition du if précédent n'est pas vérifié, on exécute le bloc d'instruction du else. Voici notre programme de l'exercice en utilisant ce petit plus: - Code:
-
#include
using namespace std;
int main(int argc, char* argv[])
{
int age(0);
cout << "Entrez votre age: ";
cin >> age;
if(age < 18) { cout << "Vous etes mineur !"; } else { cout << "Vous etes majeur !"; }
return 0;
}
Je sais que pour le moment, vous vous dites que le else ne sert pas à grand chose, qu'on aurai pu faire autrement. C'est vrai ! Mais souvent, ça simplifie vraiment les choses. Suite à venir
Dernière édition par koija le Lun 28 Mai - 17:51, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 17:19 | |
| Salut Réponse à l'exercice sur la majorité - Code:
-
#include <iostream> #include <cstring>
using namespace std ;
void is_majeur(int age, char res[]) { if (age > 17) strcpy(res, "majeur"); else res = strcpy(res, "pas majeur"); }
int main(void) { int x=0; char reponse[20]; cout << "Entrer votre age\n"; cin >> x; is_majeur(x, reponse); cout << "Votre age est de " << x << " et vous etes " << reponse ; return 0; } |
| | | koija Professeur
Nombre de messages : 81 Age : 28 Réputation : 11 Date d'inscription : 13/02/2011
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 17:38 | |
| Merci pour ta participation ! Je n'ai pas testé ton code mais je l'ai lu: félicitation ! Si tu veux, j'ai quelques suggestions à te faire ! Pour commencer, il y a un petit quelque chose qui est très méprisé par beaucoup. Beaucoup de gens n'aiment pas l'usage de fonctions C en C++: le C++ n'est pas le langage C mais bon, je pars du principe que chacun fait ce qu'il veut. Par convention personnelle, je n'utilise jamais de fonctions du C en C++: surtout qu'ici, on peut très bien utiliser l'objet string mais vu que j'en ai pas encore fait part dans mon cours... Bref ! Ensuite, il y a un second petit quelque chose.. En général, les fonctions de type is_?(); renvoi un bool pour pouvoir écrire des lignes du genre if(is_majeur(age)) cout << "Il est majeur !" << endl; mais l'avantage, c'est qu'aumoins, t'as pu travailler sur les chaines de caractères ! En tous cas, toutes mes félicitations. Vu ton code, je suppose que tu as appris ailleurs parce que il y a des choses que j'ai pas encore (voulu ?) indiquer dans mes cours. Tu pratiques depuis quand? En ce moment je programme beaucoup plus en C qu'en C++ donc je ne rédige plus beaucoup mes cours :/ .. Bonne continuation ! | |
| | | Invité Invité
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 17:49 | |
| - Citation :
- En tous cas, toutes mes félicitations
Merci - Citation :
- Tu pratiques depuis quand?
3 semaines le C et c'est mon 1er jour en C++ J'en avais fais un minimum il y a longtemps, mais juste pour tester l'embedding C/python, bref pratiquement rien. - Citation :
- surtout qu'ici, on peut très bien utiliser l'objet string mais vu que j'en ai pas encore fait part dans mon cours.
J'ai voulu, mais j'ai regretté le fait de ne pas pouvoir renvoyer un string à partir d'une fonction, mais il est vrai que réponse aurait été plus sympa avec type string que char, réflexe du C, désolé... - Citation :
- En ce moment je programme beaucoup plus en C qu'en C++ donc je ne rédige plus beaucoup mes cours
Dommage, j'aimerais qu'il y est des exos en C et en C++ si c'est possible, car en ce moment je bosse pas mal sur le PC. - Citation :
- Vu ton code, je suppose que tu as appris ailleurs parce que il y a des choses que j'ai pas encore (voulu ?) indiquer dans mes cours
J'avoue qu'un ingénieur en info, me donne quelques cours J'ai au bout d'une semaine appris à créer une deque en C, liste chainée, c'est sympa... EDIT:Modification de mon code - Code:
-
#include <string>
using namespace std;
bool is_majeur(int age) { if (age > 17) return true; else return false; }
int main(void) { int x=0; string reponse; cout << "Entrer votre age\n"; cin >> x; if (is_majeur(x)) reponse = "majeur"; else reponse = "pas majeur"; cout << "Votre age est de " << x << " et vous etes " << reponse ; return 0; } |
| | | koija Professeur
Nombre de messages : 81 Age : 28 Réputation : 11 Date d'inscription : 13/02/2011
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 18:28 | |
| De rien ! Je pars du principe que tout travail bien fait mérites félicitations ! Ensuite, pour reprendre ton code et pour remplacer char[] par string tu pourrais te renseigner sur les références un même utiliser les pointeurs. C'est ce que j'aurai fais moi en tous cas si j'étais contraint à mettre mon résultat dans une chaine et non dans un booléen. Je te propose 2 fonctions que ta fonction m'a inspiré: - Code:
-
void is_majeur(int age, string* chaine) { if(age <= 17) *chaine = "mineur"; else *chaine = "majeur"; }
Sinon, la fonction que j'aurai écrite moi, c'est à dire sans l'usage des chaines de caractères dans la fonction même: - Code:
-
bool is_majeur(int age) { return age >= 18; }
Cette seconde fonction que je te propose a le mérite, comme je te l'ai dis tout à l'heure, de pouvoir être utilisé de cette façon: if(is_majeur(42)) ... Ensuite, pour les exercices en C ou en C++, je suis en manque d'inspiration... Soit je trouve des choses trop simple, soit c'est trop long, soit ça demande une librairie. Après il me reste encore le PHP où là je pourrai faire des propositions d'exercices pas mal mais c'est un langage qui ne m’intéresse pas vraiment :/ .. Je me creuserai d'avantages le cerveau pour faire des exercices alors Puis pour finir, les listes chainées, j'en vois partout oO ! Quand je programme en C, j'en fais pratiquement en permanence EDIT: Je viens de voir ton code et voilà, c'est exactement comme ça que je le voyais | |
| | | Invité Invité
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 18:34 | |
| Ah ba oui c'est exactement comme en python, c'est cool ça en python par exemple - Code:
-
def is_majeur(age): return age >= 18 Bref je sens que je vais aimer le C++ et le C |
| | | koija Professeur
Nombre de messages : 81 Age : 28 Réputation : 11 Date d'inscription : 13/02/2011
| Sujet: Re: Cours n°7 - Les structures de contrôle Mer 18 Avr - 19:07 | |
| Aah le python ! Je me suis acheté un livre dessus et je le lis souvent quand j'ai rien à faire. Mais j'aime pas vraiment ce langage :/ .. Peut être que je me suis trop accroché au C(++?). Bref, en python t'as beaucoup de similitudes possibles entre les programmes que tu fais en ce langage et le C (ou C++). Normal! Le Python s'est "inspiré" du C Et ravis d'apprendre que tu vas te plaire en C/C++ | |
| | | Contenu sponsorisé
| Sujet: Re: Cours n°7 - Les structures de contrôle | |
| |
| | | | Cours n°7 - Les structures de contrôle | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|