les éléments de base de lalgorithmique nga nguyen - eisti

56
Les éléments de base de l’algorithmique Nga Nguyen - EISTI

Upload: gael-dumoulin

Post on 04-Apr-2015

119 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Les éléments de base de l’algorithmique

Nga Nguyen - EISTI

Page 2: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Qu’est-ce que l’algorithmique ?

… c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné.

Etape essentielle qui précède la programmation indépendante des particularités de tel ou tel

langage pseudo-code

Page 3: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Plan

• Cours 1 : éléments de base • Cours 2 : procédures et fonctions• Cours 3 : notions complémentaires :

récursivité, complexité, …• Cours 4 : structure de données -

tableau

Page 4: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Cours 1 : Les éléments de base

Variable Expression Affectation Lecture Ecriture Tests Boucles

Page 5: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Les variables

stocker provisoirement des valeurs déclaration des variables

nom type de codage (entier, réel, booléen,

date, caractère, string, …) + taille

Page 6: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Instruction d’affectation une affectation : variable ← expression

quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

Variable A, B : EntierDébut

A ← 5B ← 2A ← BB ← A

Fin comment faire pour échanger les valeurs de A

et B ?

Page 7: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Expressions et opérateurs

Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une seule valeur

Opérateurs numériques : +, -, *, /, ^ alphanumériques : & booléens : et, ou, non, xor

Page 8: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Lecture et écriture Lecture : rentrer des valeurs au

clavier pour qu’elles soient utilisées par le programme

Ecriture : communiquer des valeurs à l’utilisateur en les affichant à l’écran

Ecrire "Entrez votre nom : "

Lire NomFamille

Page 9: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Les tests

Si booléen Alors  InstructionsFinSi

Si booléen Alors  Instructions 1Sinon  Instructions 2FinSi

Page 10: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Les tests

Expression booléenne : Variable Condition (comparaison)

Opérateurs de comparaison : ==, !=, <, >, <=, >=

Opérateurs logique : et, ou, non, xor

Page 11: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple

Variable m, n : EntierDébut

Ecrire "Entrez deux nombres : "Lire m, nSi (m > 0 ET n > 0) OU (m < 0 ET n <

0) Alors  Ecrire "Leur produit est positif"

Sinon  Ecrire "Leur produit est négatif"

FinSiFin

Page 12: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tests imbriqués

Variable Temp : EntierDébut

Ecrire "Entrez la température de l’eau :"Lire TempSi Temp <= 0 Alors

  Ecrire "C’est de la glace"Sinon

  Si Temp < 100 Alors    Ecrire "C’est du liquide"  Sinon    Ecrire "C’est de la vapeur"  FinSi

FinSiFin

Page 13: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Les boucles

Tantque booléen  …  Instructions  …

FinTantque

Page 14: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple : contrôle de saisie

Variable Rep : CaractèreDébut

Ecrire "Voulez vous un café ? (O/N)"Lire RepTantque Rep <> "O" et Rep <>

"N"  Lire Rep

FinTantqueFin

Page 15: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Une autre structure de boucle

Pour Compteur ← Initial à Final Pas ValeurDuPas…Instructions…

FinPour

Page 16: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple : calculer la somme 1+2+…+N

Variable N, i, Som : EntierDébut

Ecrire "Entrez un nombre : "Lire NSom ← 0Pour i ← 1 à N

  Som ← Som + iFinPourEcrire "La somme est : ", Som

Fin

Page 17: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Cours 2 : Procédures et fonctions

Procédure Fonction Variable globale et locale

Page 18: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Procédure une suite d’instructions réalisant une

certaine tâche, à la quelle on donne un nom pour qu’on puisse l’appeler ultérieurement

déclaration :Procédure nom(liste de paramètres)

Variables locales

Instructions

FinProcédure

Page 19: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

ExempleProcédure CalculCarrés (debut, fin : ENTIER)

Variable nb : ENTIERnb ← debutTantque nb <= fin

Ecrire nb, nb*nbnb ← nb + 1

FinTantque FinProcédure

Page 20: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Appel d’une procédure nom(liste de paramètres effectifs)

CalculCarres(1,10)…CalculCarres(20,25)

Page 21: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Fonction Pour renvoyer une valeur à la procédure /

fonction appelante

Fonction nom(liste de paramètres) : type de retour

Variables locales

Instructions

Retourner …FinFonction

Page 22: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple

Déclaration : Fonction CalculCarré (nb : ENTIER) :

EntierRetourner nb*nb

FinFonction

Appel : x ← CalculCarré(5)

Page 23: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Fonctions prédéfinies Fonctions de texte :

Len(chaîne) : nombre de caractères d’une chaîne

Mid(chaîne,n1,n2) : extrait de la chaîne, commençant au caractère n1 et faisant n2 caractères de long.

Trouve(chaîne1,chaîne2) : position de chaîne2 dans chaîne1

Ascii(c) Char(n) …

Page 24: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Fonctions prédéfinies Fonctions numériques :

Ent(n) : partie entière d’un nombre Mod(n1,n2) : reste de la division de n1 par

n2 Alea() : nombre aléatoire …

Fonctions de conversion …

Page 25: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

2 types de paramètres

Procédure

appelante

Procédure

appelée

Paramètres d’entrée

Paramètres de sortie

Procédure CalculCarre(E nb : Entier, S res : Entier)

Page 26: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

2 modes de passage Passage par valeur :

la procédure appelée dispose d'une copie de la valeur; elle peut la modifier, l'information initiale dans l’appelante n'est pas affectée par ces modifications

Passage par référence : la procédure appelée modifie directement la variable en utilisant sa référence (adresse mémoire)

Procédure Bidule(titi : Caractère par valeur, toto : Caractère par

référence)

Page 27: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Relation entre type et mode de passage

d’argument

passage par valeur

passage par référence

paramètre d’entrée

oui oui

paramètre de sortie

non oui

Page 28: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Variable locale et globale Variable locale (privée) :

déclarée au sein d'une procédure ou d'une fonction

N’est visible que par cette procédure / fonction

Variable globale (publique) : une autre possibilité de communiquer

entre les procédures Visible par tout le programme

Page 29: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Une application bien programmée ?

est une application à l'architecture claire, dont les différents modules font ce qu'ils disent, disent ce qu'il font, et peuvent être testés (ou modifiés) un par un sans perturber le reste de la construction.

limiter au minimum l'utilisation des variables globales.

regrouper sous forme de modules distincts tous les morceaux de code qui possèdent une certaine unité fonctionnelle

faire de ces modules des fonctions lorsqu'ils renvoient un résultat unique, et des sous-procédures dans tous les autres cas

Page 30: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Cours 3 : Notions complémentaires

Structures de données Récursif vs itératif Complexité

Page 31: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Structures de données Variable scalaire

Entier, réel, booléen, caractère, string Tableau Structure de donnée linaire

Pile : liste où l'insertion et la suppression ne se font que d'un seul et même côté (LIFO)

File : liste où l'insertion d'un côté, et la suppression de l'autre (FIFO)

Liste : insertions et suppressions se font non seulement aux extrémités, mais aussi à l'intérieur de la liste.

Structure de donnée non linaire Arbre Graphe

Page 32: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Récursivité Définition : une fonction/procédure qui

s'appelle elle-même

Fonction Fact (n : Entier) : EntierSi n = 0 Alors

  Retourner 1Sinon

  Retourner Fact(n-1) * nFinSi

FinFonction

Page 33: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Version itérative Fonction Fact (n : Entier) : Entier

Variable f, i : Entier f ← 1

Pour i ← 2 à n f ← f*i

FinPourRetourner f

FinFonction

Page 34: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Avantages vs inconvénients

très économique pour le programmeur : simple et intuitive

très dispendieuse de ressources machine : utilisation de pile

tout problème formulé en termes récursifs peut également être formulé en termes itératifs !

Page 35: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Complexité Un ’bon’ algorithme ?

Répond correctement au problème posé Rapide (complexité en temps) Pas trop de mémoire (complexité en espace)

La performance d’un algorithme Taille, structure de donnée d’entrée Nombre d’opérations élémentaires

opérations arithmétiques affectations instructions de contrôle etc.

Page 36: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Pire cas, meilleur cas et moyenne La complexité dans le “pire cas” :

Max C(d) d donnée de taille n

où C(d) est le nombre d’opérations élémentaires pour exécuter l’algorithme sur la donnée d’entrée d

La complexité dans le “meilleur cas” : Min C(d)

d donnée de taille n La complexité en moyenne :

∑ ∏(d)C(d) d donnée de taille n

où ∏(d) est la probabilité d’avoir en entrée une instance d parmi toutes les données de taille n

Page 37: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Notation asymptotique Soient f, g : Nat -> Nat

f(n) = O(g(n)) ssi il existe 2 constantes positives n0 et B t.q n ≥ n0, f(n) ≤ Bg(n)

Un algorithme en O(1) : complexité constante O(n) : complexité linaire O(na) : complexité polynomiale O(en) : complexité exponentielle …

Page 38: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple 1 : le plus petit élément

int plusPetit (int[] x) {int k = 0;int n = length(x);for (int i = 1; i < n; i++) {

if (x[i] < x[k]) k = i;}return k;

} Au pire cas :

nombre d’affectations : 2 + n + (n-1) nombre de comparaisons : n + (n-1) complexité : O(n)

En moyenne ?

Page 39: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple 2 : factorielleFonction Fact (n : Entier) : Entier

Si n = 0 AlorsRetourner 1

Sinon  Retourner Fact(n-1) * n

FinSiFinFonction

C(n) : nombre de comparaisons C(n) = 1 + C(n-1)C(0) = 1

=> complexité : O(n)

Page 40: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Exemple 3 : Tours de Hanoi

Page 41: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tours de Hanoi (suite)Procédure Déplacer (nombre : Entier, de : Entier, à :

Entier, par : Entier) Si nombre > 0 Alors

Déplacer (nombre-1, de, par, à); Bouger-un-disque de, à; Déplacer (nombre-1, par, à, de);

FinSi FinProcédure

C(n) : nombre de déplacements C(n+1) = 2C(n) + 1 => exponentielle

Page 42: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Cours 4 : Tableaux

Structure de données Algorithmes de recherche :

Séquentielle Dichotomique

Algorithmes de tri : Tri par sélection Tri à bulles

Page 43: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tableaux But : regrouper dans une structure plusieurs valeurs de

même type

Déclaration : A[n] : Tableau de T nom du tableau : A taille de tableau : n type d’élément : T indice : A[i], 1 ≤ i≤ n

Exemple : Mois[12] : Tableau de Caractère Mois = {"janvier", "février", …, "décembre"}Mois[5] = "mai"

Page 44: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Recherche séquentielleFonction RechSeq (A : Tableau de T, n : Entier, val : T) : Booléen

Variable i : Entier, trouve : Booléen i ← 1trouve ← fauxTantque (i ≤n) ET (NOT trouve)

Si A[i] = val Alorstrouve ← vrai

Sinon i ← i+1

FinSiFinTantqueRetouner trouve

FinFonction

Page 45: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Recherche séquentielle : complexité

Pire cas : nombre de comparaisons : n complexité : O(n)

Moyenne : p : probabilité que val soit dans A places équiprobables complexité :

∑pii + (1-p)n = p(n+1)/2 + (1-p)n

Page 46: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Recherche dichotomiqueFonction RechDic (A:Tableau de T, min:Entier, max:Entier, val:T) : Booléen

Variable mid : Entier, Si (min > max) Alors Retourner fauxSinon

mid = (min + max) /2Si (A[mid] == val) Alors Retourner vraiSinon

Si (A[mid] > val) Alors Retourner RechDic(A,mid+1, max, val) Sinon

Retourner RechDic(A,min, mid-1, val) FinSi

FinSiFinSi

FinFonction

Page 47: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Recherche dichotomique : complexité

Tableau A est trié !

RechDic(A,0,n,val)

C(n) : nombre de comparaisonsC(n) = 1 + C(n/2)

C(1) = 1

=> C(n) = O(logn)

Page 48: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Algorithmes de tri Versions lentes : O(n2)

Tri par sélection Tri à bulles Tri par insertion Tri de shell (shell sort) …

Versions rapides :O(nlogn) Tri rapide (quick sort) Tri fusion (merge sort) Tri pas tas (heap sort) …

Page 49: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri par sélection Technique : à chaque étape, on met en

bonne position l’élément le plus petit. Exemple :

27 | 63 | 1 | 72 | 64 | 58 | 14 | 9

1 | 63 | 27 | 72 | 64 | 58 | 14 | 9

1 | 9 | 27 | 72 | 64 | 58 | 14 | 63

1 | 9 | 14 | 72 | 64 | 58 | 27 | 63

Page 50: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri par sélection : algorithme

Procédure TriSelection(ES A : Tableau de T, n : Entier)Variable i, j : Entier, temp : T Pour i ← 1 à n-1  posmin ← i  Pour j ← i + 1 à n    Si T[j] < T[posmin] Alors       posmin ← j    FinSi FinPour  Si posmin ≠ i Alors   temp ← T[posmin]  T[posmin] ← T[i]  T[i] ← temp    FinSi

FinPourFinProcédure

Page 51: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri par sélection : complexité Meilleur cas (le tableau est déjà trié) :

Nombre de comparaisons : (n-1)+(n-2)+…+1 = n(n-1)/2

Nombre d’échanges : 0

Complexité : O(n²)

Pire cas (le tableau est trié en ordre inverse)  : Nombre de comparaisons : n(n-1)/2 Nombre d’échanges : n-1

Complexité : O(n²)

Moyenne : O(n²)

Page 52: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri à bulles Principe :

tout élément est plus petit que celui qui le suit compare chaque élément avec l’élément qui le suit.

Si l’ordre n’est pas bon, on permute ces deux éléments. Et on recommence jusqu’à ce que l’on n’ait plus aucune permutation à effectuer

Exemple :27 | 63 | 1 | 72 | 64 | 58 | 14 | 927 | 1 | 63 | 64 | 58 | 14 | 9 | 721 | 27 | 63 | 58 | 14 | 9 | 64 | 72

Page 53: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri à bulles : algorithme Procédure TriBulle(ES A : Tableau de T, n : Entier)

Variable desordre : Booléen, i : Entier, temp : T desordre ← vraiTantque desordre   desordre ← faux  Pour i ← 1 à n-1    Si A[i] > A[i+1] Alors      temp ← A[i]      A[i] ← A[i+1]      A[i+1] ← temp      desordre ← vrai    FinSi FinPourFinTantQue

FinProcédure

Page 54: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Tri à bulles : complexité Meilleur cas (le tableau est déjà trié) :

Nombre de comparaisons : n-1 Nombre d’échanges : 0

Complexité : O(n)

Pire cas (le tableau est trié en ordre inverse)  : Nombre de comparaisons : O(n²) Nombre d’échanges : O(n²)

Complexité : O(n²)

Moyenne : O(n²)

Page 55: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Comparaisons des algorithmes de tri (lents)

Page 56: Les éléments de base de lalgorithmique Nga Nguyen - EISTI

Comparaisons des algorithmes de tri (rapides)