STAGEALGOpart1_29/10/2009 - Icosaweb

publicité
ALGORITHMIQUE
STAGE
LA REUNION
Isabelle ABOU
1
INTRODUCTION
• CONTENU DU STAGE:
• Apporter aux enseignants un premier
éclairage sur la notion d’algorithme.
• OBJECTIFS PEDAGOGIQUES:
• Rendre les enseignants à même d’intégrer
l’algorithmique dans la gestion du nouveau
programme de Seconde.
Isabelle ABOU
2
POURQUOI L’ALGORITHMIQUE?
• Une réflexion a été menée sur l’enseignement des
mathématiques aujourd’hui, qui a notamment abouti à
l’introduction de l’algorithmique en Seconde.
• - Tout d’abord, les mathématiques fondamentales ont
permis l’émergence des mathématiques « appliquées »
qui elles-mêmes ont profondément modifié la pratique
des chercheurs (par le biais du calcul automatisé).
• - Ensuite, nous baignons dans un univers technologique
sous-tendu par la présence d’algorithmes.
• - Enfin, au niveau purement pédagogique,
l’algorithmique permet de travailler la logique.
Il a donc semblé nécessaire de faire prendre conscience
aux élèves de leur utilisation permanente dans la vie
courante.
Isabelle ABOU
3
INTENTIONS
• Il n’est nullement question, de transformer les enseignants de
mathématiques en ingénieurs programmeurs ayant une
connaissance exhaustive des langages de programmation, ni de
faire uniquement de la programmation aux élèves.
• La mise en œuvre d’algorithmes est supposée être une des diverses
activités mathématiques de l’élève.
• L’enjeu est de rendre cette activité ‘naturelle’ pendant le cours de
mathématiques quand elle est appropriée au type de problème
posé.
• Le présent travail tente de permettre aux enseignants de pouvoir
aborder plus facilement la notion d’algorithmique pour l’intégrer à la
gestion du nouveau programme de Seconde.
Isabelle ABOU
4
DE L’ALGORITHME AU
PROGRAMME
• Le fait que l’on passe de l’écriture de l’algorithme à l’écriture du
programme permet de vérifier concrètement que l’algorithme
fonctionne, et surtout de l’utiliser pour résoudre le problème posé.
• En effet, l’introduction de l’algorithmique devrait apparaître lors de la
résolution de problèmes pour lesquels les démarches habituelles
sont malcommodes ou peu performantes: par exemple dans le cas
de répétition d’une tâche, ou dans le cas d’un traitement trop long
pour être envisagé « à la main ».
• On peut donner comme exemples justificatifs, la recherche du pgcd
de très grands nombres, le tri d’un grand nombre de valeurs
numériques, les simulations sur des échantillons de grandes
tailles…
Isabelle ABOU
5
PLAN DE L’EXPOSE
• I. L’ALGORITHMIQUE
• II. L’ALGORITHMIQUE AU LYCEE
• III. LE LOGICIEL ALGOBOX
• IV. ACTIVITES ALGORITHMIQUES
Isabelle ABOU
6
PARTIE 1:
L’ALGORITHMIQUE
Isabelle ABOU
7
GENERALITES
SUR
L’ALGORITHMIQUE
Isabelle ABOU
8
QU’EST-CE QU’UN
ALGORITHME?
•
Le mot « algorithme » vient du nom de l’auteur persan
Al-Khuwarizmi (né vers 780 - mort vers 850) qui a écrit en langue arabe le
plus ancien traité d’algèbre « abrégé de calcul par la complétion et la
simplification » dans lequel il décrivait des procédés de calcul à suivre
étape par étape pour résoudre des problèmes ramenés à des équations.
•
•
•
•
•
•
But d’un algorithme :
résolution d’un problème algébrique, numérique ou décisionnel.
Algorithme :
suite d’instructions qui, une fois exécutée, conduit à un résultat.
Intérêt :
explicite clairement les idées de solutions d'un problème indépendamment
d'un langage de programmation.
•
Le programme sert ensuite à automatiser un calcul.
Isabelle ABOU
9
PHILOSOPHIE GENERALE
• Suivre le paradigme du « diviser pour
régner ».
• Être méthodique et rigoureux dans
l’analyse puis la résolution du problème.
• Manier la structure logique propre au
langage de programmation.
• Faire des vérifications de contrôle
systématiques.
Isabelle ABOU
10
PROPRIETES ESSENTIELLES
D’UN BON ALGORITHME
• Lisibilité : respecter l’indentation
• Correction ou justesse
• Faible complexité, en temps et/ou en
espace.
Isabelle ABOU
11
COMPLEXITE D’UN
ALGORITHME
• En temps : nombre d’instructions élémentaires,
nécessaires à sa réalisation
• En espace : nombre d’octets utilisés,
nécessaires à sa réalisation
• La complexité est « complexe » à calculer. Elle
doit être au pire polynomiale de degré inférieur
ou égal à 4.
• Le calcul de la complexité d’un algorithme ne
sera pas abordé ici.
Isabelle ABOU
12
PROBLEME FONDAMENTAL:
TERMINAISON D’UN
ALGORITHME
• Théorème:
Il n’existe pas de méthode universelle pour
décider si un algorithme termine.
• Autrement dit:
Il n’y aucun algorithme résolvant le problème:
• Entrée: Un algorithme A
• Sortie: Le booléen indiquant si A termine ou non
Isabelle ABOU
13
CONTENU D’UN
ALGORITHME
Isabelle ABOU
14
ECRITURE
Les algorithmes présentés ici sont écrits en :
- Langage naturel
- Pseudo-code, proche du langage naturel.
Les programmes présentés ici sont écrits avec le
Logiciel ALGOBOX.
Les programmes extraits des textes officiels
peuvent être écrits dans d’autres langages.
Isabelle ABOU
15
STRUCTURE D’UN ALGORITHME
• DECLARATION des variables
• ENTREE, avec éventuellement
initialisation des variables
• TRAITEMENT, dont on décrit la
procédure, c'est le corps de l’algorithme
• SORTIE, avec un affichage de ce que l’on
souhaite.
Isabelle ABOU
16
INSTRUCTIONS
• Ce sont les 4 catégories d’ordres utilisées
en programmation:
• AFFECTATION de variables
• ENTREE / SORTIE ou Lecture / Ecriture
• TESTS
• BOUCLES
Isabelle ABOU
17
LES VARIABLES
• Elles servent à stocker des informations.
• DECLARATION de variable:
la machine réserve la place mémoire
nécessaire à cette variable.
Variable n, i en Entier
Isabelle ABOU
18
3 TYPES DE VARIABLES
• Type numérique : type entier, réel,…, et
aussi, type monétaire, type date.
• Type alphanumérique: type caractère, et
type chaîne, séquence de caractères
classés dans l’ordre lexicographique.
En pseudo-code, une chaîne de
caractères est notée entre guillemets.
• Type booléen: on y stocke uniquement les
valeurs logiques Vrai et Faux.
Isabelle ABOU
19
TABLEAU ou VARIABLE INDICEE
•
•
•
•
•
Tableau:
Désigne une suite finie d’éléments de même type au moyen d’une unique variable.
En dimension 1, on peut l’appeler liste.
En général, on commence l’indexation à 0.
Déclaration: Tableau Cases(7, 7) en Numérique.
•
•
•
•
Tableaux dynamiques:
Il arrive que l’on ne connaisse pas à l’avance le nombre d’éléments du tableau.
On a la possibilité de déclarer un tableau sans préciser au départ son nombre d’éléments.
On pourra fixer ce nombre dans un second temps via une instruction de redimensionnement :
Redim.
Ces tableaux s’appellent des tableaux dynamiques.
Tant qu’on n’a pas précisé son nombre d’éléments, le tableau est inutilisable.
Exemple :Pour le calcul d’une moyenne, si on ne connaît pas le nombre de notes à saisir,
Tableau Note() en Numérique
Variable nb en Numérique
Début
Ecrire ‘’Combien y a-t-il de notes à saisir ?’’
Lire nb
Redim Note(nb-1)
•
•
•
•
•
•
•
•
•
Isabelle ABOU
20
AFFECTATION
• Le programme attribue à la variable une
valeur, ou une expression.
• Une expression est un ensemble de
valeurs reliées par des opérateurs
logiques et équivalente à une seule valeur.
• Instruction :
Affecter (ou Donner) à A la valeur 3x+5,
ou, A  3x+5 .
Isabelle ABOU
21
ENTREES ET SORTIES
• ENTREES :
Instruction Lire ou Saisir : la machine lit
ce qui est tapé à l’écran.
• SORTIES :
Instruction Ecrire ou Afficher : la machine
écrit le résultat à l’écran.
Isabelle ABOU
22
TRAITEMENT
• 3 types de traitements pouvant être
imbriqués les uns dans les autres:
• TRAITEMENT SEQUENTIEL
• TRAITEMENT CONDITIONNEL
• TRAITEMENT ITERATIF
Isabelle ABOU
23
TRAITEMENT SEQUENTIEL
• Les instructions y sont exécutées les unes
après les autres par ordre d’apparition.
• Faire :
instruction 1;
instruction 2;
... ;
instruction n.
Isabelle ABOU
24
•
•
•
•
•
•
•
•
•
•
•
EXEMPLE: VALEUR D’UNE
FONCTION DE 2 VARIABLES EN
UN POINT
Déclaration
Variable x, y, E, en Réel
Entrée
Ecrire «Entrer la valeur de x »
Lire x
Ecrire «Entrer la valeur de y »
Lire y
Traitement
Affecter à E la valeur 3x+2y²-5
Sortie
Ecrire « La valeur de f(x;y)=3x+2y²-5 est:», E
Isabelle ABOU
25
TRAITEMENT CONDITIONNEL:
LES TESTS
• Pour représenter une alternative ou une
instruction conditionnelle, on utilise un test.
Forme classique:
• SI condition ALORS
Instructions 1
• SINON
Instructions 2
• FINSI
Isabelle ABOU
Forme simplifiée:
SI condition ALORS
Instructions
FINSI
26
CONDITIONS et TESTS
• Une condition est basée sur une
comparaison.
• Opérateurs: =, <>,<,>,<=,>=.
• Conditions composés:
• 5<x<8 correspond à 5<x ET x<8
• Pour connaître la valeur de vérité d’une
condition composée, on utilise les tables
de vérité issues de la logique.
Isabelle ABOU
27
THEOREME: TRANSFORMATION
DE MORGAN
• Toute condition composée faisant intervenir
l’opérateur ET, peut être exprimée de manière
équivalente avec un opérateur OU, et
réciproquement:
Si A ET B Alors Equivaut à
Instructions 1
Sinon
Instructions 2
Finsi
Si NON A OU NON B Alors
Instructions 2
Sinon
Instructions 1
Finsi
Isabelle ABOU
28
EXEMPLE DE TESTS IMBRIQUES:
AFFICHAGE RESULTAT EXAMEN
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Déclaration
Variable Moy en Réel
Entrée
Ecrire ‘’Entrer la moyenne de l’élève ‘’
Lire Moy
Traitement et Sortie
Si Moy > 10 Alors
Ecrire ‘’Admis’’
Sinon
Si Moy < 9 Alors
Ecrire ‘’Refusé’’
Sinon
Ecrire ‘’Rattrapage’’
Finsi
Finsi
Isabelle ABOU
29
TRAITEMENT ITERATIF :
LES BOUCLES
• Il y en a de 2 types:
• ITERATIONS INCONDITIONNELLES
• ITERATIONS CONDITIONNELLES
Isabelle ABOU
30
ITERATIONS
INCONDITIONNELLES
• Boucle « Pour…Suivant » :
• Série d’instructions exécutée en boucle
d’une valeur initiale de la variable entière,
appelée itérateur, à une valeur finale
(incrémentation de 1 implicite).
• Pour Variable K de val initiale à val finale
Instructions
• K Suivant
Isabelle ABOU
31
EXEMPLE: SOMME DES CARRES
DES n PREMIERS ENTIERS
•
•
•
•
•
•
•
•
•
•
•
•
Déclaration
Variable n, S, i en Entier
Entrée
Ecrire « Entrer la valeur de n »
Lire n
Affecter à S la valeur 0
Traitement
Pour i de 1 à n
Affecter à S la valeur S + i²
i Suivant
Sortie
Ecrire « La somme des carrés de n premiers entiers est: », S
Isabelle ABOU
32
ITERATIONS CONDITIONNELLES
• Boucle « Tant que »:
Série d’instructions exécutée en boucle
tant qu'une condition donnée reste
remplie.
• TantQue condition …
Instructions
• FinTantQue
Isabelle ABOU
33
EXEMPLE:CONTRÔLE DE SAISIE
•
•
•
•
•
•
•
•
•
•
•
Déclaration
Variable Rep en Caractère
Entrée
Ecrire « Voulez-vous un café? »
Lire Rep
Traitement
TantQue Rep <> « O » ET Rep <> « N »
Lire Rep
FinTantQue
Sortie
Ecrire « saisie acceptée »
Isabelle ABOU
34
REMARQUE: « Pour…Suivant »
cas particulier de « TantQue »
• Quand le programmeur connaît le nombre d’itérations à l’avance, il
utilise la boucle « Pour…Suivant » plutôt que la boucle « TantQue ».
• Pour Truc de 1 à 15
•
Instructions
• Truc Suivant
• Equivaut à
• Affecter à Truc la valeur 0
• TantQue Truc <15
•
Affecter à Truc la valeur Truc+1
•
Instructions
• FintantQue
Isabelle ABOU
35
FONCTIONS PREDEFINIES
•
•
•
•
Les fonctions numériques:
Sinus, Cos,…,
Ent: donne la partie entière d’un nombre,
Mod ou Reste: donne le reste de la
division euclidienne de 2 entiers,
• Alea: fournit un nombre aléatoire
supérieur ou égal à 0 et strictement
inférieur à 1.
Isabelle ABOU
36
FONCTIONS PREDEFINIES
(suite)
• Les fonctions texte
• Len(chaîne): donne le nombre de
caractères de la chaîne
• Et bien d’autres…
• Les fonctions de conversion entre chaînes
de caractères et variables numériques, et
inversement.
Isabelle ABOU
37
POUR ALLER PLUS
LOIN
Isabelle ABOU
38
LES ALGORITHMES DE TRI
• De nombreuses méthodes existent pour trier les
éléments d’une liste, par exemple pour les classer dans
l’ordre croissant.
• Parmi les tris « élémentaires »:
• Le tri par sélection:
• Aller chercher le plus petit élément du vecteur (à n
éléments) pour le mettre en premier, puis repartir du
second élément, et aller chercher le plus petit élément
du vecteur (à n-1 éléments) pour le mettre en second, et
ainsi de suite.
• La complexité du tri par sélection est en O(n2) dans tous
les cas, le nombre d'exécutions de la boucle interne
étant n(n-1)/2.
Isabelle ABOU
39
EXEMPLE:
COMPARAISONS ET ECHANGES
Vecteur à
trier
45
échange
45
vecteur
3
échange
vecteur
3
122
12
3
21
3
122
12
122
12
12
122
échange
45
21
45
21
122
21
vecteur
3
12
21
45
122
Aucun
échange
Vect trié
3
12
21
45
122
Isabelle ABOU
40
LE TRI PAR SELECTION
• STRUCTURE DE L’ALGORITHME
• Boucle principale:
• Prendre comme point de départ le 1ier élément,
puis le 2ième, jusqu’à l’avant dernier.
• Boucle secondaire:
• A partir du point de départ mouvant, rechercher
jusqu’à la fin du tableau quel est le plus petit
élément. Une fois trouvé l’échanger avec le point
de départ.
Isabelle ABOU
41
ALGORITHME EXPLIQUE
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
On considère un vect[0;N]
Boucle principale : le point de départ se décale à chaque tour.
Pour i de 0 à N-1
On considère provisoirement que t(i) est le plus petit élément
Affecter à Posmini la valeur i
On examine tous les éléments suivants
Pour j de i + 1 à N
Si t(j) < t(Postmini) Alors
Affecter à Posmini la valeur j
Finsi
j Suivant
A cet endroit, on sait maintenant où est le plus petit élément, on fait la permutation.
Affecter à Temp la valeur t(Posmini)
Affecter à t(Posmini) la valeur t(i)
Affecter à t(i) la valeur Temp
On a placé correctement l’élément numéro i, on passe au suivant.
i Suivant
•
animation tri sélection
Isabelle ABOU
42
D’AUTRES METHODES DE TRI
• Le tri à bulles:
• Son principe consiste à comparer deux à deux les éléments ei et
ei+1 d’un tableau et à effectuer une permutation si ei > ei+1.
• On continue à trier jusqu’à ce qu’il n’y ait plus de permutation.
• La complexité dans le pire des cas du tri bulle est en O(n2).
• Animation
• Le tri fusion (tri avancé)
• On divise en deux moitiés la liste à trier (en prenant par exemple un
élément sur deux pour chacune des listes).
• On trie chacune d’entre elles
• On fusionne les deux moitiés obtenues pour reconstituer la liste
triée.
• La complexité dans le pire des cas du tri fusion est en log2(n).
Isabelle ABOU
43
EXEMPLE
1 liste à
trier
16
13
5
12
19
2
2 listes
(16
5
19)
(13
12
2)
4 listes
(16
19)
(5)
(13
2)
(12)
6 listes
(16)
(19)
(5)
(13)
(2)
(12)
4 listes
triées
(16
19)
(5)
(2
13)
(12)
2 listes
triées
(5
16
19)
(2
12
13)
1 liste
triée
2
5
12
13
16
19
Animation
Isabelle ABOU
44
LES FICHIERS
• Ils servent à stocker des informations de
manière permanente entre deux
exécutions de programme.
• Les problèmes inhérents aux fichiers ne
seront pas traités ici:
• Types de fichiers
• Types d’accès
• Organisation
Isabelle ABOU
45
PROCEDURES ET FONCTIONS
• L’analyse fonctionnelle consiste à découper un
problème en sous problèmes plus simples.
• Les sous-procédures et les fonctions sont des
sous-programmes indépendants qui permettent
de résoudre une partie du problème, et qui sont
intégrés au programme principal.
• Une fonction est une sous-procédure particulière
qui renvoie une valeur en sortie.
Isabelle ABOU
46
FONCTION
• L'entête d'une fonction spécifie son nom, le type de son
résultat, et les paramètres (avec leurs types).
• Ces paramètres sont considérés comme les données
transmises à la fonction, c'est à dire l'entrée de la fonction.
• Il peut arriver que la fonction modifie les paramètres lors de
l'exécution de son algorithme.
• On parle alors de paramètre modifiable : il s'agit à la fois
d'une entrée et d'une sortie de l'algorithme.
• La déclaration d'un tel paramètre dans la liste des
paramètres se fait, en pseudo-code de la manière suivante :
• fonction nom(nom_param InOut type_param):type_résultat
Isabelle ABOU
47
PROGRAMME FAISANT
INTERVENIR UNE FONCTION
•
Décrire un algorithme qui calcule le maximum de 4 réels saisis au clavier. Le calcul du maximum
de deux valeurs sera décrit par une fonction.
•
•
•
•
•
•
•
•
fonction calculerMax2Réels(x : réel, y : réel):réel
début
si x > y
alors res <- x
sinon res <- y
finsi
retourne res
fin
•
•
•
•
•
•
•
•
•
Algorithme
début
maximum <- lire()
pour i de 2 à 4 faire
nombre <- lire()
maximum <- calculerMax2Réels(nombre, maximum)
finpour
écrire(maximum)
fin
Isabelle ABOU
48
LA PROGRAMMATION
RECURSIVE
• Elle consiste à créer des sous-programmes qui
s’appellent eux-mêmes.
• Exemple: calcul de factorielle n: n!
•
•
•
•
•
•
•
Fonction Fact ( n en Numérique)
Si n=0 Alors
Renvoyer 1
Sinon
Renvoyer Fact(n-1) * n
Finsi
Fin Fonction
Isabelle ABOU
49
THEOREME FONDAMENTAL
• Tout problème formulé en termes
récursifs peut l’être en termes itératifs,
et inversement.
• Avantage du récursif: très économique
pour le programmeur.
• Inconvénient du récursif: utilise beaucoup
de variables temporaires.
Isabelle ABOU
50
RECHERCHES ACTUELLES EN
ALGORITHMIQUE
• De nombreuses recherches et problèmes mathématiques sont en
inter-relation avec les recherches en algorithmique.
• Celles-ci concernent la complexité en moyenne et de nombreuses
applications en ingénierie comme:
• la téléphonie mobile,
• le cryptage,
• la compression d’image et de son,
• les codes correcteurs,
• Internet,
• la recherche en bio-informatique sur l’identification et l’étude de
codes dans les génomes et leur modélisation évolutive
stochastique.
• De nombreux colloques concernent les recherches de pointe en
algorithmique.
Isabelle ABOU
51
RECHERCHES ET COLLOQUES
•
Août 2009 en Autriche: Colloque sur « Computational Topology in Image
Context ».
Invariants topologiques et leurs applications: calcul, groupes, optimisation
d’algorithmes pour des application à l’image, utilisation d’information
topologique dans les applications à l’image, topologie discrète et
calculatoire.
•
Septembre 2009 en Italie : Colloque de GAMES sur la conception et la
vérification de programmes de jeu.
GAMES est un réseau européen dont le but est la recherche et la formation
sur la conception et la vérification des systèmes informatiques.
•
Octobre 2009 à Fréjus : Les Journées "Codage et Cryptographie"
L'objet de ces journées nationales est de réunir la communauté scientifique
française s'impliquant dans le codage, la cryptographie, et plus
généralement la théorie de l'information.
•
Novembre Décembre 2009 au Maroc: La 5ième conférence internationale
« Signal Image Technology & Internet Based Systems » concernant les
technologies du signal et de l’image: analyse et traitement de l’image,
authentification et codage des multimédia vidéo, traitement du signal,
modélisation géométrique et reconstruction 3D.
Isabelle ABOU
52
RECHERCHES ET COLLOQUES
•
Janvier Février 2010Journées Francophones des Langages Applicatifs
organisées par l'INRIA, centrées sur l'approche fonctionnelle de la
programmation, portent également sur les techniques et outils
complémentaires qui élèvent le niveau de qualité des logiciels (systèmes
d'aide à la preuve, réécriture, tests, démonstration automatique,
vérification).
•
Mars 2010 à Nancy: Le 27ième colloque international « Theoretical Aspects
of Computer Science », et qui traite des aspects théoriques de la science
informatique: algorithmes et structures de données, automates et langages
formels, complexité, logique, et vérification.
•
Mai 2010 au CIRM à Marseille : Les Journées Nationales de Calcul Formel,
calcul formel entendu au sens large comme « algorithmiques à objets ou
moyens mathématiques »: arithmétique exacte, arithmétique d'intervalles,
théorie algorithmique des nombres, résolution des systèmes polynomiaux et
applications, géométrie algébrique réelle, aspects formels en automatique,
cryptologie et théorie des codes, aspects symboliques en géométrie
algorithmique.
Isabelle ABOU
53
RESSOURCES
•
•
•
•
Actuellement, les principales ressources concernant la classe de seconde
sont les documents officiels fournis par l’Inspection Générale:
- Le nouveau programme de la classes de seconde
- Les documents « Ressources pour la classe de seconde » sur :
L’algorithmique; Les probabilités et statistiques; Les fonctions; Les notations
et raisonnement mathématiques.
•
Le site de mathématiques de l’académie de la Réunion « maths.acreunion.fr » contient actuellement peu de ressources concernant
l’algorithmique, il fournit toutefois un lien avec l’ancien site de
mathématiques de la Réunion « Icosaweb.ac-reunion.fr » qui n’est plus
actualisé mais qui contient des ressources très intéressantes en
algorithmique.
•
Les sites des IREM, en particulier celui de la Réunion, contiennent
également des documents et des tutoriels.
•
Les fichiers Power Point de ce stage seront mis en ligne.
Isabelle ABOU
54
BIBLIOGRAPHIE
• «Cours d’algorithmique et de programmation», Christophe
Darmangeat, Université Paris 7.
• « Les bases de l’algorithmique : instructions et types
élémentaires», Julp.
• «Initiation à l’algorithmique», Denis Lapoire.
• «Algorithme et Programmation», cours CNAM, Pascal Lowenerth.
• Cours d’algorithmique DEUG MIAS.Pierre Liardet.
• Site Internet: http://lwh.free.fr/
Isabelle ABOU
55
Téléchargement