Académique Documents
Professionnel Documents
Culture Documents
Objectif:
Plan:
2007/2008
programmation, )
fonctions, procdures, )
Informatique?
2007/2008
Priphriques
2007/2008
2007/2008
temps processeur, )
Langages informatiques
2007/2008
Langage machine
8
Une combinaison de 8 bits= 1 Octet 2 256 possibilits qui permettent
de coder tous les caractres alphabtiques, numriques, et symboles tels que ?,*,&,
Le code ASCII (American Standard Code for Information Interchange) donne les
2007/2008
L'assembleur
traducteur
LOAD B
langage machine
MOV A, OUT
2007/2008
Compilateur ou
en langage volu
interprteur
2007/2008
Langage machine
Compilateur/interprteur
exemple.c
Compilateur
fichier source
exemple
excution
fichier excutable
exemple.bas
fichier source
2007/2008
Interprtation+excution
10
Langages de programmation:
Exemples de langages:
2007/2008
Langages procduraux
Langages orients objets
11
12
Algorithmique
Al-
2007/2008
13
2007/2008
14
Algorithmique
2007/2008
15
Notion de variable
2007/2008
un nom (Identificateur)
Identificateur
un type (entier, rel, caractre, chane de caractres, )
Module I2, 1re anne S
16
exemple invalide: 1A
2007/2008
17
2007/2008
18
2007/2008
19
Variables
Exemple:
Variables
i, j,k : entier
x, y : rel
OK: boolen
ch1, ch2 : chane de caractres
2007/2008
20
Linstruction daffectation
(a
Ex valides: i 1
j i
x 10.3
OK FAUX
ch2 ch1 x 4
x j
k i+j
ch1 "SMI"
2007/2008
OK "SMI"
j x
21
Quelques remarques
2007/2008
22
23
24
2007/2008
25
Expressions et oprateurs
Une expression peut tre une valeur, une variable ou une opration constitue
de variables relies par des oprateurs
exemples: 1, b, a*2, a+ 3*b-c,
2007/2008
26
^ : (lvation la puissance)
* , / (multiplication, division)
% (modulo)
+ , - (addition, soustraction)
exemple:
2+3*7
vaut 23
2007/2008
(2 + 3) * 7 vaut 35
3
27
2007/2008
28
2007/2008
29
Algorithme Calcul_double
variables A, B : entier
Dbut
crire("entrer le nombre ")
lire(A)
B 2*A
crire("le double de ", A, "est :", B)
Fin
2007/2008
30
2007/2008
31
2007/2008
32
La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que
la condition est fausse, aucun traitement n'est ralis
2007/2008
33
Exemple (SiAlorsSinon)
Algorithme AffichageValeurAbsolue (version1)
Variable x : rel
Dbut
Ecrire (" Entrez un rel : )
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
2007/2008
34
Exemple (SiAlors)
Algorithme AffichageValeurAbsolue (version2)
Variable x,y : rel
Dbut
Ecrire (" Entrez un rel : )
Lire (x)
y x
Si (x < 0) alors
y -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
2007/2008
35
Exercice (tests)
Ecrire un algorithme qui demande un nombre entier l'utilisateur,
puis qui teste et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Dbut
Ecrire " Entrez un entier : "
Lire (n)
Si (n%3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
2007/2008
36
Conditions composes
Exemples :
x compris entre 2 et 6 : (x > 2) ET (x < 6)
2007/2008
37
Tables de vrit
C1
C2
C1 ET C2
C1
C2
C1 OU C2
VRAI
VRAI
VRAI
VRAI
VRAI
VRAI
VRAI
FAUX
FAUX
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
FAUX
VRAI
VRAI
FAUX
FAUX
FAUX
FAUX
FAUX
FAUX
C1
C2
C1 XOR C2
C1
NON C1
VRAI
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
VRAI
FAUX
VRAI
VRAI
FAUX
FAUX
FAUX
2007/2008
38
Tests imbriqus
2007/2008
39
40
2007/2008
41
2007/2008
42
2007/2008
43
Les boucles tant que : on y rpte des instructions tant qu'une certaine
condition est ralise
2007/2008
44
(condition)
instructions
FinTantQue
2007/2008
45
2007/2008
46
47
48
49
Vrai
instructions
i i + pas
Faux
2007/2008
50
Compteur est une variable de type entier (ou caractre). Elle doit tre
dclare
Pas est un entier qui peut tre positif ou ngatif. Pas peut ne pas tre
mentionn, car par dfaut sa valeur est gal 1. Dans ce cas, le
nombre d'itrations est gal finale - initiale+ 1
2007/2008
51
2)
a)
Si la valeur du compteur est > la valeur finale dans le cas d'un pas
positif (ou si compteur est < finale pour un pas ngatif), on sort de la
boucle et on continue avec l'instruction qui suit FinPour
b)
Si compteur est <= finale dans le cas d'un pas positif (ou si compteur
est >= finale pour un pas ngatif), instructions seront excutes
2007/2008
i.
ii.
52
2007/2008
53
54
2007/2008
55
2007/2008
compteur initiale
TantQue compteur <= finale
instructions
compteur compteur+pas
FinTantQue
56
2007/2008
57
Boucles imbriques
Exemple:
Pour i allant de 1 5
Pour j allant de 1 i
crire("O")
FinPour
crire("X")
FinPour
2007/2008
Excution
OX
OOX
OOOX
OOOOX
OOOOOX
58
Rpter
instructions
Jusqu'
instructions
condition
condition
Faux
Vrai
les instructions entre Rpter et jusqu sont excutes au moins une fois et
leur excution est rpte jusqu ce que condition soit vrai (tant qu'elle est
fausse)
2007/2008
59
60
2007/2008
61
MAPLE
Prsentation gnrale et
syntaxe des instructions de
base
2007/2008
62
Maple
> int(1-x+x^3,x);
> taylor(sin(x),x=0,6);
x2 x4
x
2
4
x3 x5
x
O(x 6 )
6 120
Calcul numrique : calcul sur des valeurs (avec une grande prcision)
> 30!;
265252859812191058636308480000000
> evalf(sqrt(2),50);
1.414213562373095048801688
7242096980785696718753769
2007/2008
63
2007/2008
64
Maple : Gnralits
2007/2008
65
2007/2008
66
Maple : l'affectation
2007/2008
67
print(var
print( ) permet d'afficher la valeur de la variable var (c'est l'quivalent de
crire en pseudo code). Si var n'a pas de valeur, Maple affiche le nom de la
variable
print(`chaine
`) permet d'afficher la chane de caractres qui est entre ` `
print(`
a vaut ,1 et b vaut, 2
Syntaxe: var:=readstat(`texte`)
Maple affiche le texte entre ` ` et
readstat
attend qu'on entre une valeur au clavier qui doit tre suivie de ; ou :
2007/2008
68
Traduction en Maple
Si
if
condition
instructions
alors
Finsi
Si
condition
instructions 1
Sinon
instructions2
Finsi
2007/2008
condition
instructions
then
fi;
alors
if
condition
instructions1
else
instructions2
fi;
then
69
Traduction en Maple
TantQue condition
instructions
while
condition
instructions
FinTantQue
od;
od
for i from v1 to v2 by p do
instructions
od;
2007/2008
do
70
ALGORITHMIQUE
Fonctions et procdures
2007/2008
71
Fonctions et procdures
2007/2008
72
Fonctions
Pour le choix d'un nom de fonction il faut respecter les mmes rgles que celles
pour les noms de variables
type_fonction est le type du rsultat retourn
L'instruction retourne sert retourner la valeur du rsultat
2007/2008
73
Fonctions : exemples
2007/2008
74
Exepmle :
2007/2008
Algorithme exepmleAppelFonction
variables z : rel, b : boolen
Dbut
b Pair(3)
z 5*SommeCarre(7,2)+1
crire("SommeCarre(3,5)= ", SommeCarre(3,5))
Fin
75
Procdures
Dans certains cas, on peut avoir besoin de rpter une tache dans plusieurs
endroits du programme, mais que dans cette tache on ne calcule pas de
rsultats ou qu'on calcule plusieurs rsultats la fois
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procdure
2007/2008
76
FinProcdure
Algorithme exepmleAppelProcdure
Dbut
exemple_proc ()
Fin
2007/2008
77
2007/2008
78
Remarque : le paramtre effectif doit tre une variable (et non une valeur)
lorsqu'il s'agit d'une transmission par adresse
2007/2008
79
2007/2008
80
2007/2008
81
2007/2008
82
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
83
2007/2008
84
Les paramtres, les variables locales et globales sont facultatifs, ils peuvent
ne pas figurer dans la dclaration
Une procdure Maple peut rendre un seul rsultat (comme une fonction),
plusieurs rsultats ou aucun rsultat
2007/2008
85
En Maple, une procdure peut tre appele sans tre affecte. Elle
peut aussi tre affecte une variable
> carre(1,2);
> a:=carre(3,3);
2007/2008
5
a := 18
Module I2, 1re anne S
86
11, -3, 28
2007/2008
87
2007/2008
88
Rcursivit
Tout module rcursif doit possder un cas limite (cas trivial) qui
arrte la rcursivit
2007/2008
89
2007/2008
90
2007/2008
91
Une procdure rcursive qui permet d'afficher la valeur binaire d'un entier n
2007/2008
92
ALGORITHMIQUE
Les tableaux
2007/2008
93
Exemple introductif
Supposons qu'on veut conserver les notes d'une classe de 30 tudiants pour
extraire quelques informations. Par exemple : calcul du nombre d'tudiants
ayant une note suprieure 10
nbre 0
Si (N1 >10) alors nbre nbre+1 FinSi
.
Si (N30>10) alors nbre nbre+1 FinSi
c'est lourd crire
Heureusement, les langages de programmation offrent la possibilit de
rassembler toutes ces variables dans une seule structure de donne
appele tableau
2007/2008
94
Tableaux
En pseudo code :
2007/2008
95
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 adopter en pseudo-code). Dans ce cas,
notes[i] dsigne l'lment i+1 du tableau notes
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
2007/2008
96
i ,nbre : entier
tableau notes[30] : rel
Dbut
nbre 0
Pour i allant de 0 29
Si (notes[i] >10) alors
nbre nbre+1
FinSi
FinPour
crire ("le nombre de notes suprieures 10 est : ", nbre)
Fin
2007/2008
97
2007/2008
98
2007/2008
99
2007/2008
100
> A:=array(1..4,[5,8,1,7]);
Pour afficher tous les lments d'un tableau, il suffit d'utiliser la commande
print > print(T);
[1, 3, 5]
2007/2008
101
2007/2008
rsultat : 21/4
102
2007/2008
103
2007/2008
104
2007/2008
105
2007/2008
106
Algorithme Matrices
variables tableau M1[3][4],M2 [3][4],M3 [3][4] : rel
Dbut
SaisieMatrice(3, 4, M1)
SaisieMatrice(3, 4, M2)
AfficheMatrice(3,4, M1)
AfficheMatrice(3,4, M2)
SommeMatrice(3, 4, M1,M2,M3)
AfficheMatrice(3,4, M3)
Fin
2007/2008
107
Pour dfinir une matrice en Maple, on peut utiliser le type array ou le type
matrix comme suit :
2007/2008
108
Recherche squentielle
Recherche dichotomique
2007/2008
109
Recherche squentielle
i0 , Trouv Faux
TantQue (i < N) ET (Trouv=Faux)
Si (T[i]=x) alors
Trouv Vrai
Sinon
ii+1
FinSi
FinTantQue
Si Trouv alors
// c'est quivalent crire Si Trouv=Vrai alors
crire ("x appartient au tableau")
Sinon
crire ("x n'appartient pas au tableau")
FinSi
2007/2008
110
Une fonction Recherche qui retourne un boolen pour indiquer si une valeur
x appartient un tableau T de dimension N.
x , N et T sont des paramtres de la fonction
111
2007/2008
112
Le pire des cas pour cet algorithme correspond au cas o x n'est pas dans
le tableau T
2007/2008
103
106
109
temps
1ms
1s
16mn40s
113
Recherche dichotomique
2007/2008
114
2007/2008
115
Exemple d'excution
Considrons le tableau T :
Si la valeur cherch est 20 alors les indices inf, sup et milieu vont voluer
comme suit :
10 15 17 18 24 27 30
inf
sup
milieu
Si la valeur cherch est 10 alors les indices inf, sup et milieu vont voluer
comme suit :
2007/2008
inf
sup
milieu
116
2007/2008
117
2007/2008
118
9
4
1
7
3
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 :
1
2007/2008
tape 3:
9
119
120
On effectue N-1 tests pour trouver le premier lment du tableau tri, N-2
tests pour le deuxime, et ainsi de suite. Soit : (N-1)+(N-2)++1 = N(N-1)/2
On effectue en plus (N-1) changes.
2007/2008
103
106
109
temps
1s
11,5 jours
32000 ans
121
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)
2007/2008
122
123
Procdure de partition
Procdure Partition(tableau T : rel par adresse, p,r:
p,r entier par valeur,
q: entier
par adresse )
Variables i, j: entier
pivot: rel
pivot T[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])
qj
Fin Procdure
2007/2008
124
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
125