• 1. Video

       

       

    • 2. Compiler ou interpréter un programme

      Le langage C est un langage typé et qui nécessite un compilateur C: gcc pour Code ::Blocks et pythonTutor . Un IDE (outil intégré de développement) permet de saisir du code source, de le compiler, de l’exécuter et de le débugger.

      Afin de bien comprendre chacun de ces termes, commençons par étudier un langage non typé et interprété (et non compilé comme le C) : le langage python.
      Un script python est un fichier texte ayant l’extension py. Dans notre exemple, le fichier test.py va être interprété pour afficher le résultat du programme. On peut voir dans ce programme python que la variable n n’est pas typée (on ne sait pas si elle est de type entier ou réel).

      interpréteur python                   

      Si l’on reprend le même programme mais qu’on l’écrit en langage C, la variable n doit être définie avant d’être utilisée (le langage C est typé), et le fichier source va être compilé (génération possible de warning ou d’erreurs de compilation) et si le code est compilable (pas d’erreurs détectées par le compilateur) celui-ci va générer un fichier exécutable (suite de 0 et 1 qui code les instructions compréhensibles par le processeur). Le code est alors exécuté
       

      compilation gcc    

      Lors de la génération de l'exécutable sur CodeBlocks, on peut voir les commandes permettant de générer le fichier exécutable. L'appel au compilateur gcc.exe se fait en 2 passes : lecture du fichier source main.c et génération d'un fichier objet main.o puis génération de l'exécutable du nom du projet (monPremierProjetCodeblocks.exe) à partir du fichier objet main.o. C'est ce fichier exécutable qui sera alors lancé.

      Quizz
    • 3. Saisie clavier : fonction scanf (<stdio.h>)

      L’affichage à l’écran se fait au travers la fonction printf, la saisie au clavier se fait via la fonction scanf.

      Pour saisir au clavier la valeur d'une variable nommée nomDeVariable, vous utiliserez :

      scanf("%d", &NomDeVariable);        si la variable est de type int
      scanf("%lf", &NomDeVariable);        si la variable est de type double

      Il est aussi possible de saisir plusieurs variables dans un seul scanf :

      scanf("%d%d", &var1, &var2);        si les 2 variable sont de type int
      scanf("%d%lf", &var1, &var2);        si var1 est de type int et var2 est de type double

      Mais par contre il ne faut pas ajouter du texte dans le scanf, seulement "%d" ou "%lf"

      int n;

      printf("entrer la valeur :");

      scanf("%d", &n);

       Attention : il est fortement déconseillé d'ajouter du texte dans la fonction scanf, vous risquez d'être surpris du résultat

      Utilisation de scanf dans Visual Studio 
      Autre solution dans Visual Studio : scanf_s (version sécurisée par Microsoft du scanf)

      #define _CRT_SECURE_NO_WARNINGS

      #include <stdio.h>

      int main() {

          int nbGroupes, nbElevesParGroupe, nbTotalEleves;

          // Lecture du nombre de groupes (clavier)

          printf("nombre de groupes :");

          scanf("%d", &nbGroupes);

          // Lecture du nombre d'élèves par groupes (clavier)

          printf("nombre d'eleves par groupe:");

          scanf("%d", &nbElevesParGroupe);

          // Calcul du nombre total d'élèves

          nbTotalEleves = nbGroupes * nbElevesParGroupe;

          // Affichage du nombre total d'élèves

          printf("il y a %d eleves", nbTotalEleves);

          return 0;

      }

      #include <stdio.h>

      int main() {

          int entier, res;

          printf("entrer la valeur entiere :");

          scanf_s("%d", &entier);

          res = entier * 2;

          printf("%d * 2 = %d", entier, res);

          return 0;

      }

      Visual Studio est l'outil de développement que nous allons utiliser (PythonTutor ne permet de d'utiliser la fonction scanf). Par rapport à gcc (Codeblocks) le compilateur de Visual Studio ne permet pas la compilation du scanf (problèmes de sécurité). Nous avons donc 2 solutions pour utiliser la fonction de lecture clavier :

      • ajouter #define _CRT_SECURE_NO_WARNINGS  pour permettre malgré tout d'utiliser la fonction scanf
      • utiliser la fonction scanf_s à la place de  scanf  .

      Quizz

    • 4. Exercices scanf

    • Lecture de valeurs et calculs ou tests pair et impair

    • 5. Les structures de contrôle while et do while

       Nous avons vu déjà 2 structures de controles :

      • if( ) {  } ou if( ) {  } else {  } : permettent de répondre à la questions du test qui donne le choix entre 2 séquence de programme

      • for( ;  ; ) {  } : permet de répondre à la question répéter une séquence un certain nombre de fois

      Nous allons maintenant voir 2 autres structures de controles qui vont permettre de répéter une séquence de programme un nombre de fois déterminé en général par un test de sortie

         Commençons par la structure en while egg { } qui va répéter le code un nombre de fois déterminé par le test à l'intérieur des parenthèses ; dans l'exemple ci-dessous, l'utilisateur recommence tant qu'il n'a pas saisie une valeur comprise entre 1 et 10.

      Code Visual Studio : exemple while() {}
      Ordinogramme
      Résultat du programme

      #include <stdio.h>

      int main() {

          int choix = 0;

          while (!((choix >= 1) && (choix <= 10))) {

              printf("Tapez un nombre: ");

              scanf_s("%d", &choix);

          }

          printf("valeur choisie :%d\n", choix);

          return 0;

      }

      ordinogramme while Tapez un nombre: 32
      Tapez un nombre: 0
      Tapez un nombre: 2
      valeur choisie :2

      Avec le while egg { } le test est fait avant la saisie de la valeur, il faut donc donner une valeur à choix pour que le test soit vrai au démarrage du programme.

      Reprenons le même cahier des charges, et traitons le avec la structure do{ } while egg;

      Code Visual Studio : exemple do { }while();
      Ordinogramme
      Résultat du programme

       

      #include <stdio.h>

      int main() {

          int choix;

          do {

              printf("Tapez un nombre: ");

              scanf_s("%d", &choix);

          } while (!((choix >= 1) && (choix <= 10)));

          printf("valeur choisie:%d\n", choix);

          return 0;

      }

      ordinogramme do while

      Tapez un nombre: 32
      Tapez un nombre: 0
      Tapez un nombre: 2
      valeur choisie :2

      En général lorsqu'un cahier des charges utilise le mot clé tant que, on utilisera une des 2 structures  while egg { } ou do{ } while egg;       Le programmeur choisira entre ces 2 structures celle qui convient le mieux à son problème (les 2 peuvent en général être utilisés pour obtenir le même résultat).

      Quizz
    • 6. Exercices while et do while

      On ne va pas assez le répéter : c'est par l'entrainement qu'on se créé un mental !

    • 7. Expressions numériques et conditions

      En langage C, toute expression numérique est une condition. Par exemple, la valeur 5 est une condition qui signifie « vrai » et la valeur 0 est une condition qui signifie « faux ». On peut énoncer les choses ainsi :

      Tout ce qui est différent de zéro est interprété comme vrai
      Zéro est interprété comme faux.

      Expressions
      Traduction en français
      Valeur numérique
      Valeur logique (vrai/faux)

      x == 0

      x est égal à 0 ?

      0

      faux

      x != y

      x est différent de y?

      1

      vrai

      (x >=4) && (x<=6)

      x est compris entre 4 et 6?

      1

      vrai

      !((x >=4) && (x<=6))

      x n’est pas compris entre 4 et 6?

      0

      faux

      (x <4) || (x>6)

      x n’est pas compris entre 4 et 6?

      0

      faux

      Voici le programme de test de ce calcul :

      Extrait de code Résultat

       int resultat,n=2;

       resultat = (n == 3);

       printf("2==3 => %d\n", resultat);

       resultat = (n >= 2 && n <= 3);

       printf("n compris entre 2 et 3 => %d\n", resultat);

      2==3 => 0

      n compris entre 2 et 3 => 1

      Quizz
    • 8. Tests de fin de Chapitre

    • Ce test aborde les 2 premiers sujets du chapitre sous forme d'exercices aléatoires, n'hésitez pas à recommencer, c'est la note la plus élevée qui sera celle retenue comme note finale.

      4.1 Compiler ou interpréter un programme    
      4.2 Saisie clavier : fonction scanf (stdio.h)

    • Ce test aborde la fin du chapitre sous forme d'exercices aléatoires, n'hésitez pas à recommencer, c'est la note la plus élevée qui sera celle retenue comme note finale.

      5.1 Une expression numérique est une condition    
      5.2 Une condition est une expression numérique    
      5.3 Boucle « tant que » : while    
      5.4 Boucle « Faire … tant que » :do/while