L analyse modulaire consiste à diviser un programme en sous-programmes ou en modules.

Documents pareils
Corrigé des TD 1 à 5

Examen Médian - 1 heure 30

Enseignement secondaire technique

Programmation structurée et algorithmes de base en Pascal

Cours Informatique Master STEP

Algorithmique et programmation : les bases (VBA) Corrigé

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Algorithmes et programmation en Pascal. Cours

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

STAGE IREM 0- Premiers pas en Python

Algorithmique & programmation

Cours d algorithmique pour la classe de 2nde

Algorithmique et Programmation, IMA

0 si a=b. Si a^ et b^ sont deux éléments différents du même anneau, alors le résultat de

1. Structure d'un programme FORTRAN 95

Plan du cours Cours théoriques. 29 septembre 2014

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Distribution Uniforme Probabilité de Laplace Dénombrements Les Paris. Chapitre 2 Le calcul des probabilités

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Compilation (INF 564)

Présentation du langage et premières fonctions

4. Les structures de données statiques

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Logiciel Libre Cours 2 Fondements: Programmation

MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)

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)


Définitions. Numéro à préciser. (Durée : )

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

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Cours 7 : Utilisation de modules sous python

Découverte de Python

I. Introduction aux fonctions : les fonctions standards

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL


Cours 1 : La compilation

Application 1- VBA : Test de comportements d'investissements

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

Calcul Formel et Numérique, Partie I

Probabilités sur un univers fini

Utilitaires méconnus de StrataFrame

Présentation du PL/SQL

Initiation à la programmation en Python

Chapitre 2. Eléments pour comprendre un énoncé

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Organigramme / Algorigramme Dossier élève 1 SI

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

UML et les Bases de Données

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

Propagation sur réseau statique et dynamique

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Initiation à la programmation OEF pour Wims (exercices).

Cours d Algorithmique et de Langage C v 3.0

Préparation à l examen EFA en Macro

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Objets Combinatoires élementaires

Représentation d un entier en base b

OCL - Object Constraint Language

Quelques algorithmes simples dont l analyse n est pas si simple

CALCUL DES PROBABILITES

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Simulation de variables aléatoires

Cours d algorithmique BTS SIO première année. Nicolas FRANCOIS nicolas.francois@free.fr

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

TRIGONOMETRIE Algorithme : mesure principale

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Exercices de dénombrement

Raisonnement par récurrence Suites numériques

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

Introduction à la Programmation Parallèle: MPI

Licence Sciences et Technologies Examen janvier 2010

Création d installateurs pour Windows avec InnoSetup

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Gestion mémoire et Représentation intermédiaire

Génie Logiciel avec Ada. 4 février 2013

Exo7. Probabilité conditionnelle. Exercices : Martine Quinio

Résolution de systèmes linéaires par des méthodes directes

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

Cours de Programmation 2

Université de Sherbrooke, Département d informatique

Programmation sous Delphi

Algorithmes récursifs

CORRECTION EXERCICES ALGORITHME 1

Probabilités conditionnelles Loi binomiale

Comment créer et utiliser une fonction

Par combien de zéros se termine N!?

Bases de Données Avancées PL/SQL

Polynômes à plusieurs variables. Résultant

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

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

Utilisation d objets : String et ArrayList

Bureau N301 (Nautile)

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

La persistance des nombres

Calculs de probabilités avec la loi normale

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transcription:

Chapiittrree 5 LYCEE Secondaire Ibn Sina DISCIPLINE : Informatique PROFESSEUR: Mr Feriani Bacem LES SOUS PROGRAMMES I. INTRODUCTION Afin de faciliter la résolution d un problème complexe et / ou de grande taille, on doit le décomposer en sous problèmes élémentaires, indépendants et de taille réduite. II. ANALYSE MODULAIRE II.1 Définition L analyse modulaire consiste à diviser un programme en sous-programmes ou en modules. II.2 Intérêts Le programme sera plus lisible, plus facile à documenter, à mettre au point et à maintenir (modifier par la suite). On obtient des sous-programmes de tâches claires, précises et explicites. Un sous programme peut être une fonction ou une procédure. III. FONCTIONS III.1 Introduction Nous avons déjà été amené à utiliser des «fonctions prédéfinies» telles que SQR, ABS, CHR, ORD, COPY, Cette notion de fonction est très proche de la notion mathématique classique. III.2 Activité Ecrire un programme Pascal nommé Calcul_combinaison qui saisit deux entiers n et p tel que 1<=p<=n sachant que C(p,n)=n!/(p!*(n-p)!) et appelle une fonction factorielle qui calcule chaque factoriel Analyse du programme principal Résultat = Ecrire (C) 2 C FN Factorielle (N)/( FN Factorielle (P) *FN Factorielle (N-P)) 1 N,P =[] Répéter N,P= donnée ("Taper 2 entiers ") Jusqu à (P>=1)et(N>=P) 4 Fin Calcul_combinaison Objet Nature / Type Rôle N, P,C Variables/ Entier Factorielle Fonction Analyse de la fonction Factorielle 2 1 DEF FN Factorielle (x : entier) : entier Résultat = Factorielle Factorielle F F= [ F 1] Si x<>0 alors Pour i de 1 à x faire F F*i Finsi Fin Factorielle Algorithme du programme principal 0/ Début Calcul_ combinaison 1/ Répéter ecrire(«taper 2 entiers») lire(n,p) Jusqu à (P>=1)et(N>=P) 2/ C FN Factorielle (N)/( FN Factorielle (P) *FN Factorielle (N-P)) ) Ecrire (C) 4/ Fin Cacul_ combinaison -1/7-

Tableau de déclaration des objets locaux I f Entier Entier Compteur FACTORIELLE X Traduction en Turbo Pascal PROGRAM Calcul_combinaison; USES WINCRT; VAR N,P, F : longint ; {F et N sont des iables globales} C:real; FUNCTION Factorielle (x: integer): integer; VAR i :integer ; { i est une iable locale} BEGIN IF x<=1 then F:=1 ELSE F:=1; For i:=2 to x do F:= F*i; End; End; Factorielle:= F; END; BEGIN {programme principal} Repeat WRITELN ('Taper un entier p'); READLN (p); WRITELN ('Taper un entier n'); READLN (n); Until (p>=1)and(n>p) ; C:= Factorielle (N)/(Factorielle (P)*Factorielle (N-P)); Writeln (C:5:2) ; END. III. Définition -2/7- Algorithme de la fonction Factorielle 0/ DEF FN Factorielle (x : entier) : entier 1/ F 1 Si x<>0 alors Pour i de 1 à x faire F F*i Finsi 2/ factorielle F / Fin Factorielle Une fonction est un sous-programme qui possède un ou plusieurs paramètres (arguments) et qui renvoie qu une seule valeur de type simple (entier, réel, caractère, booléen, chaîne de caractères) au programme appelant. III.4 Déclaration d une fonction En analyse DEF FN nom_fonction (pf1 :type_pf1 ;pf2,pf :type_pf_2_ ; ) :type_fonction Résultat = nom_fonction Nom_fonction résultat Fin nom_fonction En algorithme 0) DEF FN nom_fonction (pf1 :type_f1 ;pf2,pf :type_pf_2_ ; ) :type_fonction 1). 2). n-1) nom_fonction résultat n) Fin nom_fonction En pascal Program nom_p_p ; Uses wincrt ; Const {Déclaration des constantes globales}

Type {Déclaration des nouveaux types globaux} Var {Déclaration des iables globales} {Déclaration de la fonction} FUNCTION nom_fonction (pf1 :type_pf1 ;pf2,pf :type_pf_2_ ; ) :type_fonction ; Const {Déclaration des constantes locales} Type {Déclaration des nouveaux types locaux} Var {Déclaration des iables locales} Instructions de la fonction ; Nom_fonction :=résultat ; End ; {programme principal} instructions du pp appel de la fonction ; Remarque : En Pascal, la déclaration d une fonction se fait après la déclaration des iables globales du programme principal. III.5 Appel d une fonction L appel d une fonction se fait par son nom entre parenthèses liste de ses arguments effectifs. L appel d une fonction permet d exécuter les instructions de la fonction en substituant les paramètres effectifs aux paramètres formels. Une fonction peut être appelée à partir du programme principal ou d une autre fonction ou d une procédure ou à partir d elle même (notion de récursivité). Une fonction peut être appelée dans une action d affectation ou de sortie ou dans une structure conditionnelle ou itérative. En analyse et en algorithme En pascal Variable FN nom_fonction (pe1,pe2,,pen) Variable := nom_fonction (pe1,pe2,.,pen) Ecrire (FN nom_fonction(pe1,pe2,,pen)) Writeln( nom_fonction (pe1,pe2,,pen) Si FN nom_fonction (pe1,pe2,,pen) opr valeur alors IF nom_fonction (pe1,pe2,,pen) opérateur valeur then Pour i de 1 à n faire iable FN nom_fonction(pe1,pe2,,pen) for i :=1 to n do iable := nom_fonction(pe1,pe2,,pen) Remarques : 1. Au niveau de l analyse et de l algorithme et dans l instruction d appel, il faut ajouter devant le nom de la fonction le préfixe FN. 2. L objet d appel d une fonction est de calculer une valeur et non pas de modifier les valeurs des iables ; donc le passage des paramètres entre le programme appelant et une fonction est toujours par valeur. III.6 Paramètres effectifs et formels A/ Paramètres effectifs Se sont des paramètres qui figurent dans l instruction d appel de la fonction ou de la procédure. Ces paramètres seront substitués aux paramètres formels au moment de l appel de la fonction ou de la procédure. B/ Paramètres formels Se sont des paramètres qui figurent dans l entête de la fonction ou de la procédure. Ces paramètres seront utilisés par les instructions de la fonction ou de la procédure. Remarques : 1. Les paramètres effectifs et formels doivent s accorder de point de vue nombre et ordre. 2. Leurs types doivent être identiques ou compatibles. III.7 Objets globaux et locaux A/ Objets globaux Un objet global (constantes, nouveaux types, iables, ) est un objet déclaré dans la partie déclarative des objets du programme principal, utilisé par ce dernier et / ou par toutes les fonctions et les procédures qui y sont déclarées. B/ Objets locaux Un objet local (constantes, nouveaux types, iables, ) est un objet déclaré dans la partie déclarative des objets de la fonction ou de la procédure et utilisé seulement par celle-ci. III.8 Application Ecrire une fonction qui calcule x y avec (x>=0 et y>=0). -/7-

Analyse du programme principal Résultat = Ecrire (x, " à la puissance ", y, " = ", FN puissance (x,y)) 1 X = Répéter X= donnée ("X>=0") Jusqu à (x >=0) 2 y = Répéter y= donnée ("y>=0") Jusqu à (y>=0) 4 Fin Calcul_puissance X,y puissance Variables /Entier Fonction/entier Algorithme du programme principal 0/ Début Calcul_puissance 1/ Répéter Ecrire ("X>=0"), Lire (x) Jusqu à (x>=0) 2/ Répéter Ecrire ("y>=0"), Lire (y) Jusqu à (y>=0) ) Ecrire (x, " à la puissance y = ", FN puissnace (x,y)) 4/ Fin Calcul_puissance Analyse de la fonction puissance Résultat = puissance 2 puissance p 1 p= [p 1] Pour i de 1 à b faire p p*a Fin puissance Tableau de déclaration des objets locaux Objet Nature / Type Role I p Compteur / Entier Variable/entier Algorithme de la fonction Factorielle 0/ DEF FN puissance (a,b : entier) : entier 1/ [ ] [p 1] Pour i de 1 à b faire p p*a 2/ puissance p / Fin puissance Traduction en Pascal program calcul_puissance; uses wincrt; x,y:integer; function puissance (a,b:integer):integer; I,p:integer; p:= 1; for i:= 1 to b do p:= p*a; puissance := p; repeat write('x>=0'); readln(x); until (x>=0); repeat write('y>=0'); readln(y); until (y>=0); write(x, ' à la puissance ', y,' = ', puissance (x,y)); -4/7-

IV. LES PROCÉDURES IV.1 Activité IV.2 Ecrire un programme Pascal nommé permutation qui permet de permuter deux entiers x et y puis affiche le résultat. IV. Procédure non paramétrée ou simple (1 ére solution) Analyse du programme principal 4 Résultat = Ecrire (" x= ",x "et","y =",y) X,y= proc permut 1 X= donnée ("X=") 2 y= donnée ("y=") 5 Fin permutation Objet Nature / Type Role X, y permut Variables /Entier Procédure Algorithme du programme principal 0/ Début permutation 1/ Ecrire ("X="), Lire (x) 2/ Ecrire ("y="), Lire (y) / proc permut 4) Ecrire (" x= ",x "et","y =",y) 5/ Fin permutation Analyse de la procédure permut 2 1 4 Résultat = x,y x y y z z x Fin permut Tableau de déclaration des objets locaux Objet Nature / Type Role z iable / Entier Algorithme de la procédure permut 0/ DEF PROC permut 1/ z x 2/x y / Y z 4/ Fin permut Traduction en Pascal program permutation; uses wincrt; x,y:integer; procedure permut; z:integer; z:=x; x:=y; y:=z; write('x='); readln(x); write('y='); readln(y); permut; write('x= ',x,' et ','y =',y); -5/7-

IV.4 Procédure paramétrée (2 ème solution) Analyse du programme principal 4 Résultat = Ecrire (" x= ",x "et","y =",y) X,y= proc permut (x,y) 1 X= donnée ("X=") 2 y= donnée ("y=") 5 Fin permutation X, y Variables /Entier permut Procédure 0/ Début permutation 1/ Ecrire ("X="), Lire (x) 2/ Ecrire ("y="), Lire (y) / proc permut (x,y) 4) Ecrire (" x= ",x "et","y =",y) 5/ Fin permutation Analyse de la procédure permut Résultat = a,b 2 a b b z 1 z a 4 Fin permut Tableau de déclaration des objets locaux z iable / Entier Traduction en Pascal program permutation; uses wincrt; x,y:integer; procedure permut( a,b:integer); z:integer; z:=a; a:=b; Algorithme de la procédure permut 0/ DEF PROC permut (a,b :entier) 1/ z a 2/a b / b z 4/ Fin permut b:=z; write('x='); readln(x); write('y='); readln(y); permut(x,y); write('x= ',x,' et ','y =',y); A/ Définitions Une procédure est une suite d instructions décrivant une ou plusieurs actions à laquelle on accorde un nom qui devient lui-même, en quelque sorte une nouvelle instruction. Une procédure peut avoir 0 paramètre (procédure non paramétrée) ou 1 ou plusieurs paramètres (procédure paramétrée) et peut retourner 0 ou 1ou plusieurs résultats au programme appelant. Une procédure paramétrée utilise des paramètres pour faire passer des informations entre le programme appelant et la procédure appelée. B/ Appel d une procédure paramétrée L appel de la procédure permet d exécuter les instructions de la procédure en substituant les paramètres affectifs aux paramètres formels. L appel d une procédure se fait par son nom entre parenthèses liste de ses paramètres effectifs. En analyse et en algorithme PROC nom_de_la_procédure(pe1,pe2,,pen) En pascal nom_de_la_procédure(pe1,pe2,,pen) Remarque : 1. Au niveau de l analyse et de l algorithme et dans l instruction d appel, il faut ajouter devant le nom de la procédure le préfixe PROC. -6/7-

C/ Déclaration d une procédure paramétrée En analyse DEF PROC nom_procédure (pf1 :type_pf1 ;pf2,pf :type_pf_2_ ; ) Résultat =... Fin nom_procédure En algorithme 0) DEF PROC nom_procédure (pf1 :type_pf1 ;pf2,pf :type_pf_2_ ; ) Actions de la procédure n) Fin nom_procédure En pascal Program nom_p_p ; Uses wincrt ; Const {Déclaration des constantes globales} Type {Déclaration des nouveaux types globaux} Var {Déclaration des iables globales} {Déclaration de la procédure} Procedure nom_procédure (pf1 :type_pf1 ;pf2,pf :type_pf_2_ ; ) ; Const {Déclaration des constantes locales} Type {Déclaration des nouveaux types locaux} Var {Déclaration des iables locales} actions de la procédure ; End ; {programme principal} instructions du pp appel de la procédure ; Remarques : En Pascal, la déclaration d une procédure se fait après la déclaration des iables globales du programme principal. Les iables déclarées au niveau du programme principal sont appelées iables globales. Les iables déclarées au niveau de la procédure sont appelées iables locales. D/ Passage par valeur et par iable Passage par valeur Il permet au programme appelant de transmettre une valeur au programme appelé (fonction ou procédure). Cette valeur du paramètre effectif sera affectée au paramètre formel au moment de l appel de la fonction ou de la procédure. Toute modification du paramètre formel est sans conséquent sur la valeur du paramètre effectif. Le transfert d information s effectue dans un seul sens : P.appelant P.appelé Passage par iable Il permet au programme appelant de transmettre une ou plusieurs valeurs à la procédure et vice-versa au moment de l appel. Toute modification du paramètre formel entraîne automatiquement la modification de la valeur du paramètre effectif. Le transfert d information s effectue dans deux sens : P.appelant Procédure Remarque : Au moment de l appel des procédures, on ne spécifie pas le mode de transmission. Ce dernier n est spécifié qu au niveau de l entête de la procédure concernée en ajoutant le mot VAR juste avant l argument transmis par adresse. -7/7-