Vous êtes sur la page 1sur 19

TD4- Algorithmique I

Module informatique SMIA-S2


2020-2021

Pr. Er-rajy Latifa


Exercice 1

1. Ecrire une procédure Pairproc qui prend en argument un entier et qui affiche le
message « nombre pair » si le nombre est pair et « nombre impair » sinon. Ecrire le
programme principal pour tester cette procédure.

2. Ecrire un algorithme qui donne le volume d’un cylindre de rayon r et de hauteur h en


faisant appel à une fonction aire qui prend r comme paramètre qui retourne l’aire d’un
cercle.

Pr. Er-rajy Latifa


Exercice 1

1. Ecrire une procédure Pairproc qui prend en argument un entier et qui affiche le
message « nombre pair » si le nombre est pair et « nombre impair » sinon. Ecrire le
programme principal pour tester cette procédure.

• Si on a besoin de répéter une tâche dans plusieurs endroits du programme, et


que dans cette tache on ne calcule pas de résultats.

• Procédure nom_procédure (paramètres et leurs types)

Instructions constituant le corps de la procédure

FinProcédure

Pr. Er-rajy Latifa


Exercice 1
1. Ecrire une procédure Pairproc qui prend en argument un entier et qui affiche le
message « nombre pair » si le nombre est pair et « nombre impair » sinon. Ecrire le
programme principal pour tester cette procédure.

Solution :
Procédure Pairproc (a : entier)
si (a % 2 = 0) alors
Ecrire (" nombre pair")
sinon
Ecrire ("nombre impair")
Finsi
FinProcedure

Algorithme PairProc
var x : entier
Debut
Ecrire ("donner un nombre")
Lire (x)
Pairproc (x)
Fin

Pr. Er-rajy Latifa


Exercice 1

2. Ecrire un algorithme qui donne le volume d’un cylindre de rayon r et de hauteur h en


faisant appel à une fonction aire qui prend r comme paramètre qui retourne l’aire d’un
cercle.

• Pour un cercle de rayon r et de hauteur h, l'aire s = pi * r * r.


• La fonction aire calcule et retourne la valeur s.
• Le rayon r et la hauteur h sont donnés au programme principal qui
calcule et affiche le volume v (vol = s * h) .
• La fonction aire est appelée au programme principal pour calculer le
volume.

Pr. Er-rajy Latifa


Exercice 1
2. Ecrire un algorithme qui donne le volume d’un cylindre de rayon r et de hauteur h en
faisant appel à une fonction aire qui prend r comme paramètre qui retourne l’aire d’un
cercle.

Solution : Algorithme Volume


Fonction aire (x: reel) : reel
CONST Pi  3.14 : reel
var s : reel
s Pi * r * r
retourne (s)
FinFonction

var r, h, vol : reel


Debut
Ecrire ("donner le rayon et l'hauteur de cylindre")
Lire (r, h)
vol  h * aire(r)
Ecrire ("le volume est :", vol)
Fin

Pr. Er-rajy Latifa


Exercice 2

1. Ecrire une fonction max2 qui retourne le maximum de deux entiers.


a. En utilisant si et sinon
b. Sans utilisation de sinon

2. Ecrire une fonction max3 qui retourne le maximum de trois entiers en faisant appel à
max2 qui retourne le maximum de deux entiers.

3. Ecrire un programme PREMIERS affichant les nombres premiers inférieurs à 100.


On utilisera une fonction Premier prenant un nombre entier et retournant vrai si le
nombre est premier, faux sinon.

4. Écrire une fonction fact qui renvoie la factorielle d’un nombre n : n ! et une fonction
puissance qui calcule la puissance nième d’un nombre x : xn.

5. Ecrire un algorithme qui calcule la somme des puissances p-ième des entiers et qui
utilise la fonction puissance précédemment définie :
Sp = 1p + 2p + 3p + … + np

Pr. Er-rajy Latifa


Exercice 2

1. Ecrire une fonction max2 qui retourne le maximum de deux entiers.

a. En utilisant si et sinon

Fonction nom_fonction (paramètres et leurs types) : type_fonction


Instructions constituant le corps de la fonction
retourne …
FinFonction

Pr. Er-rajy Latifa


Exercice 2

1. Ecrire une fonction max2 qui retourne le maximum de deux entiers.

a. En utilisant si et sinon
Solution :

Fonction max2 (a : entier, b : entier) : entier


si (a > b) alors
retourne (a)
sinon
retourne (b)
finsi
FinFonction

Pr. Er-rajy Latifa


Exercice 2

1. Ecrire une fonction max2 qui retourne le maximum de deux entiers.

b. Sans utilisation de sinon


Solution :

Fonction max2 (a : entier, b : entier) : entier


si (a > b) alors
retourne (a)
finsi
retourne (b)
FinFonction

Pr. Er-rajy Latifa


Exercice 2

2. Ecrire une fonction max3 qui retourne le maximum de trois entiers en faisant appel à
max2 qui retourne le maximum de deux entiers.

Solution :
Fonction max3 (a : entier, b : entier, c : entier) : entier
var t : entier
t ←max2(a,b)
Retourne( max2(t,c) )
FinFonction

Pr. Er-rajy Latifa


Exercice 2

3. Ecrire un programme PREMIERS affichant les nombres premiers inférieurs à 100. On


utilisera une fonction Premier prenant un nombre entier et retournant vrai si le nombre est
premier, faux sinon.
Solution :

Si n est premier, il n'est divisible par aucun nombre i (n%i <> 0)

Pr. Er-rajy Latifa


Exercice 2 Algorithme PREMIERS
Fonction Premier (a : entier) : booléen
Solution : var test, i : entier
test  1
pour i  2 jusqu'à a-1 faire
si (a % i = 0) alors
test  0
Finsi
Finpour
si (test = 0) alors
retourne (faux)
Finsi
retourne (vrai)
FinFonction

var n : entier
Debut
pour n  2 jusqu'à 100 faire
si (Premier (n) = vrai) alors
Ecrire (n, "est premier")
finsi
finpour
Fin Pr. Er-rajy Latifa
Exercice 2

4. Écrire une fonction fact qui renvoie la factorielle d’un nombre n : n ! et une fonction
puissance qui calcule la puissance nième d’un nombre x : xn.

Solution :

Pr. Er-rajy Latifa


Exercice 2 Fonction Fact (n : entier) : entier
var fct, i : entier
Solution : si (n = 0) alors
retourne(1)
Finsi
fct  1
pour i 1 jusqu'à n faire
fct  fct * i
Finpour
retourne (fct)
FinFonction

Fonction Puissance (x: entier, n : entier) : entier


var puiss, i : entier
si (n = 0) alors
retourne(1)
Finsi
puiss  1
pour i 1 jusqu'à n faire
puiss  puiss* x
Finpour
retourne (puiss)
FinFonction Pr. Er-rajy Latifa
Exercice 2

5. Ecrire un algorithme qui calcule la somme des puissances p-ième des entiers et qui
utilise la fonction puissance précédemment définie :
Sp = 1p + 2p + 3p + … + np
Solution :
Algorithme Somme_puissance
var p, n, S, i : entiers
Début
Ecrire (" entrer la puissance p et le nombre n :")
Lire(p,n)
S0
pour i 1 jusqu'à n faire
S = S + Puissance(i,p)
Finpour
Ecrire(" La somme est : ", S)
Fin

Pr. Er-rajy Latifa


Exercice 3

1. Ecrire une fonction calPGDC qui prend comme paramètres deux nombres a et b et qui
renvoie le plus grand commun diviseur de a et b (avec a>=b). On utilisera le fait que si
b=0 alors PGDC(a,b)=a et sinon, en appelant r le reste de la division euclidienne de a
par b (a mod b) alors le pgcd de a et de b est aussi le pgcd de b et de r.

TantQue b>0 faire


r  a%b
ab
br
FinTanQue

Pr. Er-rajy Latifa


Exercice 3

1. Ecrire une fonction calPGDC qui prend comme paramètres deux nombres a et b et qui
renvoie le plus grand commun diviseur de a et b (avec a>=b). On utilisera le fait que si
b=0 alors PGDC(a,b)=a et sinon, en appelant r le reste de la division euclidienne de a
par b (a mod b) alors le pgcd de a et de b est aussi le pgcd de b et de r.
Solution :
Fonction calPGDC (a: entier, b:entier) : entier
Var r , PGDC: entier
Si b=0 alors
PGDCa
Sinon
TantQue b>0 faire
r  a%b
ab
br
FinTanQue
PGCDa
FinSi
Retourne (PGDC)
FinFonction
Pr. Er-rajy Latifa
Exercice 3
Algorithme PGDC
Solution : Fonction calPGDC (a: entier, b:entier) : entier
Var r , PGDC: entier
Si b=0 alors
PGDC=a
Sinon
TantQue b>0 faire
r  a%b
ab
br
FinTanQue
PGCDa
FinSi
Retourne (PGDC)
FinFonction

var n,m : entier


Début
Ecrire (" entrer deux nombres")
Lire(n,m)
Ecrire(" Le PGCD de n et m est : ", calPGDC (n,m))
Fin
Pr. Er-rajy Latifa

Vous aimerez peut-être aussi