Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Fonctions.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Architecture du logiciel I.
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 435 Principes des systèmes d’exploitations
GEF 243B Programmation informatique appliquée Boucles §
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests.
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Modélisation II.
GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel et Vérification et validation.
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Résolution structurée des problèmes.
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Modules et masquage dinformation.
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
C.
Paramètres et pointeurs
Introduction à la POO: Les classes vs les objets
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Algorithmique et Programmation
Initiation à la conception de systèmes d'information
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
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.
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Structures de données IFT-2000
Introduction à la programmation objet Langage Java
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.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Algorithmique et programmation (1)‏
Tutorat en bio-informatique
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
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.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Permet de simplifier la maintenance d’un site
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
Transcription de la présentation:

Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Fonctions

Hiver 2010JGA Beaulieu Revue Quels sont les trois opérateurs logiques en C? Quelle est la précédence entre ces opérateurs? Quel est le problème avec loptimisation des expressions logiques en C?

Hiver 2010JGA Beaulieu Synopsis Attaquer la complexité Décomposition fonctionnel Fonctions Noms Type Paramètres Déclaration Définition Appel Communications inter-fonctions

Hiver 2010JGA Beaulieu Attaquer la complexité Jusquà maintenant, nous avons seulement vue des exemples de programmes forts simples. Mais le monde nest une place simple où lon peut vivre, en fait, il est très complexe Nos programmes appliqués doivent vivre dans le vrai monde Les humains se servent de trois concepts de base pour faire face à la complexité Décomposition Hiérarchie Abstraction

Hiver 2010JGA Beaulieu Décomposition Décomposition nous aide à séparer un problème complexe en plus petits problèmes qui sont plus facile à gérer. Les bénéfices les plus important dans la décomposition sont: Distribution de la charge de travail à dautre travailleurs Réutilisation des parties dune solution pour en résoudre un autre Augmentation de lextensibilité (habilité quun système a de grandir sans une augmentation exponentielle des efforts) Simplification des tests Coûts réduits Augmentation de la qualité … Le premier niveau de décomposition que nous allons étudier est celui des fonctions (notre premier regard au design)

Hiver 2010JGA Beaulieu Séparation fonctionnelle Pour résoudre un problème dans un langage structurel comme C, nous prenons une approche de haut en bas pour décomposer notre problème dune grosse fonction, main(), à de plus petites fonctions En prenant une approche haut en bas, nous séparons nos fonctions en hiérarchie. Quelle sorte? Une hiérarchie fonctionnelle

Hiver 2010JGA Beaulieu Séparation fonctionnelle Dans une approche de haut en bas, chaque fonction doit exécuter seulement une fonction. Si la fonction fait plus dune tâche, il y a une forte probabilité que: Elle est compliquée et non cohésive (pas certain de ce que la fonction fait ou son but principal) Sera difficile à vérifier (trop deffets) Pas facilement réutilisable (ne fait pas seulement une tâche) Elle a trop de paramètres (besoin de trop dinformation)

Hiver 2010JGA Beaulieu Séparation fonctionnelle Les séparations fonctionnelles ( functional breakdowns ) sont normalement représentées dans des graphes de structure ( structure charts ) Cela montre une hiérarchie fonctionnelle

Hiver 2010JGA Beaulieu Séparation fonctionnelle Vous continuez à séparer vos fonctions jusquà ce que chaque fonction représente un but simple qui peut être facilement comprit. Ce processus est appelé factorisation Ex.: Vous devez écrire un programme qui lit un fichier, et qui donne un estimé du nombre moyen de lettres par mots. La prochaine diapositive vous montre une structure possible pour ce programme

Hiver 2010JGA Beaulieu Séparation fonctionnelle NombreMoyen Main() OuvreFichierLitMots CompteAuProchEspace Statistiques ImprimeRésultats ImprimeEntête ImprimeStats FermeFichier Graphe de structure

Hiver 2010JGA Beaulieu Séparation fonctionnelle Nous avons parlé de deux des trois concepts pour attaquer la complexité: Décomposition et hiérarchie. Nous allons maintenant regarder le troisième concept: Abstraction Croyez le ou non, mais nous avons déjà créé des abstractions: les fonctions.

Hiver 2010JGA Beaulieu Séparation fonctionnelle Pourquoi est-ce que les fonctions sont des abstractions? Les humains sont excellents pour faire des abstractions; nos cerveaux sont des filtres passe- bas (Puis yen a que ça passe plus bas que dautre…) Nous ne voulons pas savoir touts les détails sur tout, nous voulons seulement utiliser linformation qui établie un niveau de connaissances confortable pour la tâche qui nous intéresse

Hiver 2010JGA Beaulieu Séparation fonctionnelle Une abstraction dune automobile pour Homer: Accélérateur Pédale de freins Volant Miroirs Odomètre Porte-gobelets Klaxon Clignotants (optionnels)

Hiver 2010JGA Beaulieu Fonctions – Ce que nous savons jusquà maintenant Les fonctions sont au plus bas niveau de la décomposition dun problème Chaque fonction devrait avoir un seul but ou tâche à exécuter Les fonctions sont représentées dans un graphe de structure qui est une hiérarchie (fonctionnelle) Une fonction est une abstraction parce quelle peut cacher les détails dune tâche et elle réduit linterface à des paramètres et une valeur de retour. ( Il ne faut pas oublier que les fonctions peuvent avoir des effets secondaires.)

Hiver 2010JGA Beaulieu Fonctions – Avantages Les fonctions nous permettent de factoriser nos problèmes en parties gérables et compréhensibles Elles facilitent la distribution du travail Elles permettent la réutilisation du code – bibliothèques et fonctions définies par les programmeurs de systèmes Elles nous permettent de protéger de linformation en dedans de chaque fonction (visibilité) Et encore plus…

Hiver 2010JGA Beaulieu Fonctions – Lorigine Originalement, les sous routines ou procédures furent crées pour permettre la réutilisation dun bloc de code à différentes places dans un même programme Dans les années 1970 la programmation structurée et le raffinement par étapes ( stepwise ) sont devenues les méthodes de design préférées Le raffinement par étapes consiste en plusieurs itérations qui ont pour but de séparer les fonctions (sous routines) à lintérieure dun programme

Hiver 2010JGA Beaulieu Fonctions – Noms Une fonction doit avoir un nom qui reflète son but float CalculMoyenneClasse(float notes[], int etudiants); //oui float CMC(float n[], int i); // non On se souvient des conventions de nommage Première lettre des fonctions en majuscule Nom descriptif, mots entiers pas dabréviations Majuscule au début de chaque mot

Hiver 2010JGA Beaulieu Fonctions - Type Une fonction a un type; donc une fonction doit être déclaré avec son type Le type de la fonction est déterminé par ce que la fonction retourne (la variable) Une fonction peut retourner seulement une valeur Plus sur cela plus tard Contrairement aux variables, une fonction peut avoir le type void void MaFonction(void);

Hiver 2010JGA Beaulieu Fonctions - Type Une fonction void ne peut pas faire partie dune expression dassignation, elle peut seulement être un énoncé; Parce quelle retourne void (un zilchoctet de données) Si vous ne définissez pas le type explicitement, C assume quelle retourne un integer Ne faites pas cela dans ce cours.

Hiver 2010JGA Beaulieu Fonction - Paramètres Il y a deux façons principales pour échanger de linformation entre les fonctions Variables partagées (variables globales) – Communication Informelle de données. Faites vous une faveur, évitez dutiliser les variables globales a moins que cela soit absolument nécessaire * Passage de paramètres – La déclaration formelle dinformation nécessaire pour quune fonction rencontre son but *Ce nest jamais nécessaire.

Hiver 2010JGA Beaulieu Fonctions - Déclaration Une fonction est déclarée avec un prototype Notez quil y a une différence entre déclaration et définition Le prototype de fonction consiste en un entête de fonction et un point-virgule. Type_de_retour NomDeFonction (liste de paramètres formels); Ex.: void BonjourMonde(void); //Pas de retour pas de paramètres int FactorialCalc(int number); //Peut être utilisé dans une //expression

Hiver 2010JGA Beaulieu Classification de fonctions Nous pouvons classifier les fonctions dans 4 groupes Fonctions void sans paramètres void Bonjour (void); //Imprime pré-init //bonjour Fonctions void avec paramètres void ImprimeInt (int x); //Imprime x à lécran Fonction non- void sans paramètres int PrendQuantite (void); //Retourne une //quantité du clavier Fonctions non- void avec paramètres int Racine (int x); //Retourne la racine //de x

Hiver 2010JGA Beaulieu Fonctions - Définition La définition du code de la fonction Son implémentation Notez que il ny a pas de point-virgule dans lentête de la fonction pour la définition alors quil y en a un pour la déclaration du prototype

Hiver 2010JGA Beaulieu Fonctions - Définition Type_de_retour NomDeFonction (liste formelle de paramètres) { \*définitions locales*\ … \*énoncés*\ … } \\ nom de la fonction entête corp s

Hiver 2010JGA Beaulieu Fonctions - Définition Le type de cette fonction doit être explicite Utilisez un return même si vous retournez rien

Hiver 2010JGA Beaulieu Fonction - appel Une fonction est appelée dans le code en utilisant son nom et une liste de paramètres actuels Les noms de paramètres nont pas besoin dêtre les mêmes que pour les paramètres formels Les paramètres peuvent être passés par valeur ou par référence (nous allons revenir à cela quand on va regarder les tableaux, opérateurs de pointeurs et dadresses) int Multiplie(int a, int b); //déclaration … int premierInt=10, secondInt=20; … produit = Multiplie(premierInt, secondInt);

Fonctions – Déclaration, Définition et Appel Le nom dune fonction peut être utilisé de trois façons différentes dans un programme Déclaration – fait avec un énoncé de prototype avec un point-virgule Définition – lélaboration (code) de la fonction sans le point-virgule Appel – lutilisation de la fonction dans un énoncé

Hiver 2010JGA Beaulieu 3gInter-Function Communications Il y a trois stratégies de communications entre les fonctions appelées et appelantes : Vers le bas Vers le haut Bi-directionnel

Hiver 2010JGA Beaulieu 3gInter-Function Communications Flot vers le bas: Appels de fonctions envoie des données aux fonctions qui sont appelées en utilisant des paramètres Flot vers le haut: Les fonctions appelées envoient des données de retours vers les fonctions qui appellent Pour linstant on considère que une valeur unique est envoyée Flot bi-directionnel : Les fonctions qui appellent les autres fonctions envoie des paramètres et les fonctions appelées envoie des valeurs de retour. Les paramètres peuvent être passés par valeur ou référence On y revient plus tard

Hiver 2010JGA Beaulieu Quiz Time Quelle est la différence entre une définition et une déclaration pour une fonction? Est-ce que les noms de paramètres sont requis dans le prototype de fonction? Pourquoi définit-on des fonctions comme programmeurs?