La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les éléments de base de lalgorithmique Nga Nguyen - EISTI.

Présentations similaires


Présentation au sujet: "Les éléments de base de lalgorithmique Nga Nguyen - EISTI."— Transcription de la présentation:

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

2 Quest-ce que lalgorithmique ? … cest une suite dinstructions, 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

3 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

4 Cours 1 : Les éléments de base Variable Expression Affectation Lecture Ecriture Tests Boucles

5 Les variables stocker provisoirement des valeurs déclaration des variables nom type de codage (entier, réel, booléen, date, caractère, string, …) + taille

6 Instruction daffectation une affectation : variable expression quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? Variable A, B : Entier Début A 5 B 2 A B B A Fin comment faire pour échanger les valeurs de A et B ?

7 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

8 Lecture et écriture Lecture : rentrer des valeurs au clavier pour quelles soient utilisées par le programme Ecriture : communiquer des valeurs à lutilisateur en les affichant à lécran Ecrire "Entrez votre nom : " Lire NomFamille

9 Les tests Si booléen Alors Instructions FinSi Si booléen Alors Instructions 1 Sinon Instructions 2 FinSi

10 Les tests Expression booléenne : Variable Condition (comparaison) Opérateurs de comparaison : ==, !=,, = Opérateurs logique : et, ou, non, xor

11 Exemple Variable m, n : Entier Début Ecrire "Entrez deux nombres : " Lire m, n Si (m > 0 ET n > 0) OU (m < 0 ET n < 0) Alors Ecrire "Leur produit est positif" Sinon Ecrire "Leur produit est négatif" FinSi Fin

12 Tests imbriqués Variable Temp : Entier Début Ecrire "Entrez la température de leau :" Lire Temp Si Temp <= 0 Alors Ecrire "Cest de la glace" Sinon Si Temp < 100 Alors Ecrire "Cest du liquide" Sinon Ecrire "Cest de la vapeur" FinSi FinSi Fin

13 Les boucles Tantque booléen … Instructions … FinTantque

14 Exemple : contrôle de saisie Variable Rep : Caractère Début Ecrire "Voulez vous un café ? (O/N)" Lire Rep Tantque Rep <> "O" et Rep <> "N" Lire Rep FinTantque Fin

15 Une autre structure de boucle Pour Compteur Initial à Final Pas ValeurDuPas … Instructions … FinPour

16 Exemple : calculer la somme 1+2+…+N Variable N, i, Som : Entier Début Ecrire "Entrez un nombre : " Lire N Som 0 Pour i 1 à N Som Som + i FinPour Ecrire "La somme est : ", Som Fin

17 Cours 2 : Procédures et fonctions Procédure Fonction Variable globale et locale

18 Procédure une suite dinstructions réalisant une certaine tâche, à la quelle on donne un nom pour quon puisse lappeler ultérieurement déclaration : Procédure nom(liste de paramètres) Variables locales Instructions FinProcédure

19 Exemple Procédure CalculCarrés (debut, fin : ENTIER) Variable nb : ENTIER nb debut Tantque nb <= fin Ecrire nb, nb*nb nb nb + 1 FinTantque FinProcédure

20 Appel dune procédure nom(liste de paramètres effectifs) CalculCarres(1,10) … CalculCarres(20,25)

21 Fonction Pour renvoyer une valeur à la procédure / fonction appelante Fonction nom(liste de paramètres) : type de retour Variables locales Instructions Retourner … FinFonction

22 Exemple Déclaration : Fonction CalculCarré (nb : ENTIER) : Entier Retourner nb*nb FinFonction Appel : x CalculCarré(5)

23 Fonctions prédéfinies Fonctions de texte : Len(chaîne) : nombre de caractères dune 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) …

24 Fonctions prédéfinies Fonctions numériques : Ent(n) : partie entière dun nombre Mod(n1,n2) : reste de la division de n1 par n2 Alea() : nombre aléatoire … Fonctions de conversion …

25 2 types de paramètres Procédure appelante Procédure appelée Paramètres dentrée Paramètres de sortie Procédure CalculCarre(E nb : Entier, S res : Entier)

26 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 lappelante 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 )

27 Relation entre type et mode de passage dargument passage par valeur passage par référence paramètre dentrée oui paramètre de sortie nonoui

28 Variable locale et globale Variable locale (privée) : déclarée au sein d'une procédure ou d'une fonction Nest visible que par cette procédure / fonction Variable globale (publique) : une autre possibilité de communiquer entre les procédures Visible par tout le programme

29 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

30 Cours 3 : Notions complémentaires Structures de données Récursif vs itératif Complexité

31 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

32 Récursivité Définition : une fonction/procédure qui s'appelle elle-même Fonction Fact (n : Entier) : Entier Si n = 0 Alors Retourner 1 Sinon Retourner Fact(n-1) * n FinSi FinFonction

33 Version itérative Fonction Fact (n : Entier) : Entier Variable f, i : Entier f 1 Pour i 2 à n f f*i FinPour Retourner f FinFonction

34 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 !

35 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 dun algorithme Taille, structure de donnée dentrée Nombre dopérations élémentaires opérations arithmétiques affectations instructions de contrôle etc.

36 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 dopérations élémentaires pour exécuter lalgorithme sur la donnée dentré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é davoir en entrée une instance d parmi toutes les données de taille n

37 Notation asymptotique Soient f, g : Nat -> Nat f(n) = O(g(n)) ssi il existe 2 constantes positives n 0 et B t.q n n 0, f(n) Bg(n) Un algorithme en O(1) : complexité constante O(n) : complexité linaire O(n a ) : complexité polynomiale O(e n ) : complexité exponentielle …

38 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 daffectations : 2 + n + (n-1) nombre de comparaisons : n + (n-1) complexité : O(n) En moyenne ?

39 Exemple 2 : factorielle Fonction Fact (n : Entier) : Entier Si n = 0 Alors Retourner 1 Sinon Retourner Fact(n-1) * n FinSi FinFonction C(n) : nombre de comparaisons C(n) = 1 + C(n-1) C(0) = 1 => complexité : O(n)

40 Exemple 3 : Tours de Hanoi

41 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

42 Cours 4 : Tableaux Structure de données Algorithmes de recherche : Séquentielle Dichotomique Algorithmes de tri : Tri par sélection Tri à bulles

43 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"

44 Recherche séquentielle Fonction RechSeq (A : Tableau de T, n : Entier, val : T) : Booléen Variable i : Entier, trouve : Booléen i 1 trouve faux Tantque (i n) ET (NOT trouve) Si A[i] = val Alors trouve vrai Sinon i i+1 FinSi FinTantque Retouner trouve FinFonction

45 Recherche séquentielle : complexité Pire cas : nombre de comparaisons : n complexité : O(n) Moyenne : p : probabilité que val soit dans A places équiprobables complexité : p i i + (1-p)n = p(n+1)/2 + (1-p)n

46 Recherche dichotomique Fonction RechDic (A:Tableau de T, min:Entier, max:Entier, val:T) : Booléen Variable mid : Entier, Si (min > max) Alors Retourner faux Sinon mid = (min + max) /2 Si (A[mid] == val) Alors Retourner vrai Sinon Si (A[mid] > val) Alors Retourner RechDic(A,mid+1, max, val) Sinon Retourner RechDic(A,min, mid-1, val) FinSi FinFonction

47 Recherche dichotomique : complexité Tableau A est trié ! RechDic(A,0,n,val) C(n) : nombre de comparaisons C(n) = 1 + C(n/2) C(1) = 1 => C(n) = O(logn)

48 Algorithmes de tri Versions lentes : O(n 2 ) 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) …

49 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

50 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 FinPour FinProcédure

51 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²)

52 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 lordre nest pas bon, on permute ces deux éléments. Et on recommence jusquà ce que lon nait plus aucune permutation à effectuer Exemple : 27 | 63 | 1 | 72 | 64 | 58 | 14 | 9 27 | 1 | 63 | 64 | 58 | 14 | 9 | 72 1 | 27 | 63 | 58 | 14 | 9 | 64 | 72

53 Tri à bulles : algorithme Procédure TriBulle(ES A : Tableau de T, n : Entier) Variable desordre : Booléen, i : Entier, temp : T desordre vrai Tantque 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 FinPour FinTantQue FinProcédure

54 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²)

55 Comparaisons des algorithmes de tri (lents)

56 Comparaisons des algorithmes de tri (rapides)


Télécharger ppt "Les éléments de base de lalgorithmique Nga Nguyen - EISTI."

Présentations similaires


Annonces Google