Série d’exercices corrigés « programme allégé » : (théorique et pratique) Exercice 1 : (déclarations)
Compléter le tableau ci-dessous, par les déclarations Pascal adéquates :
Description Déclaration en Pascal (préciser le mot clé adéquat : CONST, VAR)
Une constante MSG de valeur
"E=MC2"
Un tableau V pouvant contenir 20 chaines et ayant des indices de type entier.
Une chaine de caractères CH pouvant contenir 15 caractères au maximum.
Une variable X pouvant contenir une valeur positive comprise entre 40000 et 70000
Un tableau T pouvant contenir 10 réels et ayant des indices de type caractères Une constante PI de valeur 3.14
Solution :
Description Déclaration en Pascal (préciser le mot clé adéquat : CONST, VAR)
Une constante MSG de valeur "E=MC2" CONST
MSG = 'E=MC2' ; Un tableau V pouvant contenir 20 chaines
et ayant des indices de type entier.
VAR V:array[1..20] of string;
Une chaine de caractères CH pouvant
contenir 15 caractères au maximum. VAR
CH :string [15] ; Une variable X pouvant contenir une
valeur positive comprise entre 40000 et 70000
VAR
X :longint ; Un tableau T pouvant contenir 10 réels et
ayant des indices de type caractères VAR
T :array['A' .. 'J'] of real ; Une constante PI de valeur 3.14 CONST
PI = 3.14;
Bac : Mathématiques -Sciences -Technique
Exercice 2 : (Pythagore)
Faire l’algorithme d’un programme nommé Pythagore qui saisit les longueurs des trois côtés AB, BC et AC d’un triangle et vérifier s’il est rectangle ou non en B en appliquant la formule de Pythagore AB2+BC2=AC2.
Solution :
0) Début Pythagore
1) Ecrire ("donner AB"), lire (AB) 2) Ecrire ("donner BC"), lire (BC) 3) Ecrire ("donner AC"), lire (AC)
4) Si (carré(AB) + carré(BC) = carré(AC) ) alors
MSG "le triangle est rectangle en B"
Sinon
MSG "le triangle n’est pas rectangle en B"
Finsi
5) Ecrire (MSG) 6) Fin Pythagore
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
AB BC MSG AC
Réel Réel Réel Chaine
Stocker la longueur du coté AB Stocker la longueur du coté BC Stocker la longueur du coté AC
La nature du rectangle
Exercice 3 : (Factorielle)
Faire l’algorithme et la traduction pascal du programme qui permet de saisir un entier positif N et affiche son factoriel. Sachant que le factoriel de N se calcule comme suit :
N! = 1*2* … *(N-2)*(N-1)*(N) et 0!=1 Solution :
L’algorithme :
0) Début Factorielle 1) Repeter
Ecrire ("donner un entier positif"), lire (N) Jusqu’à(N≥0)
2) F1
Pour i de 1 à N faire F F*i
Fin Pour
3) Ecrire (N ,"! = " , F) 4) Fin Factorielle
La traduction Pascal :
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
N F i
Entier Entierlong
Entier
Stocker une donnée La Factorielle
Compteur
Exercice 4 : (Tournage à la main)
Soit l’algorithme suivant : 0) Début travail
1) Ecrire ('' donner N '') , Lire(N) 2) R 0
3) Répéter
R R + N mod 10 N N div 10 Jusqu'à (N=0)
4) Ecrire ('' le résultat '' , R) 5) Fin travail
1- Traduire l’algorithme précédent en pascal
2- Faire le tournage à la main pour trouver les valeurs affichées par le programme travail pour N=125 et pour N=458
3- Déduire le rôle du programme travail.
Solution :
1) La traduction pascal
2) Tournage à la main : Pour N=125
initialisation Iteration1 Iteration2 Iteration3
N 125 12 1 0
R 0 0+5 = 5 5+2=7 7+1=8
Valeur affichée par le programme = 8 Pour N=458
initialisation Iteration1 Iteration2 Iteration3
N 458 45 4 0
R 0 0+8=8 8+5=13 13+4=17
Valeur affichée par le programme = 17 3) Rôle :
Saisir un entier N puis calculer et afficher la somme de ses chiffres
Exercice 5 : (Cryptage)
Faire l’analyse d’un programme intitulé CRYPTAGE qui permet de saisir une chaine de caractères CH non vide puis de la coder (crypter) selon le procédé suivant : Permuter chaque caractère d’indice pair avec le caractère qui le précède.
Exemple :
Si la chaine de départ CH = ''Anas'' , son codage donne la chaine suivante : ''nAsa''.
Solution :
Nom : CRYPTAGE
Résultat = Ecrire ("la chaine cryptée : " , CH) CH=[] Pour i de 1 à long(ch) faire
Si (i mod 2 = 0 ) alors AuxCH[i]
CH[i] CH[i-1]
CH[i-1] Aux Fin Si
Fin Pour CH=[] Repeter
CH=donnée("donner une chaine ") Jusqu’à(long(CH)>0)
Fin CRYPTAGE
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
CH i Aux
Chaine de caractères Entier caractères
donnée compteur variable auxiliaire
Exercice 6 : (PGCD)
Ecrire l’algorithme nommé PGCD qui permet de calculer et d’afficher le PGCD (Le plus grand commun diviseur) de deux nombres entiers A et B strictement positifs, en utilisant la méthode suivante :
Cette méthode consiste à remplacer A par (A-B) si A>B, et B par (B-A) si B>A. On répète cette même opération jusqu’à obtenir A=B auquel cas, le PGCD cherché est A ou B.
Exemple :
Pour trouver le PGCD(24,18) : A= 24; B=18
A>B; AA-B A=6 et B=18 B>A; BB-A A=6 et B=12 B>A; BB-A A=6 et B=6 A=B; donc PGCD de A et de B est 6
Solution :
0) Début PGCD 1) Répéter
Ecrire ("donner A puis B "), lire(A,B) Jusqu’à(A>0) et (B>0)
2) Répéter Si A>B alors AA-B
Sinon si B>A alors BB-A
Fin Si
Jusqu’à(A=B)
3) Ecrire ("le PGCD (", A ," , " , B ," ) = " , A) 4) Fin PGCD
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
A i B
Entier Entier Entier
Compteur Donnée Donnée
Exercice 7 : (Nombre premier)
Un entier strictement positif est dit premier s’il n’a que deux diviseurs distincts : 1 et lui-même
Ecrire l’algorithme d’un programme qui saisit un entier N strictement positif et affiche un message indiquant si cet entier est premier ou non.
Exemple :
N=7 est un nombre Premier, parce que 7 est divisible uniquement par 1 et par 7.
Solution :
0) Début Premier 1) Répéter
Ecrire("donner un entier strictement positif "), lire(N) Jusqu’à(N>0)
2) Nb0
Pour i de 1 à Nb faire Si (N mod i = 0 ) alors Nb Nb+1 Fin Si
Fin Pour
3) Si (Nb=2) alors
Ecrire (N , " est premier ") Sinon
Ecrire (N , " non premier ") Fin Si
4) Fin Premier
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
i N Nb
Entier Entier Entier
Compteur l’entier à vérifier Nombre de diviseurs de N
Exercice 8:
Soit le bloc pascal suivant :
1) Déclarer les variables utilisées dans le programme travail.
2) Pour x=''AminA'' quel est le message affiché par le programme travail.
3) Déduire le rôle du programme travail.
Solution : 1)
2) Pour x=''AminA'' , le message affiché par le programme travail : non valide 3) le rôle du programme travail :
Saisir une chaine de caractères et vérifier et afficher si elle est palindrome ou non.
C’est-à-dire peut être lue de droite à gauche comme de gauche à droite.
Exercice 9:
Ecrire un programme pascal qui permet de saisir une chaine ch non vide de taille maximale égale à 10 et de l’afficher sous la forme d’un triangle comme le montre l’exemple suivant.
Exemple :
Pour ch =''ELBAHI'', on aura : E
EL ELB ELBA ELBAH ELBAHI Solution :
Exercice 10:
Ecrire l’l’algorithme d’un programme intitulé parfait qui permet de saisir un entier x strictement positif puis de vérifier et d’afficher s’il est parfait ou non.
Un entier est dit parfait s’il est égal à la somme de ses diviseurs autre que lui-même.
Exemple :
6 est un nombre parfait car 6=1+2+3
28 est un nombre parfait car 28=1+2+4+7+14 Solution :
0) Algorithme parfait 1) repeter
ecrire (''donner un entier ''), lire (x) jusqu’à (x≥0)
2) sd 0
Pour i de 1 à x div 2 faire Si( x mod i = 0 ) alors sd sd+i Fin Si
Fin Pour 3) Si (sd=x) alors
ecrire(x ,''est parfait'') sinon
ecrire (x,''non parfait") Fin si
4) Fin parfait
Exercice 11:
Ecrire un algorithme intitulé MAX_MIN permettant :
Remplir un tableau T par N entiers non nuls (avec 2<N<100)
Puis de chercher et d’afficher le maximum et le minimum du tableau T.
Solution :
0) début MAX_MIN 1)Répéter
Ecrire(" donner N "), lire(N) jusqu'a(N>2) et (N<100) 2) Pour i de 1 à N faire Répéter
Ecrire("T[", i , "]=?"), lire(T[i]) Jusqu’à(T[i]≠0)
Fin Pour 3) Mx T[1]
Pour i de 2 à N faire Si (T[i]>Mx) alors MxT[i]
Fin si Fin pour
4) Ecrire ("Le maximum = ", Mx) 5) Mn T[1]
Pour i de 2 à N faire Si (T[i]< Mn) alors MnT[i]
Fin si Fin pour
6) Ecrire ("Le minimum = ", Mn) 7) Fin Max_Min
Tableau de Déclaration des Objets
Objet Type / Nature Rôle
i N Mn Mx
T
Entier Entier Entier Entier
Tableau [1..99] d’entier
compteur taille du tableau le minimum du tableau le maximum du tableau tableau contenant des entiers
Correction de quelques bacs pratiques « programme allégé »
Solution :
Solution :
-
Solution :
Solution :
Solution :
Solution :
Solution :
Correction des parties des bacs théoriques « programme allégé »
Attention : Tous ce qui est masqué par une étiquette bleue ne fait partie du programme de cette année.
Solution : :
Solution :
Solution :
*
Solution :
Solution :
a) mot3:=copy(mot1,3,6);
b) mot4:=concat(mot3,' ', mot2);
c) n:=length(mot4);
d)val(copy(mot2,1,1)m,n);
attention :
il faut utiliser les fonction et les procédures prédéfinies.
il faut utiliser les variables déclarées dans la partie VAR
Solution :