Exercice 1 :
Valeur de vérité des expressions suivantes :
Variables a, b, c en entier
p, q en booléen
Début :
a<- 3 ; b <- 2 ; c <- -1 ;
p <- ((a>0) ou (b < 2)) ou (c > 0)
q <- (a > 0) ou ((b <2) et (c > 0))
r <- (a > 0) et ((b <3) ou (c > 0))
s <- (a > 0) ou ((b <=2) et (c > 0))
t <- ( (a > 0) ou (b <3)) et (c > 0)
Fin
Donner les valeurs de vérité de p, q, r, s, t.
> a:=3:b:=2:c:=-1:
>
p:=((a>0)or(b<2))or(c>0);
q:=(a>0) or ((b<2) and (c>0));
r:=(a>0) and ((b<3) or (c>0));
s:=(a>0) or ((b<=2) and (c>0));
t:=((a>0) or (b<3)) and (c>0);
Exercice 2 :
Soit deux nombres entiers quelconques contenus respectivement dans les variables a et b. Ecrire un programme MAPLE permettant de déterminer le plus petit de ces deux nombres et de l'afficher. Les valeurs de a et b seront introduites ici par affectation.
>
restart;
a:=34;b:=45;
if a<b then
print("le minimal est de", a);
else
print("le minimal est de ",b);
fi;
>
Une version équivalente de ce programme est:
>
restart;
a:=34;b:=45;
if a<b then
mini:=a:
else
mini:=b:
fi:
print("le minimal est de ",mini);
Version équivalente avec le si immédiat:
>
restart;
a:=34;b:=45;
mini:=`if`(a<b,a,b);
print("le minimal est de ",mini);
Exercice 3 :
Résoudre l'équation du premier degré: a*x+b=0.
> On saisiera au clavier les valeurs des coefficients a et b et on fera afficher les différentes solutions possibles pour x selon les valeurs de a et b.
> On demande de:
> - écrire l'algorithme utilisé
> - écrire un programmes MAPLE correspondant à cet algorithme
>
restart;
a:=readstat("entrez le premier nombre: ");
b:=readstat("entrez le deuxième nombre: ");
if a=0 and b=0 then
print("toute les valeurs possibles sont solution");
elif a=0 then
print("il n'existe pas de solution!");
else
print("La solution est une valeur de x égale à", -b/a);
fi;
entrez le premier nombre: 12;
entrez le deuxième nombre: 3;
Exercice 4 :
Ecrire l'algorithme permettant de lire 3 valeurs a, b, c et de les afficher par ordre croissant.
>
restart;
a:=readstat("veuillez entrer a: "):
b:=readstat("veuillez entrer b: "):
c:=readstat("veuillez entrer c: "):
if a<b then
if b<c then
print(`a < b < c`);
elif a<c then
print(`a < c < b `);
else
print(`c < a < b`);
fi;
else #b<a
if c<b then
print(`c < b < a`);
elif a<c then
print(`b < a < c`);
else
print(`b < c < a`);
fi;
fi;
veuillez entrer a: 23;
veuillez entrer b: 41;
veuillez entrer c: 12;
>
Ecrire l'algorithme permettant d'afficher la valeur de f(x), sachant que f est définie par:
Pour tout x<0, f(x)=x
Pour x=0, f(x)=1
Pour tout x>0, f(x)=-x
>
restart;
x:=readstat("veuillez entrer x ");
if x<0 then
resultat:=x;
else
if x=0 then
resultat:=1;
else
resultat:=-x;
fi;
fi;
print("f(".x.") sera égal à ",resultat);
>
>
Exercice 5 :
Variable Entier A, B, C
Début
A<- 5
Si ( ( A >= 5) et (B <6) alors
C <- A B
Si (B>0) alors
A <- B
FinSi
FinSi
Si ((A>3) et (B>0)) Alors
C <- A + B
Si (B < 6) alors
A <- B + C
FinSi
FinSi
Fin
Trouver les Valeurs finales de A, B, C si
1)B <- 6 ;
2)B <- 3 ;
3)B <- 4.
>
restart;A:=5;B:=readstat("valeur de B? ");
if (A>=5 and B<6) then
C:=A-B;
if B>0 then
A:=B;
fi;
fi;
if (A>3 and B>0) then
C:=A+B;
if(B<6) then
A:=B+C;
fi;
fi;
A;B;C;
valeur de B? 6;
>
Si B<-6, alors A:=5 B:=6 et C:=11
Si B<-3 alors A:=3 B:=3 C:=2
Si B<-4 alors A:=12 B:=4 C:=8
Exercice 6 :
Valeur de vérité des expressions suivantes :
Variables p, q, r, t en booléen
a, b,c en entier
a <- 2 ; b <- 4 ; c <- -1;
p <- (a > b) ; q <- ((b * c) > a); r <- (non (p) et q); t <- (non(p) ou q) ;
Traduire en Maple les fonctions Excel suivantes (vous donnerez le résultat en fonction des évaluations précédentes).
ET(p ;q ;r ;t) ;
OU(p ;q ;r ;t) ;
IF(OU (ET (p ; q) ; r) ; a ; b)
Note : lemplacement des cellules a été remplacé par le nom des variables.
On peux déjà traduire les fonctions excel en algorithmique:
p et q et r et t
p ou q ou r ou t
sii( (p et q) ou r, a, b)
> restart;a:=2;b:=4;c:=-1;p:=evalb(a>b);q:=evalb( (b*c)>a);r:= not p and q;t:=not p or q;
Les fonctions seront donc:
> p and q and r and t;
> p or q or r or t;
> `if`((p and q)or r,a,b);
Exercice 7 :
Dans une entreprise, le calcul des jours de congés payés s'effectue de la manière suivante :
Si une personne est entrée dans l'entreprise depuis moins d'un an, elle a droit à deux jours de congés par mois de présence, sinon à 28 jours au moins. Si une personne est un cadre et s'il est âgé d'au moins 35 ans et si son ancienneté est supérieure à 3 ans, il lui est accordé 2 jours supplémentaires. Si elle est âgée d'au moins 45 ans et si son ancienneté est supérieure à 5 ans, il lui est accordé 4 jours supplémentaires, en plus des 2 accordés pour plus de 35 ans. Écrire un algorithme qui calcule le nombre de jours de congés à partir de l'âge, l'ancienneté (saisie en mois) et l'appartenance au collège cadre d'un employé.
On a besoin de trois variables: l'age de l'employé, son ancienneté et son appartenance au collège cadre. Cette dernière ne peut être que vrai ou fausse, ce sera donc un booléen.
> restart;
>
age:=readstat("age? ");
anciennete:=readstat("ancienneté? (en mois) ");
cadre:=readstat("cadre? (true/false) ");
age? 48;
ancienneté? (en mois) 68;
cadre? (true/false) true;
Maintenant que nous avons nos trois variables, nous effectuons le calcul selon les critères énoncés:
Nous utiliserons un variable temporaire nommée tmp conservant le nombre de jours accumulés.
Si une personne est entrée dans l'entreprise depuis moins d'un an, elle a droit à deux jours de congés par mois de présence, sinon à 28 jours au moins
> tmp:=`if`(anciennete>=12,28,anciennete*2);
Si une personne est un cadre et s'il est âgé d'au moins 35 ans et si son ancienneté est supérieure à 3 ans, il lui est accordé 2 jours supplémentaires.
>
if cadre and age>35 and anciennete>36 then
tmp:=tmp+2;
fi;
>
. Si elle est âgée d'au moins 45 ans et si son ancienneté est supérieure à 5 ans, il lui est accordé 4 jours supplémentaires, en plus des 2 accordés pour plus de 35 ans.
>
if age>45 and anciennete>60 then
tmp:=tmp+4;
fi;
>
>