Les sous programmes
Il existe deux types : les fonctions et les procedures
I- Les fonctions
Une function est un sous programme qui retourne obligatoirement qu’un seul resultat
1- Syntaxe
fonction nom-fonction (donnees : arg1 :type, arg2 :type , ….argn :type) :type-de-
retour
/*declaration des variables locales*/
Debut
Instruction
Retourner(resultat)
Fin
2- Exemple
Ecire une fonction qui recoit en parametre deux entiers puis calcul leur somme
Solution
Fonction somme (donnees : a,b :entier) :entier
Var s 0:entier
Debut
S a+b
Retourner(s)
fin
3- Exercice
Ecrire un sous programme qui permet de resoudre l’equation ax+b=0
Solution
Fonction equation (donnees : a,b :reel) : reel
Var x :reel
Debut
X -b/a
retourne (x)
fin
II- Les procedures
Ce sont des sp qui peut produire 0 ou plusieurs resultats .
Les resultats produits par la procedure ne sont pas retournes au programme appelant
mais les affichent elle-même
1- Syntaxe
Procedure nom_procedure donnees : p1,p2,..pn:type
Resultat: r1,r2, … pn:type
Donnees/resultat: d1, ..dn:type
/* variable locales*/
Debut
Instructions
Fin
2- Exemple
Ecrire une procedure qui recoit un parametre d’un nombre entier puis affiche la
table de multiplication de 1 a n de ce nombre
Solution
Procedure table_multiplication (donnees :a,n :entier)
Var i :entier
Debut
Pour i de 1 a n faire
Afficher(a,’’*’’,i,’’=’’,a*i)
Finpour
Fin
III- Tableau-sous programme
Exercice:
Ecrire un programme qui permet de creer un tableau pouvant contenir 100 entier et
affiche l’ensemble des valeurs de ce tableau
Solution
Algo : creation_tableau
cosnt n 100
type tableau=tableau(1—n)de entier
var tab :tableau
i : entier
debut
/*creation du tableau*/
Poutr i de 1 a n faire
Afficher( ‘’veuillez saisir la val de la cellule no’’,i)
Lire(tab[i])
Finpour
/*affichage du tableau*/
Pour i de 1 a n faire
Afficher(tab[i])
Finpour
Fin
Algo : creation_tableau
Const n 100
Type tableau=tableau(1--n)de entier
Var tab :tableau
I : entier
Debut
Creationtableau (tab, n)
Affichagetableau (tab, n)
Fin
Procedure creationtableau donnees : tab : tableau
n: entier
var i : entier
debut
pour i de 1 a n faire
afficher(‘’veuillez saisir la valeur de la cellule no’’, i)
lire(tab[i])
finpour
fin
exo2 : ecrire un programme qui fait appel a deux sous programme creationtableau et
affichagetableau qui permettent respectivement de créer un tableau de n entier et d’afficher le
tableau de n entier, n est un entier positif <=100 et sera saisi au clavier par l’utilisateur
solution
algo : creation_affichage_tableau
const 100
type tableau=tableau(1--m)de entier
var tab :tableau
n :entier
debut
/*saisie et contrôle de la taille du tableau*/
Repeter
Afficher(‘’veuillez saisir la taille du tableau’’)
Lire(n)
Jusqu’à(n>=1 et n<=m)
/*appel des sp*/
Creationtableau(tab,n)
Affichagetableau(tab,n)
Fin
/*code sp*/
Procedure creationtableau donnees : tab :tableau
n :entie
var i : entier
debut
pour i de 1 a n faire
afficher(‘’veuillez saisir la valeur de la cellule no’’,i)
lire(tab[i])
finpour
fin
procedure affichagetableau donnees : tab :tableau
n :entier
var i :entier
debut
pour i de 1 a n faire
afficher(tab[i])
finpour
fin
les enregistrements :
c’est un type compose qui permet de créer des variables capables de stocker des informations de
type different
I- Declaration du type d’enregistrement
Syntaxe
Type nom_enregistrement=enregistrement
Debut
Champ1 : type
Champ2 : type
Champ n : type
Fin
Exemple : on souhaite enregistrer les infos des produits, chaque produit etant caracterise par libelle
de type chaine, un prix unitaire de type entier et une quantite de type entier
Solution
Type produit = enregistrement
Debut
Libelle : chaine
Pu : entier
Qte : entier
Fin
Var pdt : produit
Tableau
3-ecrire dans une variable de type enregistrement
Pour ecrire dans une variable de type enregistrement on met d’abord le nom de l’enregistrement
(ex :pdt) : nom_egt. Nom_champ val ou lire (nom_egt. Nom_champ)
Exemple :
Pdt.libelle ‘’ordinateur’’
Pdt.pu 300.000
Pdt.qte 4
Ou
Lire (pdt.libelle)
Lire (pdt.pu)
Lire (pdt.qte)
Ou
Lire (pdt.libelle,pdt.pu,pdt.qte)
3- Afficher les valeurs d’une variables de type enregistrement
Afficher (nom_egt. Nom_champ)
Exemple : afficher (pdt.libelle) ou afficher (‘’libelle :’’, pdt.libelle)
Ecrire un programme qui permet de saisir puis d’afficher les informations d’un etudiant. L’etudiant
est saisi sous la forme d’un enregistrement contenant les informations : matricule (de type chaine),
nom (de type chaine), pronom(de type chaine), sexe (caractere)
methode
Algo : nom_algo
/*declaration de l’enregistrement*/
/*declaration des variables*/
Debut
/*sasie des valeurs*/
/*affichage des valeurs*/
Fin
Solution
Algo : saisie_et_affichage
Type etudiant= enregistrement
Debut
Matricule : entier
Nom : chaine
Prenom : chaine
Sexe : caractere
Fin
Var etd : etudiant
Debut
Afficher (‘’veuillez saisir le matricule’’)
Lire (etd.matricule)
Afficher (‘’veuillez saisir le nom’’)
Lire (etd.nom)
Afficher (‘’veuillez saisir le prenom’’)
Lire (etd.prenom)
Afficher (‘’veuillez saisir le sexe’’)
Lire (etd.sexe)
Afficher (‘’matricule :’’,etd.matricule)
Afficher (‘’nom :’’,etd.nom)
Afficher (‘’prenom’’,etd.prenom)
Afficher (‘’sexe’’,etd.sexe)
Fin
Chap : les enregistrements et tableau d’enregistrements
I- Declaration d’un tableau d’enregistrement
Synataxe
/*declaration de l’enregistrement*/
Type nom_enregistrement = structure
Debut
Champ 1
Champ 2
Fin
/*declaration du tableau d’enregistrement*/
Const n val
Type tableau = tableau(1—n) de nom_enregistrement
Var tab : tableau
Exemple : declaration d’un tableau on suppose que l’etudiant est caracterise par le matricule, le
nom, le prenom.
/*declaration de l’enregistrement etudiant*/
Type etudiant = structure
Debut
Matricule : entier
Nom : chaine
Prenom : chaine
Fin
/*declaration du tableau d’etudiant*/
Const n val
Type tableau = tableau(1—n) de etudiant
Var tab : tableau
II- Saisie des valeur d’un tableau
Pour ecrire dans une cellule d’un tableau d’enregistrement :
nom_tableau[no_cellule].nom_du_champ val
Ou
Lire(nom_tableau[no_cellule].nom_du_champ)
En general une boucle est necessaire pour saisir l’ensemble des valeurs d’un tableau
Pour i de 1 a n faire
Afficher(‘’veuillez saisir la valeur du champ’’)
Lire(nom_tableau[i].nom_du_champ 1)
Lire(nom_tableau[i].nom_du_champ n)