Cours de Langage C Les fonctions en C



Documents pareils
I. Introduction aux fonctions : les fonctions standards

Cours Langage C/C++ Programmation modulaire

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Le langage C. Séance n 4

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Le prototype de la fonction main()

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction au langage C

Programmation système I Les entrées/sorties

Bases de programmation. Cours 5. Structurer les données

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Algorithmique et Programmation, IMA

Compression de Données - Algorithme de Huffman Document de Conception

Java Licence Professionnelle CISII,

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Les chaînes de caractères

Chap III : Les tableaux

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Programmation Classique en langage C


Cours Programmation Système

Outils pour la pratique

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Les structures. Chapitre 3

Cours d algorithmique pour la classe de 2nde

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

OS Réseaux et Programmation Système - C5

Cours d initiation à la programmation en C++ Johann Cuenin

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Langage Éric Guérin 5 octobre 2010

Initiation. àl algorithmique et à la programmation. en C

Chapitre 1 : La gestion dynamique de la mémoire

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Algorithmique, Structures de données et langage C

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Initiation à l algorithmique

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Programmation système de commandes en C

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation en langage C

Premiers Pas en Programmation Objet : les Classes et les Objets

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Analyse de sécurité de logiciels système par typage statique

Présentation du langage et premières fonctions

I00 Éléments d architecture

IUT ANNECY Département Mesures Physiques Cours d informatique Initiation au langage C

et Programmation Objet

Programmation C++ (débutant)/instructions for, while et do...while

3IS - Système d'exploitation linux - Programmation système

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

ALGORITHMIQUE ET PROGRAMMATION En C

Langage Java. Classe de première SI

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique et de Langage C v 3.0

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Utilisation d objets : String et ArrayList

Arguments d un programme

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire

PROJET 1 : BASE DE DONNÉES REPARTIES

Chapitre 2. Classes et objets

Programme Compte bancaire (code)

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Claude Delannoy. 3 e édition C++

INITIATION A LA PROGRAMMATION

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Chapitre 5 : Les procédures stockées PL/SQL

UE Programmation Impérative Licence 2ème Année

Programmation C. J.-F. Lalande. 15 novembre 2012

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Programmation stochastique

SUPPORT DE COURS. Langage C

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Gestion de la mémoire

Quelques éléments de compilation en C et makefiles

STAGE IREM 0- Premiers pas en Python

V- Manipulations de nombres en binaire

Rappels Entrées -Sorties

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

TP 1. Prise en main du langage Python

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

INFO-F-404 : Techniques avancées de systèmes d exploitation

Derrière toi Une machine virtuelle!

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1 : Initiation à Java et Eclipse

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chapitre 10 : Logiciels

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Les fichiers. Chapitre 4

Transcription:

Cours de Langage C Les fonctions en C

Programmation modulaire Un programme dépassant une ou deux pages est difficile à comprendre Une écriture modulaire permet de scinder le programme en plusieurs parties et sous parties En C, le module se nomme la «fonction». Le programmeprincipal principal décrit essentiellement les enchaînements des fonctions 2

Programmation modulaire Bien différencier : Le texte (ou code) d un programme qui est donc une suite de fonctions non emboîtées (on ne définit pas une fonction dans une autre fonction) Une fonction appelée dans une autre fonction a son code propre séparé de la fonction appelante L exécution d un programme qui va enchaîner instructions, appels de fonctions (appelant elles mêmes des fonctions) etc. 3

Les fonctions Dès qu un groupe de lignes revient plusieurs fois on les regroupe dans une fonction Une fonction se reconnaît à ses () Une fonction en C est assez proche de la notion mathématique de fonction: Exemples : y = sqrt(x) ; Z = pgcd(a,b) ; 4

Intérêt des fonctions Lisibilité du code Réutilisation de la fonction Tests facilités Évolutivité du code Plus tard : les fonctions dans des fichiers séparés du main.c Nb : une fonction peutfaire appel à d autres fonctions dans son code dans ses arguments 5

Bibliothèques de fonctions Il existe des bibliothèques de fonctions déjà programmées. Exemples : math.h : fonctions math. stdio.h: standard input output p stdlib.h : bibli. standard time.h : fonctions temporelles Nous créerons nos propres bibliothèques au cours de la session de C 6

2 types de fonctions Des fonctions qui s exécutent sans retourner de valeurs nommées procédures dans certains langages g Seront typées void Ex : une fonction qui affiche «bonjour» void affiche_bonjour() {printf(«bonjour»);} Des fonctions qui s exécutent et retournent une valeur Exemples : sin(x) ; z = sqrt(x) ; Auront le type de la valeur à retourner 7

Définition, déclaration, et appel d une fonction On rencontre le nom des fonctions dans 3 cas : Déclaration : le type de la fonction et de ses arguments 1 seule fois Définition : codage de la fonction 1 seule fois Appels (= utilisations) de la fonction n fois 8

Paramètres réels paramètres formels Un paramètre ou argument réel, est une valeur ou une variable qui est mis entre parenthèses lors del appel de la fonction. Il existe vraiment en mémoire. Un paramètre ou argument formel est un nom de variable utilisé lors dela déclaration dela fonction. Le nom peut être omis (pas conseillé) Necorrespond pas à unemplacement mémoire 9

Déclaration d une fonction Permet au compilateur de vérifier l adéquation des types et de réserver l espace mémoire pour la valeur de retour A l aide d un prototype de fonction utilisant des paramètres formels typés de la forme : Type retourné NOM FONCTION (type1 paramètre1, type2 paramètre2, ) ; double CalculePrixNet(double prix, double tauxtva) ; NB : on peut définir une fonction avec autant de paramètres formels qu on veut. Dans l exemple exemple, il y a deux paramètres formels.

Définition d une fonction C est le code de la fonction, de la forme : Type retourné NOM FONCTION (type1 paramètre1, type2 paramètre2, ) { Déclaration des autres variables de la fonction; Code de la fonction; return (valeur de la fonction) ; } 11

Attention! En C, une fonction ne peut retourner qu une valeur (au plus) grâce à la commande return Le type de la fonction doit être le même que celui de la valeur retournée Le programme appelant doit stocker ce résultat dans une variable de même type (ou bien ne rien stocker) Quand une fonction ne retourne pas de valeur elle est typée void Exemples : void main() ; void AfficheBonjour(); 12

Le return Retourne la valeur au programme appelant Et interrompt immédiatement l exécution de la fonction On peut avoir plusieurs return Mais un seul return pris en compte à chaque exécution 13

Variables locales variables globales Définition : Un bloc est la partie de code compris entre {} Une variable créee dans un bloc n existe que dans ce bloc C est Cest une variable locale au bloc Elle ne sera pas connue en dehors Sa valeur est perdue à la sortie du bloc «Sa durée de vie est celle du bloc» 14

Variables locales variables globales Une variable globale existe en dehors de tout bloc Elle a sa mémoire réservée pour toute l exécution du programme «Sa durée de vie est celle du programme» Exemple : int i ; main() { i=2; printf( %d,i); } Conseil : Soyez le plus local possible 15

Déclaration de variables dans les fonctions De 2 manières : int triple (int x ) { int y ; y = 3 * x ; return (y) ; } y est locale à la fonction Sa valeur sera perdue à la sortie de la fonction x est locale à la fonction Elle est initialisée lors de l appel à la valeur fournie par le programme appelant Sa valeur sera perdue à la sortie de la fonction Nb : on parle de passage par valeur des arguments : leurs valeurs sont recopiées dans des variables locales à la fonction 16

Appels de fonctions : exemples Utilisations : int main() { int a=2 ; int b ; triple(2) ; triple(a) ; b = triple(a) ; a = triple(a) ; return 0; } 17

Appel d une fonction Appel de la fonction à partir d une autre fonction (par ex le main) Création des variables locales et copie des valeurs des arguments de l appel dans les variables locales de la fonction Y=Pgcd(A,B) int Pgcd(X,Y) Exécution de la fonction La fonction retourne une valeur. Fin de la fonction. Les variables locales à la fonction cessent d exister La fonction appelante peut récupérer la valeur de retour Y prend la valeur du Pgcd 18

Fonctions et tableau Un tableau peut être un argument d entrée d une fonction Mais pas un élément retourné (pas à ce stade) La syntaxe est : int tab[22] ; int N = 22 ; // bout de code m = Moyenne(tab,N) ; // bout de code x = Maximum(tab,N)) ; On transmet donc le nom du tableau sans crochets Très souvent, le nombre d éléments du tableau sur lequel on souhaite travailléest aussi un argument de lafonction pour donner un caractère générique à la fonction. 19

D autres exemples de fonctions AireRectangle(A,B) Moyenne(a,b,c,2,18,9),,,, Mensualite(SommeEmpruntee, TauxEmprunt, NombreDeMois) Afficher(AireRectangle(A,B)) ( Une fonction peut avoir 1 ou plusieurs paramètres d entrée dentrée Les paramètres peuvent être de types différents Une fonction peut utiliser comme argument une autre fonction C est permis grâce à la création de variables locales lors de l appel 20

Structure d un code utilisant des fonctions #include #define Déclarations des fonctions (prototypes) main() { appels aux fonctions } Définitions des fonctions 21

Codage d une fonction : exemple #include <stdio.h> int triple(int x) ; //prototype int main() { int a=2 ; int b ; triple(2) ; //appels triple(a) ; b = triple(a) ; a = triple(a) ; return 0; } int triple(int x) //définition { return (3*x) ; } 22

La fonction main() main est une fonction main() int main() void main() Apparition possible de warnings à la compilation 23

Les bonnes pratiques de programmation Une fonction ne fait en général qu une chose Le nom de la fonction décrit cette chose ; Prendre le temps de bien choisir les fonctions, leur nom, leurs paramètres Bien choisir un nom explicite et l utiliser par copier coller avec son jeu de paramètres Une fonction reçoit un nombre limité de paramètre (2 3 dans la plupart des cas ) ; Une fonction ne compte pas trop de lignes Tester chaque fonction avant de passer à l écriture de la suivante 24

Les erreurs courantes avec les fonctions Unefonction est déclarée maisnon définie Une fonction est appelée et n existe pas Le type de la fonction ne correspond pas au type de la valeur retournée La valeur retournée n est pas stockée dans une variable du bon type Entre la déclaration, la définition et l appel, le nombre de paramètres n est pas le même Au moins un paramètre n a pas le bon type Ne confondez pas valeur retournée par la fonction (qui peut être stockée dans une variable en mémoire) et affichage à l écran d un résultat (qui n est pas automatiquement stocké en mémoire) 25

En tête imposé de fonction /* Role de AireRectangle: Calcul de l aire d un rectangle ENTREES : a,b : Largeur et longueur SORTIE : Aire du rectangle Auteur : Jean Michel le 25-12-2011 */ double AireRectangle(double a, double b) Si vous réutilisez une fonction de qqn d autre, vous devez l indiquer. 26

Conseils Si vous utilisez beaucoup de fonctions,tenez leur liste à jour (Tableur, texte, ) Lorsque vous écrivez une fonction : testez la et assurez vous de son bon fonctionnement avant de passer à l écriture de la suivante!! Ce qu on ne doit jamais faire : écrire toutes les fonctions et tester ensuite tout d un bloc. Evitez les printf dans une fonction qui n est pas dédiée à l affichage. Vous pouvez utiliser des affichages avec printf dans vos fonctions pour les débugger, mais retirez les dès que la fonction marche correctement. 27

Au final Au niveau du texte : Un programme en C est un ensemble disjoint de fonctions dont une seule porte le nom de main (programme principal) et constitue le point d entrée du programme. On verra qu on peut répartir les fonctions dans plusieurs fichiers textes Au niveau de l exécution : Un programme en C est une succession d appels d instructions et de fonctions pouvant utiliser comme paramètres des résultats de fonctions (et ainsi de suite). 28