Académique Documents
Professionnel Documents
Culture Documents
• l'allocation dynamique,
• les fichiers. 1
1. LES IDENTIFICATEURS
Ils servent à désigner les différentes données manipulées par le programme, telles les
variables et les fonctions,
Ils sont formés d’une suite de caractères choisis parmi les lettres et/ou les chiffres, le
premier d’entre eux étant nécessairement une lettre.
• Seul le caractère souligné _ est considéré comme une lettre. Il peut donc même
apparaître au début d’un identificateur. Voici quelques identificateurs corrects :
lg_lig , valeur_5 , _total , _89
• Les majuscules et les minuscules sont autorisées, mais ne sont pas équivalentes. Ainsi,
en C++, les identificateurs ligne et Ligne désignent deux objets différents.
• Les noms réservés (if, switch, case, try, ...) ne peuvent être utilisés
identificateurs. 2
2
• Pas de restriction sur la longueur des identificateurs.
2. LES TYPES DE DONNÉES Le tableau suivant résume la taille des types de données en C/C++ :
Type Longueur Domaine de valeurs
4
4. LES OPÉRATEURS
Opérateurs Fonction
& | ^ && || ET, OU, OU exclusif (bit à bit) ; ET, OU logique Court-Circuit
<< >> décalage à gauche et à droite
? : conditionnel ou ternaire
() [] -> . ->* .* référence et de sélection
5
5
Evaluation des expressions
Priorité des opérateurs :
• x[y] x++ x--
• ++x --x !x -x
• x*y x/y x%y
• x+y x-y
• x >> y x << y
• x < y x > y x >= y x <= y
• x == y x != y
• x && y
• x || y
• x = y x op= y
• x ? y : z
• Pour éviter les erreurs, on procède d’une autre manière : il est possible de convertir
explicitement des données d’un certain type en un autre en utilisant un cast.
Ex: int i=3,j=2,m ;
double r=3.4 ;
m = ((double)i/j)*r ; //(double): cast sur la valeur de i convertit en double
Cela donne m = 5.
cin >> i;
N.B: Les espaces, les tabulations et les fins de lignes sont des séparateurs.
6. LES INSTRUCTIONS DE CONTRÔLES
1. Les instructions conditionnelles
o L’instruction if
Forme : if(<expression entière>)
<instruction1>
else
<instruction2>
Mécanisme : l’<expression entière> est évaluée.
– si sa valeur est différente de 0 (VRAIE), l’<instruction1> est effectuée,
– si sa valeur est nulle (FAUX), l’<instruction2> est effectuée.
Toute expression entière différente de 0 (resp. égale à 0) est considérée comme vraie (resp. fausse).
o L’instruction switch Cette instruction permet un branchement conditionnel multiple.
Forme : switch (<expression>){
case <valeur1> : <instructions>
case <valeur2> : <instructions>
...
case <valeurn> : <instructions>
default : <instructions>
}
L’instruction for
Forme : for (<expression1>; <expression2>; <expression3>)
<instruction>
Le mécanisme est équivalent à :
<expression1>; // initialisation de la boucle
while (<expression2>) // test de continuation de la boucle
{
<instruction>
<expression3>; // évaluée `a la fin de chaque boucle
}
Remarque 1: Une boucle infinie peut se programmer ainsi :
for (;;)
<instruction>
Remarque 2: Dans une boucle, on peut utiliser les instructions
11
break; pour abandonner immédiatement la boucle et passer à la suite,
continue; pour abandonner l’itération en cours et passer à la suivante.
7. FONCTION
Définition: type nom( liste des paramètres) { corps de la fonction}
• type est le type du résultat de la fonction.
(void si elle ne renvoie rien)
• La liste des paramètres (paramètres formels): type1 p1, ..., typen pn
• Le corps décrit le bloc d’instructions à effectuer par la fonction.
Le corps utilise ses propres variables locales, les éventuelles variables globales et les paramètres formels.
• Si une fonction renvoie un résultat, il doit y avoir (au moins) une instruction return expr ;
Ex : int max(int a, int b)
{
int res=b ;
if (a>b) res = a ;
return res ;
}
}
8. TABLEAUX
Déclaration de tableau à 1 dimension (1 indice) : type nom[taille]; définit un tableau d’éléments type type et de
taille taille (indices de 0 à taille − 1).
L’élément d’indice i est désigné par nom[i].
Ex: int Tab[10]; //déclaration d’un tableau de 10 entiers; Tab désigne l’adresse de premier élément du tableau &Tab[0].
int tab[5] = { 10, 20, 5, 0, 3 }; //déclaration d’un tableau de 5 entiers avec initialisation.
Déclaration de tableau à deux indices: type nom[ligne][colonne]; Un tableau à deux indices est similaire à
une matrice. L’élément d’indice (i, j) est désigné par nom[i][j].
Ex: int Tab[4][5]; //déclaration d’un tableau de 4 lignes dont chacune ayant 5 éléments entiers;
int tab [3] [4] = { { 1, 2 } , { 3, 4, 5 } } ; //déclaration d’un tableau d’entiers avec initialisation de 3 lignes/4 colonnes;
Remarque: Tout comme un élément d’un tableau à 1 indice, Tab[i][j] se manipule comme n’importe quelle variable.
#include <iostream>
using namespace std;
int main(){ const int N = 4, M = 2;
int s[N], T[N][M];
for(int i=0 ; i<N ; i++){ s[i] = 0;
for(int j=0 ; j<M ; j++){ cout<<"T[" << i <<"][" <<j<<"]= "; cin >> T[i][j];
s[i] += T[i][j];
}
}
cout <<"\nLe vecteur somme est: \n ";
14
for(int i=0 ; i<N ; i++) cout<<" s[" <<i<< "]="<<s[i]<<endl;
return 0;
}
9. CHAINES DE CARACTÈRES
Une chaîne de caractères est un tableau de caractères . Son initialisation se fait de plusieurs manières:
char p1[8]=’B’,’o’,’n’,’j’,’o’,’u’,’r’ ;
char p2[9]="Bonjour!" ; // initialisation par une chaîne littérale
char p3[ ]="Bonjour" ; // p3 aura alors 8 éléments
Le compilateur rajoute toujours un caractère NULL à la fin d’une chaîne de caractères. Il faut donc que le tableau ait
au moins un élément de plus que la chaîne littérale.
Ex:
#include <iostream>
#include <cstring>
using namespace std;
int main(){ char ch1[20],ch2[20];
cout<<"Saisissez ch1: "; cin >> ch1;
cout<<"\nSaisissez ch2: "; cin >> ch2;
if(strcmp(ch1,ch2) == 0){
cout << "La chaine ch1(ou ch2) inverse est: ";
for(int i=strlen(ch1);i>=0;i--) cout << ch1[i]<< " ";
cout << endl;
}
else cout << "Chaines ch1 et ch2 differentes"; 15
return 0;
}
10. LES STRUCTURES
La structure permet de rassembler des valeurs de type différent. Ex: Adresse d’une maison, est définit par le numéro
(int) et le nom de la rue (char).
1. Déclaration: On déclare une structure ainsi : struct adresse { int numero ;
char rue[50] ; } ;
Cela défini un type de structure, chaque élément déclaré à l’intérieur de la structure est appelé champ. Une fois défini,
nous pouvons déclarer des variables du type correspondant:
adresse oncle, tente ;
1. Manipulation: Chaque champ d’une structure peut être manipulé comme n’importe quelle variable du type
correspondant.
tente.numero=19;
strcpy(tente.rue,"avenue Pasteur");
#include<iostream>
using namespace std;
struct adresse {int numero ; char rue[50]; } ;
struct coord_fonct{char nom[20]; char prenom[20]; struct adresse domicile;}; //déclaration d’un type structure adresse ’domicile’.
int main(){ coord_fonct fonct[3]; // declaration d’un tableau de 3 élements de type coord_fonct
for(int i=0;i<3;i++){
cout<<"\nfonct["<<i<<"].nom= "; cin>> fonct[i].nom;
cout<<"\nfonct["<<i<<"].prenom= "; cin>> fonct[i].prenom;
cout<<"\nfonct["<<i<<"].domicile.numero= " ; cin>> fonct[i].domicile.numero;
cout<<"\nfonct["<<i<<"].domicile.rue= "; cin>> fonct[i].domicile.rue;
} 16
return 0;
}