• 1. Video

       

       

         

    • 2. Introduction

      Le langage C est un langage proche de la machine et c'est pour cela qu'il est très utilisé en électronique et informatique embarquée. Il permet d'écrire des programmes optimisés en vitesse et empreinte mémoire ce que ne permet pas des langages plus évolués comme python, java ou C#. Rappelons aussi qu’il a été utilisé pour écrire et développer le système d'exploitation Unix, base du système d'exploitation Linux actuel. Le langage C est de plus à la base d’un grand nombre de langage objet, avec en 1983 la création du langage C++, mais est aussi des langages Java, JavacriptC# (Microsoft) et Objectif C(Apple) pour le développement de l'iPhone depuis fin 2000. Le langage C est à la base d’un grand nombres d'applications ( iPhone, Jeux Video, informatique industrielle, web, programmation système,...) et à ce titre fait partie des langages incontournables pour le développeur.

      Histoire les langages de programmation

      Dans cette première leçon, nous allons utiliser un outil de compilation et d’exécution en ligne :https://pythontutor.com/c.html , qui permet de se lancer sur ses premiers programmes sans être géné par l'installation d'un IDE (integrated development environment) tels que Code::Blocks,(PC ou PC), Visual Studio (seulement sur Windows) ou Visual Studio Code.(PC ou MAC). Dans la vidéo, vous avez les tutoriels pour installer et programmer sur ces 3 outils.

      Pythontutor présentation

    • 3. Premier programme

      Un programme en C se trouve à l’intérieur des accolades { } et le programme principal s’appelle main(). Un programme principal renvoie au système d’exploitation (return) une valeur. Celle-ci est par défaut la valeur 0 si l’exécution du programme se passe bien. L'exécution du programme va commencer à l'accolade ouvrante et se terminer à l'accolade fermante.

      Premier programme pythontutor.com

      La fonction printf permet d'afficher un message à l'écran. Le message doit être écrit entre guillemets. Certaines séquences de caractères ont un sens particulier. La succession \n (on dit « antislash n ») indique de sauter une ligne

      printf est une fonction d’affichage qui est déclarée dans la bibliothèque stdio.h (STanDart Input Ouptut). Il est préférable d’ajouter avant la fonction principale main l’inclusion de la bibliothèque stdio.h. avec la directive #include <stdio.h>. Si on oublie de placer cette directive, le programme fonctionne mais le compilateur renvoie des warnings.

      warning compilation langage C

      iconeTester le nouveau programme sur pythonTutor et vérifier que les « Warnings » disparaissent lors de l’exécution du programme.

      #include <stdio.h> 

      int main(){

          printf("Bon");

          printf("jour");

          return 0;

      }

      Quizz


      Remarquez que les lignes d'instructions se terminent avec un point-virgule.  

      Tester le nouveau programme sur pythonTutor et vérifier qu'il est possible avec un seul printf d'afficher du texte sur plusieurs lignes grace au caractère de controle \n (saut de ligne).

      #include <stdio.h> 

      int main(){

          printf("Bon\njour\na tous");

          return 0;

      }

      Quizz

    • 4. Créer et afficher des variables

      Un programme permet de manipuler des données. Pour dire les choses simplement, pour l'instant, un programme permet d'effectuer des calculs sur des nombres.

      Pour ranger les nombres dans la mémoire de l'ordinateur, on utilise des variables.
      En langage C, pour définir une variable, il faut :
      •    Son type (int ou double)
      •    Son nom 
      •    Sa valeur (facultatif)

      Variable de type int non initialisée Variable de type int initialisée

           int nbTour;

           int compteur = 0;

      Pour cette séance, nous allons manipuler deux types de nombres différents :
      •    Des entiers, int en langage C
      •    Des nombres à virgule ou réels (le séparateur décimal est un point), double en langage C

      Remarque : Attention, un nombre réel est noté à la mode anglo-saxonne, c’est donc un point qui fait office de virgule. Ainsi 10,6 n’est pas un nombre en C, il faudra écrire 10.6. Comme sur les machines à calculer, on peut aussi écrire 1.06e1 qui est égal à 1.06*10^1=10.6 (autre façon d'écrire 10.6).

      Quizz

       

      Pour choisir le nom des variables : les seuls caractères autorisés sont les 26 lettres de l'alphabet en minuscules de a à z et en majuscules de A à Z, les chiffres de 0 à 9 et le caractère de soulignement _ (underscore). PAS d'espace, de caractères accentués ni de caractères de ponctuation !

      Quizz

       

      On appliquera les règles suivantes :
      •    un nom de variable commence par une minuscule (pour faire la différence avec les noms de constante en majuscule) 
      •    si un nom de variable est constitué de plusieurs mots, alors chaque mot (excepté le premier) commence par une majuscule
      •    un nom de variable a un sens explicite

      taille      nombreDeGroupes      nbJoueurs……dimensionHorizontale……cptTours

      Quizz

       

      En langage C, le signe = permet de donner une valeur à une variable. C'est le signe de l'affectation. On le lit de droite à gauche, c'est-à-dire qu'on calcule ce qui se trouve à droite du signe et on range le résultat du calcul dans la variable située à gauche du signe.

      Quizz

       

    • 5. Les opérations arithmétiques

      Les opérateurs arithmétiques sont :
      •    addition +
      •    soustraction -
      •    division /
      •    multiplication *

      Testez le code suivant. Vérifier que les variables changent après chaque pas (ou ligne d’exécution) de programme.

      programmation C : les cases mémoires

      Ces programmes ne produisent pas d'affichage : aucune instruction n'est présente dans le code pour cela !
      Pour afficher la valeur d'une variable nommée nomDeVariable, vous utiliserez :
      •    printf("%d", nomDeVariable);          si la variable est de type int
      •    printf("%lf", nomDeVariable);          si la variable est de type double

      Vous pouvez aussi afficher du texte et une ou plusieurs variable avec le printf :

      •    printf("%d et %d", nomDeVariable1, nomDeVariable2);          si les 2 variables sont de type int
      •    printf("%lf %lf", nomDeVariable1, nomDeVariable2);          si les 2 variable est de type double

      3 solution pour afficher un double : %lf, %lg ou %.2lf

      Code

      Affichage

      Commentaire

      printf("affichage 1 : %lf", produit);

      affichage 1 : 6.600000

      Affichage classique

      printf("affichage 2 : %lg", produit);

      affichage 2 : 6.6

      Affichage au mieux (machine à calculer)

      printf("affichage 3 : %.2lf", produit);

      affichage 3 : 6.60

      Affichage 2 chiffres après la virgule

      Voici 2 exemples de code permettant d'afficher le résultat d'une somme sur des entiers et le résultat d'un produit de type double (affichage de 3 façons) :

       printf ("%d+%d=%d",4,8,4+8);4+8=12

      printf("%lf %lg %.2lf",6.6,6.6,6.6);6.6000000 6.6 6.60

      Quizz
    • 6 Premier programme en C

      Lancez-vous dans votre premier programme...

    • 7. Différences entre division entière et division réelle

      Nous avons vu qu’il y avait 2 grands types de variables en programmation C : 

      • Le type int qui permet de coder une variable entière sur 32 bits, soit une valeur qui peut aller de -2 Milliards (-231) à +2 Milliards (231-1).
      • Le type double qui permet de coder une variable réelle sur 64 bits. Le codage de cette variable permet de coder des valeurs très petites (2.225074*10-308) à très grandes (1.79769310+308), positives ou négatives.

      Quel type de variable choisir ? Prenons 2 extraits de code permettant d’afficher le nombre total d’étudiants :

      Extrait

      Résultat

      int nbGroupes = 3, nbEtudiantsParGroupe=26, nbTotalEtudiants ;

      nbTotalEtudiants = nbGroupes * nbEtudiantsParGroupe;

      printf("Nombre:%d\n", nbTotalEtudiants);

       

      Nombre:78

       

      double nbGroupes = 3, nbEtudiantsParGroupe=26, nbTotalEtudiants ;

      nbTotalEtudiants = nbGroupes * nbEtudiantsParGroupe;

      printf("Nombre:%lf\n", nbTotalEtudiants);

       

      Nombre:78.000000

       

      Pour l’addition, la multiplication et la soustraction les résultats des calculs sont identiques pour des calculs sur des entiers ou réels, avec comme différence essentielle que le résultat affiché le sera sous forme entière ou réelle (comme on peut le voir dans le tableau ci-dessus). Ce n’est pas le cas pour la division !

      Si la division implique 2 valeurs entières la division sera une division entière dite euclidienne avec un quotient et un reste de la division, sinon nous aurons une division réelle avec un résultat avec un chiffre à virgule.<

      Prenons un premier exemple : comment est interprété 80/7 ? Comme une division entière

      divition entière en langage C

      double resultat = 80.0/7 ; // le résultat du calcul sera 11.428571 division de type réel (comme sur un machine à calculer)
      double resultat = 80/7 ; // le résultat du calcul sera 11.00000 division de type entier (division euclidienne on perd les chiffres aprés la virgule)

      Quizz
    • 8. Test de fin de Chapitre

    • Ce test aborde la totalité des sujets abordés dans ce 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.

      1.1 Apprendre à programmer
      1.2 Notion de variables
      1.3 Opérations arithmétiques */+-
      1.4 division entière ou division réelle ?