Seance2c TMIRI

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 23

Fonctions

vous allez apprendre :


● De quoi est constituée une fonction
● Les avantages de la programmation structurée avec ces fonctions
● Comment créer une fonction
● Les déclarations de variables locales d’une fonction
● Comment transmettre une valeur de la fonction vers le programme
● Comment passer des arguments à une fonction
Fonctions en C
Les principes
 En C, tout est fonction (Définition, Déclaration et Appel).
 Une fonction peut avoir autant de paramètres que l’on veut, même
aucun
(comme void main(void))
 Une fonction renvoie une valeur ou aucune.
 Les variables déclarées dans une fonction sont locales à cette fonction
 Une fonction possède un et un seul point d'entrée, mais
éventuellement plusieurs points de sortie (à l'aide du mot return).
 L'imbrication de fonctions n'est pas autorisée:
une fonction ne peut pas être déclarée à l'intérieur d'une autre fonction. Par contre, une fonction
peut appeler une autre fonction. Cette dernière doit être déclarée avant celle qui l'appelle.
Les fonctions et la programmation structurée
En utilisant des fonctions dans votre programme vous pratiquez la
programmation structurée.
Cela signifie que les différentes tâches du programme sont réalisées par des
portions de code indépendantes : les fonctions.

Avantages de la programmation structurée


La programmation structurée a deux avantages :
● Il est plus facile d’écrire un programme structuré.
● Un programme structuré est plus facile à corriger.
Étude d’un programme structuré

Ecrire un programme structuré

Etude préalable avant de créer la première ligne de code

Liste des tâches à réaliser par le programme


(Utiliser les fonctions)
Fonctions
Les fonctions sont des parties de code source qui permettent de réaliser le
même type de traitement plusieurs fois et/ou sur des variables différentes.
Les mots procédure et fonction sont employés dans le reste de ce chapitre
de manière quasi indifférente.

Une fonction en langage C peut :


– Modifier des données globales.
– Communiquer avec le reste du programme par une interface.
Définition
Une fonction est un bloc de code C indépendant, référencé par un nom, qui
réalise une tâche précise et qui peut renvoyer une valeur au programme qui
l’a appelée. Examinons cette définition :

● Une fonction est référencée par un nom.


● Une fonction est indépendante.
● Une fonction peut renvoyer une valeur au programme appelant.
Fonctions

Prototype de la fonction
type_retour nom_fonction (type_arg nom–1,..., type_arg nom–n);

Définition de la fonction
type_retour nom_fonction (type_arg nom–1, ..., type_arg nom–n);
{
    /* instructions; */
}
Définition d’une fonction
Lors de leur définition ou de leur utilisation les fonctions sont distinguées des
variables par la présence des parenthèses ouvrantes et fermantes.
Une fonction contient :
– une interface ;
– un corps de fonction qui est en fait un bloc d’instructions.

Int add(int a, int b) Fonction

{ Corps
int c; Bloc
c= a + b;
return C;
}
Fig Structure d’une fonction
L’interface complète d’une fonction contient :
– la déclaration du type de retour et du nom de la fonction ;
– une parenthèse ouvrante ;
– la déclaration des types et des noms des paramètres ;
– une parenthèse fermante.
Déclarer une fonction

TYPE de la valeur de retour 3 doubles comme paramètres

int print_table(double start, double end, double step)


{
double d;
Nom de la fonction
int lines = 1;

printf("Celsius\tFarenheit\n");
for(d = start; d <= end; d += step, lines++)
printf("%.1lf\t%.1lf\n", d, d * 1.8 + 32);

return lines;
}

Valeur renvoyée
Appeler une fonction
IMPORTANT: cette instruction spécifie comment la fonction est définie

#include <stdio.h>

int print_table(double, double, double);

void main(void)
{
int combien; Le compilateur attend des
double end = 100.0; doubles; les conversions sont
automatiques
combien = print_table(1.0,end,3);
print_table(end, 200, 15);
}
Règles de visibilité des variables
Les variables ne peuvent être utilisées que là où elles sont déclarées
double func(int x);
int glob=0; // variable globale

void main(void)
{
int i = 5, j, k = 2; //lacales à main
glob++;
func (i);
func (k);
}
double func(int v)
{
double d, f =v; //lacales à func
glob++;
f += glob;
return f;
}
Le tableau suivant donne des exemples de définitions de fonctions en C.
Exercice
Ecrire un programme en C avec une fonction qui permet de
calculer le cube d’un nombre
Fonctionnement
La Figure représente un programme qui appelle trois fonctions. Les
fonctions peuvent être appelées autant de fois que nécessaire et dans
n’importe quel ordre.

Les instructions d’une fonction dans un programme ne sont exécutées


que lorsqu’elles sont appelées par une autre partie de ce programme.
Exemple: (Le programme de gestion de vos adresses)
voici les tâches que devrait pouvoir faire ce programme :
F1: Saisir les nouveaux noms et adresses

F2: Modifier un enregistrement

F3: Trier les noms de famille

F4: Imprimer les noms et adresses sur des enveloppes

Lire la liste des adresses


existantes
de taper une ou plusieurs nouvelles
adresses.

Ajouter les nouveaux enregistrements.


Sauvegarder la nouvelle liste sur disque

Modifier un ou plusieurs enregistrements


Comme le montre la figure suivante, cette méthode de programmation
conduit à une structure de programme hiérarchique.
TP1
  Écrire un programme en C qui range au maximum (taille
Nmax ) 20 nombres entiers saisis au clavier dans un
tableau. Il doit gèrer en boucle le menu de choix suivant :

A-    Saisie et affichage 


B-    Moyenne
C-    Suppression du Max et affichage 
D-    Suppression du Min et affichage 
E-    Ajout d’un entier à une position donnée
Q-    Quitter
Le point A sera traité par deux fonctions :
Saisie : la saisie au clavier des entiers et leur rangement dans le tableau.
Dans cette fonction on demandera le nombre d’éléments (NE<= Nmax)à
saisire.
Affichage : affichage des données.
 
Le point B sera traité par une fonction :
Moyenne : fonction de calcul de la moyenne du tableau (avec affichage du résultat).
 
Le point C sera traité par trois fonctions :
Max_elem : une fonction qui retourne la position du maximum des valeurs du tableau.
Supprimer : supprime le Max du tableau.
Affichage : affichage des données.
 
Le point D sera traité par trois fonctions :
Min_elem : une fonction qui retourne la position du minimum des valeurs du tableau.
Supprimer : supprime le Mix du tableau.
Affichage : affichage des données.
 
Le point E sera traité par deux fonctions :
Ajout : c’est une fonction où on demande à l’utilisateur d’introduire l’entier et la
position. Puis vous insérer l’entier dans le tableau à la position indiquée.
Affichage : affichage des données.
Strings
• Le C n’a pas de type string, on utilise donc des tableaux de char.

• Un caractère spécial, le caractère “null”, marque la fin du string (à ne pas


confondre avec le pointeur NULL ).

• Ce caractère est noté ‘\0’, de code ASCII 0 .

• Ce caractère est soit ajouté automatiquement par le compilateur, soit à


introduire par le programmeur, dépendant des fonctions utilisées.

char ecole_name[5] ={ ‘E',‘N',‘S',‘A','\0'}; ‘E' ‘N' ‘S' ‘A' 0

char ville_name[6] =“Oujda"; ‘O' ‘u' ‘j' ‘d' ‘a' 0

char other[] = “Al Hoceima"; ‘A' ‘l' 32 ‘H' ‘o’ ‘c' ‘e' ‘i' ‘m' ‘a' 0

char characters[7] = "No null"; 'N' 'o' 32 'n' 'u' 'l' 'l'

Pas de ‘\0’
Entrées/Sorties Standards

• getchar() : lire un caractère sur entrée standard (valeur -1 = EOF = fin)
• putchar() : écrire un caractère sur sortie standard
 
Exemple: Copie de Input sur Output.
 
main(){
char c; main(){
c = getchar(); char c;
while (c != EOF) { while ( (c=getchar())!= EOF)
putchar(c); putchar(c);
c = getchar(); }
}
}
 

• Fichiers stdin et stdout: Tout programme lit ou écrit sur ces fichiers (défaut clavier et écran).
Affichage à l'écran des strings
• Soit caractère par caractère, avec le format “%c” ou putchar,
• ou, plus simplement, avec le format “%s” ou puts .

char last_name[6] = "Minor"; Minor 'M' 'i' 'n' 'o' 'r' 0

int i = 0;
last_name[3] = ‘\0’; Min

}
while(last_name[i] != '\0') printf("%s\n", last_name);
printf("%c", last_name[i++]); puts(last_name);
printf("\n");
Saisie des strings
char texte[30];
printf("ENTRER UN TEXTE: ");
scanf("%s", texte); //est équivalent à gets(texte);

! Une chaîne : pas de symbole &. On utilisera de


préférence la fonction gets non formatée.

Si text = un deux   entre scanf et gets?


RQ:
scanf ne permet pas la saisie d'une chaîne comportant des espaces:
les caractères saisis à partir de l'espace ne sont pas pris en compte.
Pour saisir une chaîne de type "il fait beau", il faut utiliser gets.

#include <stdio.h>
#include <string.h>
Affectation de strings :
Les strings peuvent être void main(void) {
initialisés avec “=”,
char who[] = "Tony Bloot";
mais pas affectés avec “=”
(ce sont des tableaux!) who = "John Minor";
strcpy(who, "John Minor");
}

Vous aimerez peut-être aussi