Annonce

Réduire
Aucune annonce.

Cours langage C n°4 - Les tests et conditions

Réduire
Ceci est une discussion importante.
X
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Cours langage C n°4 - Les tests et conditions

    LES TESTS ET CONDITIONS

    Imaginons que l'on cherche à savoir si une personne est majeure ou mineure, nous allons lui demander son âge et comparer avec l'âge de la majorité (18 ans en France).

    Si je devais transcrire en tant que résolution du problème, je l'écrirais ainsi

    Code:
    DEMANDER age
        SI age >= 18
            AFFICHER majeur
        SINON
            AFFICHER mineur
    Ça ne semble pas difficile, même on trouve cela logique, mais écrire un pseudo code, c'est quasiment avoir fait tout le travail de fond, la forme étant la traduction pseudo code -> langage C.

    Traduire DEMANDER

    Eh bien ce n'est pas aujourd'hui que nous le ferons, cette pratique demande des bases un peu plus complexe, vous verrez sa syntaxe un peu plus tard...

    Traduire AFFICHER

    Nous l'avons vu, le répéter serait inutile, reportez-vous au cours n°3 pour revoir cette partie, dans le cas où des oublis vous pénalisent.

    Traduire SI et SINON

    Nous sommes là pour cela aujourd'hui...

    SI sera traduit en C par le mot clé if
    SINON sera traduit en C par le mot clé else
    SINON SI sera traduit par le mot clé else if

    Dans un langage C, cela se traduit comme ci-dessous

    Code:
    if (...)
    {
        /* suite */
    }
    else if (...)
    {
        /* suite */
    }
    else
    {
        /* suite */
    }
    Entre les points de suspension nous mettrons nos tests

    Les tests

    Les tests permettent la comparaison d'une valeur à une autre valeur. Une variable contenant une valeur peut donc en tout logique être comparée à une autre variable ou valeur.

    Attention toujours resté cohérents avec vos types de données, par exemple, vous ne pouvez comparer un entier et une chaîne de caractères.

    Un test peut donc renvoyer deux valeurs en C
    • FAUX traduit en C par la valeur 0
    • VRAI traduit en C par la valeur 1


    Par exemple

    Code:
    int age = 18;
    printf("%d\n", age>=18);
    renverra la valeur 1, car age est bien supérieur ou égale à 18...

    Si l'on tape le code ci-dessous

    Code:
    int age = 18;
    printf("%d\n", age>18);
    On remarque le retrait de l'opérateur =, ce qui implique la question suivante: Est-ce que la variable age est strictement supérieur à 18 ?

    La réponse est bien évidemment, non ! La réponse du langage est sans appel, il nous retourne 0, ce qui est sommes toute logique car 0 représente la réponse FAUX.

    Si l'on tape le code ci-dessous

    Code:
    int age = 18;
    printf("%d\n", age==18);
    Non je ne me suis pas trompé, c'est bien l'opérateur ==, test d'égalité en C et dans beaucoup de langages de programmation.

    Si vous remplacez == par =, vous ne faîtes plus un test, mais une assignation, voir cours n°1 sur les variables...

    La réponse de ce test sera la valeur 1, car le test est correct, la variable age contenant la valeur 18 est bien égale à l'entier de valeur 18.

    Que représente else ?

    C'est simple, else est le mot clé qui représente tout les tests restants...

    Réponse à notre problématique

    Code:
    #include <stdio.h>
    
    int main(void)
    {
        int age = 18;
    
        if (age >= 18)
        {
            puts("Vous êtes majeur !");
        }
        else
        {
            puts("Vous êtes mineur !");
        }
    
        return 0;
    }
    EXERCICES

    Exercice n°1
    1. Complétez le code ci-dessous, en assignant chaque caractère de la chaîne "hello" à la variable chaîne.

      Code:
      #include <stdio.h>
      
      int main(void)
      {
          char chaine[50];
      
          /* début code */
      
      
          /* fin code */
      
          return 0;
      }
    2. Utilisez une structure conditionnelle pour vérifier si le 1er caractère à la valeur 'h'. Si oui, remplacez 'h' par le caractère 'H', sinon on ne fait rien.
    3. Affichez la variable chaîne sur la console.


    Exercice n°2

    On génère au hasard un entier entre 0 et 100 exclus, compléter le code pour tester si ce nombre est pair ou impair, et afficher en console le résultat...

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
        int nombre; /* déclaration de la variable nombre */
    
        srand(time(NULL)); /* initialisation du générateur de nombre aléatoire */
    
        nombre = rand() % 100; /* Nombre compris entre 0 et 100 exclus -- à tester si pair ou impair -- */
    
        /* code à compléter */
    
    
        /* fin du code */
    
        return 0;
    }
    Merci de m'avoir lu et à bientôt pour le prochain cours
    Dernière modification par fred, 04 août 2014, 18h11.

  • #2
    Exercice 1:
    Code:
    #include <stdio.h>
    
    int main(void)
    {
         char chaine[50];/* Déclaration */
         chaine[0] ='h'; /* Assignation chaque caractère*/
         chaine[1]='e';
         chaine[2]='l';
         chaine[3]='l';
         chaine[4]='o';
         chaine[5]='\0';/*fin de chaine*/
             if (chaine[0] =='h')/* condition pour vrai*/
        {
            	
          chaine[0]='H'; /* on remplace h par H */
        }
        else
        {
            chaine[0]='h'; */sinon on ne fait rien */
        }
         puts(chaine);/*ecrire chaine*/
        return 0;
    }
    Exercice 2:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
        int nombre; /* déclaration de la variable nombre */
    
        srand(time(NULL)); /* initialisation du générateur de nombre aléatoire */
    
        nombre = rand() % 100; /* Nombre compris entre 0 et 100 exclus -- à tester si paire ou impaire -- */
    
       if( (nombre % 2) == 0){/* on utilise un divisible par 2 pour avoir des paires */
         printf ( "%d est paire\n", nombre); 
    } else {
    	
    	 printf ( "%d est impaire\n", nombre); 
    }
    
        return 0;
    }

    Commentaire


    • #3
      Je ne peux pas modifier le poste au dessus donc désoler j'écrit à la suite voila j'ai virer else en effet il ne sert à rien mais je pensais que tu voulais que l'on garde un standard if/else.

      Code:
      #include <stdio.h>
      
      int main(void)
      {
           char chaine[50];/* Déclaration */
           chaine[0] ='h'; /* Assignation chaque caractère*/
           chaine[1]='e';
           chaine[2]='l';
           chaine[3]='l';
           chaine[4]='o';
           chaine[5]='\0';/*fin de chaine*/
               if (chaine[0] =='h')/* condition pour vrai*/
          {
              	
            chaine[0]='H'; /* on remplace h par H */
          }
         
           puts(chaine);/*ecrire chaine*/
          return 0;
      }
      Dernière modification par DreAmuS, 02 juillet 2014, 11h39.

      Commentaire


      • #4
        Bonjour à tous,

        Code:
        #include <stdio.h>
        #include <stdlib.h>
        #include <time.h>
        
        
        int main(void)
        {
        
            // === Exercice n°1 ===
        
            char chaine[50];
        
            chaine[0] = 'H';
            chaine[1] = 'e';
            chaine[2] = 'l';
            chaine[3] = 'l';
            chaine[4] = 'o';
            chaine[5] = '\0';
        
            if (chaine[0] == 'h')
            {
                chaine[0] = 'H';
            }
        
            else
            {
                // On fait rien :s
            }
        
            puts(chaine);
            putchar('\n');
            putchar('\n');
        
        
            // === Exercice n°2 ===
        
        
            int nombre;
        
            srand(time(NULL));
        
            nombre = rand() % 100;
        
        
            if (nombre % 2 != 0)
            {
                printf("Le nombre etait impair !");
            }
        
            else
            {
                printf("Le nombre etait pair !");
            }
        
        
            putchar('\n');
            putchar('\n');
        
            return 0;
        }
        Dernière modification par shirocen, 10 janvier 2015, 22h29.
        deux et deux font cinq

        Commentaire


        • #5
          @shirocen,

          Dans le 1er exercice on peut retirer le else, étant donné qu'on ne rentre pas dans le if, il ne se passera rien...

          Sinon tout est bien depuis que tu as commencé les cours

          Si je remercie c'est que c'est tout bon.

          Commentaire


          • #6
            Merci pour ce tuto

            Code:
            #include <stdio.h>
            #include <stdlib.h>
            #include <time.h>
            
            int main(void)
            {
                /* Exercice 1 */
            
                char chaine[50];
                chaine[0] ='h';
                chaine[1]='e';
                chaine[2]='l';
                chaine[3]='l';
                chaine[4]='o';
                chaine[5]='\0';
            
                if (chaine[0] == 'h')
                {
                    chaine[0] = 'H';
                 }
            
                 puts(chaine);
            
                /* Exercice 2*/
            
                int nombre;
            
                srand(time(NULL));
            
                nombre = rand() % 100;
            
                if (nombre % 2 == 0)
                {
                    printf("%d est un nombre pair", nombre);
                }
                else
                {
                    printf("%d est un nombre impair", nombre);
                }
            
                return 0;
            }

            Commentaire


            • #7
              Exercice n°1 :

              Code:
              #include <stdio.h>
              
              
              int main(void)
              {
                  char chaine[50] = "hello";
                  if (chaine[0] == 'h')
                      chaine[0] = 'H';
                  puts(chaine);
                  return 0;
              }
              Exercice n°2 :
              Code:
              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              
              int main(void)
              {
                  int nombre; /* déclaration de la variable nombre */
              
                  srand(time(NULL)); /* initialisation du générateur de nombre aléatoire */
              
                  nombre = rand() % 100; /* Nombre compris entre 0 et 100 exclus -- à tester si pair ou impair -- */
                  if (nombre%2 == 0)
                      printf("Nombre est pair. Il possède la valeur %d", nombre);
                  else
                      printf("Nombre est impair. Il possède la valeur %d", nombre);
              
                  putchar('\n');
                  putchar('\n');
                  return 0;
              }
              Mon blog : http://rootsheep.info

              Commentaire

              Chargement...
              X