Les fonctions. Déclaration/Prototypes C’est une instruction fournissant au compilateur des infos sur une fonction qu’on envisage d’appeler par le suite.

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Programmation Orienté Objet en C++
Rappels C.
C++ 6ème cours Patrick Reuter maître de conférences
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
C.
Paramètres et pointeurs
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Fonctions Dans un programme : certaines opérations (ou séquences d'opérations) peuvent se répéter plusieurs fois : affichage de tableau, saisie, ou même.
FLSI602 Génie Informatique et Réseaux
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
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)
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
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.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
IFT-2000: Structures de données
Structures de données IFT-2000
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
C++ : variables Déclaration de variables
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Le langage C Rappel Pointeurs & Allocation de mémoire.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
ALGORITHMIQUE ET PROGRAMMATION C
Les types.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Introduction au langage C Fonctions et Procédures
Les types composés Les enregistrements.
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.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Les bases de l’algorithmique
Patricia Renault UPMC 2005/2006
8PRO107 Éléments de programmation Les adresses et les pointeurs.
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.
PRO-1027 Programmation Scientifique en C
Langage de Programmation Orientée Objet : C++
Exercices sur les pointeurs. lireCar/remettreCar Lorsque l’on lit caractère par caractère, on ne peut pas savoir qu’on a atteint un caractère avant de.
Directives Ocaml Définition
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
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.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Informatique 2A Langage C 3 ème séance.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Transcription de la présentation:

Les fonctions

Déclaration/Prototypes C’est une instruction fournissant au compilateur des infos sur une fonction qu’on envisage d’appeler par le suite C tolère une déclaration réduite, source d’erreurs. –float *fct(int n, char c, double *d); //ANSI –float *fct(int, char, double *);//ANSI –float *fct();//PAS ANSI Appel en cas d’absence: par défaut, on suppose une déclaration int g() (ce qui peut impliquer des conversions implicites!!!)

Définition C’est l’ensemble des instructions qui précisent les actions à exécuter lors de son appel. Constitué de deux parties: –Une en-tête –Un corps formé d’un bloc d’instructions… Initiale: float poly(x,b,c) float x; int b,c; { } ANSI: float poly(float x, int b, int c){ }

Définition (2) Les arguments apparaissant dans l’en-tête peuvent être de tout type. Lors de leur déclaration, on peut compléter leur type avec des qualifieurs (const, register, …) float fct(register int p, const double df); Une fonction sans argument : float tirage(void){…} ( ou float tirage(){…} )

Passage d’arguments par valeur Valeur d’une variable simple: void impression(int x; int y){ printf(``(%d,%d)\n``,x,y); } int i, j, t[TAILLE]; impression(6,2); impression(i, j); impression(3*i+j, t[i]); Un appel par valeur: la fonction fait une copie de l’argument et la met dans une variable locale à la fonction.

Attention! Comme le C passe les arguments des fonctions par valeurs, la fonction appelée n’a aucun moyen direct de modifier une variable de la fonction appelante! Mauvais exemple: echange(a,b); void echanger(int x, int y){ int temp; temp = x; x = y; y = temp; } Bon exemple: echange(&a,&b); Void echange(int *px, int *py){ int temp; temp = *px; *px = *py; *py = temp; }

Passage de types complexes struct point {int x,y}; void lect1(int *p_a, int *p_b); void lect2(point *p_pt); void main(void){ struct point pt1, pt2; lect1(&(pt1.x),&(pt1.y)); lect2(&pt2); } void lect1(int *pa, int *pb){ printf(``abscisse: ``); scanf(``%d``,pa); printf(``ordonnée: ``); scanf(``%d``,pb); } void lect2(point *pt){ printf(``abscisse: ``); scanf(``%d``,&(pt  x)); }

Tableau en paramètre d’une fonction Le passage par valeur d’un tableau n’existe pas en langage C: seule l’adresse de début de zone mémoire où sont stockées les valeurs est passé à la fonction appelée (rappel: tableau == pointeur) Donc il est inutile de préciser la taille totale du tableau lors de la déclaration de la fonction void affiche(char ch[]); void affiche(char ch*); (rappel la vraie nature) Mais: void affiche(char ch[][10]); Pour que la fonction puisse calculer l’adresse d’un élément. ch[i][j] est équivalent à *(ch+i*10+j)

Fonction passée en paramètre d’une fonction Ex:void fct_save(void (fct) (int), int masque){ … fct(masque); … } Appel par: fct_save(maFonction,2); Exemple: int incr(int a); fct_save(int (incr)(int), 34);

La valeur de retour (1) type nom_fonction(liste_argument){instructions;} Le type retourné peut être tout type simple, une structure ou un pointeur. Ne peut retourner de tableau ni de fonction. (mais un pointeur sur une fonction). Une fonction ne peut retourner qu’une seule valeur. Quand une fonction ne retourne pas de valeur, mettre le type void.

Valeur de retour La déclarer, avec presque tout les qualificateurs: const int *maFonction(int p, double v); Ne peut renvoyer de fonctions, de tableaux (zones mémoires statiques) ou de valeur const. Mais peut renvoyer des pointeurs dessus. En absence de valeur de retour, utiliser void int *f (double n); int ( *f (int, char) )[5];

Les blagues Exemple: int incr(int a){return(++a);} Ne pas retourner en résultat un pointeur sur une zone mémoire dont le programme n’a plus le contrôle. Incorrect: int *f(int x){ int taille[TAILLE]; return(table); } Correct: déclarer le tableau comme une variable static int *f(int a){ static int table[TAILLE]; return(table); } Correct: allouer dynamiquement si on veut un nouveau tableau ) chaque fois. int *f(int a){ int *p; p=(int*)malloc(TAILLE*sizeof(int)); return(p); }

Corrigez: int nb_jour[13]; void init(nb_jour tab){ … } int ajoute(int x, int y, int z){ return(z = x + y); }