Sunteți pe pagina 1din 94

2007/2008 Info2, 1re anne SM/SMI 1

Langage C Langage C Langage C Langage C


Prsentation gnrale
et instructions de base
2007/2008 Info2, 1re anne SM/SMI 2
Langage C Langage C Langage C Langage C
Cr en 1972 (D. Ritchie et K. Thompson), est un
langage rapide et trs populaire et largement utilis.
Le C++ est un langage orient objet cr partir du C en
1983.
Le langage C a inspir de nombreux langages :
C++, Java, PHP, ... leurs syntaxes sont proches de celle de C
Le Langage C est un bon acquis pour apprendre
dautres langages
2007/2008 Info2, 1re anne SM/SMI 3
Premier programme en C Premier programme en C Premier programme en C Premier programme en C
#include <stdio.h>
void main()
{
printf(Mon programme !\n");
}
bibliothque
Point d'entr du programme
Instruction
2007/2008 Info2, 1re anne SM/SMI 4
Langage C : G Langage C : G Langage C : G Langage C : G n nn n ralit ralit ralit ralit s ss s
Chaque instruction en C doit se terminer par ;
Pour introduire un texte en tant que commentaire, il
suffit de prcder la ligne par // ( le texte est alors ignor
par le compilateur de C)
Il est aussi possible d'crire des commentaires sur
plusieurs lignes en utilisant les symboles (/* ..*/)
/* exemple sur ligne 1
exemple sur ligne 2 */
2007/2008 Info2, 1re anne SM/SMI 5
Langage C : nom et type des variables Langage C : nom et type des variables Langage C : nom et type des variables Langage C : nom et type des variables
Le nom d'une variable peut tre une combinaison de lettres et de
chiffres, mais qui commence par une lettre, qui ne contient pas
d'espaces et qui est diffrente des mots rservs du langage C
Les principaux types dfinis en C sont :
char (caractres),
int (entier),
short (entiers courts),
long (entiers longs),
float (rel),
double (rel grande prcision),
long double (rel avec plus de prcision),
unsigned int (entier non sign)
2007/2008 Info2, 1re anne SM/SMI 6
Langage C : nom et type des variables Langage C : nom et type des variables Langage C : nom et type des variables Langage C : nom et type des variables
Dclaration d'une variable
Type nom_de_la_variable [= valeur] ;
Exemple:
int nb;
float pi = 3.14;//dclaration et initialisation
char c = x';
long a, b, c;
double r = 7.1974851592;
2007/2008 Info2, 1re anne SM/SMI 7
Langage C: l'affectation Langage C: l'affectation Langage C: l'affectation Langage C: l'affectation
Le symbole d'affectation se note en C avec
=
exemple : i= 1; j= i+1;
Attention : en C, le test de lgalit est
effectue par loprateur ==
a==b ; est une expression de type logique
(boolean) qui est vrai si les deux valeurs a et b
sont gales et fausse sinon
2007/2008 Info2, 1re anne SM/SMI 8
Langage C : affichage d Langage C : affichage d Langage C : affichage d Langage C : affichage d une variable une variable une variable une variable
printf("format de laffichage", var) permet d'afficher la valeur de la
variable var (c'est l'quivalent de crire en pseudo code).
printf("chaine") permet d'afficher la chane de caractres qui est entre
guimets " "
int a=1, b=2; printf("a vaut :%d et b vaut:%d \n ", a, b);
a vaut 1 et b vaut 2
float r= 7.45; printf(" le rayon =%f \n ",r);
Autres formats :
%c : caractre
%lf : double
%s : chaine de caractres
%e : rel en notation scientifique
2007/2008 Info2, 1re anne SM/SMI 9
Langage C : affichage d Langage C : affichage d Langage C : affichage d Langage C : affichage d une variable une variable une variable une variable
Affichage de la valeur d'une variable en
C++
cout <<chane 1 <<variable 1<<chane 2 <<variable 2;
Exemple
int i =2; int j = 20;
cout <<"i vaut:" << i <<"j vaut:"<<j <<'\n';
float r = 6.28;
cout<<"le rayon = "<< r <<'\n';
2007/2008 Info2, 1re anne SM/SMI 10
Langage C : lecture d Langage C : lecture d Langage C : lecture d Langage C : lecture d une variable une variable une variable une variable
Lecture dune variable n de type entier:
Syntaxe : scanf("%d ",&n); lit la valeur tap par lutilisateur
au clavier et elle la stocke dans la variable n.
Comme pour printf, le premier argument est une chaine de
caractres qui donne le format de la lecture. Cette chaine
ne peut contenir que des formats, pas de messages.
Attention : notez la prsence du caractre & devant n
(adresse associe la variable n) et ce nest pas quivaut
scanf("%d", n);
2007/2008 Info2, 1re anne SM/SMI 11
Langage C : lecture d Langage C : lecture d Langage C : lecture d Langage C : lecture d une variable une variable une variable une variable
lecture d'une variable en C++
cin>>var;
Exemple
int i ;
cout <<"entrez i "<<'\n';
cin>>i;
float r ;
cout<<"entrez le rayon r " <<'\n';
cin>>r;
2007/2008 Info2, 1re anne SM/SMI 12
Langage C : oprateurs
Instructions de base
oprateurs de base
+, -, *, / oprateurs arithmtique de base
% reste d'une division entire
== test d'galit
!= test de diffrence
<, >, <=, >= test de comparaison
! ngation
|| ou ou logique pour valuer une expression
&& et et logique pour valuer une expression
2007/2008 Info2, 1re anne SM/SMI 13
Langage C : syntaxe des tests
criture en pseudo code Traduction en C
Si condition alors if (condition) {
instructions instructions;
Finsi }
Si condition alors if (condition) {
instructions1 instructions1;
Sinon } else {
instructions2 instructions2;
Finsi }
2007/2008 Info2, 1re anne SM/SMI 14
Langage C : syntaxe des tests
criture en pseudo code Traduction en C
cas o v vaut switch(v){
v1 : action1 case v1 : action1; break;
v2 : action2 case v2 : action2; break;
. . .
vn : actionn case vn: actionn ;break;
autre : action autre default : action autre; break;
Fincas }
2007/2008 Info2, 1re anne SM/SMI 15
Langage C : syntaxe des boucles
criture en pseudo code Traduction en C
TantQue condition while( condition) {
Instructions instructions;
FinTantQue }
Pour i allant de v1 v2 par pas p for( i=v1;i<=v2;i=i+p){
instructions instructions;
FinPour }
Rpter do{
instructions instructions;
Jusqu condition } while(condition)
2007/2008 Info2, 1re anne SM/SMI 16
Fonctions et proc Fonctions et proc Fonctions et proc Fonctions et proc dures dures dures dures
2007/2008 Info2, 1re anne SM/SMI 17
Les procdures et les fonctions
Par exemple, pour rsoudre le problme suivant :
crire un programme qui affiche en ordre croissant les
notes dune classe suivies de la note la plus faible, de la
note la plus leve et de la moyenne.
revient rsoudre les sous problmes suivants :
- Remplir un tableau de naturels avec des notes saisies par
lutilisateur
- Afficher un tableau de naturels
- Trier un tableau de naturel en ordre croissant
- Trouver le plus petit naturel dun tableau
- Trouver le plus grand naturel dun tableau
- Calculer la moyenne dun tableau de naturels
2007/2008 Info2, 1re anne SM/SMI 18
Les procdures et les fonctions
Chacun de ces sous-problmes devient un nouveau problme
rsoudre.
Si on considre que lon sait rsoudre ces sous-problmes, alors on
sait quasiment rsoudre le problme initial.
Donc crire un programme qui rsout un problme revient toujours
crire des sous-programmes qui rsolvent des sous parties du
problme initial.
En algorithmique il existe deux types de sous-programmes :
- Les fonctions
- Les procdures
2007/2008 Info2, 1re anne SM/SMI 19
Fonctions et proc Fonctions et proc Fonctions et proc Fonctions et proc dures dures dures dures
Un programme long est souvent difficile crire et comprendre. Cest
pourquoi, il est prfrable de le dcomposer en des parties appeles
sous-programmes ou modules
Les fonctions et les procdures sont des modules (groupe
d'instructions) indpendants dsigns par un nom. Elles ont plusieurs
avantages :
permettent dviter de rcrire un mme traitement plusieurs fois. En effet,
on fait appelle la procdure ou la fonction aux endroits spcifis.
permettent dorganiser le code et amliorent la lisibilit des programmes
facilitent la maintenance du code (il suffit de modifier une seule fois)
ces procdures et fonctions peuvent ventuellement tre rutilises dans
d'autres programmes
2007/2008 Info2, 1re anne SM/SMI 20
Fonctions
Le rle d'une fonction en programmation est similaire celui d'une
fonction en mathmatique : elle retourne un rsultat au programme
appelant
Une fonction s'crit en dehors du programme principal sous la forme:
Fonction nom_fonction (paramtres et leurs types) : type_fonction
Variables // variables locales
Dbut
Instructions constituant le corps de la fonction
retourne //la valeur retourner
FinFonction
Le nom_fonction est un identificateur
type_fonction est le type du rsultat retourn
L'instruction retourne sert retourner la valeur du rsultat
2007/2008 Info2, 1re anne SM/SMI 21
Caract Caract Caract Caract ristiques des fonctions ristiques des fonctions ristiques des fonctions ristiques des fonctions
Une fonction ne modifie pas les valeurs de ses arguments
en entre
Elle se termine par une instruction de retour qui rend un
rsultat et un seul
Une fonction est toujours utilise dans une expression
(affectation, affichage,)
2007/2008 Info2, 1re anne SM/SMI 22
Fonctions : exemples
La fonction max suivante retourne le plus grand des deux
rels x et y fournis en arguments :
Fonction max (x : rel, y: rel ) : rel
variable z : rel
Dbut z y
si (x>y) alors z x finsi
retourne (z)
FinFonction
La fonction Pair suivante dtermine si un nombre est pair :
Fonction Pair (n : entier ) : boolen
Debut retourne (n%2=0)
FinFonction
2007/2008 Info2, 1re anne SM/SMI 23
Utilisation des fonctions
L'utilisation d'une fonction se fera par simple criture de son nom
dans le programme principale. Le rsultat tant une valeur, devra tre
affect ou tre utilis dans une expression, une criture, ...
Exepmle: Algorithme exepmleAppelFonction
variables c : rel, b : boolen
Dbut
b Pair(3)
c 5*max(7,2)+1
crire("max(3,5*c+1)= ", max(3,5*c+1))
Fin
Lors de l'appel Pair(3) le paramtre formel n est remplac par le
paramtre effectif 3
2007/2008 Info2, 1re anne SM/SMI 24
Procdures
Dans le cas o une tche se rpte dans plusieurs endroits du
programme et elle ne calcule pas de rsultats ou quelle calcule
plusieurs rsultats la fois alors on utilise une procdure au lieu
dune fonction
Une procdure est un sous-programme semblable une fonction
mais qui ne retourne rien
Une procdure s'crit en dehors du programme principal sous la
forme :
Procdure nom_procdure (paramtres et leurs types)
Variables //locales
Dbut
Instructions constituant le corps de la procdure
FinProcdure
Remarque : une procdure peut ne pas avoir de paramtres
2007/2008 Info2, 1re anne SM/SMI 25
Appel d'une procdure
Pour appeler une procdure dans un programme principale ou
dans une autre procdure, il suffit dcrire une instruction indiquant
le nom de la procdure :
Procdure exempleProcedure ()

FinProcdure
Algorithme exepmleAppelProcdure
Dbut
exempleProcedure ()

Fin
Remarque : contrairement l'appel d'une fonction, on ne peut pas
affecter la procdure appele ou l'utiliser dans une expression.
L'appel d'une procdure est une instruction autonome
2007/2008 Info2, 1re anne SM/SMI 26
Paramtres d'une procdure
Les paramtres servent changer des donnes entre le programme
principale (ou la procdure appelante) et la procdure appele
Les paramtres placs dans la dclaration d'une procdure sont
appels paramtres formels. Ils sont des variables locales la
procdure.
Les paramtres placs dans l'appel d'une procdure sont appels
paramtres effectifs. ils contiennent les valeurs pour effectuer le
traitement
Le nombre de paramtres effectifs doit tre gal au nombre de
paramtres formels. L'ordre et le type des paramtres doivent
correspondre
2007/2008 Info2, 1re anne SM/SMI 27
Transmission des paramtres
Il existe deux modes de transmission de paramtres dans les langages
de programmation :
La transmission par valeur : les valeurs des paramtres effectifs sont
affectes aux paramtres formels correspondants au moment de
l'appel de la procdure. Dans ce mode le paramtre effectif ne subit
aucune modification
La transmission par adresse (ou par rfrence) : les adresses des
paramtres effectifs sont transmises la procdure appelante. Dans
ce mode, le paramtre effectif subit les mmes modifications que le
paramtre formel lors de l'excution de la procdure
Remarque : le paramtre effectif doit tre une variable (et non une
valeur) lorsqu'il s'agit d'une transmission par adresse
En pseudo-code, on va prciser explicitement le mode de transmission
dans la dclaration de la procdure
2007/2008 Info2, 1re anne SM/SMI 28
Transmission des paramtres :
exemples
Procdure incrementer1 (x : entier par valeur, y : entier par adresse)
x x+1
y y+1
FinProcdure
Algorithme Test_incrementer1
variables n, m : entier
Dbut
n 3
m 3
incrementer1(n, m) rsultat :
crire (" n= ", n, " et m= ", m) n=3 et m=4
Fin
Remarque : l'instruction x x+1 n'a pas de sens avec un passage par
valeur
2007/2008 Info2, 1re anne SM/SMI 29
Transmission par valeur, par
adresse : exemples
Procdure qui calcule la somme et le produit de deux entiers :
Procdure SommeProduit (x, y: entier par valeur, som, prod : entier par
adresse)
som x+y
prod x*y
FinProcdure
Procdure qui change le contenu de deux variables :
Procdure Echange (x : rel par adresse, y : rel par adresse)
variables z : rel
z x
x y
y z
FinProcdure
2007/2008 Info2, 1re anne SM/SMI 30
Variables locales et globales
On peut manipuler 2 types de variables dans un module
(procdure ou fonction) : des variables locales et des
variables globales. Elles se distinguent par ce qu'on appelle
leur porte (leur "champ de dfinition", leur "dure de vie")
Une variable locale n'est connue qu' l'intrieur du module ou
elle a t dfinie. Elle est cre l'appel du module et dtruite
la fin de son excution
Une variable globale est connue par l'ensemble des modules
et le programme principale. Elle est dfinie durant toute
lapplication et peut tre utilise et modifie par les diffrents
modules du programme
2007/2008 Info2, 1re anne SM/SMI 31
Variables locales et globales
La manire de distinguer la dclaration des variables locales et
globales diffre selon le langage
En gnral, les variables dclares l'intrieur d'une fonction ou
procdure sont considres comme variables locales
En pseudo-code, on va adopter cette rgle pour les variables
locales et on dclarera les variables globales dans le
programme principale
Conseil : Il faut utiliser autant que possible des variables
locales plutt que des variables globales. Ceci permet
d'conomiser la mmoire et d'assurer l'indpendance de la
procdure ou de la fonction
2007/2008 Info2, 1re anne SM/SMI 32
Fonctions et procdures en langage C
En C, une fonction prends N arguments et retourne une valeur de
type.
Syntaxe : type arg_ret nom_f(type arg1, type arg2, type argn)
{ 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 envoys la fonction.
Une procdure est une fonction renvoyant void, dans ce cas return
est appel sans paramtre.
2007/2008 Info2, 1re anne SM/SMI 33
Fonctions et procdures en C
L'ordre, le type et le nombre des arguments doivent
tre respects lors de l'appel de la fonction
L'appel d'une fonction doit tre situe aprs sa
dclaration ou celle de son prototype
Si la fonction ne renvoie rien alors prciser le type void void
(cette fonction est consid (cette fonction est consid r r e comme une proc e comme une proc dure) dure)
2007/2008 Info2, 1re anne SM/SMI 34
Fonctions en C : exemple
int min(int a, int b);
void main()
{ int c;
/* entrez les valeurs de a et b */
c= min(a, b) ;
printf("le min de %d et %d est : %d \n", a, b, c);
}
int min(int a, int b)
{
if (a <b) return a;
else return b;
}
2007/2008 Info2, 1re anne SM/SMI 35
Rcursivit
Un module (fonction ou procdure) peut s'appeler lui-mme: on
dit que c'est un module rcursif
Tout module rcursif doit possder un cas limite (cas trivial) qui
arrte la rcursivit
Exemple : Calcul du factorielle
Fonction fact (n : entier ) : entier
Si (n=0) alors
retourne (1)
Sinon
retourne (n*fact(n-1))
Finsi
FinFonction
2007/2008 Info2, 1re anne SM/SMI 36
Fonctions rcursives : exercice
crivez une fonction rcursive (puis itrative) qui calcule le terme n
de la suite de Fibonacci dfinie par : U(0)=U(1)=1
U(n)=U(n-1)+U(n-2)
Fonction Fib (n : entier ) : entier
Variable res : entier
Si (n=1 OU n=0) alors
res 1
Sinon
res Fib(n-1)+Fib(n-2)
Finsi
retourne (res)
FinFonction
2007/2008 Info2, 1re anne SM/SMI 37
Fonctions rcursives : exercice
Une fonction itrative pour le calcul de la suite de Fibonacci :
Fonction Fib (n : entier ) : entier
Variables i, AvantDernier, Dernier, Nouveau : entier
Si (n=1 OU n=0) alors retourne (1)
Finsi
AvantDernier 1, Dernier 1
Pour i allant de 2 n
NouveauDernier+ AvantDernier
AvantDernier Dernier
Dernier Nouveau
FinPour
retourne (Nouveau)
FinFonction
Remarque: la solution rcursive est plus facile crire
2007/2008 Info2, 1re anne SM/SMI 38
Procdures rcursives : exemple
Une procdure rcursive qui permet d'afficher la
valeur binaire d'un entier n
Procdure binaire (n : entier )
Si (n<>0) alors
binaire (n/2)
crire (n mod 2)
Finsi
FinProcdure
2007/2008 Info2, 1re anne SM/SMI 39
Les fonctions rcursives
Le processus rcursif remplace en quelque sorte la
boucle, cest--dire un processus itratif.
Il est noter que l'on traite le problme lenvers : on part
du nombre, et on remonte rebours jusqu 1, pour
pouvoir calculer la factorielle par exemple.
Cet effet de rebours est caractristique de la
programmation rcursive.
2007/2008 Info2, 1re anne SM/SMI 40
Les fonctions rcursives : remarques
la programmation rcursive, pour traiter certains problmes,
peut tre trs conomique, elle permet de faire les choses
correctement, en trs peu de lignes de programmation.
en revanche, elle est trs coteuse de ressources machine.
Car il faut crer autant de variable temporaires que de "tours"
de fonction en attente.
toute fonction rcursive peut galement tre formule en
termes itratifs ! Donc, si elles facilitent la vie du
programmeur, elle ne sont pas indispensable.
2007/2008 Info2, 1re anne SM/SMI 41
Les tableaux Les tableaux Les tableaux Les tableaux
2007/2008 Info2, 1re anne SM/SMI 42
Tableaux : introduction
Supposons que l'on veut calculer le nombre dtudiants ayant une note
suprieure 10 pour une classe de 20 tudiants.
Jusqu prsent, le seul moyen pour le faire, cest de dclarer 20
variables dsignant les notes N1, , N20:
La saisie de ces notes ncessite 20 instructions lire.
Le calcul du nombre des notes>10 se fait par une suite de tests de 20
instructions Si :
nbre 0
Si (N1 >10) alors nbre nbre+1 FinSi

Si (N20>10) alors nbre nbre+1 FinSi


cette faon nest pas trs pratique
Cest pourquoi, les langages de programmation offrent la possibilit de
rassembler toutes ces variables dans une seule structure de donne
appele tableau qui est facile manipuler
2007/2008 Info2, 1re anne SM/SMI 43
Tableaux
Un tableau est un ensemble d'lments de mme type dsigns par
un identificateur unique
Une variable entire nomme indice permet d'indiquer la position
d'un lment donn au sein du tableau et de dterminer sa valeur
La dclaration d'un tableau s'effectue en prcisant le type de ses
lments et sa dimension (le nombre de ses lments)
En pseudo code :
variable tableau identificateur[dimension] : type
Exemple :
variable tableau notes[20] : rel
On peut dfinir des tableaux de tous types : tableaux d'entiers, de
rels, de caractres, de boolens, de chanes de caractres,
2007/2008 Info2, 1re anne SM/SMI 44
Les tableaux
Les tableaux une dimension ou vecteurs :
variable tableau tab[10] : entier
Ce tableau est de longueur 10, car il contient 10 emplacements.
Chacun des dix nombres du tableau est repr par son rang, appel
indice
Pour accder un lment du tableau, il suffit de prciser entre
crochets l'indice de la case contenant cet lment.
Pour accder au 5
me
lment (22), on crit : tab[4]
Pour accder au i
me
lment, on crit tab[i-1] (avec 0<i<=10)
-26 90 12 49 134 22 -56 1 54 45
9 8 7 6 5 4 3 2 1 0
2007/2008 Info2, 1re anne SM/SMI 45
Tableaux : remarques
Selon les langages, le premier indice du tableau est soit 0, soit 1. Le
plus souvent c'est 0 (c'est ce qu'on va utiliser en pseudo-code). Dans
ce cas, tab[i] dsigne l'lment i+1 du tableau notes
Il est possible de dclarer un tableau sans prciser au dpart sa
dimension. Cette prcision est faite ultrieurement.
Par exemple, quand on dclare un tableau comme paramtre d'une
procdure, on peut ne prciser sa dimension qu'au moment de l'appel
En tous cas, un tableau est inutilisable tant quon na pas prcis le
nombre de ses lments
Un grand avantage des tableaux est qu'on peut traiter les donnes
qui y sont stockes de faon simple en utilisant des boucles
Les lments dun tableau sutilisent comme des variables
2007/2008 Info2, 1re anne SM/SMI 46
Tableaux : accs et modification
Les instructions de lecture, criture et affectation
s'appliquent aux tableaux comme aux variables.
Exemples :
x tab[0]
La variable x prend la valeur du premier lment du
tableau (45 selon le tableau prcdent)
tab[6] 43
Cette instruction a modifie le contenu du 7
me
lment
du tableau (43 au lieu de 49)
2007/2008 Info2, 1re anne SM/SMI 47
Tableaux : exemple 1
Pour le calcul du nombre d'tudiants ayant une note
suprieure 12 avec les tableaux, on peut crire :

Constante N=20 : entier


Variables i ,nbre : entier
tableau notes[N] : rel
Dbut
nbre 0
Pour i allant de 0 N-1
Si (notes[i] >12) alors
nbre nbre+1
FinSi
FinPour
crire ("le nombre de notes suprieures 12 est : ", nbre)
Fin
2007/2008 Info2, 1re anne SM/SMI 48
Tableaux : exemple 2
Le programme suivant comporte la dclaration dun tableau de 20 rels (les
notes dune classe), on commence par effectuer la saisie des notes, et en suite
on calcul la moyenne des 20 notes et on affiche la moyenne :

Constante Max =200 : entier


variables tableau Notes[Max],i,somme,n : entier
moyenne : rel
dbut
ecrire("entrer le nombre de notes :") lire(n)
/* saisir les notes */
pour i allant de 0 n-1 faire
ecrire("entrer une note :")
lire(Notes[i])
finpour
/* effectuer la moyenne des notes */
somme 0
pour i allant de 0 n-1 faire
somme somme + Notes[i]
finPour
moyenne = somme / n
/* affichage de la moyenne */
ecrire("la moyenne des notes est :",moyenne)
fin
2007/2008 Info2, 1re anne SM/SMI 49
Tableaux : saisie et affichage
Saisie et affichage des lments d'un tableau :
Constante Max=200 : entier
variables i, n : entier
tableau Notes[max] : rel
ecrire("entrer la taille du tableau :")
lire(n)
/* saisie */
Pour i allant de 0 n-1
crire ("Saisie de l'lment ", i + 1)
lire (T[i] )
FinPour
/* affichage */
Pour i allant de 0 n-1
crire ("T[",i, "] =", T[i])
FinPour
2007/2008 Info2, 1re anne SM/SMI 50
Les tableaux : Initialisation
Le bloc dinstructions suivant initialise un un tous
les lments d'un tableau de n lments :
InitTableau
dbut
pour i de 0 n-1 faire
tab[i] 0
fpour
fin
2007/2008 Info2, 1re anne SM/SMI 51
Tableaux : Exercice Tableaux : Exercice Tableaux : Exercice Tableaux : Exercice
Que produit lalgorithme suivant ?
Variable Tableau F[10], i : entier
dbut
F[0]1
F[1]1
crire(F[0],F[1])
pour i allant de 2 9 faire
F[i]F[i-1]+F[i-2]
crire(F[i])
finpour
fin
2007/2008 Info2, 1re anne SM/SMI 52
Tableaux : syntaxe en C
En langage C, un tableau se dclare comme suit :
type nom_tableau[dimension];
dimension : doit tre une constante
Exemple : int t[100] ;
La taille nest pas obligatoire si le tableau est initialis sa cration.
Exemple : int dixPuissance[ ] = { 0, 1, 10, 100, 1000, 10000 } ;
Dclaration dun tableau de plusieurs dimensions
type nom_tableau[dim1][dim2][dimn];
Exemple: char buffer[20][80];
2007/2008 Info2, 1re anne SM/SMI 53
Tableaux deux dimensions
Les langages de programmation permettent de dclarer des tableaux
dans lesquels les valeurs sont repres par deux indices. Ceci est
utile par exemple pour reprsenter des matrices
En pseudo code, un tableau deux dimensions se dclare ainsi :
variable tableau identificateur[dimension1] [dimension2] : type
Exemple : une matrice A de 3 linges et 4 colonnes dont les lments sont
rels
variable tableau A[3][4] : rel
A[i][j] permet d'accder llment de la matrice qui se trouve
lintersection de la ligne i et de la colonne j
Les tableaux peuvent avoir n dimensions.
2007/2008 Info2, 1re anne SM/SMI 54
Les tableaux deux dimensions
La matrice A dans la dclaration suivante :
variable tableau A[3][7] : rel
peut tre explicite comme suit : les lments sont ranges dans un
tableau deux entres.
Ce tableau a 3 lignes et 7 colonnes. Les lments du tableau sont
reprs par leur numro de ligne et leur numro de colonne dsigns
en bleu. Par exemple A[1][4] vaut 38.
69 41 83 67 55 21 43 2
25 54 38 11 51 36 23 1
32 77 76 2 44 28 12 0
6 5 4 3 2 1 0
2007/2008 Info2, 1re anne SM/SMI 55
Exemples : lecture d'une matrice
La saisie des lments d'une matrice :
Constante N=100 :entier
Variable i, j, n, m : entier
tableau A[N][N] : rel
Dbut
ecrire("entrer le nombre de lignes et le nombre de colonnes :")
lire(n, m)
Pour i allant de 0 n-1
crire ("saisie de la ligne ", i + 1)
Pour j allant de 0 m-1
crire ("Entrez l'lment de la ligne ", i + 1, " et de la colonne ", j+1)
lire (A[i][j])
FinPour
FinPour
Fin
2007/2008 Info2, 1re anne SM/SMI 56
Exemples : affichage d'une matrice
Affichages des lments d'une matrice :
Constante N=100 : entier
Variable i, j, n,m : entier
tableau A[N][N], B[N][N], C[N][N] : rel
Dbut
ecrire("entrer le nombre de lignes et le nombre de colonnes :")
lire(n, m)
Pour i allant de 0 n-1
Pour j allant de 0 m-1
crire ("A[",i, "] [",j,"]=", A[i][j])
FinPour
FinPour
Fin
2007/2008 Info2, 1re anne SM/SMI 57
Initialisation de matrice Initialisation de matrice Initialisation de matrice Initialisation de matrice
Pour initialiser une matrice on peut utiliser par
exemple les instructions suivantes :
T
1
[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
T
2
[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
T
3
[4][4] = {{1,2,3}, {4,5,6}, {7,8,9}};
T
4
[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
2007/2008 Info2, 1re anne SM/SMI 58
Exemples : somme de deux matrices
Procdure qui calcule la somme de deux matrices :
Constante N =100 :entier
Variable i, j, n : entier
tableau A[N][N], B[N][N], C[N][N] : rel
Dbut
ecrire("entrer la taille des matrices :")
lire(n)
Pour i allant de 0 n-1
Pour j allant de 0 m-1
C[i][j] A[i][j]+B[i][j]
FinPour
FinPour
Fin
2007/2008 Info2, 1re anne SM/SMI 59
Exemples : produit de deux Exemples : produit de deux Exemples : produit de deux Exemples : produit de deux
matrices matrices matrices matrices
constante N=20 : entier
variables Tableau A[N][N],B[N][N],C[N][N],i,j,k,n,S : entier
dbut
crire("donner la taille des matrices(<20) :")
lire(n)
/* lecture de la matrice A */
pour i allant de 1 n faire
crire("donner les lments de la ",i," ligne:")
pour j allant de 1 n faire
lire(A[i][j])
finpour
finpour
/* lecture de la matrice B */
pour i allant de 1 n faire
crire("donner les lments de la ",i," ligne:")
pour j allant de 1 n faire
lire(B[i][j])
finpour
finpour
2007/2008 Info2, 1re anne SM/SMI 60
Exemples : produit de deux Exemples : produit de deux Exemples : produit de deux Exemples : produit de deux
matrices (suite) matrices (suite) matrices (suite) matrices (suite)
/* le produit de C = A * B */
pour i allant de 0 n-1 faire
pour j allant de 0 n-1 faire
S 0
pour k allant de 0 n-1 faire
S S + A[i][k]*B[k][j]
finpour
C[i][j] S
finpour
fipour
/* affichage de la matrice de C */
pour i allant de 0 n-1 faire
pour j allant de 0 n-1 faire
crire(C[i][j]," ")
finpour
crire("\n") /* retour la ligne */
finpour
fin
2007/2008 Info2, 1re anne SM/SMI 61
Notion de complexit
Lexcution dun algorithme sur un ordinateur consomme des
ressources:
en temps de calcul : complexit temporelle
en espace-mmoire occup : complexit en espace
Seule la complexit temporelle sera considre pour valuer
lefficacit de nos programmes.
Le temps dexcution dpend de plusieurs facteurs :
Les donnes (trier 4 nombre ce nest pas trier 1000)
Le code gnr par le compilateur
La nature de la machine utilise
La complexit de lalgorithme.
Si T(n) dnote le temps dexcution dun programme sur un
ensemble des donnes de taille n alors :
2007/2008 Info2, 1re anne SM/SMI 62
Complexit dun algorithme
T(n)=c.n
2
(c est une constante) signifie que lon estime
c.n
2
le nombre dunits de temps ncessaires un
ordinateur pour excuter le programme.
Un algorithme "hors du possible" a une complexit
temporelle et/ou en espace qui rend son excution
impossible
exemple: jeu dchec par recherche exhaustive de
tous les coups possibles
10
19
possibilits, 1 msec/poss. = 300 millions dannes
2007/2008 Info2, 1re anne SM/SMI 63
Complexit : exemple
crire une fonction qui permet de retourner le plus grand diviseur dun
entier.
Fonction PGD1( n: entier) : entier Fonction PGD2( n: entier) : entier
Variables i :entier Variables i :entier
Debut Debut
in-1 i2
Tantque (n%i !=0) Tantque ((i<sqrt(n))&&(n%i !=0))
ii-1 ii+1
finTantque finTantque
Retourner i si(n%i == 0) alors retourner (n/i)
sinon retourner (1)
finsi
Fin Fin
Pour un ordinateur qui effectue 10
6
tests par seconde et n=10
10
alors le
temps requis par PGD1 est dordre 3 heures alors que celui requis par
PGD2 est dordre 0.1 seconde
2007/2008 Info2, 1re anne SM/SMI 64
Complexit : notation en O
La complexit est souvent dfinie en se basant sur le pire des cas ou
sur la complexit moyenne. Cependant, cette dernire est plus
dlicate calculer que celle dans le pire des cas.
De faon gnral, on dit que T(n) est O(f(n)) si c et n0 telles que
nn0, T(n) c.f(n). Lalgorithme ayant T(n) comme temps dexcution
a une complexit O(f(n))
La complexit croit en fonction de la taille du problme
Lordre utilis est lordre de grandeur asymptotique
Les complexits n et 2n+5 sont du mme ordre de grandeur
n et n
2
sont dordres diffrents
lim T(n)/ f(n) <= c lim T(n)/ f(n) <= c
n n - -> + > +
2007/2008 Info2, 1re anne SM/SMI 65
Complexit : rgles
1- Dans un polynme, seul le terme de plus haut degr
compte.
Exemple : n
3
+1006n
2
+555n est O(n
3
)
2- Une exponentielle lemporte sur une puissance, et cette
dernire sur un log. Exemple: 2
n
+n
100
est O(2
n
) et 300lg(n)+2n est
O(n)
3- Si T1(n) est O(f(n)) et T2(n) est O(g(n)) alors
T1(n)+T2(n) est O(Max(f(n),g(n))) et T1(n).T2(n) est
O(f(n).g(n))
Les ordres de grandeur les plus utilises :
O(log n), O(n), O(n log n), O(n
k
), O(2
n
)
2007/2008 Info2, 1re anne SM/SMI 66
La complexit
La complexit

asymptotique
asymptotique
Supposons que l Supposons que l on dispose de 7 algorithmes dont les complexit on dispose de 7 algorithmes dont les complexit s dans le s dans le
pire des cas sont d pire des cas sont d ordre de grandeur 1, log ordre de grandeur 1, log
2 2
n, n, nlg n, n, nlg
2 2
n, n n, n
2 2
, n , n
3 3
, 2 , 2
n n
et un et un
ordinateur capable d ordinateur capable d effectuer 10 effectuer 10
6 6
op op rations par seconde. Le tableau suivant rations par seconde. Le tableau suivant
montre l montre l cart entre ces algorithmes lorsque la taille des donn cart entre ces algorithmes lorsque la taille des donn es croit : es croit :
! 31.710
3
a 11.5j 19.9s 1s 19.9s 1s N= 10
6
! 31.7a 2.7h 1.6s 0.1s 16.6s 1s N= 10
5
! 11.5j 100s 0.1s 10ms 13.3s 1s N=10
4
! (>10
100
) 16.6mn 1s 9.9ms 1ms 9.9s 1s N= 10
3
4.10
16
a 1s 10ms 0.6ms 0.1ms 6.6s 1s N=10
2
2
n
n
3
n
2
n
log
2
n
n log
2
n 1 Complexit
2007/2008 Info2, 1re anne SM/SMI 67
Tableaux : recherche dun lment
Pour effectuer la recherche dun lment dans un tableau, deux
mthodes de recherche sont considres selon que le tableau est tri
ou non :
La recherche squentielle pour un tableau non tri
La recherche dichotomique pour un tableau tri
La recherche squentielle
Consiste parcourir un tableau non tri partir du dbut et
sarrter ds quune premire occurrence de llment sera
trouve. Le tableau sera parcouru du dbut la fin si llment ny
figure pas.
2007/2008 Info2, 1re anne SM/SMI 68
Recherche squentielle : algorithme
Recherche de la valeur x dans un tableau T de N lments :
Variables i: entier, Trouve : boolen

i0 , Trouve Faux
TantQue (i < N) ET (not Trouve)
Si (T[i]=x) alors
Trouve Vrai
Sinon
ii+1
FinSi
FinTantQue
Si Trouve alors // c'est quivalent crire Si Trouve=Vrai alors
crire ("x est situ dans la "+i+ "eme position du
tableau ")
Sinon crire ("x n'appartient pas au tableau")
FinSi
2007/2008 Info2, 1re anne SM/SMI 69
Recherche squentielle : complexit
Dans le pire des cas on doit parcourir tout le tableau.
Ainsi, la complexit est de lordre de O(n).
Si le te tableau est tri la recherche squentielle peut
sarrter ds quon rencontre un lment du tableau
strictement suprieur llment recherch.
Si tous les lments sont plus petits que llment
recherch lensemble du tableau est parcouru. Ainsi la
complexit reste dordre O(n)
2007/2008 Info2, 1re anne SM/SMI 70
Recherche dichotomique
Dans le cas o le tableau est tri (ordonn), on peut amliorer
l'efficacit de la recherche en utilisant la mthode de recherche
dichotomique
Principe : diviser par 2 le nombre d'lments dans lesquels on
cherche la valeur x chaque tape de la recherche. Pour cela on
compare x avec T[milieu] :
Si x < T[milieu], il suffit de chercher x dans la 1re moiti du
tableau entre (T[0] et T[milieu-1])
Si x > T[milieu], il suffit de chercher x dans la 2me moiti du
tableau entre (T[milieu+1] et T[N-1])
On continue le dcoupage jusqu un sous tableau de taille 1
2007/2008 Info2, 1re anne SM/SMI 71
Recherche dichotomique
On utilise lordre pour
anticiper labandon dans une recherche linaire,
guider la recherche : recherche par dichotomie.
petit petit
grand grand
moyen moyen
0 0 n n- -1 1 (n (n- -1)/2 1)/2
X X
X < moyen X < moyen
Oui ! Oui !
Chercher X dans Chercher X dans
[ 0 .. (n [ 0 .. (n- -1)/2 1)/2- - 1 ] 1 ]
Non ! Non !
Chercher X dans Chercher X dans
[ (n [ (n- -1)/2 .. n 1)/2 .. n- -1 ] 1 ]
2007/2008 Info2, 1re anne SM/SMI 72
Recherche dichotomique :
algorithme
inf0 , supN-1, Trouve Faux
TantQue (inf <=sup) ET (not Trouv)
milieu(inf+sup) div 2
Si (x<T[milieu]) alors supmilieu-1
Sinon Si (x>T[milieu]) alors infmilieu+1
Sinon Trouve Vrai
FinSi
FinSi
FinTantQue
Si Trouve alors crire ("x appartient au tableau")
Sinon crire ("x n'appartient pas au tableau")
FinSi
2007/2008 Info2, 1re anne SM/SMI 73
Recherche dichotomique : exemple
Considrons le tableau T :
Si la valeur cherch est 16 alors les indices inf, sup et milieu vont voluer
comme suit :
Si la valeur cherch est 9 alors les indices inf, sup et milieu vont voluer
comme suit :
37 29 27 17 15 12 9 7 3
5 6 4 milieu
5 5 8 8 sup
6 5 5 0 inf
2 1 4 milieu
3 3 8 sup
2 0 0 inf
2007/2008 Info2, 1re anne SM/SMI 74
Recherche dichotomique : complexit
A chaque itration, on divise les indices en 3 intervalles :
[inf, milieu-1]
milieu
[milieu+1, sup]
Cas 1 : milieu-inf (inf+sup)/2 - inf (sup-inf)/2
Cas 3 : sup-milieu sup -(inf+sup)/2 (sup-inf)/2
On passe dons successivement un intervalle dont le nombre
dlments n/2, puis n/4, puis n/8, A la fin on obtient un intervalle
rduit 1 ou 2 lments.
Le nombre dlments la k ime itration est : ()
k-1
n donc 2
k
n soit
k log
2
n
Il y a au plus log
2
n itrations comportant 3 comparaisons chacune.
La recherche dichotomique dans un tableau tri est dordre O(log
2
n)
2007/2008 Info2, 1re anne SM/SMI 75
Tri d'un tableau
Le tri consiste ordonner les lments du tableau
dans lordre croissant ou dcroissant
Il existe plusieurs algorithmes connus pour trier les
lments dun tableau :
Le tri par slection-change
Le tri par insertion
Le tri rapide

Nous verrons dans la suite les trois algorithmes de
tri. Le tri sera effectu dans l'ordre croissant
2007/2008 Info2, 1re anne SM/SMI 76
Tri par slection-change
Principe : Cest daller chercher le plus petit lment du tableau pour le mettre
en premier, puis de repartir du second, daller chercher le plus petit lment
pour le mettre en second etc
Au i-me passage, on slectionne le plus petit lment parmi les positions i..n
et on l'change ensuite avec T[i].
Exemple :
tape 1: on cherche le plus petit parmi les 5 lments du tableau. On lidentifie en
troisime position, et on lchange alors avec llment 1 :
tape 2: on cherche le plus petit lment, mais cette fois partir du deuxime
lment. On le trouve en dernire position, on l'change avec le deuxime:
tape 3:
5 8 2 6 9
5 8 9 6 2
6 8 9 5 2
9 8 6 5 2
2007/2008 Info2, 1re anne SM/SMI 77
Tri par slection-change : algorithme
Supposons que le tableau est not T et sa taille N
Pour i allant de 0 N-2
indice_ppe i
Pour j allant de i + 1 N-1
Si T[j] <T[indice_ppe] alors
indice_ppe j
Finsi
FinPour
temp T[indice_ppe]
T[indice_ppe] T[i]
T[i] temp
FinPour
Fin Fin n n- -2 ! 2 !
Chercher l Chercher l indice du indice du
plus petit plus petit partir de i. partir de i.
Echange, mme si i = Echange, mme si i = indice_ppe indice_ppe. .
2007/2008 Info2, 1re anne SM/SMI 78
Tri par s
Tri par s

lection
lection
-
-

change : complexit
change : complexit

On fait n-1 fois, pour i de 0 n-2 :


Un parcours de [i..n-1].
Il y a donc un nombre de lectures qui vaut :

(n (n- -i) = 0 (n i) = 0 (n
2 2
) )
i=0..n i=0..n- -2 2
Tri en complexit Tri en complexit quadratique. quadratique.
2007/2008 Info2, 1re anne SM/SMI 79
Tri par insertion
Tri par insertion
la ime tape :
Cette mthode de tri insre le ime lment T[i-1] la bonne
place parmi T[0], T[2]T[i-2].
Aprs ltape i, tous les lments entre les positions 0 i-1
sont tris.
Les lments partir de la position i ne sont pas tris.
Pour ins Pour ins rer l rer l l l ment T[i ment T[i- -1] : 1] :
Si T[i-1] T[i-2] : insrer T[i-1] la ime position !
Si T[i-1] <T[i-2] : dplacer T[i-1] vers le dbut du tableau
jusqu la position j i-1 telle que T[i-1] T[j-1] et linsrer en
position j.
2007/2008 Info2, 1re anne SM/SMI 80
Tri par insertion
Tri par insertion
Valeurs Valeurs
0 1 2 3 0 1 2 3 n n- -1 1
Tri Tri es es
i i- -1 1
Plus grand : Plus grand :
ins ins r r en position i ! en position i !
Non tri Non tri es et es et
quelconques quelconques
2007/2008 Info2, 1re anne SM/SMI 81
Tri par insertion
Valeurs Valeurs
0 1 2 3 0 1 2 3 n n- -1 1
Tri Tri es es
i i- -1 1
Non tri Non tri es et es et
quelconques quelconques
Plus petit : Plus petit :
L L ins ins rer rer gauche. gauche.
2007/2008 Info2, 1re anne SM/SMI 82
3 7 1 9 4
Tri par insertion : exemple
tape 1: on commence partir du 2 ime lment du tableau
(lment 4). On cherche linsrer la bonne position par
rapport au sous tableau dj tri (form de llment 9) :
tape 2: on considre llment suivant (1) et on cherche
linsrer dans une bonne position par rapport au sous tableau
tri jusqu ici (form de 4 et 9):
tape 3:
tape 4:
3 7 1 4 9 3 7 1 9 4
3 9 7 4 1
9 7 4 3 1
3 7 9 4 1
2007/2008 Info2, 1re anne SM/SMI 83
Tri par insertion : algorithme
Supposons que le tableau est not T et sa taille N
Pour i allant de 1 N-1
decaler vraie; j i
Tantque ((j >0) et (decaler))
Si T[j] <T[j-1] alors temp T[j]
T[j] T[j-1]
T[j-1] temp
sinon decaler faux
Finsi
jj-1;
FinTantque
FinPour
le premier le premier l l ment est ment est
forc forc ment ment sa place sa place
On On change aussi change aussi
longtemps que cela longtemps que cela
est possible est possible
2007/2008 Info2, 1re anne SM/SMI 84
Tri par insertion : la complexit
Tri par insertion : la complexit

On fait n-1 fois, pour i de 1 n-1 :


Jusqu i changes au maximum (peut-tre moins).
Le nombre dchanges peut donc atteindre :

i = 0 (n i = 0 (n
2 2
) )
i=1..n i=1..n- -1 1
Tri en complexit Tri en complexit quadratique. quadratique.
2007/2008 Info2, 1re anne SM/SMI 85
Tri rapide
Le tri rapide est un tri rcursif bas sur l'approche "diviser pour rgner"
(consiste dcomposer un problme d'une taille donne des sous
problmes similaires mais de taille infrieure faciles rsoudre)
Description du tri rapide :
1) on considre un lment du tableau qu'on appelle pivot
2) on partitionne le tableau en 2 sous tableaux : les lments
infrieurs ou gaux au pivot et les lments suprieurs au pivot. on
peut placer ainsi la valeur du pivot sa place dfinitive entre les
deux sous tableaux
3) on rpte rcursivement ce partitionnement sur chacun des
sous tableaux cres jusqu' ce qu'ils soient rduits un seul
lment
2007/2008 Info2, 1re anne SM/SMI 86
Procdure Tri rapide
Procdure TriRapide(tableau T : rel par adresse, p, r: entier par
valeur)
variable q: entier
Si p <r alors
Partition(T,p,r,q)
TriRapide(T,p,q-1)
TriRapide(T,q+1,r)
FinSi
Fin Procdure
A chaque tape de rcursivit on partitionne un tableau T[p..r] en deux sous
tableaux T[p..q-1] et T[q+1..r] tel que chaque lment de T[p..q-1] soit
infrieur ou gal chaque lment de A[q+1..r]. L'indice q est calcul
pendant la procdure de partitionnement
2007/2008 Info2, 1re anne SM/SMI 87
Procdure de partition
Procdure Partition(tableau T :rel par adresse, p, r: entier par valeur,
q: entier par adresse )
Variables i, j: entier
pivot: rel
pivotT[p], ip+1, j r
TantQue (i<=j)
TantQue (i<=r et T[i] <=pivot) i i+1 FinTantQue
TantQue (j>=p et T[j] >pivot ) j j-1 FinTantQue
Si i <j alors
Echanger(T[i], T[j]), i i+1, j j-1
FinSi
FinTantQue
Echanger(T[j], T[p])
q j
Fin Procdure
2007/2008 Info2, 1re anne SM/SMI 88
Tri rapide : la complexit
Tri rapide : la complexit

Le tri rapide a une complexit moyenne dordre O(n log


2
n).
Dans le pire des cas, le tri rapide reste dordre O(n
2
)
Le choix du pivot influence largement les performances du tri
rapide
Le pire des cas correspond au cas o le pivot est chaque choix
le plus petit lment du tableau (tableau dj tri)
diffrentes versions du tri rapide sont proposs dans la littrature
pour rendre le pire des cas le plus improbable possible, ce qui
rend cette mthode la plus rapide en moyenne parmi toutes celles
utilises
2007/2008 Info2, 1re anne SM/SMI 89
Tri : Analyse de complexit
Tri insertion ou Tri
slection sont dordre
O(N
2
)
Si N=10
6
alors N
2
= 10
12
Et si on peut effectuer 10
6
oprations par seconde
alors lalgorithme exige
11,5 jours
Tri rapide est dordre
O(Nlog
2
N)
Si N=10
6
alors Nlog
2
N= 6N
Et si on peut effectuer 10
6
oprations par seconde
alors lalgorithme exige 6
secondes
2007/2008 Info2, 1re anne SM/SMI 90
Enregistrements
Les langages de programmation offrent, en plus des types de base
(entier, rel, boolen), dautres types de donnes appels
enregistrements.
Un enregistrement est un regroupement de donnes qui doivent tre
considrs ensemble.
Exemple: les fiches dtudiants. Chaque fiche est caractrise par :
un nom et prnom, numro dinscription, ensemble de notes
En pseudo-code : enregistrement FicheEtudiant
Debut nom, prenom : chaine de caractres
numero : entier
tableau notes[10] : rel
Fin
2007/2008 Info2, 1re anne SM/SMI 91
Enregistrements
Un enregistrement est un type comme les autres types.
Ainsi la dclaration suivante :
f, g : FicheEtudiant
dfinit deux variables f et g enregistrements de type FicheEtudiant
Lenregistrement FicheEtudiant contient plusieurs parties (champs), on
y accde par leur nom prcd dun point "." :
f.nom dsigne le champ (de type chaine) nom de la fiche f
f.notes[i] dsigne le champ (de type rel) notes[i] de la fiche f
Pour dfinir les champs dun enregistrement, on crit :
f: FicheEtudiant
f.nom "XXXXX" f.prenom "YYYYY" f.numero 1256
f.notes[2] 12.5
Les affectations entre enregistrement se font champ par champ
2007/2008 Info2, 1re anne SM/SMI 92
Utilisation des enregistrements
Procedure affiche(FicheEtudiant v)
debut
crire("No:",v.numero, "-",v.prenom)
Pour i allant de 0 v.notes.taille() faire
crire(v.notes[i], " ")
FinPour
finProcedure
Enregistrement Complexe
Debut re : rel
im: rel
Fin
2007/2008 Info2, 1re anne SM/SMI 93
Enregistrements : exemple
Fonction add( z1, z2 :Complexe par valeur) : Complexe
Debut Variable z: Complexe
z.re=z1.re+z2.re
z.im=z1.im+z2.im
retourne(z)
FinFonction
Programme principale
Variables u, v, w: Complexe
a, b, c, d : rel
Debut ecrire("Entrez 4 valeurs relles :")
lire(a,b,c,d)
u.re a u.im b v.re c v.im d
ww add(u,v)
ecrire("Somme( ,) = :", w.re,w.im)
Fin
2007/2008 Info2, 1re anne SM/SMI 94
Structures en C
Dclaration :
struct personne {
char nom[20];
char prenom[20];
int no_employe;
}
Ce type de structure est utilis pour dclarer des variables de la
manire suivante : struct personne p1, p2;
Accs aux membres : p1.nom="XAAA";p2.no_employe=20;
Initialisation : struct personne p={"AAAA", "BBBB", 5644};
Tableau de structure : struct personne T[100];

S-ar putea să vă placă și