Les fonctions et les procédures en C



Documents pareils
Introduction au langage C

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

Java Licence Professionnelle CISII,

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

I. Introduction aux fonctions : les fonctions standards

Algorithmique et Programmation, IMA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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)

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


Programmation système I Les entrées/sorties

Rappels Entrées -Sorties

Programme Compte bancaire (code)

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

Le Langage C++ Patrick TRAU - ULP IPST version du 02/10/05

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

STAGE IREM 0- Premiers pas en Python

Programmation en langage C

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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

Plan du cours. Historique du langage Nouveautés de Java 7

Les chaînes de caractères

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Le langage C. Séance n 4

Introduction à l héritage en C++

Algorithmes récursifs

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

TD3: tableaux avancées, première classe et chaînes

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

Langage Java. Classe de première SI

UE C avancé cours 1: introduction et révisions

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

Chap III : Les tableaux

Cours d Algorithmique et de Langage C v 3.0

Initiation à l algorithmique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Découverte de Python

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

Langage Éric Guérin 5 octobre 2010

La programmation des PIC en C. Les fonctions, les interruptions.

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

Claude Delannoy. 3 e édition C++

Programmation Classique en langage C

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

ACTIVITÉ DE PROGRAMMATION

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

Programmer en JAVA. par Tama

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

Cours de programmation avancée. Le langage C. Université du Luxembourg

Programmation en Java IUT GEII (MC-II1) 1

Algorithmique, Structures de données et langage C

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Les structures. Chapitre 3

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Initiation à la programmation en Python

Premiers Pas en Programmation Objet : les Classes et les Objets

Solutions du chapitre 4

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

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Généralités sur le Langage Java et éléments syntaxiques.

Le prototype de la fonction main()

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours Langage C/C++ Programmation modulaire

Quelques éléments de compilation en C et makefiles

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

INITIATION A LA PROGRAMMATION

INITIATION AU LANGAGE JAVA

INF 321 : mémento de la syntaxe de Java

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

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

Package Java.util Classe générique

Cours 14 Les fichiers

Algorithmique I. Algorithmique I p.1/??

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

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

Présentation du langage et premières fonctions

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

Lier Erlang avec d autres langages de programmation

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Outils pour la pratique

TP, première séquence d exercices.

Initiation à LabView : Les exemples d applications :

Programmation système de commandes en C

Programmation avec des objets : Cours 7. Menu du jour

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours de Systèmes d Exploitation

Recherche dans un tableau

Programmation Orientée Objet Java

Transcription:

Les fonctions et les procédures en C Séance 6 de l'ue «introduction à la programmation» Bruno Bouzy bruno.bouzy@parisdescartes.fr

Fonctions et procédures Fonction, déclaration, définition, utilisation Type de retour, paramètres Procédure Paramètres en entrée ou en sortie Récursivité et itérations Macros Exemple complet fonctions et procédures 2

Déclaration: Fonctions int mafonction(int); Définition: int mafonction(int x) { int a;... return(a); } Utilisation: int x = 5; int y = mafonction(x); fonctions et procédures 3

Fonctions Type de retour: int mafonction(int); Type du paramètre: int mafonction(int); Nom: int mafonction(int); Signature ou en-tête d'une fonction. fonctions et procédures 4

Boites et flèches... a mafonction mafonction(a) fonctions et procédures 5

Exemple 1 Calcul du carré d'un nombre int carre(int a) { return (a*a); } // definition // retour int main() { int n, x=0; printf("n? "); scanf("%d", &n); x = carre(n); // appel printf("carre = %d\n", x); return 0; } fonctions et procédures 6

Exemple 1 Exécution: ça marche! ProgC >./a.out n? 6 carre = 36 ProgC > fonctions et procédures 7

Exemple 1 Comment carre marche? Après le scanf: n int 6 x int 0 Appel de la fonction: a int 6 Exécution du return return int 36 Retour dans l'appelant n 6 x 36 int int fonctions et procédures 8

Types de retour Les types pré-définis pour les variables int, float, double, char, etc. int *, float *, char *, etc Le type vide: void fonctions et procédures 9

Procédures (1/3) Le type vide: void Une procédure: void maprocedure(char); // declaration void maprocedure(char) { // definition }... char c; maprocedure(c); // appel fonctions et procédures 10

Procédures (2/3) c maprocedure fonctions et procédures 11

Procédures (3/3) Pas de paramètre de retour Type void Structuration du programme Un traitement donné est écrit une fois et une seule dans le programme (comme pour les fonctions) Possibilité d'avoir des paramètres en sortie Une procédure peut donner un résultat fonctions et procédures 12

Paramètres en entrée ou sortie (1/3) Paramètre en entrée La fonction ou la procédure en a besoin pour fonctionner Paramètre en sortie La fonction ou la procédure a pour objectif de lui donner une valeur. Si le type du retour n'est pas void, une fonction C possède un paramètre de sortie obligé: le paramètre de retour. fonctions et procédures 13

Paramètres en entrée ou sortie (2/3) a carre carre(a) fonctions et procédures 14

Paramètres en entrée ou sortie (3/3) En langage C, il n'existe pas d'autre paramètre de sortie que le paramètre de retour :-( Passage de paramètre par valeur On passe la valeur du paramètre Implique que le paramètre est en entrée Passage de paramètre par adresse On passe l'adresse du paramètre Cela permet d'avoir un paramètre en sortie :-) fonctions et procédures 15

Exemple 2 Carré avec passage de paramètres par adresse void carre2(int a, int * b) { *b = a*a; } int main() { int n, x=0; printf("n? "); scanf("%d", &n); carre2(n, &x); printf("carre2 = %d\n", x); return 0; } fonctions et procédures 16

Exemple 2 Exécution: ça marche! ProgC >./a.out n? 6 carre2 = 36 ProgC > fonctions et procédures 17

Exemple 2 Comment carre2 marche? Après le scanf: n int 6 x int 0 Appel de la fonction: a = n; b = &x; a int 6 b int* Exécution: *b = a*a; x int 36 Retour dans l'appelant n 6 x 36 int int fonctions et procédures 18

Exemple 2 a carre2 b fonctions et procédures 19

Exemple 3 Carré avec passage de paramètres par valeur void carre3(int a, int b) { b = a*a; } int main() { int n, x=0; printf("n? "); scanf("%d", &n); carre3(n, x); printf("carre3 = %d\n", x); return 0; } fonctions et procédures 20

Exemple 3 Exécution: ça marche pas :-( ProgC >./a.out n? 6 carre3 = 0 ProgC > fonctions et procédures 21

Exemple 3 Comment carre3 marche pas? Après le scanf: Appel de la fonction: a = n; b = x; Exécution b = a*a; n int a int 6 6 x int b int b int 0 0 36 Retour dans l'appelant Explication: n 6 x 0 int int b a été modifié correctement, pas x. fonctions et procédures 22

Exemple 3 a b carre3 fonctions et procédures 23

Recursivité Une fonction qui s'appelle soi-même int factorielle(int n) { if (n==0) return 1; return (n*factorielle(n-1)); } int n = 4; printf("n! = %d\n", factorielle(n)); fonctions et procédures 24

Recursivité Factorielle sans récursivité, avec boucle: int factorielle2(int n) { if (n==0) return 1; int r=1; int i; for (i=1; i<=n; i++) r *= i; return r; } int n = 4; printf("n! = %d\n", factorielle2(n)); fonctions et procédures 25

Definition Macros #define MA_MACRO(X, Y) X+19*Y Utilisation int i = MA_MACRO(4, 13); gcc remplace MA_MACRO(a, b) par a + 19*b partout dans le source. fonctions et procédures 26

Macros Avantage: rapidité d'exécution lisibilité du source (comme pour les fonctions) Inconvénients: effet de bords indésirés expansion du code exécutable fonctions et procédures 27

Exemple complet (1/4) Ecrire une fonction: int deintervalleanombre(int a, int b) demandant à l'u un nombre entier dans [a, b], retournant ce nombre, (la demande est renouvelée tant que l'u n'a pas tapé une valeur dans [a, b]) fonctions et procédures 28

Exemple complet (2/4) int deintervalleanombre(int a, int b) { int x; do { printf("x? (%d<=x<=%d) ", a, b); scanf("%d", &x); } while (x<a x>b); } return x; fonctions et procédures 29

Exemple complet (3/4) Ecrire un programme principal main: demandant un nombre N dans [0, 12] avec la fonction deintervalleanombre affichant la valeur de N! fonctions et procédures 30

Exemple complet (4/4) #include <stdio.h> // ici les definitions des 2 fonctions int main() { int n; n = deintervalleanombre(0,12); printf("n = %d\n", n); printf("n! = %d\n", factorielle(n)); } return 0; fonctions et procédures 31

Résumé de la séance 6 Fonction, déclaration, définition, utilisation Type de retour, paramètres Procédure Paramètres en entrée ou en sortie Passage de paramètres par adresse Récursivité et itérations Macros Exemple fonctions et procédures 32