Introduction à la
programmation C++
SMC4 – SMP4
2015 - 2016
A. TMIRI
[email protected]
1
Objectif:
Apprendre à programmer
Être capable d’analyser des problèmes simples et
écrire les programmes correspondants
Maîtriser et Avoir plus de facilité à programmer
Un maximum d’exercices d’application
Plan:
RAPPELS
L’informatique ?
Matériel
Système d’exploitation
Langage Informatique
Historique
INTRODUCTION ET NOTIONS DE BASES
VARIABLES ET INSTRUCTIONS
Types De Base
Opérateurs et expressions
Les entrees et soties de c++
Les instructions de controle
LES TABLEAUX ET LES CHAÎNES DE CARACTÈRES
LES POINTEURS
LES FONCTIONS:
Parametres par valeurs, par adresse et par reference
Surcharge de fonctions
3
Rappels:
4
Informatique?
Techniques du traitement automatique de l’information
au moyen des ordinateurs
Eléments d’un système informatique
Applications
).Word, Excel, Jeux, oracle,etc(
Langages
).Java,C/C++, Fortran,etc(
Système d’exploitation
).DOS,Windows, Unix, etc(
Matériel
).PC, Macintosh, station SUN, etc(
Matériel: Principaux éléments d’un PC
Unité centrale (le boîtier)
Processeur ou CPU (Central Processing Unit)
Mémoire centrale
Lecteur disquettes, lecteur CD-ROM
Cartes spécialisées (cartes réseau, son, ...)
Interfaces d'entrée-sortie (Ports série/parallèle, …)
Périphériques
Moniteur (l'écran), clavier, souris
Modem, imprimante, scanner, …
Qu’est ce qu’un système d’exploitation?
Ensemble de programmes qui gèrent le matériel
et contrôlent les applications
Gestion des périphériques (affichage à l'écran,
lecture du clavier, pilotage d’une imprimante, …)
Gestion des utilisateurs et de leurs données
(comptes, partage des ressources, gestion des fichiers et
répertoires, …)
Interface avec l’utilisateur (textuelle ou graphique):
Interprétation des commandes
Contrôle des programmes (découpage en taches,
partage du temps processeur, …)
Langages informatiques
Un langage informatique est un outil permettant de donner des
ordres (instructions) à la machine
A chaque instruction correspond une action du processeur
Intérêt : écrire des programmes (suite consécutive
d’instructions) déstinés à effectuer une tache donnée
Exemple: un programme de calcul de la moyenne d’un
bulletin
Exemple: un programme de gestion de comptes bancaires
Contrainte: être compréhensible par la machine
Langage Machine
Langage binaire: l’information est exprimée et manipulée sous
forme d’une suite de bits
Un bit (binary digit) = 0 ou 1 (2 états électriques)
Une combinaison de 8 bits= 1 Octet 28 256 possibilités qui
permettent de coder tous les caractères alphabétiques,
numériques, et symboles tels que ?,*,&, …
Le code ASCII (American Standard Code for Information
Interchange) donne les correspondances entre les caractères
alphanumériques et leurs représentation binaire, Ex. A= 01000001,
?=00111111
Les opérations logiques et arithmétiques de base (addition,
multiplication, … ) sont effectuées en binaire
Langages haut niveau
Intérêts multiples pour le haut niveau:
proche du langage humain «anglais» (compréhensible)
permet une plus grande portabilité (indépendant du
matériel)
Manipulation de données et d’expressions complexes
(réels, objets, a*b/c, …)
Nécessité d’un traducteur
(compilateur/interpréteur),
exécution plus ouCompilateur
moins lente selon le
Code source
traducteur ou Langage
en langage Interpréteur machine
évolué
Compilateur/interpréteur
Compilateur: traduire le programme entier une fois pour
toutes
Compilateur exécution
exemple. exempl
fichierc source fichier e
exécutable
+ plus rapide à l’exécution
+ sécurité du code source
- il faut recompiler à chaque modification
Interpréteur: traduire au fur et à mesure les instructions
du programme à chaque exécution
Interprétation+exécuti
exemple.ba
on
t
fichier
source
+ exécution instantanée appréciable pour les débutants
- exécution lente par rapport à la compilation
Langages de programmation
Deux types de langages:
Langages procéduraux
Langages orientés objets
Exemples de langages:
Fortran, Cobol, Pascal, C, …
C++, Java, …
Choix d’un langage?
Algorithmique
Le terme algorithme vient du nom du mathématicien arabe
Al-Khawarizmi (230 de l’Hejire, 820 après J.C.)
Un algorithme est une description complète et détaillée des
actions à effectuer et de leur séquencement pour arriver à un
résultat donné
Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)
Qualités: exact (fournit le résultat souhaité), efficace (temps
d’exécution, mémoire occupée), clair (compréhensible), général
(traite le plus grand nombre de cas possibles), …
L’algorithmique désigne aussi la discipline qui étudie les
algorithmes et leurs applications en Informatique
Une bonne connaissance de l’algorithmique permet d’écrire
des algorithmes exacts et efficaces
NOTIONS DE BASE :
14
Introduction au
Langage C et C++
Mon Premier Programme en C++
Début du programme
#include <cstdlib> Inclusion des bibliothèques
#include <iostream> contenant les fonctions
using namespace std;
main() Point d'entré du programme
{
première
cout <<"Bonjour!\n";
instruction
}
Fin du programme 15
Introduction au
Langage C C++
16
Introduction au
Langage C C++
17
Introduction au
Langage C,C++
Définition d'une variable
nom:
Unique pour chaque variable
Commence toujours par une lettre
Différenciation minuscule-majuscule
type:
Conditionne le format de la variable en mémoire
Peut être soit un type standard ou un type
utilisateur
valeur:
Peut évoluer pendant l'exécution
initialisation grâce à l'opérateur d'affectation
18
Introduction au
Langage C,C++
Types de variable
charcaractères
char [..] signifie
facultatif
int entiers
short [int] entiers courts
long [int] entiers longs
float nombres décimaux
double nombres décimaux de précision
supérieure
long double nombres décimaux encore
plus précis
unsigned int entier non signé
19
Introduction au
Langage C,C++
Déclaration d'une variable
Type nom_de_la_variable [= valeur]
Exemple:
int nb;
float pi = 3.14;
char c = 'a';
long i,j,k;
double r = 6.2879821365;
20
Introduction au
Langage C,C++
Affichage de la valeur d'une variable
en C++
cout <<chaîne 1 <<variable 1<<chaîne 2
<<variable 2;
Exemple
int i =8;int j = 10;
cout <<"i vaut:" << i <<"j vaut:"<<j <<'\n';
float r = 6.28;
cout<<"le rayon = "<< r <<'\n';
21
Introduction au
Langage C,C++
Saisie clavier: l’opérateur cin:
Exemples: int n;
cout<<"Saisir un entier: ";
cin >> n;
int a, b;
cin >> a >> b;
L’opérateur cin permet de saisir des nombres
entiers ou réels, des caractères, des chaînes
de caractères.
22
Introduction au
Langage C,C++
Instructions de base
opérateurs de base
+,-,*, / opérateurs arithmétique de base
% reste d'une division entière
== test d'égalité
!= test de différence
<, >, <=, >= test de comparaison
! négation
|| ou logique pour évaluer une expression
&& et logique pour évaluer une expression
23
Introduction au
Langage C,C++
Instructions de base
opérateurs de base
a = 2+3 valeur de a: 5
r = 3%2 valeur de a: 1
a = (3==3) valeur de a: 1
a = (6==5) valeur de a: 0
a = (2!=3) valeur de a: 1
a = (6<=3) valeur de a: 0
a = !1 valeur de a: 0
a =((3==3) || (6<=3)) valeur de a: 1
a =((3==3) && (6<=3)) valeur de a: 0
24
Introduction au
Langage C,C++
Instructions de base
boucle pour
for(expr1;expr2;expr3)
{
instructions
}
expr1: évaluée 1 seule fois en début de boucle
expr2: évaluée avant chaque itération. Si vrai
alors les instructions de la boucle sont
exécutées sinon la boucle est terminée
expr3: évaluée à la fin de chaque itération
25
Introduction au
Langage C,C++
Instructions de base
boucle pour
exemple
// somme des 100 premiers entiers
int i,s;
s= 0;
for(i=0;i<100;i = i+1)
{
s = s+i; / / ou
s+=i;
}
cout <<"s = "<<s<<'\n';
26
Introduction au
Langage C,C++
Instructions de base
boucle tant que
while (expression)
{
instructions;
}
expression est évaluée avant chaque itération. Si le
résultat est vrai alors les instructions sont
exécutées sinon on sort de la boucle
Exemple
s=0;
i =0;
n = 100;
while (i<n)
{
s=s+i; i++;
27
}
Introduction au
Langage C,C++
Instructions de base
boucle répéter
do
{
instructions;
} while (expression);
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions sont
exécutées sinon on sort de la boucle
exemple
i =0;
n = 20;
do
{
i++;
} while(i<n); 28
Introduction au
Langage C,C++
Instructions de base
instruction conditionnelle simple si alors
if (expression)
{
instructions;
}
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions sont
exécutées sinon on sort de la boucle.
exemple
int i =5;
int n;
if (i<=20)
{
n =0;
29
}
Introduction au
Langage C,C++
Instructions de base
instruction conditionnelle simple si alors sinon
if (expression)
{
instructions1;
} else
{
instrutions2;
}
expression est évaluée après chaque itération. Si le
résultat est vrai alors les instructions1 sont
exécutées sinon on exécute l'ensemble
instructions2
Exemple int i =5;int n;
if (i<=20)
n =0;
30
else n=5;
Introduction au
Langage C,C++
Instructions de base
instruction conditionnelle multiple
switch (expression)
{
case valeur1: instructions1;break;
case valeur2: instructions2;break;
.
.
.
case valeur3: instruction3;break;
default: instruction4;break;
}
expression est évaluée. Si le résultat vaut valeur1,
valeur1
alors instruction1 est exécutée et on quitte le
switch, sinon si expression vaut valeur2,
valeur2 ……,
sinon on va dans default pour exécuter
31
instruction4.
instruction4
Introduction au
Langage C,C++
Instructions de base
instruction conditionnelle multiple
exemple
int c='a';
switch (c)
{
case 'a':
file();break;
case 'b':
save();break;
case 'q':
quitter();break;
default:
beep();break;
} 32
Introduction au
Langage C,C++
Instructions de base
l'instruction break
permet d'interrompre prématurément une
boucle et de se brancher vers la première
instruction n'appartenant pas à la boucle
exemple:
int i;int n=20; Quand n vaut
31 alors la
for (i=0;i<10;i++) boucle est
{ interrompue
if (n==31) break;
n=n+2;
}
cout <<n<<'\n';
33
Tableaux et pointeurs:
34
Introduction au
Langage C,C++
Les tableaux statiques à 1
dimension
définition
Ensemble de variables de même type, de
même nom caractérisées par un index.
déclaration
type nom_tableau[dimension]
exemples: doit être une
constante
char buffer[80];
int mat[10];
35
Introduction au
Langage C,C++
Les tableaux statiques à 1
dimension
accès aux éléments du tableau
Nom_tableau[indice]
exemples:
buffer[5] = 'c';
le premier mat[6]
élément = 10;
commence à l'indice 0 !!
Les valeurs ne sont pas initialisées !!
Les débordements ne sont pas vérifiés 36
Initialisation de chaînes de caractères
En général, les tableaux sont initialisés par l'indication de la liste des éléments du
tableau entre accolades:
char CHAINE[] = {'H','e','l','l','o','\0'};
Pour le cas spécial des tableaux de caractères, nous pouvons utiliser une initialisation
plus confortable en indiquant simplement une chaîne de caractère constante:
char CHAINE[] = "Hello";
Lors de l'initialisation par [], l'ordinateur réserve automatiquement le nombre d'octets
nécessaires pour la chaîne, c.-à-d.: le nombre de caractères + 1 (ici: 6 octets).
37
Les fonctions de <string>
La bibliothèque <string> fournit une multitude de fonctions pratiques pour le traitement de
chaînes de caractères
strlen(s) fournit la longueur de la chaîne sans compter le '\0' final
strcpy(s, t) copie t vers s
strcat(s, t) ajoute t à la fin de s
strcmp(s, t) compare s et t lexicographiquement et fournit un résultat:
Négatif : si s précède t
zéro : si s est égal à t
Positif : si s suit t
strncpy(s, t, n) copie au plus n caractères de t vers s
strncat(s, t, n) ajoute au plus n caractères de t à la fin de s 38
Introduction au
Langage C,C++
Les tableaux statiques à 2 dimensions
et plus
définition
Il s'agit d'un tableau de tableaux
déclaration
type nom_tableau[dim1][dim2]…[dimn]
exemples:
char buffer[20][80];
int mat[6][10];
char livres[100][60][80];
39
Introduction au
Langage C,C++
Les tableaux statiques à 2
dimensions et plus
accès aux éléments
nom_tableau[ind1][ind2]…[indn]
exemples:
livre[30][15][20] = 'c';
mat[5][6] =13;
cout << mat[5][6]<<'\n';
40
Introduction au
Langage C
41
Introduction au
Langage C et C++
IleMaurice.pgm
exemple:
int i,j; (800x529)
char ima[800][529];
for (i=0;i<800;i++)
for (j=0;j<529;j++)
{
ima[i][j]=255-ima[i][j];
if(ima[i][j]>100)
ima[i][j]=0;
else
ima[i][j]=255;
}
42
Introduction au
Langage C,C++
Les Pointeurs
Deux manières d'utiliser une variable
Par son nom adressage direct
compilateur réserve de la mémoire pour la
variable
exemple:
int x =17;
43
Introduction au
Langage C,C++
Les Pointeurs
Par son adresse adressage indirect
une variable de type pointeur contient
l'adresse d'une autre variable
Le lien entre pointeur et la variable pointée
est géré par le programmeur
Exemple: int x =17;
int * px; px pointe
vers x
px = &x;
44
Introduction au
Langage C,C++
Les Pointeurs
déclaration d'un pointeur
type * nom_du_pointeur
exemples
char *buffer;
int *pf;
float *ppi;
C'est au programmeur d'initialiser le
pointeur 45
Introduction au
Langage C,C++
Les Pointeurs
initialisation d'un pointeur
Il faut lui fournir l'adresse d'une variable existant en mémoire
Il doit pointer vers une zone mémoire réservée par le
compilateur comme étant une variable
utilisation de l'opérateur d'adressage &
int f;
int *pf,*pg;
pf = &f;
création du
lien entre le
pg =new int; et la
pointeur allocation
. variable dynamique
d'une variable
création du delete gf; de type int
lien entre pg
et l'espace
mémoire
réservé libération de
l'espace
réservé 46
Introduction au
Langage C,C++
Les Pointeurs
utilisation de l'opérateur d'indirection *
travaille la valeur de la variable pointée
exemples
int i =8;
int *pi;
pi = &i;
cout <<*pi<<'\n';
*pi = 19; 8
cout <<i<<'\n';
19
47
Introduction au
Langage C,C++
Lien entre le nom d'un tableau à 1
dimension et les pointeurs
Nom du tableau = adresse du premier
élément du tableau
nom_tableau[i] peut s'écrire *(nom_tableau+i)
exemples:
char buffer[80];
*buffer = 'C'; accès au premier caractère
*(buffer + 5) = 'V'; accès au 6 ème caractère
48
Introduction au
Langage C,C++
Lien entre le nom d'un tableau à 2
dimension et les pointeurs
un tableau 2d est un tableau de tableau de
dimension 1
On peut donc dire que le nom d'un tableau 2d est
l'adresse d'un tableau d'adresse de tableaux de
dimension 1
On dit aussi qu'il s'agit d'un pointeur de pointeur
exemple:
int TAB[6][7];
int **p; déclaration d'un pointeur de
pointeur
p = TAB; initialisation du pointeur de pointeur
49
Introduction au
Langage C,C++
Lien entre le nom d'un tableau à 2
dimension et les pointeurs
TAB
tableaux d'entiers
0 1 2 3 4 5 6
1
tableaux de pointeurs
vers des tableaux 2
d'entiers
3
50
Introduction au
Langage C,C++
Initialisation dynamique d'un tableau
Tableau une dimension
nombre
int * t; d'éléments dans
le tableau
t = new int[20]; d’entiers
fonction d'allocation
nom du
dynamique de la
tableau
mémoire
Libération de
la mémoire
delete t;
51
Introduction au
Langage C,C++
Initialisation dynamique d'un
tableau
Tableau à deux dimensions n*m
déclaration dynamique du tableau de n
pointeurs et des n tableaux à une
dimension de m éléments
quelques lignes de code sont nécessaires
(voir transparent suivant)
52
Introduction au
Langage C,C++
Initialisation dynamique d'un tableau
Tableau à deux dimensions n*m
int **TAB,l;
TAB = new int*[n];
for (l=0;l<n;l++)
{
TAB[l] = new int[m];
}
désallocation:
for (l=0;l<n;l++)
delete TAB[l];
delete TAB; 53
Fonctions:
54
Introduction au
Langage C,C++
Les fonctions
définition
Ensemble d'instructions pouvant être
appelés de manière répétitive par un
nom
déclaration
type arg_ret nom_f( type arg1,type arg2, …type argn=Vn)
{
ensemble instructions
}
- arg_ret est l'argument renvoyé par la fonction (instruction
return
- nom_f est le nom de la fonction
- arg1 …argn sont les arguments envoyés à la fonction
55
- Vn est la valeur par défaut de l’argument argn.
Introduction au
Langage C,C++
Les fonctions
règles d'utilisation
L'ordre, le type et le nombre des
arguments doivent être respectés lors de
l'appel de la fonction
L'appel d'une fonction doit être située
après sa déclaration ou celle de son
prototype
(voir exemple transp suivant)
Si la fonction ne renvoie rien alors
préciser le type void
56
Introduction au
Langage C,C++
Prototype de
Les fonctions la fonction
min
exemple:
int min(int a, int b);
Programme
void main() principal
{
cout <<min(a,b)<<'\';
}
int min(int a, int b) Fonction min
{ et son bloc
d'instructions
if (a <b) return a;
else return b;
} 57
Introduction au
Langage C,C++
Les fonctions
Les paramètres se passent par
valeur
Recopie en mémoire des paramètres
dans des paramètres temporaires.
Toute modification des paramètres dans la
fonction est sans effet sur les paramètres
originelles
Quand on quitte la fonction, les paramètres
temporaires sont effacés de la mémoire
Recopie dans le sous programme appelant de
la valeur du paramètre retourné par la
58
fonction return.
return
Introduction au
Langage C,C++
Les fonctions
exemple:
void permutter(int a, int b)
{ Aucune
int temp; action sur
temp = a; les paramètres
a = b; x et y
b= temp;
}
void main()
{
int x=3;int y =5;
permutter(x,y); x=3 y=5
cout << "x="<<x<<" y="<<y<<'\n';
} 59
Introduction au
Langage C,C++
Les fonctions
Passage d'arguments par adresse
On passe non pas la valeur de la
variable mais son adresse
Il est donc possible par les pointeurs
de modifier le contenu de l'adresse,
donc la variable originelle
Permet de modifier plusieurs
arguments à la fois dans une
fonction
Permet de passer des tableaux en 60
argument
Introduction au
Langage C,C++
Les fonctions
exemple:
void permutter(int *pa, int *pb)
{ Action sur
int temp; les paramètres
temp = *pa;
x et y
*pa = *pb;
*pb= temp;
}
void main()
{
int x=3;int y =5;
permutter(&x,&y); x=5 y=3
cout << "x="<<x<<" y="<<y<<'\n';
} 61
Introduction au
Langage C,C++
Les fonctions
Passage d'arguments par
référence
On passe non pas la valeur de la
variable mais sa référence
Il est donc possible de modifier la
variable originelle en modifiant sa
référence
62
Introduction au
Langage C,C++
Les fonctions
exemple:
void permutter(int &ra, int &rb)
{ Action sur
int temp; les paramètres
temp = ra;
x et y
ra = rb;
rb= temp;
}
void main()
{
int x=3;int y =5;
permutter(x,y); x=5 y=3
cout << "x="<<x<<" y="<<y<<'\n';
} 63