Académique Documents
Professionnel Documents
Culture Documents
Exercice 7
Expliquer pourquoi le code ASCII correspondant au chiffre 0 est différent de 0000 0000
Solution
Le code ASCII d’un nombre est différent de son code binaire parce qu’il est considéré
comme un caractère alphanumérique non pas comme une valeur numérique.
Chapitre II
Exercice 1
Soit l’algorithme suivant :
Variables
p, q : Réel;
Début
q = 1;
Ecrire(‘Saisir le valeur de p ’) ;
Lire(p) ;
TantQue (p + q <> p)
q = q/2;
FinTantQue
Ecrire(‘La valeur de q est ’, q);
Fin
Sachant que la boucle TantQue est finie (Ce n’est pas une boucle infinie). Et que la dernière
valeur lue de q est différente de 0. Commenter cet algorithme en décrivant brièvement ce qu’il
permet de faire.
Solution
L’algorithme demande à l’utilisateur de saisir un nombre à virgule flottante « p », puis
affiche une valeur non nulle q telle que p + q = p
Exercice 2
Soit l’algorithme suivant :
1 Variables
2 n,m : Réel ;
3 Début
4 Ecrire(‘Donner la valeur de n’) ; Lire(n) ;
5 Ecrire(‘Donner la valeur de m’) ; Lire(m) ;
6 n = n+m;
7 m = n-m;
8 n = n-m;
9 Ecrire(‘La valeur de n est ’, n ) ;
10 Fin
Si on exécute cet algorithme avec n= 4 et m = 3, quel serait le résultat affiché ? Et dans le cas
général qu’affiche cet algorithme ? Justifier votre réponse.
Solution
Exercice 3
Ecrire un algorithme qui permet de calculer le taux de croissance du produit intérieur brut
(PIB). Le programme demande à son utilisateur de saisir deux valeurs, à savoir le PIB de
l’année en cours, et le PIB de l’année passée. Finalement il affiche le taux de croissance du
PIB correspondant. La formule à utiliser est la suivante :
Le taux de croissance PIB = ((PIB année en cours - PIB année passée) / PIB année passée) x 100.
Solution
Variables
PIBpas, PIBact : Réel ;
Début
Ecrire(‘Saisir le PIB en cours ’) ;
Lire(PIBact) ;
Ecrire(‘Saisir le PIB passé ’) ;
Lire(PIBpas) ;
Ecrire(‘Le taux de croissance du PIB est : ’ , 100 * (PIBact – PIBpas) / PIBpas) ;
Fin
Solution
Variables
P : Entier;
Début
P = 1;
Repeter
P=2*P;
Jusqu'a (P >= 1000)
Ecrire (‘La première puissance de 2 supérieure ou égale à 1000 est ’, P) ;
Fin
Exercice 5
Soit la fonction suivante qui permet de programmer l’algorithme de Babylone.
Fonction babylone(p : Réel ) : Réel
Variables
M : Réel ;
i : Entier ;
Début
M = p / 40 ;
Ecrire (‘Saisir un réel inférieur à ’, p) ;
Lire(M) ;
Pour i =1 à 100
M = (p/ M + M)/2 ;
FinPour
Retourne(M) ;
Fin
Trouver s’il y a des erreurs dans la fonction babylone ?
Solution
Exercice 6
Soit l’algorithme suivant :
1 Variables
2 casARisque : Booléen ;
3 typePatient, nPhone : Chaine ;
4 Début
5 casARisque = Faux ;
6 Ecrire(‘Préciser si le patient est symptomatique (S), un cas contact (C) ou autre (A) ’) ;
7 Lire(typePatient) ;
8 Si (typePatient = ‘S’) OU (typePatient = ‘C’) alors
9 casARisque = Vrai ;
10 Ecrire(‘Le patient doit effectuer un test PCR’) ;
11 Sinon
12 Ecrire(‘Le patient peut effectuer un test antigénique ou un test sérologique’) ;
13 FinSi
…
19 Fin
Ajouter à l’algorithme un contrôle de saisi pour éviter les éventuelles erreurs d’inattention lors
de la saisie. Ecrire juste les instructions correspondantes (pas tout l’algorithme !).
Solution
6 Répéter
7 Ecrire(‘Préciser si le patient est symptomatique (S), un cas contact (C) ou autre (A) ’) ;
8 Lire(typePatient) ;
9 Jusqu’à ((typePatient = ‘S’) OU (typePatient = ‘C’) OU (typePatient = ‘A’))
Exercice 7
Une agence d’assurance souhaite avoir un programme pour distinguer les clients susceptibles
d’être en retraite. Chaque client est identifié par un code alphanumérique.
Ecrire un algorithme qui demande à son utilisateur de l’informer sur la date d’aujourd’hui, et
de l’effectif total des clients concernés, puis lui demande de saisir le code et la date de
naissance de chaque client. Le programme enfin affiche la liste des codes de tous les clients
dont l’âge est supérieur ou égal à 60 ans.
Solution
Variables
i, j, eff : Entier ;
code, Tableau codeCLTRetraite[] : Chaine;
dateAuj, dateNaiss : Date;
age : Reel ;
Début
i=0;j=0;
Ecrire (‘Saisir l’effectif total des employés’) ;
Lire (eff) ;
Ecrire (‘Saisir la date d’aujourd’hui’) ;
Lire (dateAuj) ;
Redim codeCLTRetraite[eff] ;
Pour i=0 à eff+1
Ecrire (‘Saisir le code du client ’) ;
Lire (code) ;
Ecrire (‘Saisir la date de naissance du client ’) ;
Lire (dateNaiss) ;
age = dateAuj – dateNaiss ;
Si (age >= 60 ) alors
codeCLTRetraite[j] = code ;
j = j+1 ;
FinSi
FinPour
i=0;
Ecrire (‘Liste des codes de tous les clients dont l’âge est supérieur ou égal à 60 ans : ’);
Pour i = 0 à longueur(codeCLTRetraite)-1
Ecrire (codeCLTRetraite[i]);
FinPour
Fin