Les  éléments de base en C++

1) Introduction
==> Programmer c’est quoi ?
Programmer signifie  réaliser des  « programmes  informatiques  ». Les  programmes demandent  à l’ordinateur d'effectuer des actions.
==> Votre ordinateur est  rempli  de programmes  comme:

  * la calculatrice est  un programme
  * votre traitement  de texte (Word) est  un programme
     
  * les  jeux  vidéo sont des programmes 

==> De quels  logiciels  a-t-on besoin pour programmer ?
Il existe plusieurs enivrements de développement (IDE).  Parmi  les environnements  de  développement, on peut citer : DEV C++,  Code :: Bloc

Cours en langage C


==>Un minimum de code
Pour n' importe  quel  programme, il  faudra  taper un minimum  de code. Ce code ne fera rien de particulier mais  il  est  indispensable.

!!! pour ouvrir  un nouveau projet (le fichier sur lequel  on va écrire  notre premier programme ) taper Ctrl+N . après bien sur d'installation de logiciel Dev C++ , puis écrire le programme  que vous souhaitez  si vous avez  un peu d'expérience, sinon  taper le programme proposé ci-dessous , à la fin d'écriture le code vous pouvez tester votre programme  est ce qu'il ça marche bien ou non en cliquant sur le boutton d’exécution  qui se trouve dans la figure suivante:

 
C'est  ce « code minimum  » que nous  allons  découvrir  maintenant. Il  devrait  servir de base pour la plupart  de vos  programmes  en langage C++.  
     


int  main()        Ou bien  
     int  main ( int argc , char * argv[] )   
Les  deux  écritures  sont  possibles, mais  la seconde (plus compliquée) est  la plus  courante.   En ce qui  nous  concerne, que l'on utilise l'une ou l'autre des  écritures, ça ne changera rien pour nous. surtout  que nous  n'avons  pas  encore le niveau pour analyser ce que ça signifie.

*  #include <iostream>
      #include <................>
   
Ce sont  des  lignes  spéciales  que l'on ne voit  qu'en haut des fichiers source. Ces lignes  sont  facilement  reconnaissables  car elles commencent  par un dièse #. Ces  lignes  spéciales, on les  appelle directives  de préprocesseur (un nom  compliqué, n'est-ce pas ?). 
Ce sont  des  lignes  qui  seront  lues  par un programme appelé préprocesseur, un programme qui  se lance au début  de la compilation.
Le  mot  include en anglais  signifie « inclure » en français. Ces  lignes  demandent  d'inclure des  fichiers  au projet, c'est-à-dire d'ajouter des  fichiers  pour la compilation. Ces  fichiers  existent déjà, des fichiers source tout prêts. On verra plus  tard qu'on les  appelle des  bibliothèques. En gros, ces  fichiers  contiennent  du code tout  prêt  qui permet  d'afficher du texte à l'écran.

*  int main()  {  ..............    }
Cette fonction s'appelle la fonction  main. C'est  un nom  de fonction particulier qui  signifie « principal  ». main est  la fonction principale de votre programme, c'est toujours  par la fonction main que le programme commence. Une fonction a un début  et  une fin, délimités par des accolades{ et }. Toute la fonction main  se trouve donc entre ces accolades. 

cout<<"Hello world!" ;     
      return 0 ;
Ces lignes à l'intérieur d'une fonction s’appellent  instructions, Chaque instruction est une  commande à l'ordinateur. Chacune de ces  lignes  demande à l'ordinateur de faire quelque chose. Par exemple la première demande par l’ordinateur  d’afficher le message Hello world!  à l'écran, puis  passer à l'instruction suivante  return 0 ; . Cette ligne indique qu'on arrive  à la fin de notre fonction main et demande de renvoyer la valeur 0. 


Pourquoi  mon programme retourne le nombre 0 ?
En fait, chaque programme une fois  terminé renvoie une valeur, par exemple pour dire que tout  s'est  bien passé. En pratique, 0 signifie « tout  s'est  bien passé » et  n'importe quelle autre valeur signifie « erreur ». La plupart  du temps, cette valeur n'est  pas vraiment  utilisée, mais  il  faut  quand même en renvoyer une. Votre programme aurait  marché sans  le return 0, mais  on va dire que c'est  plus  propre et  plus  sérieux  de le mettre, donc on le met.

!! Très  importanttoute instruction se termine obligatoirement par un point-virgule « ; ». Si  vous  oubliez  de mettre un point -virgule à la fin d'une  instruction, votre programme ne  compilera pas !. 

* Écrire  un message  à l'écran
À partir de maintenant, on va modifier nous -mêmes  le code de ce programme minimal. Qui permet d’afficher le message « Bonjour » à l'écran.       "Essayez" 


* Les  caractères  spéciaux
Les  caractères  spéciaux  sont  des  lettres  spéciales  qui  permettent  d'indiquer qu'on veut aller à la ligne, faire une tabulation, etc. Ils  sont  faciles  à reconnaître : c'est  un ensemble de deux  caractères. Le premier d' entre eux  est  toujours  un    anti-slash ( \ ), et  le second un nombre ou une lettre. Voici  deux  caractères   spéciaux  courants  que vous  aurez  probablement  besoin d'utiliser, ainsi que leur signification:

\n  ou <<endl ; retour à la ligne «Entrée» 
\t :   tabulation.
Dans  notre cas, pour faire une entrée, il  suffit  de taper \n pour créer un retour à la ligne. Si  je veux  donc faire une tabulation, je devrais  taper \t.

* Les  commentaires
Lorsqu'un programme devient long, il est conseillé d’ajouter des lignes de commentaires dans le programme, c’est-à-dire des lignes qui ont pour but de donner des indications sur les instructions effectuées et d’expliquer le fonctionnement de programme  sans que le compilateur ne les prenne en compte. 
On va voir  deux  types de commentaires :

Commentaire sur une ligne :     
 // un commentaire 

Commentaire sur plusieurs lignes :   

Remarque : Parfois on utilise les commentaires pour annuler l’action de quelques instructions dans  un programme au lieu de les effacer  comme dans cet exemple :



Le programme  ignore  les instructions qui se trouvent  entre  les deux commentaires et affiche seulement Bonjour.

2) Les variables et les constantes 
2-1) Notion de variable
Les données  ainsi que les résultats des calculs intermédiaires ou finaux, sont rangés dans des cases mémoires qui correspondent à des variables, Ainsi, une variable  est rangée dans un emplacement mémoire nommé, de taille fixe (ou non) prenant au cours du déroulement de programme un nombre indéfini de valeurs différentes. 


2-2) déclaration des variables 
La partie déclaration consiste à énumérer toutes les variables dont on aura besoin  au cours de programme. Chaque déclaration doit comporter le nom de variable (identificateur) et son type.
Syntaxe :     type   identificateur  ;

Identificateur : Un identificateur est le nom donné à une variable. Ce  nome doit obligatoirement  commencer par une lettre suivie d’une suite de  lettres et les chiffres et il ne doit pas contenir d’espace.
Types de données :
Le type de variable est l’ensemble des valeurs qu’elle peut prendre.
int : sert à manipuler les nombres entiers positifs ou négatifs. 
Par exemple : 5  , 20 , -4
float :  sert à manipuler les nombres à virgule. Par exemple : 5.0 ,  2.1,  -1.278
char :  sert à manipuler des caractères, Par exemple :   'A'   ,  '6'

Exemple :  
 int N ;          
float  e , r  ;                        
char   letter ;


Les opérations sur des variables :



2-3) Les constantes
Comme une variable, il existe une  constante  correspond un emplacement mémoire réservé auquel on accède par le nom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du programme.

Syntaxe :     
const type  Nom_Constante = valeur ;   
Exemple :    const   float pi = 3.14 ;

3) Les instructions de base    
Une instruction est une  action élémentaire commandant à la machine un calcul, ou une communication avec l’un de ses périphériques d’entrées  ou de sorties. Les instructions de base sont :

3-1) L’instruction d’affectation :
L’affectation permet d’affecter une valeur à une variable. Elle est symbolisée par =
Syntaxe :       Variable   =  Expression ;
Exemples :

int N = 6 ;     
float  e = 2.56 ;               
char   letter = 'A' ;  

3-2) L’instruction d’entrée :
L’instruction d’entrée ou de lecture donne la main à l’utilisateur pour saisir une donnée au clavier. La valeur saisie sera affectée à une variable. Cette instruction est  effectuée via la fonction  cin >> [variable] ;
Exemple :   cin>> age ;

4-3) L’instruction de sortie :
Avant de lire une variable, il est conseillé d’écrire un message à l’écran, afin de prévenir l’utilisateur de ce qu’il doit taper.
L’instruction de sortie (d’écriture) permet d’afficher des informations  à l’écran.

Syntaxe:  
cout<<"message à l'écran";    

Exemple: 
cout<<" Entrer votre email : " ; 
 
4-4) Exercice d’application:


        *** Chapitre 2 : Les  structures alternatives et répétitives *** 

1) Les structures alternatives 
1-1) Introduction :
Contrairement  au traitement séquentiel, la structure alternative ou conditionnelle permet d’exécuter ou non une série d’instructions selon la valeur d’une condition.
1-2) La structure   if {}  ou  if {} else {}
Syntaxe : 


Une condition est une expression logique ou une variable logique évaluée à  Vraie ou fausse. La condition est évaluée. Si  elle est vraie, la série d’instruction(s)1 est exécutée et l'ensemble  de l'instruction(s) 2 est ignoré, la machine sautera directement à la première instruction située  après cette structure.
De  même, au cas où la condition  était fausse la machine saute directement à la première ligne située après le  else et exécute l’ensemble d’instruction2.

Exercice d’application 1
Ecrire un programme  qui affiche si un nombre entier  saisi au clavier est pair ou impair.



Remarque : il existe aussi un autre type de condition c’est la condition composées.
Certains problèmes exigent  de formuler des conditions qui ne peuvent être exprimées sous la forme simple, par exemple la condition  de  note  de devoir doit être inclus dans  l’intervalle [0, 20],  cette  condition est composée de deux conditions simples qui  sont   note 0    et   note  20

Exercice d’application 2
Ecrire  un programme qui permet de faire  une remarque d’une note saisi au clavier ( si la note supérieur  à 10  alors on affiche  validé sinon non validé  (NB : la note comprise entre 0 et 20 ! )


Exercice 1:
Ecrire un programme  qui demande deux nombres m et n à  l’utilisateur et l’informe ensuite si le produit  de ces deux nombres est positif ou négatif. On inclut   dans le programme  le cas  où le produit peut être nul.



Exercice 2:
Une boutique propose à ces clients, une réduction de 15% pour les montants d’achat supérieurs à 200 dh. Ecrire un programme permettant de saisir le prix total HT et de calculer le montant TTC en prenant en compte la réduction et la TVA=20%.


 👉 Voir plus d'exercices 👍

1-3) Structure à choix multiples (Switch)
La condition  if... else  que l'on vient de voir est le type de condition le plus souvent utilisé. Toutefois, le  if... else  peut s'avérer quelque peu… répétitif : Prenons cet exemple : 



Pour résoudre ce problème de la répétition de  if  else   if  else …. plusieurs fois. On utilise une nouvelle structure  à choix multiplesCette  structure conditionnelle permet de choisir le traitement à effectuer en fonction  de la valeur ou de l’intervalle de valeurs d’une variable ou  d’une expression.

Syntaxe :  


Lorsque l’ordinateur rencontre cette instruction, il vérifie la valeur de la variable, et il la compare  aux différentes valeurs.  
Les valeurs sont évaluées  dans l’ordre, les unes après les autres, et une fois la valeur de variable  est vérifiée l’action associée  est exécutée. On peut utiliser une instruction default  (facultative),  dont l’action sera exécutée si aucune des valeurs évaluées n’a pas été remplie.

Exercice d’application :
Ecrire un programme  permettant d’afficher le mois en lettre selon le  numéro saisi  au clavier.  
(janvier=1, février=2 ….. décembre= 12).


Remarque : Vous devez mettre une instruction break ;   à la fin de chaque cas. Pour ignorer les  instructions en dessous ! L'instruction break ; commande en fait à l'ordinateur de « sortir » des accolades. Et  instruction  defaulf ; sera exécutée si aucune des valeurs  évaluées n’a pas été remplie.

2) Les Structures  répétitives 
2-1) Introduction
Prenons un exemple : on demande à l'utilisateur de saisir le mot passe mais ce dernier peut être incorrecte , dans ce cas le programme peut soit planter par  une erreur d’exécution soit dérouler normalement jusqu'au bout, mais en produisant des  résultats fantaisistes.
Pour éviter ce problème, on peut mettre en place un contrôle de saisie pour vérifier que les données entrées au clavier correspondent bien à celles attendues par le programme.


!!! Le programme  ci-dessus résout le problème si on se trompe qu’une  seule fois, et on fait entrer une valeur correcte à la deuxième demande. Sinon en cas de deuxième  erreur, il faudrait rajouter un  «  if  ». Et ainsi de suite, on peut rajouter des  centaines  de  «  if  » 

* La solution à ce problème consiste à utiliser une structure répétitive.
Une structure répétitive, encore appelée boucle, est utilisée quand une instruction ou une liste d’instruction, doit être répétée plusieurs fois. La répétition est soumise à une condition.

 
2-2) La boucle while
La boucle while  permet de répéter un traitement tant que la condition est vraie.

Syntaxe :   



==> L’exécution de la boule dépend de la valeur de la condition. Si est vrai, le programme exécute les instructions qui suivent, jusqu’à ce qu’il  rencontre la accolade  }. Il retourne ensuite sur la ligne du while, procède au même examen, et ainsi de suite.
==> La boucle ne s’arrête que lorsque prend la valeur fausse, et dans ce cas le programme poursuit son exécution après  la boucle  « sortir des accolades ».

Exemple:


Remarque :  
Si la  structure   while   contient la condition ne devient jamais fausse. Le programme tourne dans une boucle infinie et n’en sort plus.


Exemple :


Dans cet exemple nous avons  une boucle infinie. L’ordinateur ne s’arrêtera jamais d’afficher le message Bonsoir  car la variable i qui est testée dans la condition n’est jamais incrémenter. Alors pour  résoudre  le problème de boucle infinie dans ce cas-là, on incrémente la variable i à chaque tour de boucle  pour afficher   Bonsoir  10 fois exactement.  



Exercice 1
Ecrire un programme  qui calcule la somme  S = 1+2+3+4+……..+ 10. Utilisant la boucle while.


Exercice 2 
Ecrire un programme qui calcule la somme   S= 1+2+3+4+……..+ N,  où N saisi par l’utilisateur. 


 👉 Voir plus d'exercices 👍

2-3)  La boucle  for

La boucle  for  permet de répéter une liste d’instructions un nombre connu de fois.
Syntaxe :


Exemple:


  
Cet exemple  permet d’afficher le message bonjour 10  fois, et tant que la condition est vraie la boucle répète l’exécution des instructions qui se trouvent  entre les accolades. 
==> La partie d’initialisation  est de type entier. Elle est initialisée par la valeur initiale, la partie instruction(s) augmente cette valeur par  1 automatiquement à  chaque tour de  boucle  jusqu'à la valeur finale.
==> Lorsque la valeur compteur vaut la valeur finale, le traitement est exécuté une seule  fois puis le programme sort de la boucle.

Exemple:


Exercice 1 
Ecrire un programme  qui permet de calculer la somme   S=1+2+3+….+ 10. Utilisant la boucle for.


Exercice 2   
Ecrire un programme qui permet de calculer la somme  S=1+2+3+…+ N.  Où N saisi par l’utilisateur,  Utilisant la boucle for.

    
Exercice 3
Ecrire un programme  qui affiche la table de multiplication de 5. Utilisant la boucle for.



Exercice 4
Ecrire un programme qui affiche la table de multiplication d’un  entier saisie par l’utilisateur, Utilisant la boucle for.



2-4) La  boucle   do ….While
Cette boucle permet de répéter les instructions qui se trouvent entre les accolades tant que la condition est vraie.
Remarque : Cette boucle ne s’utilise en général que pour des menus, elle est dangereuse car il  n’y a pas de vérification de la condition avant  d’y entrer.
Ce type de boucle est  très  similaire à while, bien qu’un peu moins  utilisé en général.
La seule chose qui  change en fait  par rapport  à while, c'est  la position de la condition.  Au li eu  d'être au début  de la boucle, la condition est  à la fin:


Syntaxe : 


la boucle while  pourrait  très  bien ne jamais  être exécutée si  la condition est  fausse dès  le départ. Par exemple, si la condition est fausse  dès  le début  et  on ne serait  jamais  rentré   dans  la boucle. et Pour la boucle do… while, c'est  différent: cette boucle s'exécutera toujours  au moins  une fois même si la condition est fausse.
 
Il  est  donc  parfois  utile de faire des  boucles  de ce type, pour s'assurer que l'on rentre au moins  une fois  dans  la  boucle. 

!!!  N'oubliez  pas  de mettre un point-virgule  après  le while, si non votre programme plantera à la compilation !

Exemple:
En utilisant  la boucle do…..while, on écrit  un programme  qui affiche Bonjour 10 fois.


Exercice 1
Ecrire un programme qui calcule la somme  S= 1+2+3+…+ 10. Utilisant la boucle  do…..while.
     


Exercice 2
Ecrire un programme  qui affiche la table de multiplication de 5. Utilisant la boucle  do …. While.



 👉 Voir plus d'exercices 👍

 Chapitre 3: Les Tableaux                          

1) Introduction
Imaginons que dans un algorithme, nous avons besoin d’un grand nombre de variables, il devient difficile de donner un nom pour chaque variable.
Exemple :
ce programme  permettant de saisir  sept (7) notes.


==> La même instruction répète  7 fois. Imaginons que  si l’on voudrait réaliser ce programme  avec 100 notes, cela devient très difficile.
==>  Pour résoudre ce problème, il existe un type de données qui permet de définir plusieurs variables de même type.
 

2) Définition
Un tableau est une suite d’éléments de même type. Il utilise plusieurs  cases mémoire à l’aide d’un seul nom. Comme toutes les cases portent le même nom, elles se différencient par un numéro  ou un indice. 
Nous pouvons représenter schématiquement un tableau nommé Note composé de cinq cases, dans la mémoire comme suit :



3) Tableau à une dimension
3-1) Déclaration 
La déclaration d’un tableau permet d’associer à un nom d’une zone mémoire composée d’un certain nombre de cases mémoires de même type.  
Syntaxe: type nom_tableau[taille_max]; 
Exemple :   float   Notes[40] ;

Remarques : 
==> Le premier élément d’un tableau porte l’indice  0 .
==>  La valeur d’un indice doit être un nombre entier
==> La valeur d’un indice doit  être inférieure ou égale au nombre d’éléments du tableau. Par exemple, avec le tableau tab[20], il est impossible d’écrire  tab[21] ou tab[26], ces expressions font référence à des éléments qui n’existe pas.
==> L’utilisation de ces éléments  se fait en suite, via le nom du tableau et son indice. Ce  dernier peut être soit une valeur (tab[3]  ) , soit une variable ( tab [i] ) ou encore une expression ( tab[i+1] ).  

==> Pour Faire un parcours complet sur un tableau, on utilise une boucle.

Exercice 1
Ecrire un programme  permettant de saisir  10 notes et de les stocker dans un tableau nommé Tableau, puis les afficher.



Exercice 2 : Ecrire un programme  permettant de saisir  10 notes et de les afficher après avoir multiplié toutes ces notes par 2.
         


Exercice 3

Ecrire un programme permettant de saisir 10 notes et qui affiche la moyenne de ces notes.

      

Exercice 4
Ecrire un programme permettant de saisir 10 notes et qui affiche le maximum de ces notes.


 👉 Voir plus d'exercices 👍


4) Tableau à deux dimensions
Reprenons l’exemple des notes en considérant  cette fois qu’un étudiant a plusieurs notes (une note pour chaque matière). On peut simplifier des choses comme suite.






==> Les tableaux à deux dimensions se représentent comme une matrice ayant un certain nombre de lignes (première dimension) et un certain nombre de colonne (seconde dimension). 
4-1) Déclaration
  Type  Nom_Tableau [nb_lignes][ nb_colonnes ;
     Exemple :    float  Tableau[3][4] ;

Remarques:
==>  L’utilisation d’une matrice  se fait via son nom  et ses indices. Ces derniers  peuvent être soient des valeurs (tab[1][3]  ) , soient des  variables   ( tab [i][j] ) ou encore des expressions ( tab[i+1][j] ).
==> Pour Faire un parcours complet sur une matrice, on utilise deux boucles, l’une au sein de l’autre, c’est ce qu’on appelle  les boucles imbriquées. La première boucle pour  parcourir les lignes tandis que la deuxième est utilisée pour parcourir les éléments de la ligne précisée par la boucle principale (la première boucle).
Exemple :
Ce programme  permettant de saisir  les  notes  des 3 étudiants en 4 matières.