Anas 065@
Anas 065@
Anas 065@
Pré-Requis: 2 Contrôles
(Algorithmique et
TP+Projet
programmation en
Lanagage c)
NOTE
Exposé CC1 (25%) CC2 (25%) TP+Projet
Lié à la POO (50%)
Mini-Projets
De taille moyenne,
N o te M in im a le
Approfondir
se s
re q u ise p o u r va lid e r
connaissance le m o d u le e st 12 / 20
Note s sur la AAA
de rattrapage :
Note = 0 . 67 [ Sup ( CC2 ; Note_Rattrapage )]
+ 0 . 33 ( CC1 + TP + Exposés )
2
Programme (Partie 1)
Rappel général et Mise à Niveau (le
langage C)
• Les Opérateurs / Le types / Les
Variables
• Les Structures de contrôles (Les
Tests)
• Les Boucles
• Les fonctions
• Les Pointeurs
• Tableaux et chaînes de caractères
• Les Fichiers
• Les Structures
• Les Listes Chainées
3 • Les Arbres Binaires 12/08/10
Programme (Partie 2)
Programmation Orientée Objet
o Introduction
o Problématique
o Notion :
• De classe,
• D’objet,
• De Méthodes et Attributs,
• D’héritage,
• De polymorphisme,
• D’encapsulation,
La langage C++
Introduction à la Programmation en
Java
4 12/08/10
Le Langage C
PARTIE 1
Rappel général et Mise à Niveau
Rappel général et mise à
PARTIE 1
niveau
Les Opérateurs
L’Affectation:
Identificateur_de_variable = expression
Exp:
Arithmétiques
A=5; Opérateurs
+ , * , - ,Logiques
&& , || , ! De comparaison incrémentation
< ,> ++, --
A=A+1; / ,<=,>=, !
B=A*2;
=,==
SOMME=A+B;
6
Rappel général et mise à
PARTIE 1
niveau
Les Types
4 types de base, les autres types seront dérivés de ceux-
ci.
Type Signification Exemples de valeur Codage en Peut être
mémoire
char Caractère unique 'a' 'A' 'z' 'Z' '\n' 'a' 'A' 'z' 'Z' 1 octet signed,
'\n' unsigned
Varie de –128 à 127
int Nombre entier 0 1 -1 4589 32000 2 ou 4 octets Short, long,
-231 à 231 +1 signed,
unsigned
float Nombre réel 0.0 1.0 3.14 5.32 4 octets
simple -1.23
niveau
Les Types
Il existe un certain nombre de qualificateurs qui
peuvent être associés aux types de base :
short : s'applique aux entiers
(short int : entier codé sur deux octets)
long : s'applique aux entiers (long
int: entier codé sur quatre octets) et aux
nombres à virgule flottante double précision
(long double : double précision étendue)
signed : s'applique au type char (de -128 à 127) ou
aux types entiers (de -2n-1 à 2n-1 -1, n étant le nombre
de bits utilisés).
unsigned : s'applique au type char (de 0 à 255) ou
aux types entiers (de 0 à 2n-1 ).
8
Rappel général et mise à
PARTIE 1
niveau
Le Mot clé Typedef
Apermet de renommer un type.
Syntaxe:
typedef type nouveau_type ;
Exp:
9
Rappel général et mise à
PARTIE 1
niveau
Les Variables
Les variables sont des unités de stockage
dont l'objectif est de mémoriser des valeurs qui peuvent
être le résultat de calculs intermédiaires.
Une variable est désignée par un
identificateur.
Une variable est typée.
i.e : (elle peut contenir et mémoriser des valeurs d'un
seul type.) ?
var1
Syntaxe: Var 6
……….
……….
nom_type indent_var1,ident_var2,…,ident_varn; Var i
………
Mémoire
10
const nom_type ident_var;
Rappel général et mise à
PARTIE 1
niveau
Les Structures de contrôles ( TESTS)
L'instruction if …..else… :
Syntaxe:
Si Condition = 0
Instruction 2
11
Rappel général et mise à
PARTIE 1
niveau
Les Structures de contrôles ( TESTS)
L'instruction switch
L'instruction permet d'effecter un choix entre
plusieurs possibilités. Il s'agit d'un opérateur de
branchement.
Syntaxe:
switch(expression)
{
case const1 : instruction1
case const2 : instruction2
...
default : instruction_def
}
12
Rappel général et mise à
PARTIE 1
niveau
Les Boucles
13
Rappel général et mise à
PARTIE 1
niveau
bon programme?
Il doit résoudre le
PROBLEME !
Efficacité Rap
idité?
INSTANTANE ! DUREE DE
VIE ?
- Lisible
- Structuré
14
Rappel général et mise à
PARTIE 1
niveau
Exigence de qualité d’un programme :
Clarté
Simplicité
Efficacité
Modularité
Extensibilité
15
Structure d'un programme C
PARTIE 1
#include <stdio.h>
#define DEBUT -10 Directives du préprocesseur :
#define FIN 10 accès avant la compilation
#define MSG "Programme de démonstration\n"
int fonc1(intx);
int fonc2(int x); Déclaration des fonctions
voidmain()
{ /* début du bloc de la fonction main*/
int i; /* définition des variables locales */
Programme
i=0; principal
fonc1(i) ;
fonc2(i) ;
} /* fin du bloc de la fonction main */
int fonc1(intx) {
return x; Définitions des
}
fonctions
int fonc2(intx) {
return (x * x);
}
16
Rappel général et mise à
PARTIE 1
niveau
Les Fonctions
17
Rappel général et mise à
PARTIE 1
niveau
Déclaration d ’ une Fonction :
18 Valeur
renvoyée
Rappel général et mise à
PARTIE 1
niveau
Appel d ’ une Fonction :
IMPORTANT : cette
#include <stdio.h> instruction spécifie
comment la fonction est
définie
int Moyenne(float, float, float);
void main(void)
{
int n1,n2,n3; Le compilateur attend des
float ; les conversions
n1=10; sont automatiques
n2=16;
n3=19;
Moyenne(n1,n2, n3);
}
niveau
Fonction Récursive :
Une fonction est dite récursive, dès lors ou elle se fait appel pour
calculer une sous partie de la valeur finale qu'elle retournera.
Fonction
FonctionFactorielle
Fibonacci
20
Rappel général et mise à
PARTIE 1
niveau
Les Fonctions
1.
2.
3 . Ecrire le programme qui permet de saisir un nombre réel
et de vérifier sa parité ( pair ou impaire ).
4.
5 . Ecrire la fonction age ( ? ) qui renvoie l ’ âge , en jours ,
d ’ une personne en saisissant sa date de naissance
( jour , mois , année ).
6.
21
Rappel général et mise à
PARTIE 1
niveau
Les Tableaux
Les tableaux sont utilisés pour manipuler un ensemble de
données du même type.
Les éléments du tableaux sont indexés par des entiers.
Tableau Unidimensionnel
tab [ i ]:
Int tab [ 6 ]={ 9 , 4 , 17 , 12 , 15 , 100 , 120 }; Initialisation du Tableau
9 4 17 12 15 100 120
tab [ 0 ] tab [ 1 ] tab [ 2 ] ……………………… tab [ 6 ]
0 0 0 0 0 0 0
22
tab [ 0 ] tab [ 1 ] tab [ 2 ] ……………………… tab [ 6 ]
Rappel général et mise à
PARTIE 1
niveau
Les Tableaux
1.
2.
3 . Ecrire le programme qui permet de calculer la moyenne
des éléments d ’ un tableau .
4 . Ecrire le programme qui permet de copier le contenu d ’ un
tableau dans un autre .
5 . Ecrire un programme qui permet de remplir un tableau de
caractères et calcul le nombre de voyelles saisis .
6.
7.
23
Rappel général et mise à
PARTIE 1
niveau
Les Tableaux
Tableau multidimensionnels :
Un tableau multidimensionnel se définit de la manière
suivante :
type Nom_du_tableau [a 1 ][a 2 ][a 3 ] ... [a n ]
J : 0A
Exemple 1 :
tab [ 0 ][ 0 ] tab [ 0 ][ 1 ] tab [ 0 ][ 2 ]
i
Int tab[2][3];
tab [ 1 ][ 0 ]
: 0A
tab [ 1 ][ 1 ] tab [ 1 ][ 2 ]
int i,j;
for (i=0; i<=1; i++)
{
for (j=0; j<=2; j++)
{ 0 0 0
Tableau[i][j] = 0; 0 0 0
}
}
24
Rappel général et mise à
PARTIE 1
niveau
Les Tableaux
1.
2.
3 . Ecrire le programme qui permet de calculer la moyenne
par ligne des éléments d ’ un tableau de deux dimensions .
4 . Ecrire le programme qui permet de calculer la somme des
éléments diagonales d ’ une matrice M( n , n );
5 . Ecrire le programme qui permet de calculer la transposée
d ’ une matrice M( n , n );
6.
25
Rappel général et mise à
PARTIE 1
niveau
Les Pointeurs :
Un pointeur est une variable particulière, dont la valeur est l'adresse
d'une autre variable.
Exxemple :
i nt v a l= AAA
cha r r e p=’ a ’ A
i nt *ptr A * d é c l a r a t i on
d ’un po i nt e ur sur e nt ie r *
cha r *ptr AA * d é c l a r a t i on
d ’un po i nt e ur sur ca r ac tr e *
ptr A = A v a l A * ptr c ont ie n d r a
l’ ad r e ss e de v a l *
ptr = r e p * ptr
c ont ie n d r a l’ ad r e ss e de r e p*
2FF3 5A0F3
2FF3 5A0F3
a 17
ptr2 ptr1
26
rep val
Rappel général et mise à
PARTIE 1
niveau
Tableau et pointeur :
On peut accéder aux éléments par pointeurs en faisant des calculs
d’adresses (addition ou soustraction)
11
Qu ’ affiche ce programme? 22
66
27
Rappel général et mise à
PARTIE 1
niveau
Les Pointeurs
1.
2.
3 . Ecrire le programme qui lit un entier X et un tableau
des entiers et élimine toutes les occurrences de X dans
T en tassant les éléments restants .
A Utiliser 2 pointeurs pour parcourir le tableau T.
1 . Ecrire le programme qui range les éléments d ’ un tableau
d ’ entiers T dans l ’ ordre inverse .
Utiliser 2 pointeurs et une variable de permutation.
1.
28
Rappel général et mise à
PARTIE 1
niveau
Allocation dynamique:
malloc ( nombre_octets )
⇒Αλ λ ο υ ε υ ν ε ζ ο ν ε δ ε
τ αι λ λ ε ν ο µ β ρ ε _ο χ τ ε τ σ
ο χ τ ε τ σ ε ν µ µ ο ι ρ ε ε τ
ρ ε τ ο υ ρ ν ε υ ν π ο ι ν τ ε υ ρ .
Exemple 1 :
σηο ρ τ ∗ π ;
π =
(σ η ο ρ τ ∗)µ α λ λ ο χ (σ ι ζ ε οFEE01
φ (σ ηt e t s
ο ρ τ )); 2 o
c
FEE01
29
p
Mémoire
Rappel général et mise à
PARTIE 1
niveau
Allocation dynamique :
Exemple 2 :
# include < stdio . h >
# include < stdlib . h >
main ()
{
int i = 3 ;
int j = 6 ;
int * p ; Qu ’ affiche
p = ( int *) malloc ( 2 * sizeof ( int ));
*p = i; ce
*( p + 1 ) = j ;
programme???
printf (" p = % ld \t * p = % d \t p + 1 = % ld \t *( P + 1 ) =
% d\n ", p ,* p , p + 1 ,*( p + 1 ));
}
30
Rappel général et mise à
PARTIE 1
niveau
La fonction calloc
La fonction calloc de fournie dans l’en-tête
stdlib.h à le même rôle que le malloc mais
initialise en plus *p à zéro :
calloc(nb-elements, taille-element)
31
Rappel général et mise à
PARTIE 1
niveau
Libération de l ’ espace alloué
Il faut libérer chaque espace alloué
dynamiquement
lorsqu'il n ’ est plus utilisé dans
le programme
La libération est effectuée à l’aide de la
fonction
free () de l’en-tête stdlib.h :
free ( nom - du - pointeur )
Exemple :
int *pA = (int*Am a llo c ( A
*s i A e o f ( i nt AAA
int *pA =
(int*ca llo c ( AA s i A e o f ( i n
t
if (p == p
32 f r ee (p A
else
Rappel général et mise à
PARTIE 1
niveau
Les chaînes de caractères ( Déclaration ):
ALes chaînes de caractères sont des tableaux de
caractères.
33
Rappel général et mise à
PARTIE 1
niveau
Les chaînes de caractères ( Affichage ):
format %s:
char texte[10] = « BONJOUR »;
printf("VOICI LE TEXTE: %s \n",texte);
niveau
Les chaînes de caractères ( Lecture ):
char texte[10] ;
scanf("%s ",texte);
35
Rappel général et mise à
PARTIE 1
niveau
Les chaînes de caractères :
1.
2.
3 . Écrire un programme qui lit 5 mots , séparés par des
espaces et qui les affiche ensuite dans une ligne , mais
dans l'ordre inverse . Les mots sont mémorisés dans 5
variables M1 , ... , M5 .
Exemple
Math Info Physique Chimie !
! Chimie Physique Info Math
36
Rappel général et mise à
PARTIE 1
niveau
Traitement des chaînes de caractères :
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
37
Rappel général et mise à
PARTIE 1
niveau
Les chaînes de caractères ( Conversion ):
La bibliothèque <stdlib> contient des déclarations de fonctions
pour la conversion de nombres en chaînes de caractères et
vice - versa.
Chaîne
Nombre
atoi(<s>) retourne la valeur numérique représentée par <s> comme int
Nombre Chaîne
itoa (< n_int >, < s >, convertit son premier argument en une chaîne de caractères
< b >) qui sera ensuite attribuée à <s>. La conversion se fait dans
la base <b>.
38
Rappel général et mise à
PARTIE 1
niveau
Les chaînes de caractères :
1 . Ecrire un programme qui demande l'introduction du nom et
du prénom de l'utilisateur et qui affiche alors la
longueur totale du nom sans compter les espaces .
Employer la fonction strlen .
Exemple:
Introduisez votre nom et votre prénom: Ahmed Jalali
Bonjour Ahmed Jalali !
Votre nom est composé de 11 lettres
struct
struct Membre
Membre
{{
char
char nom
nom[ 80
[ 80];];
char
char adresse
adresse[ 200 [ 200];];
int
int **numero
numero; ;
float
float amende
amende[ 10 [ 10];];
};};
40
Rappel général et mise à niveau
Les Structures
PARTIE 1
Déclaration de Structures
D é c l a r a t i on D é c l a r a t i on
de l a
struct
stru c produit
tur e
de stru c tur e
{ e t v a r iab l e s
de l aproduit
struct mêm e
int code ; stru c tur e A
int qte ; {
float prix ; int code ;
} ; int qte ;
float prix ;
} prd1,prd2 ;
D é c l a r a t i on
de s v a r iab l e s
de la
struct
stru produit
c tur e
prd1 ;
struct produit prd1,
41 prd2
METHODE
; 1 METHODE 2
Rappel général et mise à niveau
Les Structures
PARTIE 1
Déclaration de Structures
D é c l a r a t i on
de l a
Typedef
stru c turstruct
e
{
int code ;
int qte ;
float prix ;
} Enregistrement ;
Enregistrement prd1, prd2 ;
METHODE 3
42
Rappel général et mise à niveau
Les Structures
PARTIE 1
Structure et Pointeur
typedef struct L ’ accès aux membres de la
structure pointée par prd3 se
{ fait de la manière suivante :
int code ;
int qte ; prd3 A code = 2017 ;
float prix ; prd3 qte = 1200 ;
} Enregistrement
; L’ affichage A
printf (“% d
Enregistrement \n ”, Prd3 A qte ); 1200
* prd3 ; L a L ec tur e 7000
EF01
Enregi- code 2017 scanf (“% f ”,& Prd3 pri
prd3 strementqte x );
EF01 1200
prix
45
7000
Rappel général et mise à niveau
Les Structures
PARTIE 1
46
Rappel général et mise à niveau
Les Structures
PARTIE 1
Tableaux de Structures :
struct point { point Courbe [ 2 ] Courbe [ 49
char nom ; courbe [ B courbe [ 17 F
]
int x ; 0]
A ]
int y ; 1 C 12
}; 0 0 2 19
struct point courbe[50]; 0 2
47
Rappel général et mise à niveau
Les Structures
PARTIE 1
Structures imbriquées :
struct Date struct Membre
{ {
int jour ; char nom [ 80 ];
int mois ; char adresse [ 200 ];
int an ; int numero ;
}; float amende [ 10 ];
struct Date emprunt ;
struct Date creation ;
};
struct Livre
{ struct Pret
char titre [ 80 ]; {
char auteur [ 80 ]; struct Livre b;
float prix ; struct Date due ;
struct Membre * who ;
}; };
48
Rappel général et mise à niveau
Les Structures
PARTIE 1
Exercice 1 :
Ecrire un programme qui lit au clavier des informations
dans un tableau de structures du type point défini comme
suit :
struct point {
char nom ;
double x ;
double y ;
}
A Le nombre d'éléments du tableau sera fixé par une
instruction # define .
49
Rappel général et mise à niveau
Les Structures
PARTIE 1
50
Rappel général et mise à niveau
Les Structures
PARTIE 1
51
Rappel général et mise à niveau
Les Structures
PARTIE 1
52
Rappel général et mise à
PARTIE 1
niveau
Les Fichiers
53
Rappel général et mise à
PARTIE 1
niveau
Les Fichiers
Déclaration : FILE
* fichier ;
On définit un pointeur qui
fournit l'adresse d'une cellule
donnée.
pointeur
niveau
Ouverture et fermeture de fichiers :
A L ’ ouverture se fait à l’aide de la fonction fopen :
FILE * f ;
f = fopen(const char* name, const char* mode);
La Fermeture se fait à l’aide de la fonction fclose :
int fclose (FILE *f);
Exemples:
FILE *fichier ;
fichier = fopen(“c :\listes.txt “, “w” ) ;
/* instructions et traitements*/
fclose(fichier) ;
55
Rappel général et mise à
PARTIE 1
niveau
Modes d ’ ouverture de fichiers :
FILE * fopen ( char * nom , char * mode ) ;
mode (pour les fichiers TEXTES) :
« r » ouverture d’un fichier en lecture : le fichier doit
exister, autrement la fonction fopen return NULL ;
« w » création et ouverture d’un fichier en écriture : si le
fichier existe, son contenu est détruit ;
« a » ouverture d’un fichier en écriture à la fin du
fichier : si le fichier n’existe pas, il est créé ;
« r+ » ouverture d’un fichier en lecture et écriture : le
fichier doit exister,
autrement la fonction fopen return NULL ;
«w+ » création et ouverture d’un fichier en lecture et
écriture : si le fichier existe,son
contenu est détruit ;
« a+ » ouverture d ’ un fichier en lecture et en écriture
à la fin du fichier : si le fichier n’existe pas, il est
créé.
56
Rappel général et mise à
PARTIE 1
niveau
Modes d ’ ouverture de fichiers :
FILE * fopen ( char * nom , char * mode ) ;
57
Rappel général et mise à
PARTIE 1
niveau
Lecture et Ecriture dans les fichiers :
Fonctions de lecture
int
int fscanf(
fscanf FILE
fscanf
fscanf( FILE** stream
stream,, const
const char
char**
format
format,, ...);
...);
int
int fgetc(
fgetc FILE
fgetc
fgetc( FILE** stream
stream););
char
char** fgets(
fgets char
fgets
fgets( char** buffer
buffer,, int
int size
size,, FILE
FILE** stream
stream););
Fonctions d ’ écriture
int §
fprintf(
fprintf FILE
fprintf
int fprintf( FILE** stream
stream,, const
const char
char**
format §
format,, ...);
...);
int
int fputc(
fputc§
fputc(
fputc int
int ch
ch,, FILE
FILE** stream
stream););
int
int fputs(
fputs const
fputs
fputs( const char
char** buffer
buffer,, FILE
FILE** stream
stream););
58
Rappel général et mise à
PARTIE 1
niveau
Exemple de Lecture / Ecriture de
fichiers :
#include <stdio.h> #include <stdio.h>
void main(void) void main(void)
{ {
char titre[81];
char titre[81]; float x[10];
float x[10]; int ind[10], i=0;
int ind[10], i=0,n=10; FILE *f;
FILE *f; f = fopen(“monfichier.txt”,”r”);
f = fopen(“monfichier.txt”,”w”); if (f!= NULL) {
if (f !=NULL){ fgets(titre,80,f);
fprintf(f,”%s\n”,titre); while(!feof(f)) {
fscanf ( f ,”% f
for (i=0; i < n; i++ ) { % d ”,& x [ i ],& ind [ i ]);
fprintf ( f ,”% f % d\n ”, i++;
x [ i ], ind [ i ]); }
} }
} fclose(f);
fclose(f); }
}
59
Rappel général et mise à
PARTIE 1
niveau
Les Listes Chaînées
Stocker des données en mémoire, nous avons
utilisé des variables simples :
Type int, double. . .,
Des tableaux,
Des structures personnalisées. Si vous souhaitez
Difficulté
Int tab [ 4 ]
60
Rappel général et mise à
PARTIE 1
niveau
Les Listes Chaînées
Lors
de la manipulation de nombre variable d’instances
d’une structure, et on souhaite insérer, supprimer
dynamiquement;
Les Tableaux de structures ne
x
su ffisent plusStrct[k]
Struct strct {
Difficulté
……
champ2
champ1
champ1 ;
Champ2 ;
};
struct strct strct [ n ];
…… …… …… …… …… …… …… ……
Rappel général et mise à
PARTIE 1
niveau
Les Listes Chaînées
Une liste chaînée est un moyen d'organiser une
série de données en mémoire . Cela consiste à assembler
des structures en les liant entre elles à l'aide de
pointeurs . On pourrait les représenter comme ceci :
62
Rappel général et mise à
PARTIE 1
niveau
Construction d ’ une Liste Chaînée :
63
Rappel général et mise à
PARTIE 1
niveau
Construction d ’ une Liste Chaînée :
En plus de la structure qu'on vient de créer (que l'on
dupliquera
autant de fois qu'il y a d'éléments), nous allons avoir
besoin d'une autre structure pour contrôler l'ensemble de la liste
chaînée. Elle aura la forme suivante :
64
Rappel général et mise à
PARTIE 1
niveau
Construction d ’ une Liste Chaînée :
Il manque une dernière chose :
On aimerait retenir le dernier élément de la liste.:
Ail faudra bien arrêter de parcourir la liste à un moment
donné. le dernier élément ?
niveau
Gestion d ’ une Liste Chaînée :
les principales fonctions qui vont manipuler la liste
chaînée sont :
qInitialiser la liste ;
q
qAjouter un élément ;
q
qSupprimer un élément ;
q
qAfficher le contenu de la liste ;
q
qSupprimer la liste entière .
66
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
Initialiser la liste :
q
Première que l'on doit appeler,
Elle crée la structure de contrôle et le premier élément
de la liste.
Liste * initialisation ()
{
Liste * liste = malloc ( sizeof (* liste ));
Allocation
Element * element Dynamique
= malloc ( sizeof (* element ));
67
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
qAjouter un élément :
Ajout au début?
Ajout au milieu? De la liste
Ajout à la fin?
68
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
qAjouter un élément :
qAjouter un élément au début :
69
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
qAjouter un élément :
qAjouter un élément au début :
void insertion ( Liste * liste , int
nvNombre )
{ Création du nouvel élément
/* Création
Et Vérification dudenouvel élément
l’allocation */
dynamique
Element * nouveau =
malloc ( sizeof (* nouveau ));
if ( liste == NULL || nouveau ==
NULL )
{
exit ( EXIT_FAILURE );
}
nouveau -> nombre = nvNombre ;
Initialisation des valeurs de la liste
/* Insertion de l'élément au début de
la liste */
niveau
Gestion d ’ une Liste Chaînée :
qSupprimer un élément :
void suppression ( Liste * liste )
{
if ( liste == NULL )
{ Vérification
exit ( EXIT_FAILURE );
}
if ( liste -> premier != NULL )
{
Element * aSupprimer = liste -> premier ;
liste -> premier = liste -> premier -> suivant ;
Suppression
free de la ); valeur de la liste
( aSupprimer
}
}
71
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
qAfficher La liste :
void afficherListe ( Liste * liste )
{
if ( liste == NULL )
{ Vérification et Test
exit ( EXIT_FAILURE );
}
Element * actuel = liste -> premier ;
while ( actuel != NULL )
{
printf ("% d -> ", actuel -> nombre );
actuel = actuel
Affichage suivant ;
de la->liste
}
printf (" NULL\n ");
}
72
Rappel général et mise à
PARTIE 1
niveau
Gestion d ’ une Liste Chaînée :
73
Programmation
Orientée Objet ( POO )
PARTIE 1
Programmation Orientée Objet
PARTIE 2
Un Programme C
75
PARTIE 2
Limitations
76
PARTIE 2
Introduction
Est-ce qu’il faut oublier le C?
NON!
Vous allez avoir
le choix parmi
plusieurs
méthodes de
programmation!
77
PARTIE 2
Introduction
Paradigmes de Programmation
Pascal
Langage C
COBOL C++
FORTRAN Java
ALGOL Delphi
C#
WinDev
78
PARTIE 2
Programmation Structurée
Programme composé de fonctions,
Aanipulation de Données (variables),
Créées à l’intérieure des fonctions ou
paramètres,
Programme principal (main).
Exigences de Qualité
Fournir les résultats voulus ,
dans des conditions normales
Exploiter un même d ’ utilisation
logiciel dans
différentes
implémentations
bien réagir
lorsque l ’ on
s ’ écarte des
conditions
normales
d ’ utilisation
Temps
d ’ exécution , Programme devrait
taille mémoire ... être adapté pour
satisfaire à une
évolution des
spécifications
80
Utiliser certaines parties ( modules ) du logiciel pour résoudre un autr
PARTIE 2
81
PARTIE 2
Notion d ’ Objet
83
PARTIE 2
Notion d ’ Objet
Objet de la Classe ANIMAL
Données
Propriétés
de de
L ’ objet
La
Classe
L ’ objet
Opérations
Méthodes
de de
L ’ objet
La
Classe
84
PARTIE 2
Notion d ’ Objet
Objet de la Classe Véhicule
Marque Propriétés
Couleur Données
de La
L ’ objet Puissance fiscale deClasse
L ’ objet
Vitesse maximale
Démarrer() Méthodes
Accélérer () Opérations
de La
Avancer() deClasse
L ’ objet
Reculer()
85
PARTIE 2
Notion d ’ Objet
Remarques:
Pour distinguer les objets de même
type on aura besoin d’un identificateur
unique appelée identité
Les objets peuvent être distingués
grâce à leur existence et non à la
description des propriétés qu’ils peuvent
avoir;
86
c’est la tâche qui nous dira quelles sont
les propriétés et les méthodes qu’on
PARTIE 2
Notion d ’ Objet
Un objet est caractérisé par plusieurs
notions :
87
PARTIE 2
Notion d ’ Objet
L es objets appartenant à
celle - ci sont les instances
de cette classe .
88
PARTIE 2
Notion d ’ Objet
EXERCICE:
qPropriétés intéressantes?
qActions intéressantes?
89
PARTIE 2
Notion d ’ Objet
lecteur MP3
EXERCICE: lève-vitres arrière électrique
lève-vitres avant électrique
ordinateur de bord
peinture métallisée
phares avec extinction retardée
radio/CD
régulateur/limiteur de vitesse
rétro. ton carrosserie
rétroviseurs électriques
sièges AV à réglage électrique
sièges avant réglables en hauteur
ABS
vitres teintées
volant multifonctions
qPropriétés intéressantes?
qActions intéressantes?
90