quelques l ments d algorithmique et de sp cification n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Quelques éléments d ’algorithmique et de spécification PowerPoint Presentation
Download Presentation
Quelques éléments d ’algorithmique et de spécification

Loading in 2 Seconds...

play fullscreen
1 / 46

Quelques éléments d ’algorithmique et de spécification - PowerPoint PPT Presentation


  • 63 Views
  • Uploaded on

Quelques éléments d ’algorithmique et de spécification. Leur traduction en Java et Jml. Démarche pour la construction de logiciels. Cahier des charges Spécifications formelles Algorithmes (vérifications) Implantation (codage). Spécifications.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Quelques éléments d ’algorithmique et de spécification


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
    Presentation Transcript
    1. Quelques éléments d ’algorithmique et de spécification Leur traduction en Java et Jml

    2. Démarche pour la construction de logiciels • Cahier des charges • Spécifications formelles • Algorithmes (vérifications) • Implantation (codage) IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    3. Spécifications • Langage de spécification : logique des prédicats du premier ordre • Détermination des données et des résultats • Précondition: conditions vérifiées par les données • Postcondition: conditions établissant une relation entre données et résultats. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    4. Algorithme (définition générale) Description de la résolution d’un problème sous forme d ’une suite finied’opérations élémentaires. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    5. Programme Réalisation d’un algorithme dansun langage qu’un ordinateur est capable d’exécuter. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    6. Langage algorithmique Compromis entre une langue naturelle et un langage de programmation en gardant un bon niveau d ’abstraction. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    7. Algorithme (en informatique) • Description du traitement d’une donnée pour obtenir un résultat. • On peut vérifier qu’un traitement est conforme à sa spécification (sous forme de pre-postconditions) • Remarque : d (données) et r (résultats) peuvent être composés de plusieurs valeurs. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    8. Notation { P } TRAIT { Q } Si la donnée d vérifie la précondition P, alors après exécution des instructions de TRAIT, le résultat r vérifie la postcondition Q. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    9. ExempleP : x = 4TRAIT : x  x + 1Q : x = 5remarque : ici x est à la fois donnée et résultat IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    10. Traduction en Jml /*@ assert P @*/ ; TRAIT ; /*@ assert Q @*/ ; Exemple : /*@assert x ==4; @*/; x = x + 1; /*@assert x ==5; @*/; IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    11. TRAIT : suite d’instructions Java, rencontrées dans le corps d’une méthode Java. Exemples d’instructions : • instanciation • affectation d’une variable • appel de procédure IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    12. Affectation variable  expression ou variable := expression Traduction Java variable = expression IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    13. Remarques - on n’exprime pas les créations d ’objets. - on n’exprime pas les entrées/sorties. - les variables peuvent être modifiées au cours du traitement d’un algorithme. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    14. Séquence d’instructions : ;trait1; trait2;…traitn;Le point-virgule est aussi utilisé en Java IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    15. Conditionnelle simple Définir un résultat dépendant d’une condition si cond alors TRAIT1 sinon TRAIT2 finsi cond est une expression booléenne. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    16. Exemple : maximum de deux entiers P = (d1, d2: ENTIER) Q = (r : ENTIER) et (r=d1 ou r=d2) et r  d1 et r  d2 TRAIT : si d1 < d2 alors r d2 sinon r d1 finsi IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    17. Traduction en Java d’une conditionnelle Syntaxe if (cond) instruction ; ou if (cond) { instructions } cond est de type boolean Effet à l’exécution • cond est évaluée • les instructions sont exécutées seulement si cond est évaluée à true IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    18. Traduction en Java d’une conditionnelle if (cond) { instructions } else { instructions } cond est une expression de type boolean cond est évaluée, si sa valeur est true, les premières instructions sont exécutées, sinon celles après else sont exécutées. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    19. Quelques simplifications indispensables if (cond) b = true; else b = false ; s ’écrit b = cond ; Remarque: ne pas utiliser de conditionnelles lorsque les résultat sont booléens, dans ce cas utiliser des opérateurs booléens. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    20. Conditionnelle multiple Définir un résultat différemment selon plusieurs cas : si cond1 alors TRAIT1 sinon si cond2 alors TRAIT2 sinon …… si cond(n-1) alors TRAIT(n-1) sinon TRAITn finsi Remarque : un seul TRAITi sera exécuté IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    21. Traduction Java if (cond1) { TRAIT1 } else if (cond2) { TRAIT2 } … else if (cond(n-1) ){ TRAIT(n-1) } else { TRAIT_n } IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    22. Traduction Java Imbrication d’instructions conditionnelles Une clause else appartient toujours au if le plus proche qui n ’est pas dans un bloc séparé et qui n’a pas encore de else. Exemple : if (a>=b) if (a>=c) max = a; else max=c; else if (b>=c) max=b; else max=c; IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    23. Autre notation algorithmique Cas cond1 alors TRAIT1 Cas cond2 alors TRAIT2 …… Cas condn alors TRAITn ou AutreCas TRAITn fincas avec cette formulation il faut vérifier que les conditions sont mutuellement exclusives et que l’une d’elles est vérifiée. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    24. L’instruction switch switch (variable) { case valeur1 : bloc1; break; … case valeurn : blocn ; break; default : bloc_default ; break; } Remarque : variable doit être de type entier (int, short, byte) ou caractère (char), les autres types ne sont pas autorisés. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    25. Exemple : résolution d ’une équation du second degré de la forme ax²+bx+c = 0 P = (a, b, c : REEL  a  0) Q = (nbsol : ENTIER  s,t : REEL)  [ (nbsol = 0)  ((nbsol = 1)  (as²+bs+c = 0))  ((nbsol = 2)  (as²+bs+c = 0)  (at²+bt+c = 0)  (s  t))] IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    26. Algorithme TRAIT : disc  b² - 4ac ; si disc = 0 alors nbsol 1; s  -b/2a sinon si disc > 0 alors nbsol 2; s  …; t … sinon nbsol  0 finsi IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    27. Itération simple Pour exécuter un traitement un nombre de fois connu à l ’exécution.Notation algorithmique : INIT pour i dans [1..n] faire TITER finpour Soit i une variable qui compte le nombre d ’itérations. Soit n une variable égale au nombre d’itérations à effectuer. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    28. Itération conditionnelle (1) Pour exécuter un traitement un nombre de fois inconnu à l’exécution. Notation algorithmique : INIT; cond  expression ; tant que cond faire TITER; cond  expression fintantque IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    29. Itération conditionnelle (2) INIT ; arrêt  expression ; jqa arrêt faire TITER; arrêt  expression ; finjqa arrêt : variable booléenne qui exprime la condition d ’arrêt. Remarque : arrêt = non (cond) IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    30. Exemple : Une itération sert très souvent à calculer le dernier terme d’une suite définie par une relation de récurrence. Calcul de la somme des carrés des n premiers nombres entiers positifs. P = ( n entier ; n > 0) Q = ( r =  i² pour i  [1..n]) IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    31. Algorithme TRAIT : r  0; pour i dans [1..n] faire r  r+i² fpour ou r  0; i  1; cond  (i <= n) ; tantque cond faire r  r+i² ; i  i+1; cond  (i <= n) fintantque IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    32. Traduction Java (boucle « for ») for (exprinit ; condition ; expincr) { instructions } • condition est de type boolean • Effet à l ’exécution • exprinit est évaluée • tant que condition est true, les instructions sont exécutées, puis expincr est évalué. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    33. Traduction Java (1) (« boucle while ») initialisation ; while (condition) { instructions } • condition est une expression de type boolean • sémantique : tant que l ’expression conditionest true, les instructions sont exécutées. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    34. Exemple : r = 0 ; for ( i = 1 ; i <= n ; i++ ) r = r + i*i ; ou r = 0 ; i = 1 ; cond = (i <= n) ; while (cond) { r = r + i*i ; i = i+1; cond = (i <= n);} IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    35. Traduction Java (2) : (« boucle do while ») initialisation ; do { instructions } while (condition) ; • condition est une expression de type boolean • sémantique : condition est évaluée après chaque itération IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    36. Les fonctions fonction nom_fonction (param : type): resultat : type; instructions • signature • corps de la fonction : description algorithmique du calcul des résultats à partir des données. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    37. Les fonctions en Java type_retour nom_fonction (params : type) { instructions ; return expression ; } • l ’instruction return permet de retourner un résultat • type_retour précise le type du résultat retourné IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    38. Exemple int somme( int n) { int r = 0 ; for (i=1; i <= n; i++) r = r + i*i ; return r; } IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    39. Les tableaux Collection d’éléments de même type, auxquels on peut accéder grâce à un indice. Les éléments sont de type : • primitifs (réel, entier, caractère, …) • objets plus complexes (produits cartésiens … IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    40. Type Tableau bi : Tableau  Entier indice minimal bs : Tableau  Entier indice maximal longueur : Tableau  Entier nombre d’éléments accès : Tableau x Entier E remarque : accès(T, i)est noté T[i] change : Tableau x Entier x E  Tableau remarque : T[i] = e IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    41. Les tableaux en Java (Array) • Déclaration : nom_type [] nom_tableau ; • Définition:nom_tableau = new nom_type[n] ; • Les composantes d’un tableau commence à l’indice 0 et jusqu’à (n-1), si le tableau a n éléments. • Accès à un l’élément d ’indice i : t[i] • Modification de l’élément d ’indice i : t[i]=nv • Autre façon de définir un tableau : exemple boolean [] t = {true, false, true}; IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    42. Les tableaux en Java (suite) • int [] t = { 9, 10, 12, 13, 19, 8, 7, 0 }; • length fournit le nombre d’éléments du tableau t.length renvoie 8 • t[3] = 20 ; • parcours des éléments d’un tableau : for (i = 0; i < t.length; i++) { ... System.out.println(t[i]); } IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    43. Spécification du maximum des éléments d ’un tableau d’entiersdonnées : t : tab[1..n] d ’entiersrésultat : max : entier, maximum de tPrécondition : n > 0Postcondition : (i [1,n] max =t[i]) et (j [1,n] max  t[j]) IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    44. Traduction en JML/*@ requires t.length > 0; @ ensures (\exists int i; i  0 && i < t.length; @ \result == t[i]) && @ (\forall int j; j  0 && j < t.length; \result  t[j]); @*/ public int maximum ( int [] t){ … IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    45. Spécification -----------Algorithme | | | | JML JAVA IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml

    46. Exercice • Ecrire un algorithme qui remplit n éléments d’un tableau avec les carrés des n premiers nombres entiers. Faire la traduction Java de cet algorithme. IB1 2007-2008 Structures algorithmiques, Traduction Java et Jml