Fonctions et procédures. Procedures: déclaration et appel



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

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

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

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

Programme Compte bancaire (code)

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


Algorithmique et Programmation, IMA

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Les arbres binaires de recherche

Le langage C. Séance n 4

Architecture des Systèmes d Information Architecture des Systèmes d Information

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

TP, première séquence d exercices.

Travaux Dirigés n 1 : chaînes de caractères

Conventions d écriture et outils de mise au point

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)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chap III : Les tableaux

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

I. Introduction aux fonctions : les fonctions standards

Utilisation d objets : String et ArrayList

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Le prototype de la fonction main()

Examen d informatique première session 2004

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

Premiers Pas en Programmation Objet : les Classes et les Objets

1 Recherche en table par balayage

1.6- Génération de nombres aléatoires

Recherche dans un tableau

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Programmation système I Les entrées/sorties

Initiation à la programmation en Python

Cours d Algorithmique et de Langage C v 3.0

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Algorithmique et programmation : les bases (VBA) Corrigé

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Architecture des ordinateurs

Claude Delannoy. 3 e édition C++

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

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Représentation d un entier en base b

TP 1. Prise en main du langage Python

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

1. Structure d'un programme FORTRAN 95

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

GESTION DES FICHIERS C/UNIX

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

Algorithmique, Structures de données et langage C

Corrigés des premiers exercices sur les classes

Cours 1: Java et les objets

V- Manipulations de nombres en binaire

Les chaînes de caractères

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

Arguments d un programme

CORRECTION EXERCICES ALGORITHME 1

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

TD/TP PAC - Programmation n 3

ENVOI SIMPLE (SMS)...

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

STAGE IREM 0- Premiers pas en Python

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

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

1 ) L élaboration des factures, des bordereaux de livraison et des factures proforma.

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Langage Java. Classe de première SI

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

Exercices sur les interfaces

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

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

Package Java.util Classe générique

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Perl Orienté Objet BioPerl There is more than one way to do it

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

Introduction au pricing d option en finance

MODE OPERATOIRE CIEL GESTION COMMERCIALE VERSION EVOLUTION BTS PME PMI

Structures dynamiques Listes chaînées

Programmation en langage C

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

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

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

Introduction au langage C

Poker. A rendre pour le 25 avril

Tp 1 correction. Structures de données (IF2)

1 Lecture de fichiers

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

(51) Int Cl.: H04L 29/06 ( ) G06F 21/55 ( )

Les structures. Chapitre 3

Corrigé des exercices sur les références

Concours National d Informatique. Sujet de demi-finale Montpellier et Toulouse

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

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Solutions du chapitre 4

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

et Programmation Objet

Transcription:

Cours 5 : fonctions, procédures, passage des paramètres 1 Fonctions et procédures Idée : capitaliser sur le code déjà écrit pour introduire des nouvelles commandes et opérations. On souhaite donner un nom programme que nous avons déjà écrit, et qui effectue une opération intéressante, pour pouvoir le réutiliser après sans le réécrire. Si ce programme retourne un résultat, on parlera de fonction, et procédure sinon. De plus, on peut souhaiter choisir les valeurs de certaines variables de la procédure ou fonction, et cela se fait à travers le mechanisme de passage des paramètres. Procedures: déclaration et appel Chaque procédure aura: 1. Une définition qui dit (a) Le type des paramètres. (b) comment on la calcule. 2. Un ou plusieurs appels: c est l utilisation de la procédure. Exemples (sans paramètres) Tous les programmes affichent un message d aide à l utilisation, et cela à plusieurs occasions procedure aide () debut aide ecrire "Aide du programme Machin." ecrire " l option -o permet de definir le fichier sortie" ecrire " l option -h donne ce message" fin aide programme Machin debut Machin aide()

Cours 5 : fonctions, procédures, passage des paramètres 2 si (erreur=vrai) alors aide() fin si fin Machin Exemples (avec paramètres) Tous les programmes affichent des messages d erreur procedure erreur (valeur s: cha^ıne de caractères) debut erreur ecrire "Programme Machin: on a renconter l erreur" s fin erreur programme Machin debut Machin erreur("entier trop grand") erreur("pas assez de memoire") fin Machin Fonctions: déclaration et appel Chaque fonction aura: 1. Une définition qui dit (a) Le type des paramètres. (b) Le type de la valeur rendue. (c) comment on la calcule. 2. Un ou plusieurs appels: c est l utilisation de la fonction. 3. Zero, un ou plusieurs paramètres: ce sont les arguments de la fonction. 4. Un type et une valeur.

Cours 5 : fonctions, procédures, passage des paramètres 3 Exemples (sans paramètres) fonction pi(): reel debut pi retourner 3.1415926535897931 fin pi Exemple avec paramètres La fonction suivante rend le maximum de deux valeurs de type réél. fonction fmax(valeur a: reel, valeur b: reel) : reel variables m : un reel debut fmax si (a > b) alors m <- a sinon m <- b fin si retourner m fin fmax de sorte que l expression fmax(pi()*pi(),10.0) vaut 10. Paramètres En général, une fonction ou procédure n est utile que si elle a des paramètres, comme dans le cas de fmax. Une fonction ou procédure définie avec des paramètres doit être appelée avec des arguments (en nombre égal, et du même type!). définition de fonction paramètre appel de fonction argument

Cours 5 : fonctions, procédures, passage des paramètres 4 fonction fmax(valeur a: reel, valeur b: reel) : reel programme essai variables x: un reel i,j: deux caracteres debut essai lire x ecrire fmax(x,x*x) /* ecrire fmax(i,j) serait incorrect! */ fin essai Nature des paramètres: déclaration Dans la declaration fonction fmax(valeur a: reel, valeur b: reel) : reel a et b sont les paramètres de la fonction ils sont déclarés avec leur type dans le corps de la fonction, on peut utiliser a et b comme des variables, qui existent exclusivement dans le corps de la fonction le mot clé valeur indique une modalité de passage des paramètres Nature des paramètres: passage par valeur Après la déclaration fonction fmax(valeur a: reel, valeur b: reel) : reel on peut effectuer un appel de la fonction comme ecrire 3*fmax(x,y) l expression fmax(x,y) est évaluée de la façon suivante: les valeurs de x et y sont calculées

Cours 5 : fonctions, procédures, passage des paramètres 5 les paramètres a et b de fmax sont initialisés en utilisant ces valuers le corps de la fonction fmax est executé, (cela utilise les paramètres a et b comme des variables) le résultat de la fonction est enfin retourné et utilisé pour continuer le calcul de l expression (ici, on le multiplie par 3 et on l imprime) Peu importe les opérations effectuées sur a et b dans le corps de fmax, les valeurs des paramètres actuels x et y restent inchangés. Limite du passage par valeur On a souvent besoin d écrire des procédure ou fonctions que, au contraire, modifient la valeur de certains paramètres, par exemple, on voudrait écrire une procedure echange t.q. echange(x,y) échange les valeurs des variables x et y. Mais la procédure procédure echange (valeur a: entier, valeur b: entier) variable t: un entier debut echange t <- a a <- y b <- t fin echange n échange pas les valeurs de ses arguments! (relisez la description du passage d arguments par valeur plus haut) Comment faire? Passage par référence Si on écrit procédure echange (reference a: entier, reference b: entier) variable t: un entier debut echange t <- a a <- y b <- t fin echange

Cours 5 : fonctions, procédures, passage des paramètres 6 le passage des paramètres se fait autrement: l appel echange(i,j) au moment de on ne fait pas une copie des valeurs de i et j dans a et b! au contraire, on transforme a et b en alias de i et j, en le faisant pointer sur les memes cases mémoire de i et j donc, toute opération effectuée sur les paramètres a et b dans le corps de la procédure ou fonction et aussi effectué sur les arguments i et j N.B.: on doit passer comme argument d un paramètre par référence seulement des expressions qui se comportent comme des variables (par exemple, une variable, mais aussi une case d un tableau etc.) Résumé On déclare valeur un paramètre si on ne veut pas que l appel modifie les arguments On déclare reference un paramètre si on veut que l appel modifie les arguments Bien sûr, on peut melanger paramètres par valeur et par référence. ATTENTION: les tableaux sont toujours passé par référence, et jamais copiés, même si on déclare le paramètres correspondant valeur. (Vous comprendrez les raisons de cela plus avant dans le cursus informatique). Un exemple complet: le tri par séléction Voyons comme écrire un programme de tri par séléction beaucoup plus lisible avec les fonctions et les procédures.

Cours 5 : fonctions, procédures, passage des paramètres 7 Fonction de recherche du minimum à partir d un indice fonction mintab(valeur i: un entier, reference a: tableau): entier variable k: un entier debut mintab pour k <- i+1 a N faire si (a[k] < a[i]) alors i <- k fin si fin pour retourner i fin mintab Programme de tri par séléction constante N=10 type tab = tableau de N entiers procedure echange(reference a, reference b) fonction mintab(valeur i: un entier, reference a: tableau): entier programme triselection variables a: tab debut triselection lire a pour i <- 1 a N-1 faire echange(a[i],a[mintab(i,a)]) fin pour ecrire a fin triselection

Cours 5 : fonctions, procédures, passage des paramètres 8 Et en C++? #include <iostream.h> const int N=10; typedef int tab[n]; void echange (int &a, int &b) { int t; t=a; a=b; b=t; int mintab(int i, tab &a) { int k; for(k=i+1;k<n;k++){if (a[k] < a[i]) {i =k;;; return(i); void lire(tab &a) { int k; for (k=0;k<n;k++){cout<<"a["<<k<<"]? "<<endl; cin>>a[k];; void ecrire(tab &a) { int k; for (k=0;k<n;k++){cout<<"a["<<k<<"] = "<<a[k]<<endl;; void main(){ tab a; int i; lire(a); for (i=0;i<n-1;i++){echange(a[i],a[mintab(i,a)]);; ecrire(a);