Décomposition et paramétrage des algorithmes

Slides:



Advertisements
Présentations similaires
La boucle for : init7.c et init71.c
Advertisements

Chapitre annexe. Récursivité
Algorithmique (suite)
Portée des variables VBA & Excel
Fonctions & procédures
EXERCICE 2.1 : APRES AVOIR DEMANDE LA SAISIE DUN NOMBRE POSITIF (ERREUR DE SAISIE A TRAITER). AFFICHER LE DECOMPTE EN PARTANT DE CE NOMBRE JUSQUÀ ARRIVER.
DECLARATION DE VARIABLES
Algorithmique Résume.
Les Structures. Introduction : Imaginons que lon veuille afficher les notes dune classe délèves par ordre croissant avec les noms et prénoms de chaque.
3- Déclaration et accès aux objets
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
FLSI602 Génie Informatique et Réseaux
Section VIII Modularité Partie II
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
1)Boucle for 2)Boucle while
Utilisation des tableaux
Les bases de l’Algorithmique
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Démarche de résolution de problèmes
Section XI Traitement de fichiers
Algorithmique et Programmation
Les éléments de base de l’algorithmique
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
Algorithmique et Programmation
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Algorithmes au lycée. Extrait Bac S Métropole Juin 2012.
Les structure d’un programme :
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Les constantes de compilation. Les fonctions.
Chapitre 9 Les sous-programmes.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Python Fonction et procédure
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
LA LOGIQUE ALGORITHMIQUE
Institut de Formation aux Métiers de l’industrie Automobile.
Sous-programmes.
Déclaration des données constantes Déclaration des données variables
ALGORITHMIQUE IUT Vélizy – DUT Info - 1ère année Laurent Marsan
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
Cours d’ Algorithmique 2012 Algorithmique. Cours d’ Algorithmique 2012 Qu’est ce que l’Algorithmique ? Avez-vous déjà suivi une recette ? Avez-vous déjà.
Introduction au langage C Fonctions et Procédures
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
Les types composés Les enregistrements.
Cours LCS N°4 Présenté par Mr: LALLALI
Introduction à la récursivité
 Formulaires HTML : traiter les entrées utilisateur
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Initiation à l’Algorithmique
Cours 5 - Trois algorithmes de tri d'un tableau
1 Algorithmique, cours 3 Septembre Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Algorithmique Tableaux de données
Les Structures simples
Visibilité de variables Paramètres de fonction premier auteur : Agata Savary.
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Introduction à l’Informatique Licence SPI Mme Delmotte.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Transcription de la présentation:

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 : 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é)

2 - Décomposition 1 – Appel simple Exemple : 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. Algorithme étoile() // affiche 2 lignes de 60 étoiles aux i,j: entier; début pour i de 1 à 2 faire pour j de 1 à 60 faire écrire(’*’); fait; écrire("\n"); fait fin étoile Algorithme Appelant() //… début étoile(); //calculs étoile(); //calculs étoile(); fin Appelant 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).

on souhaite préciser à étoile la largeur de la ligne à afficher. 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

distinguer paramètre formel et paramètre effectif 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.

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.

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, 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 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; posmin = deb; pour i de deb+1 à fin faire si tab[i] < tab[posmin] alors posmin = i; fsi; retourne posmin; fin chercheMin Algorithme échange(R tab:tab100Entiers, i,j :entier) //Echange deux cases d'un tableau aux t: entier; t = tab[i]; tab[i] = tab[j]; tab[j] = t; fin échange Algorithme affiche(tab:tab100Entiers) //Affiche le tableau aux i: entier; pour i de 1 à 100 faire écrire(tab[i]); fin affiche 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; pour i de 1 à 100 faire écrire(tab[i]); fin tri_sélection

(Principe objet. Ex: recherche de position du minima du tri, voiture) 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)

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

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(R a: 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érence accessible et donc modifiable par les deux algorithmes concernés: l'appelé et l'appelant

LES PARAMÈTRES PASSÉS PAR VALEUR SONT DES ENTRÉES. 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.

Dans ce mode, le paramètre effectif et le paramètre formel 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

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).

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)

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?

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

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

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

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é

5 – Application: gestion de polynômes 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

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