EXERCICE 1
- Analyse et exécution d’un pseudo code
ALGORITHME 1
Questions
- Le programme ci-dessus ne comporte pas d’erreurs
- Pour a=6 et n=7 disons ce que fait ce programme
Execution
cc1(7,6)=30240
l
cc1(6,42)
l
cc1(5,252)
l
cc1(4,1260)
l
cc1(3,5040)
l
cc1(2,15120)
l
cc1(1,30240)
l
cc1(0,30240)
l
30240
On remarque que n=6 et n=7 on obtient 30240. Or 30240=5040*6 et 7!=5040 on a donc n!*a. En conclusion le programme réalise n!*a.
ALGORITHME 2
Questions
- L’erreur contenue dans ce programme est qu’il ya un manque de Fsi.
- Prototype: La fonction cc2 prend en paramètre un entier et retourne un booléen.
En executant pour n=3 le programme retourne vrai et pour n=4 le programme retourne faux. On retient que cc2 est un programme parité qui retoune vrai si le nombre entré est impaire et faux si ce dernier est pair.
- Soeint les expresions
B-1) Donnons les différents types de A et B
- A ou B : A et B sont des booléens
- (A-1>0) et (B<0): A et B sont des entiers
- (A=’’M’’ et B>=21) ou (A=’’F’’ et B>=25): A une chaine et B un entier
B-2) E valuons l’expression iii pour A=M ET B=20
( A=’’M’’ et B>=21) ou (A=’’F’’ et B>=25)= faux
l l
faux ou faux
l
Faux
C-Repondre par vrai ou faux
- Faux
- Faux
- Faux
- Faux
EXERCICE 2
1-Algorithme parité
Var k:entier;
Debut
Ecrire(‘’Entrez un nombre’’);
Lire(k);
Si(k mod 2 =0) alors
Ecrire(‘’ le nombre’’,k,’’ est pair’’);
Sinon
Ecrire(‘’le nombre’’,k,’’ est impair’’);
Fsi
Fin
2-Fonction somme_carres(n:entier) : entier;
Var k, sc :entier;
Debut
Sc<--0;
Pour k de 1 a n faire
Sc<-- sc + k*k;
Fpr
Retourner sc;
Fin;
3-Fonction somme_carres2(n:entier) : entier;
Var sc : entier;
Debut
Sc <-- (n*(n+1)*(2*n+1))/6;
Retourner sc;
Fin;
4-Fonction factorielle(n : entier): entier ;
Var fact, k : entier ;
Debut
Si (n=0 ou n=1) alors
Retouner 1;
Sinon
Fact<-- 1;
Pour k de 1 a n faire
Fact <-- fact *k;
Fpr
Fsi
Retouner fact;
Fin;
EXERCICE 3
- Fonction nombre_pair(n : entier) : entier;
Var i, cptdiv : entier;
Debut
Cptdiv <--0;
Pour i de 2 a n faire
Si ( n mod =0) alors
Cptdiv <-- cptdiv +1;
Fsi
Fpr
Si (cptdiv =0) alors
Retourner vrai;
Sinon
Retourner faux;
Fsi
Fin;
2- Algorithme crible_erathostène
Var i, k : entier ;
P : tableau de entier;
Debut
Ecrire(‘’ Entrez un nombre’’);
Lire(n);
K <-- 0;
Pour i de 1 a n faire
Si ( nombre_premier(i) = vrai) alors
K <-- 0;
P[k]<-- i;
Fsi
Fpr
Pour i de 1 a k faire
Ecrire( p[i] );
Fpr
Fin
- Algorithme Multp_matice_positif
Const L= 30;
Type mat = tableau [1..L , 1..L]de entier;
Var M1, M2 , M3 : mat ;
i , j , k ;
Debut
Pour i de 1 a L faire
Pour j de 1 a L faire
Ecrire(‘’ enrez les elements de la matrice 1);
Repeter
Lire( M1[i ,j] );
Jusqu’a( M1[i , j] )>0);
Fpr
Fpr
Pour i de 1 a L faire
Pour j de 1 a L faire
Ecrire( ‘’ entrez les elements de la matrice M 2);
Repeter
Lire M2[i , j]);
Jusqu’a ( M2[i , j]>0 );
Fpr
Fpr
Pour i de 1 a L faire
Pour j de 1 a L faire
M3[i , j] <-- 0;
pour k de 1 a L faire
M3[i , j] <--M3[i , j] + M1[i , j] * M2[k , j];
Fpr
Fpr
Fpr
Pour i de 1 a L faire
Pour j de 1 a L faire
Ecrire ( M3[i , j] );
Fpr
Fpr
Fin
PROBLEME
- Une structure de données permettant de représenter un livre
Type livre = Enregistrement
Code: entier;
Nom: chaine
Libellé: chaine;
Prix: réel;
Quantité: réel;
Notation: entier;
finEnregistrement ;
2)Une stucture de données permettant de manipuler ces livres en memoire centrale
Const N=700;
Type tabliv = tableau[1..N] de livre;
3)Fonction rechercherlivre( t: tabliv , code: entier) : entier ;
Var i: entier;
Debut
Pour i de 1 a N faire
Si ( t[i].code = code) alors
Retourner i ;
Fsi
Fpr
Retourner -1 ;
Fin ;
4)Procédure insérerlivre(var t: tabliv , l: livre);
Var i: entier;
Debut
i <-- rechercherlivre(t , l.code);
Si (i <> -1) alors
Ecrire(‘’ insertion impossible le livre existe déja’’);
Sinon
i<-- 1;
Tantque( i<N et t[i].code <> NIL) faire
i<--i+1;
Ftq
Si( i< N) alors
t[i].code <-- L.code;
t[i].nom<-- L.nom;
t[i].libellé<-- L.libellé;
t[i].prix<-- L.prix;
t[i].quantoté<-- L.quantité;
t[i].notation<-- L.notation;
Sinon
Ecrire(‘’ Espace saturé’’);
Fsi
Fsi
Fin;
5)Fonction compterlivre(t: tabliv): entier;
Var i , cpt : entier;
Debut
Cpt<--0;
Pour i de 1 a N faire
Si ( t[i].nom = ‘’INF111’’) alors
Cpt <-- cpt +1;
Fsi
Fpr
Retourner cpt;
Fin;
- Procédure supprimerlivre( var t: tabliv , code:entier);
Var i: entier;
Debut
i<-- rechercherlivre( t , code) ;
Si ( i = -1) alors
Ecrire(‘’ supression impossible le livre n’existe pas’’);
Sinon
t[i].code<-- NIL;
t[i].nom<-- ‘’ ‘’;
t[i].libellé<-- ‘’ ‘’;
t[i].prix<-- NIL;
t[i].quantité<-- NIL;
t[i].notation<-- NIL;
Fsi
Fin;
- Procédure modifierlivre( var t: tabliv , newprix: réel , code: entier);
Var i: entier;
Debut
i= rechercherlivre( t , code);
Si (i = -1) alors
Ecrire(‘’ modification impossible le livre n’existe pas’’);
Sinon
t[i].prix<-- newprix;
Fsi
Fsi ;
- procedure afficherliv( t: tabliv);
Var i : entier;
Debut
Pour i de 1 a N faire
Si (t[i].notation > 3) alors
Ecrire(‘’ le code est:’’, t[i].code);
Ecrire(‘’le nom est:’’,t[i].nom);
Ecrire(‘’le libellé est:’’, t[i].libellé);
Ecrire(‘’le prix est:’’, t[i].prix);
Ecrire(‘’la quqntité est:’’, t[i].quantité);
ecrire(‘’la notation est:’’, t[i].notation);
Fsi
Fpr
Fin;