Académique Documents
Professionnel Documents
Culture Documents
إذا كنت ال تعلم إلى أين أنت ذاهب ،فإن أي طريق سيوصلك إلى هناك
توماس كرليل
M. EL AMRANI
Programme et langage de
programmation
Un programme est un ensemble d'instructions ou de codes
informatiques qui permettent à un ordinateur ou à un système
informatique d'effectuer des tâches spécifiques.
Ces instructions sont écrites dans un langage de programmation, tel que :
✓ langage C/C++ ;
✓ langage Fortran ;
✓ langage Python ;
✓ langage Java ;
✓ ...
Avantages et Inconvénients
du langage C/C++
➢ Rust ;
➢ Chapel ;
➢ Perl ;
➢ …
Historique du C et C++
ال تطالب بأن تكون األشياء أيسر ،بل أطلب أن تكون أنت األفضل
جيم رون
Les types de base
En C/C++, toute variable doit être déclarée avec son type c-à-d la
manière dont elle se fait codée en mémoire. La connaissance du type
est nécessaire pour la plupart des opérations que subit la variable.
Exemple :
Si le caractère A est stocké sous forme char, l’ordinateur
n’écrit pas le signe A, mais son code ASCII : 65.
Les types de base
Le type short : ce type permet de stocker des données sur 2 octets, soit
16 bits. Avec 16 bits, on peut former 216= 65536 combinaisons.
Le type short permet donc de coder les nombres entre -32768 et 32767.
Le type long : ce type permet de stocker des données sur 4 octets, soit
32 bits, avec lesquels on peut former 232= 4294967296
combinaisons.
Le type long permet donc de coder les nombres entre -2147843648 et
2147843647.
Les nombres réels sont stockés autrement que les nombres entiers.
Ils sont dits à virgule flottante. Ces nombres sont approchés par une
quantité de la forme :
x = S.m.be
Le type float : un nombre de type float est codé sur 4 octets (32 bits)
sous la forme suivante :
La plage de valeur d’un nombre de type float : ±3.4 10-38 à ±3.4 1038
Les types de base
Le type double : un nombre de type double est codé sur 8 octets (64
bits) sous la forme suivante :
La plage de valeur d’un nombre de type double : ± 1.7 10-308 à ± 1.7 10308
Les types de base
Le type long double : un nombre de type long double est codé sur 10
octets (80 bits) sous la forme suivante :
Le type pointeur :
Un pointeur est une donnée qui mémorise l'adresse d'une variable.
le pointeur correspondant à i est &i.
D’une manière générale, un pointeur est déclaré de la manière suivante:
type *p
Exemple : float *x. (veut dire que x est un pointeur (une adresse) dont
le contenu *x est réel de type float).
Les types de base
Exemple :
La déclaration "long i" autorise à i les valeurs :
[- 2147843648, 2147843647 ], alors que
العلم ال ينمو من خالل األجوبة المسكتة وإنما من خالل األجوبة التي تثير مزيدا من األسئلة
عبد الكريم بكار
Les entrées-sorties
On distingue :
➢Les entrées/sorties formatées de C/C++
(assurées par les fonctions : scanf et printf ) ;
Exemple :
cin>>x; //la valeur saisie au clavier sera affectée à x.
Exemple :
cout<<x ; //affichage de la valeur de x.
Les sorties formatées
Remarques concernant la fonction cout
Remarque 1 :
Pour afficher une phrase (par exemple : bonjour tout le monde), il
suffit de la mettre entre guillemets :
Remarque 2 :
Pour revenir à la ligne soit on utilise "\n" soit on utilise endl.
Les trois instructions suivantes sont équivalentes :
✓cout << "bonjour \n" ;
✓cout << "bonjour" << "\n" ;
✓cout << "bonjour" << endl ;
Les sorties formatées
Remarques concernant la fonction cout
Remarque 3 :
Il existe des instructions qui permettent d’afficher les valeurs entières
sur l’une des bases suivantes :
1 : bool soit sous forme d’un entier 0 ou 1 soit sous forme
true et false en utilisant le mot clé boolalpha ;
8 : octal en utilisant le mot clé oct ;
10 : décimal qui est la valeur par défaut ;
16 : hexadécimal en utilisant le mot clé hex.
Exemple :
int x =12000, y =1 ;
cout << x << "/n" ; //la valeur affichée sera : 12000.
cout<<hex<<x<< "/n" ; //la valeur affichée sera : 2000.
cout<<oct<<x<< "/n" ; //la valeur affichée sera : 27340.
cout<<boolalpha<<y << "/n" ; //la valeur affichée sera : true.
cout <<noboolalpha <<y<< "/n" ; //la valeur affichée sera : 1.
Les sorties formatées
Largeur de champ minimale
Exemple :
int i = 171 ;
cout << setw(5) << i ; la valeur affichée sera : ^^171.
cout << setw(4) << i ; la valeur affichée sera : ^171.
cout << setw(2) << i ; la valeur affichée sera : 171.
Remarque :
setw manipule uniquement le gabarit de la prochaine information à écrire.
Les sorties formatées
Précision d’affichage
Exemple :
float pi =3.141593 ;
cout << pi <<endl ; //la valeur affichée sera : 3.14159
cout << fixed ;
cout << setprecision(1) <<pi <<endl ; //la valeur affichée sera : 3.1
cout << setprecision(3) <<pi <<endl ; //la valeur affichée sera : 3.141
cout << setprecision(5) <<pi <<endl ; //la valeur affichée sera : 3.14159
Les sorties formatées
Précision d’affichage en C++
Exemple :
float pi =3.141593 ;
cout << setprecision(1) <<pi <<endl ; //la valeur affichée sera : 3
cout << setprecision(3) <<pi <<endl ; //la valeur affichée sera : 3.14
cout << setprecision(5) <<pi <<endl ; //la valeur affichée sera : 3.1415
cout << setprecision(7) <<pi <<endl ; //la valeur affichée sera : 3.141593
Les sorties formatées
Précision d’affichage en C++
Exemple :
float pi =3.1415 ;
float x = 63.987 ;
cout << pi <<endl ; //la valeur affichée sera : 3.1415
cout << scientific << pi <<endl ; //la valeur affichée sera : 3.1415e00
cout << x <<endl ; //la valeur affichée sera : 6.3987e01
cout << fixed <<endl ;
cout << x <<endl ; //la valeur affichée sera : 63.987
Les Opérateurs
(x = = y) = 0 (false)
(x < y) = 1 (true)
(x!=y) = 1
(x<=y) = 1
Les opérateurs
Opérateurs logiques
Exemples :
2- ((5<7) || (3<2)) = 1
3- !(2>0) = 0
Les opérateurs
Opérateurs d’affectation
x =3
x* =5 ➔ x = x*5 =15.
x =3
x /= 5 ➔ x = x/5 =0.6.
x=3
x % =2 ➔ x = x % 2 = 1.
Les opérateurs
Opérateurs d’affectation
Exemple :
L’instruction y =x++ est différente de l’instruction y=++x.
Remarque :
Pour les opérations d’affectation, l’opérande gauche doit être une
Lvalue.
Une Lvalue est une expression désignant une adresse dans la mémoire
de l’ordinateur, par exemple le nom d’une variable, contrairement à une
constante qui n’est pas une Lvalue et donc ne peut être dans la partie
gauche d’une affectation.
Les opérateurs
Opérateur conditionnel "?"
Exemple :
x =10, y =5.
L’expression (x !=y) ? x : y vaut 10
alors que l’expression (x= =y) ? x : y vaut 5.
Les opérateurs
Opérateur séquentiel
Exemple :
L’instruction :
int x ;
int y ;
est équivalente à :
int x,y ;
Les opérateurs
Opérateur de dimension
Exemple :
cout <<sizeof(int) <<endl ;
int x ;
cout <<sizeof(x) <<endl ;
Dans les deux cas, le résultat affiché est 4 qui indique la mémoire
occupée par un int.
Les opérateurs
Opérateur de moulage (CAST)
Exemple
int i,j ;
i=3; j=2;
i/j = 1;
(float)i/j=1,5;
Les opérateurs
Priorités des opérateurs
Opérateur séquentiel , 1
Structures de contrôle de flux
1- l’instruction if ;
ou encore :
if(<condition>)
{
<instructions> ;
}
Structure de contrôle de flux
Instructions alternatives
Instruction if
Exemple 1 :
if(x = = 0) cout<<"x est nul" ;
if(x !=0) cout<<"x est non nul" ;
Exemple 2 :
if(!x ) cout<<"x est nul" ;
if( x) cout<<"x est non nul" ;
Exemple 3 :
if(x >y && x>0) cout<<"x est positif et supérieur à y" ;
Structure de contrôle de flux
Instructions alternatives
Test avec alternative (if-else)
L’instruction if-else permet d’exécuter des instructions si une certaine
condition est satisfaite et d’exécuter d’autres instructions sinon.
La syntaxe de l’instruction if-else est la suivante :
if(<condition>) <instruction> ;
else < instruction > ;
ou encore :
if(<condition>)
{
<instructions>
}
else
{
<instructions>
Structure de contrôle de flux
Instructions alternatives
Test avec alternative (if-else)
Exemple 1 :
if(x = = 0) cout<<"x est nul" ;
else cout<<"x est non nul" ;
Exemple 2 :
if(x>y ) cout<<"x est plus grande que y" ;
else if (x<y)cout<<"x est plus petite que y " ;
else cout<<cout<<"x est égale à y";
Structure de contrôle de flux
Instructions alternatives
Test multiple "switch"
1- la boucle while ;
2- la boucle do-while ;
3- la boucle for.
Structure de contrôle de flux
Instructions alternatives
Instruction "while"
L’instruction while permet de faire répéter l’exécution d’instructions
tant qu’une certaine condition est remplie.
ou encore :
while (<expression>)
{
<instructions>
}
Structure de contrôle de flux
Instructions alternatives
Instruction "while"
Exemple :
int z =3 ;
while (z>0)
{
cout<<"z= "<< z<<endl;
z-- ;
}
Structure de contrôle de flux
Instructions alternatives
Instruction "do-while"
La boucle do-while teste la condition après exécution de
l’instruction du corps de la boucle.
La syntaxe de cette boucle est :
do <instruction>
while (<expression>) ;
ou encore :
do
{
<instructions>
}
while (<expression>) ;
Structure de contrôle de flux
Instructions alternatives
Instruction "do-while"
Exemple :
int z =3 ;
do
{
cout<<"z="<<z<<endl;
z-- ;
}
while (z>0);
Remarque :
<expression1> et <expression3> peuvent initialiser plusieurs
variables en même temps :
➢ break ;
➢ continue ;
➢ goto.
Structure de contrôle de flux
Instructions alternatives
Instruction "break"
Cette instruction provoque l’arrêt avant terme des instructions
des boucles for, while, do-while et swich.
Exemple :
for(i =-100 ; i<100 ; i++)
{
x =(i*0.01/3.1415;
y=cos(x);
if(fabs(y) <0.0001)break;
}
Structure de contrôle de flux
Instructions alternatives
Instruction "continue"
L’instruction continue n’est possible qu’à l’intérieur des boucles
for, while et do-while. Elle permet de sauter un seul passage dans
la boucle et reprendre le prochain passage.
Exemple :
int x = 0 ;
while (x<20)
{
x++;
if(x%2= =0)continue;
cout<<x<<endl;
}
Structure de contrôle de flux
Instructions alternatives
Instruction "goto"
L’instruction goto provoque un saut à un endroit du programme
repéré par une étiquette (label). Le programme continue alors à
l’instruction qui se trouve à cet endroit.
Exemple :
int i,x = 0;
for(i=0 ;i<100 ;i++)
{
x=x+i;
if(x>50)goto a ;
}
…
a : cout<<"la valeur de i est "<<i;