Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.

Slides:



Advertisements
Présentations similaires
CHAPITRE 1 Arithmétique
Advertisements

Introduction à l’algorithmique
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Algorithme Calcul du PGCD Euclide.
Initiation à l’Algorithmique
Leçon Nombres entiers et rationnels
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
Algorithmique ‘’ Un algorithme est une suite finie et non-ambiguë d’instructions permettant de donner la réponse à un problème. ‘’ Niveau de difficulté.
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus grande.
Ajouter le code dans une page html
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
CHAPITRE 3 Calcul numérique et puissances
Algorithmiques Abdelbasset KABOU
Algorithmique et programmation de modèles numériques
Techniques de décomposition
Semaine #1 INF130 par Frédérick Henri.
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Javadoc et débogueur Semaine 03 Version A17.
Algorithmique AU El harchaoui noureddine
Principes de programmation (suite)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
3°) Décomposition d’un nombre entier en produit d’entiers :
Progressions calcul CM
de toute série statistique
L’Instruction de Test Alternatif
Algorithmiques Abdelbasset KABOU
2°) Déterminez l’organigramme pour déterminer les diviseurs d’un nombre ( premier ou pas ). Méthode : on va …
Algorithme d’Euclide pour le PGCD.
Un Algorithme , c'est Quoi ?
Dix diapositives vont défiler
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Chapitre 2: Les équations et les inéquations polynômes
Langages de programmation TP3
Information, Calcul, Communication
Cours N°6: Algorithmiques Structures Conditionnelles
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours N°9: Algorithmiques Les Tableaux 1
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Formules de calculs et Fonctions. Structure des formules de calcul Commencez toujours votre calcul par le signe =, ensuite sans laisser d’espaces, placez.
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE
Calcul Scientifique Initiation à SCILB
CHAPITRE 3 Calcul numérique et puissances
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus.
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Information, Calcul, Communication
Compléments sur Python (EduPython)
RABAH M ed Ali 2018/2019
Flowchart Itération Cours 04.
Nombres premiers : ce sont des nombres entiers positifs, qui ne sont divisibles que par 1 et eux- mêmes. Exemples : 24 est divisible par 2, par 3, par.
Programmation Scratch
Tableaux Cours 06.
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
L.P.M Chapitre N°3 Les structures de contrôle itératives Dégager le traitement itératif Problème Nombre d’itération ?? Inconnu à l’avance Connu à l’avance.
Chapitre 10 : Division décimale
Introduction à L’Informatique
2°) Déterminez l’organigramme pour déterminer les diviseurs d’un nombre ( premier ou pas ). Méthode : on va …
Système de Numération : Décimal, Binaire, Octal et Hexadécimal
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
Tableaux : Algorithmes de recherches
Transcription de la présentation:

Introduction à l’algorithmique

Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant du nom d’un mathématicien arabe du IXeme siècle El-Khawarizmi C’est la base de tout programme informatique Exemple: Recette de la sauce blanche: 1.Faire revenir l’oignon haché fin dans du beurre, 2.Ajouter la farine, bien mélanger; 3.Rajouter le lait chaud, et mélanger pour éviter les grumeaux; 4.Laisser mijoter 15 minutes

Algorithme: Suite finie d’instructions vérifiant: Chaque étape est décrite de façon précise; Chaque étape est déterministe: produit des résultats uniques; L’algorithme s’arrête après un nb fini d’instructions Reçoit des données en entrée; Produit des données en sortie; Généralité: Applicable à des ensembles différents de données d’entrée

Différence entre problème et instance du problème Exemple d’un problème: Tri d’un ensemble d’éléments –Entrée: Suite de n éléts a 1,…a n –Sortie: La suite réordonnée Instances du problème: –Suite de nombres: 475, 787, 34, 245, 56, 350 –Suite de noms: Pierre, Christine, Sylvie, Samuel, Fabien

Exemple d’un algorithme 1. x := a; 2. Si b>x, alors x := b; 3. Si c>x, alors x := c; := Opérateur d’assignation y := z signifie ``copie la valeur de z dans y’’. Valeur de z inchangée Paramètres d’entrée: a, b, c Valeur de sortie: x = max (a,b,c)

Pseudo-Code Algorithme maximum: Retourne le maximum de 3 entiers Entrée: Trois entiers a, b, c; Sortie: x contenant la valeur maximale parmi a, b, c 1. Procédure max(a,b,c) 2. x := a; 3. Si b>x alors // Si b plus grand que x, mettre x à jour 4.x := b; 5. Si c>x alors // Si c plus grand que x, mettre x à jour 6.x := c; 7. Retourner (x) 8. Fin max Trace de l’algorithme pour: a=1; b=5; c=3 x = 1 x = 5

Pseudo-Code: Notation proche du code des langages de programmation (C, Pascal). Notation standard mais pas rigoureuse Titre de l’algorithme, description brève, entrées, sorties Procédures consécutives Numéroter les lignes (facultatif) Procédure commence par le mot ``Procédure’’, suivit du nom, suivit des paramètres Instructions (lignes exécutables) entre ``Procédure’’ et ``Fin’’, exécutées l’une après l’autre Bloc d’instructions entre ``Début’’ et ``Fin’’ Ligne de commentaires signalée par // (ou /* */) ``Retourne (x)’’ termine une procédure et retourne la valeur de x

Instruction Si-Alors-Sinon (If-Then-Else) Si condition p vérifiée, exécuter action. Si p alors action Si p alors action 1; Sinon action 2; Si condition p vérifiée, exécuter action 1. Sinon, exécuter action 2. Si x ≥ 0 alors Début x := x-1; a := b+c; Fin Bloc de conditions entre Début et Fin.

Instruction Tant que Tant que p est vrai exécuter actionTant que p Faire action; Algorithme Plus-Grand-Element: Retourne la plus grande valeur d’une liste Entrée: n entiers S 1,…, S n Sortie: grand contenant le plus grand élément Procédure plus-grand (S,n) grand := S 1 ; i:=2; Tant que i ≤ n Faire Début Si S i > grand alors // une plus grande valeur a été trouvée grand := S i ; i := i+1; Fin Retourne (grand) Fin plus-grand; Trace de l’algorithme: n=4; S 1 = -2; S 2 =6; S 3 =5; S 4 =6 grand =-2i = 2 grand = 6i = 3 i = 4 i = 5

Instruction Pour (For) À chaque passage dans la boucle, var est incrémenté de 1. On s’arrête dès que var > limite Pour var := init à limite Faire action; Algorithme Plus-Grand-Element: Réécriture de l’algorithme précédent mais avec une boucle ``Pour’’ Entrée: n entiers S1,…, Sn Sortie: grand contenant le plus grand élément Procédure plus-grand (S,n) grand := S 1 ; Pour i =1 à n Faire Si S i > grand alors // une plus grande valeur a été trouvée grand := S i ; Retourne (grand) Fin plus-grand;

Subdivision d’un problème en sous- problèmes (plusieurs procédures) Problème: Trouver le plus petit nombre premier strictement supérieur à un entier positif donné –Procédure pour déterminer si un entier m est un nombre premier. Il suffit de tester si m est divisible par un entier entre 2 et m/2 –Utiliser cette procédure pour trouver le plus petit nombre premier p supérieur à un entier n.

Entrée: Un entier positif m Sortie: Vrai si m est premier, Faux si non. Procédure est-premier (m) Pour i := 2 à ENT(m/2) Faire Si m mod i = 0 alors // i divise m Retourne (Faux) Retourne (Vrai) Fin est-premier Entrée: Un entier positif n Sortie: Le plus petit nb premier m > n Procédure premier-plus-grand (n) m := n+1; Tant que est-premier(m) est Faux Faire m := m+1; Retourne(m) Fin est-premier Trace de premier-plus-grand pour n=8: m = 9 Trace de est-premier pour m=9: i=29 mod 2 = 1 9 mod 3 = 0i=3 m = 10 Trace de est-premier pour m=10: 10 mod 2 = 0 m = 11 Trace de est-premier pour m=11: 11 mod 2 = 1 i=511 mod 5 = 1

Algorithme d’Euclide Trouver le plus grand diviseur commun (pgcd) de deux entiers Définition: q est un diviseur commun de m et n si q divise à la fois m et n (le reste de la division entière est 0) Le pgdc de m et n est le plus grand entier q divisant à la fois m et n. Exemple: pgcd(4, 6) = 2; pgcd(3,8) = 1; pgcd(9, 12) = 3; Utile pour la simplification de fractions: 9/12 = 3.3/4.3 = 3/4

Théorème 1: Soient m, n et c trois entiers 1.Si c est un diviseur commun de m et n, alors c divise (m+n). 2.Si c est un diviseur commun de m et n, alors c divise (m-n). 3.Si c divise m, alors c divise mn Soient a, b deux entiers >0. Si on divise a par b, on obtient un reste r et un quotient q vérifiants: a = bq+r, avec 0≤r<b, et q≥0 À l’aide du théorème 1 on montre: Théorème 2: Soient a, b deux entiers positifs. Soient q le quotient et r le reste de la division entière de a par b. Alors pgcd(a,b) = pgcd(b,r)

Trouver le PGCD de a et b Exemple: pgcd(30, 105) 1ère méthode: Trouver tous les diviseurs de a et b, et trouver le diviseur commun le plus grand –Diviseurs de 30: 1, 2, 3, 5, 6, 10, 15, 30 –Diviseurs de 105: 1, 3, 5, 7, 15, 21, 35, 105  pgcd(30, 105) = 15 2ème méthode: Utiliser le théorème 2 –105 = Donc pgcd(105, 30) = pgcd(30,15) –30 = Donc pgcd(30, 15) = pgcd(15,0) –pgcd(15,0)=15  pgcd(105,30)=pgcd(30,15)=pgcd(15,0)=15 La méthode 2 est la méthode d’Euclide

Méthode d’Euclide Soient r 0, r 1 deux entiers strictement positifs, tels que r 0 =r 1.q+r 2 avec 0≤r 2 <r 1 Si r 2 = 0, pgcd (r 0, r 1 ) = r 1 Sinon, rediviser r i par r i+1 tant que r i+1 est différent de 0 Si r n est le premier reste nul, alors pgcd(r 0,r 1 ) = pgcd(r 1,r 2 ) = … =pgcd(r n-1,r n )= pgcd(r n-1,0) = r n-1

Algorithme d’Euclide Entrée: a, b deux entiers positifs Sortie: pgcd(a,b) Procédure pgcd(a,b) Tant que b pas 0 Faire Début diviser a par b: a = b.q+r, 0 ≤ r < b; a:=b; b:=r; Fin Retourner (a) Fin pgcd Trace de l’algorithme pour a=504 et b= a b a b a b a b

Procédure récursive Procédure qui s’invoque elle-même Exemple: n! = n(n-1)(n-2)…2.1 Si n≥0 0! = 1 n! = n(n-1)! pour n≥1 5! = 5.4!4! = 4.3!3! = 3.2!2! = 2.1!1! = 1.0! = 1 = 2 = 6 = 24 = 120 Toute procédure récursive doit avoir une condition d’arrêt: cas de base qui permet de ne plus invoquer la procédure. Ici, la condition d’arrêt est n=0

Entrée: Entier n≥0 Sortie: n! Procédure factoriel (n) Si n = 0 alors Retourne (1) Retourne (n. factoriel(n-1)) Fin factoriel Trace pour n =3: factoriel( 3 ): Retourne: 3. factoriel(2) factoriel( 2 ): Retourne: 2. factoriel(1) factoriel( 1 ): Retourne: 1. factoriel(0) factoriel( 0 ): Retourne: 1 1.1=1 2.1=2 3.2=6

Procédure itérative pour le calcul de n! Entrée: Entier n≥0 Sortie: n! Procédure factoriel-iteratif (n) res = 1; courant = n; Tant que courant>0 Faire res := res * courant; courant := courant-1; Fin Tant que Retourne (res) Fin factoriel-iteratif Trace pour n =3 : res = 1 courant = 3 res = 3courant = 2 res = 6courant = 1 res = 6courant = 0

Procédure récursive pour le calcul du pgcd Entrée: a, b deux entiers >0 Sortie: pgcd(a,b) Procédure pgcd-rec (a,b) Si b = 0 alors Retourner (a); diviser a par b: a = b.q+r, 0 ≤ r < b; Retourner (pgcd-rec (b,r)) Fin pgcd-rec Trace pour a=504 et b=396: pgcd-rec(504, 396) 504 = pgcd-rec(396, 108) 396 = pgcd-rec(108,72) 108 = pgcd-rec(72,36) pgcd-rec(36, 0) 36

Nombres de Fibonacci Exemple: Un robot peu avancer par des pas de 1 ou 2 mètres. Calculer le nombre de façons différentes de parcourir une distance de n mètres Distance Suite de pasNb de possibilités ,1 ou 22 31, 1, 1 ou 1, 2 ou 2, 13 41,1,1,1 ou 1,1,2 ou 1,2,1 ou 2,1,1 ou 2,25

Pas(n): Nombre de possibilités pour parcourir n mètres. Pas(1) = 1, Pas(2) = 2; Pour n>2: –Si premier pas = 1 mètres, il reste n-1 mètres -> Pas(n-1) –Si premier pas = 2 mètres, il reste n-2 mètres -> Pas(n-2) Donc, Pas(n) = Pas(n-1)+Pas(n-2) Entrée: n Sortie: Pas(n) Procédure pas-robot (n) Si n=1 ou n=2 alors Retourne (n) Retourne (Pas(n-1) + Pas(n-2) ) Fin pas-robot Séquence de Fibonacci: f 1 = 1 f 2 = 2 f n = f n-1 + f n-2 pour n>2