1 / 21

Cours 3 Décomposition et paramétrage des algorithmes

Cours 3 Décomposition et paramétrage des algorithmes. 1 - Introduction. Algorithme trop long, trop complexe  décomposition en plusieurs algorithmes, chacun résolvant une partie du problème posé. (Ces algorithmes « s’appellent » entre eux). Jusqu’ici, nous avons vu 2 types d’instructions :

Download Presentation

Cours 3 Décomposition et paramétrage des algorithmes

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours 3 Décomposition et paramétrage des algorithmes

  2. 1 - Introduction Algorithme trop long, trop complexe décomposition en plusieurs algorithmes, chacun résolvant une partie du problème posé. (Ces algorithmes « s’appellent » entre eux) Jusqu’ici, nous avons vu 2 types d’instructions : • celles qui traitent directement l’information : • l’affectation ( = ) • la lecture/écriture vers écran/clavier (lire, écrire) • celles qui commandent le déroulement du programme : • structures de contrôle (si…alors…fsi) • boucles(tant que, répéter, pour …) Nous verrons dans ce chapitre un troisième type d’instruction : l’appel depuis un algorithme (l’appelant) d’un autre algorithme (l’appelé)

  3. 2 - Décomposition Algorithme étoile()// affiche 2 lignes de 60 étoilesaux i,j: entier; début pour i de 1 à 2 faire pour j de 1 à 60 faire écrire(’*’); fait; écrire("\n"); faitfin étoile Algorithme Appelant()//…début étoile(); //calculs étoile(); //calculs étoile();fin Appelant 1 – Appel simpleExemple : un algorithme Appelant réalise deux séries de calculs, et fait toujours précéder et suivre ces calculs par deux lignes de 60 étoiles.Pour cela, il fait appel à un algorithme étoile qui affiche ces deux lignes d ’étoiles. Remarque : peu importe comment a été conçu et écrit l’algorithme étoile: Pour l’utiliser, il suffit de connaître ses spécifications (son en-tête).

  4. 2 – Passage de paramètre(s) Rappel: un paramètre est une variable reçue en entrée par un algorithme. Même exemple que précédemment mais: on souhaite préciser à étoile la largeur de la ligne à afficher. • On modifie donc étoile en conséquence:On ajoute à étoile un paramètre : un identificateur + son type

  5. Dans Appelant, lors de l’appel de étoile, on précise dorénavant la valeur que l’on souhaite attribuer au paramètre nb. Sinon étoile ne peut pas fonctionner.Lors de l'exécution de l'appel, cette valeur est copiée dans nb. • distinguer paramètre formel et paramètre effectif Un paramètre formel est une variable formelle - sans valeur - déclarée dans l'en-tête d'un algorithme. Un paramètre effectif est une variable ou une valeur qui est copiée dans le paramètre formel correspondant au moment de l'appel.

  6. On souhaite maintenant pouvoir préciser dans étoile (qui devient lignes): • le symbole à utiliser • le nombre de lignes • le nombre de symboles par ligne Remarques : 1. un appel contient autant de paramètres effectifs qu’il y a de paramètres formels dans l'algorithme appelé; 2. la correspondance paramètre formel/paramètre effectif est établie en fonction de leur ordre dans l’appel et dans l’en-tête ; 3. chaque paramètre effectif doit être du même type que le paramètre formel lui correspondant. 4. les paramètres formels et effectifs associés n'ont pas forcément le même nom.

  7. Algorithme tri_sélection(tab: tab100Entiers) // Trie 100 entiers et affiche le résultat aux i, posmin : entier; début pour i de 1 à 99 faire posmin = cherchePosMin(tab, i, 100); échange(tab, i, posmin); fait affiche(tab); fin tri_sélection Algorithme affiche(tab:tab100Entiers) //Affiche le tableau aux i: entier; début pour i de 1 à 100 faire écrire(tab[i]); fait fin affiche Fonction cherchePosMin(tab:tab100Entiers, deb, fin: entier) retourne entier {deb<=fin, deb>=1, fin<=100} //Cherche le minima d'une portion du tableau aux i, posmin: entier; début posmin = deb; pour i de deb+1 à fin faire si tab[i] < tab[posmin] alors posmin = i; fsi; fait retourne posmin; fin chercheMin Algorithme échange(R tab:tab100Entiers, i,j :entier) //Echange deux cases d'un tableau aux t: entier; début t = tab[i]; tab[i] = tab[j]; tab[j] = t; fin échange 3 – Pourquoi décomposer des algorithmes? A - Algorithme plus lisible, résolution facilitée Algorithme tri_sélection(tab: tab100Entiers) // Trie 100 entiers et affiche le résultat aux i, j, posmin, temp: entier; début pour i de 1 à 99 faire posmin = i; pour j de i+1 à 100 faire si tab[j] < tab[posmin] alors posmin = j; fsi fait temp = tab[i]; tab[i] = tab[posmin]; tab[posmin] = i; fait pour i de 1 à 100 faire écrire(tab[i]); fait fin tri_sélection

  8. 3 – Pourquoi décomposer des algorithmes? A - Algorithme plus lisible, résolution facilitée B - Réutilisation • dans un même programme (ex: étoile) • entre différents programmes (ex: tri) C - Modification d'une sous-partie: seul le respect de l'interface importe (Principe objet. Ex: recherche de position du minima du tri, voiture)

  9. ! A PARTIR DE MAINTENANT, ON MODIFIE LA SYNTAXE D'ÉCRITURE DES ALGORITHMES

  10. 3 – Les différents modes de transmission des paramètres Chaque paramètre d'un algorithme sera maintenant décrit par son nom de variable, son type et son mode de transmission (R ou V).Algorithme truc(Ra: entier) Ce mode de transmission indique si le paramètre effectif est : une Valeur fournie par l’algorithme appelant à l'algorithme appelé une Référenceaccessible et donc modifiable par les deux algorithmes concernés: l'appelé et l'appelant

  11. 1 – Le passage par valeur (noté V) • Comportement utilisé depuis le début de l'année • Seules les valeurs des paramètres effectifs sont transmises,le paramètre formel (appelé) est une copie du paramètre effectif (appelant) • Avantage: garantie que les paramètres effectifs sont intacts après l'appel (ex: moyenne) • Inconvénient: impossible de récupérer un résultat! (ex: moyenne) LES PARAMÈTRES PASSÉS PAR VALEUR SONT DES ENTRÉES.

  12. 2 – Le passage par référence (noté R) Dans ce mode, le paramètre effectif et le paramètre formel (dont les noms peuvent différer) désignent une seule et même variable modifiable par les deux algorithmes : l'appelé et l'appelant. Exemple: moyenne d'entiers avec V ou R

  13. Autre exemple: permutation d'entiers On veut créer un algorithme qui permute deux valeurs. LES PARAMÈTRES PASSÉS PAR RÉFÉRENCE SONT : • SOIT DES SORTIES (Ex: moyenne) • SOIT DES ENTRÉES/SORTIES (Ex: permutation).

  14. 4 – Procédures et fonctions Du point de vue des SORTIES, quels sont les différents types d'algorithmes que nous pouvons rencontrer? On appelle fonction tout algorithme n'ayant qu'une seule sortie. Fonction • des algorithmes sans sortie • des algorithmes à une seule sortie • des algorithmes à plusieurs sorties Pour ces algorithmes, au lieu d'écrire l'en-tête suivant : algorithme moyenne (V a, b : flottant, R m: flottant) on pourra écrire: fonction moyenne (V a, b : flottant) retourne flottant Tous les autres algorithmes sont appelés "procédures" : procédure étoile(V nblignes, nbsymb: entier, V symbole: caractère)

  15. Des fonctions, pour quoi faire? • syntaxe rapprochée des fonctions mathématiques • intégration des appels dans des expressions Ex: moyenne : fonction ou procédure?

  16. REMARQUE 1 Pourquoi ne pas utiliser que des fonctions? Ex: algo « moyenne et somme »: multi-affectation? utilisation des structures?

  17. REMARQUE 2 Le choix des E/S dans un algorithme a des conséquences importantes sur l'utilisation de cet algorithme. Ex: moyenne de deux entiers et affichage affichage ou saisie interdisent un usage interne de la fonction

  18. REMARQUE 3 L'introduction du mot-clé retourne implique éventuellement l'existence de plusieurs points de sortie dans une fonctionou une procédure. Ex: …

  19. REMARQUE 4 Il ne faut pas oublier qu'un appel de fonction ou procédure peut masquer un algorithme complexe et coûteux. Ex: factorielle au carré

  20. 1 – Quelle représentation utiliser? Nous choisissons de créer un type Polynôme : c'est une structure contenant un tableau des coefficients et un degré. (Le degré du polynôme représenté est donc limité par la taille du tableau.) Ex: Quelle représentation pour f(x) = 9.5 - 8.1 x + 3.2 x2 + 4.1 x4 ? 5 – Application: gestion de polynômes

  21. 2 – Opérations à implanter Les opérations que nous voulons effectuer sur ces polynômes sont : • la saisie d’un polynôme • l’affichage d’un polynôme • le calcul de la valeur d’un polynôme f en x : f (x) • le calcul de la dérivée d’un polynôme • le calcul du produit de deux polynômes f et g

More Related