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