Révision bac 2020 Lycée Bourguiba Monastir
Remplir un tableau avec contrainte(s) Maximum d’un tableau
[Link] proc remplir (var t :tab ; n : entier) [Link] fn maximum(t :tab; n:entier) :entier
1. Pour i de 1 à n faire [Link]t[1]
Répéter Pour i de 2 à n faire
Lire(T[i]) si t[i] > max alors
Jusqu'à t[i] …….. max t[i]
Fin pour finsi
2. Fin remplir Finpour
[Link] max
4. fin maximum
Remplir un tableau par des éléments triés
[Link] proc remplir (var t :tab ; n : entier) Remplir un tableau par des éléments distincts
1. Lire(t[1]) 0) Def proc remplir (var t :tab ; n : entier)
2. pour i de 2 à n faire 1) Lire (t [1])
Répéter 2) Pour i de 2 à n faire
Lire(T[i]) Répéter
Jusqu'à t[i] > t [i –1] Lire(t[i])
Fin pour Jusqu’à Fn distinct ( t, i)
3. Fin remplir Fin pour
3) Fin remplir
Afficher un tableau 0) Def fn distinct (T :tab ; i : entier) :booléen
[Link] proc Afficher (T :tab ; n : entier) 1) j 1 ,test vrai
Répéter
1 pour i de 1 à N faire
Si t[j]=t[i] alors
Ecrire (T[i]) Testfaux
Fin pour sinon
[Link] afficher i i+1
finsi
Jusqu’à (test = faux)ou (i =j)
2) distinct test
3) fin distinct
Page 1/9
Révision bac 2020 Lycée Bourguiba Monastir
Insertion d’un élément x dans un tableau à la position P : Suppression de l’élément d’indice p du tableau :
0) Def proc insertion (x,p: entier ; var t :tab; var n:entier) 0) Def proc suppression (p:entier ; var t :tab; var n:entier)
(Commencer le décalage des éléments à partir de droite pour 1) pour i de p à n-1 faire
libérer la case p) t[i]t[i+1]
1) Pour i de n à p faire (pas = -1) Finpour
t[i+1]t[i] 2) nn-1
Finpour 3) Fin suppression
2) t[p]x
3) n n + 1 Eliminer toutes les occurrences de x du tableau T
4) Fin insertion 0) Def Proc Eliminer (var T : tab ; var n : entier ; x : entier)
1) i 1
insertion d’un élément dans un tableau trié Répéter
0) Def proc insertion (x,: entier ; var t :tab; var n:entier) Si T[i] = x alors
1) I0 Pour j de i à n-1 faire
2) repeter T[j] T[j+1]
Ii+1 Fin pour
Jusqu’à t[i]>x ou( i=n) n n -1
Si t[i]>x alors Sinon
Pour j de n à I faire i i+1
T[j+1] t[j] Fin si
Finpour Jusqu'à i > n
T[i]x 2) Fin Eliminer
Sinon
T[n+1]x Inverser les éléments d’un tableau
finsi 0) Def proc inverser (n : entier ; var t :tab)
3) n n+1 1) j n
4) Fin insertion Pour i de 1 à n div 2 faire
aux t[i]
t[i]t[j]
t[j]aux
j j-1
Finpour
2) Fin inverser
Page 2/9
Révision bac 2020 Lycée Bourguiba Monastir
Éclater un tableau d’entier en deux tableau t1 contenant les entiers Calcul de puissance ( XY )
strictement positifs et t2 contenant les entiers strictement négatifs : 0) Def fn puissance (x, y : entier) :entier_long
0) Def proc eclater( t :tab; n : entier; var t1,t2:tab; var k1,k2:entier) 1) p1
1) k10 pour i de 1 à y faire
k20 pp*x
pour i de 1 à n faire Finpour
si t[i]>0 alors 2) puissance p
k1k1+1 3) fin puissance
t1[k1]t[i] Calcul de factoriel ( N ! )
sinon si t[i] < 0 0) Def fn factoriel (N : entier) : entier_long
k2k2+1 1) F1
t2[k2]t[i] pour i de 1 à N faire
finsi FF*i
finpour Finpour
2) fin eclater 2) factorielF
Vérifier si n est un est nombre premier (version 1) 3) Fin factoriel
0) Def fn premier (n : entier) :booléen
1) nb1
Pour i de 1 à n faire Calcul du pgcd de deux entiers a et b
Si n mod i=0 alors 0) Def fn pgcd(a,b : entier ) :entier
nb nb + 1 1) tantque b ≠ 0 faire
Finsi ra mod b
Finpour ab
2) Premiernb=2 br
3) Fin premier fin tanque
* Vérifier si n est un nombre premier ou non( version 2) 2) pgcda
0) Def fn premier (n : entier) : Booléen 3) fin pgcd
1) i2
tant que (n mod i ≠ 0)et (i ≤ n div 2) faire
ii+1
Fin tant que
2) Premier( i > n div 2) et (n≠1)
3) Fin premier
Page 3/9
Révision bac 2020 Lycée Bourguiba Monastir
Fréquence d’un entier x dans un tableau d’entier Déterminer la décomposition en ses facteurs premiers
0) Def fn frequence( t:tab ; n : entier ;x :entier) :entier d’un entier n exemple : 36 = 2*2*3*3
1) nb0 pour i de 1 à n faire 0)Def fn fact_prem( n :entier) :chaine
Si t[ i ]=x alors 1) i2
nbnb+1 ch ""
Finsi Répéter
Finpour Si n mod i=0 alors
2) frequencenb Convch(i,x)
3) Fin frequence Chch+x+’’*’’
nn div i
Vérifier si n est parfait (n=somme de ses diviseurs sauf lui-même) Sinon
0)Def fn parfait (n : entier ) : booléen ii+1
1) S0 pour i de 1 à n div 2 faire Finsi
Si n mod i=0 alors Jusqu’à n=1
SS+i Effacer(ch,long(ch),1)
Finsi 2)Fact_premch
Finpour 3)Fin fact_prem
2) parfaitS=n 2ème méthode
3) fin parfait 0)Def proc fact_prem( n :entier; var T:tab;Var nb: entier)
1) i2
Nb 0
Répéter
Calcul ppcm de deux entiers a et b Si n mod i=0 alors
0) Def fn ppcm(a,b : entier ) :entier Nb Nb+1
1) P a T[Nb] i
tant que p mod b ≠ 0 Faire nn div i
PP+a Sinon
Fin Tant que ii+1
2) ppcmP Finsi
3) Fin ppcm Jusqu’à n=1
2)Fin fact_prem
Page 4/9
Révision bac 2020 Lycée Bourguiba Monastir
Fusionner deux tableaux triés
def proc fusion(n1,n2: entier ; t1,t2:tab; var k:entier; var t:tab) Tri à bulle d’un tableau dans l’ordre croissant :
0) Def proc trier (var t :tab ; n : entier)
Resultat= t1,t2,k1,k2
1) Répéter
t1,t2,k1,k2=[i1,j1,k<--0 ]
repeat Echange faux
kk+1 Pour i de 1à n-1faire
si t1[i]>t2[j] alors Si t[i]<t[i+1] alors
t [k]t1[i] Aux t[ i ]
i<-- i+1
T[i]t[i+1]
sinon
t[k]t2[j] T[i+1]aux
j<--j+1 Echange vrai
finsi Finsi
until (i>n1) or (j>n2) Finpour
si (i>n1) alors
nn-1
pour e de j to n2 faire
kk+1 Jusqu'à (echange = faux) ou (n=1)
t[k]t2[e] 2) Fin trier_b
finpour Recherche séquentielle : Vérifier si un entier x existe ou
sinon non dans un tableau T
pour e de i to n1 faire
kk+1 0) Def fn recherche (n,x :entier ; t :tab) :booléen
t[k]t1[e] 1) i1
finpour Répéter
finsi ok T[i] = x
Fin fusionner ii+1
3)Fin fusionner Jusqu’a (ok= vrai) ou (i > n)
2) Rechercheok
3) Fin recherche
Vérifier si un tableau T est trié dans l’ordre croissant ou OU
non 1) i0
0) Def fn verifier (t:tab; n:Entier) :booléen Répéter
1) i1 ii+1
Répéter Jusqu’a ( t[i] = x) ou (i = n)
Ok T[ i ] < T[i+1] 2) Recherchet[i] =x
ii+1
Jusqu'à (ok=faux) ou (i> n-1)
2) Verifierok
3) Fin verifier Page 5/9
Révision bac 2020 Lycée Bourguiba Monastir
Recherché dichotomique (dans un tableau trié)
0) Def fn recherche_di (n, x :entier ; t :tab) :booléen Supprimer les caractères numériques d’une chaine ch
1) d1 fn ok faux 0) Def Proc supprimer (Var ch : chaine)
Répéter 1) i1
m(d+f) div 2 repeter
si t[m]=x alors Si ch[i] dans ["0".."9"] alors
okvrai Effacer (ch,i,1)
sinon si x<t[m] alors Sinon
fm-1 ii+1
sinon finsi
dm+1 jusqu’à i> long(ch)
finsi 2) Fin supprimer
Jusqu’a (ok= Vrai) ou (d>f) Vérifier si Ch est une chaîne contenant que des caractères
2) Rechercheok alphabétiques
3) Fin recherche 0) Def fn verif (Ch : chaine) :booléen
1) i0
Vérifier si un tableau T est symétrique ou non Répéter
0)Def fn verifier(t:tab; n:Entier) :booléen ii+1
1) i0 j n Okmajus (ch[i]) dans ["A".."Z"]
ok vrai Jusqu’à (Non ok) ou (i=long(ch))
Répéter 2) verifok
ii+1 3) Fin verif
Ok T[i] = T[j]
j j -1 Vérifier si Ch est une chaîne contenant des caractères distincts
Jusqu'à ( ok=faux) ou (i ≥ j) 0) Def fn verif (Ch : chaine) : booléen
2)verifierok 1) i0, ok vrai
3)fin verifier Répéter
i i+1
si pos ( ch[i],sous-chaine(ch, i+1, long (ch)-i)) <> 0 alors
ok faux
finsi
Jusqu’à(ok=faux) ou (i=long(ch))
2) verifok
3) fin verif
Page 6/9
Révision bac 2020 Lycée Bourguiba Monastir
inverser une chaine ch (version1)
0) Def Proc inverser (Var ch : chaine) *Transférer chaque mot d’une phrase dans une case d’un
1) Pour i de 1 à long(ch) div 2 faire tableau T
auxch[i] 0) Def proc transfert (ch : chaine ; var t : tab ; var n : entier)
Ch[i]ch[long(ch)-i+1] 1) Tant que ch[1] =" _ "faire
Effacer (ch,1,1)
Ch[long(ch)-i+1]aux
Fin tant que
Finpour
2) Tant que ch[long(ch)] =" _ " faire
2) Fin inverser Effacer (ch,long(ch),1)
Fin tant que
3) Tant que pos ("_ _ ",ch) ≠ 0 Faire
Inverser une chaine ch (version2) Effacer (ch, pos (‘’_ _ ‘’,ch),1)
0) Def fn inverser (ch : chaine) : chaine Fin Tant que
1) ch1 "" 4) n 0 chch+"_ "{pour pouvoir prendre le dernier mot je dois
pour i de long(ch) à 1 faire (pas = -1) ajouter un espace à la fin }
Tant que pos ( "_ ", ch ) ≠ 0 faire
Ch1ch1+ch[i]
n n+1
Finpour
p pos( "_ ", ch )
2) inverser ch1 t[n] sous chaine (ch , 1 , p-1 )
3) Fin inverser Effacer (ch , 1 , p )
Fin tant que
Vérifier si une chaîne est palindrome 5) fin transfert
0) Def fn palindrome (ch : chaine) : booléen
1) i 1 Transferer les chaines d’un tableau vers une chaine séparé
j long (Ch) par un espace
Répéter
ok Ch[i] = Ch[j] 0) Def fn concatenation (n :entier ; t :tab ) :chaine
ii+1 1) Ch’’’’
jj–1 Pour i de 1 àn faire
Jusqu’à ( Non Ok) ou ( i ≥ j) [{Non(ok) cad ok= faux} Chch+t[i]+’’ ‘’
2) Palindromeok Finpour
3) Fin palindrome 2) Concatenationch
3) Fin concatenation
Page 7/9
Révision bac 2020 Lycée Bourguiba Monastir
Donner une chaine ch avec n lettres aléatoires Ajouter des étoiles à la chaine pour avoir sa longueur divisible
par 3
0) Def proc ajout( var ch :chaine)
0) Def proc lecture( var ch :chaine ; n :entier) 1) Tant que long( ch) mod 3<>0 faire
1) Ch ‘’’’ Ch ch+’’ ‘’
Pour i de 1 à n Faire Finpour
Ch ch+ chr(alea(26)+65+alea(2)*32) 2) Fin ajout
Finpour
2) Fin lecture
Répartir les caractères d’une chaine dans un tableau de taille de
Verifier qu’ une chaine contient des mots distincts la longueur de la chaine
0) Def proc repartir( ch :chaine ; var t :tab )
0) Def fn distinct_ch( ch :chaine) :boolean 1) Pour i de 1 à long(ch) faire
1) Test vrai T[i ] ch[i]
Ch ch+’’ ‘’ Finpour
repeter 2) Fin repartir
Xsous chaine(ch,1 pos(‘’ ‘’ ,ch)-1)
Efface(ch,1 pos(‘’ ‘’, ch)
Ch1ch
repeter
ysous chaine(ch1,1 pos(‘’ ‘’ ,ch1)-1)
Efface(ch1,1 pos(‘’ ‘’, ch1) )
Y<>x alors
Test faux
Finsi
Jusqu’a ( test= faux) ou ch1=’’’’
Jusqu’à (pos(‘’ ‘’, ch=0)) ou test= faux
2) Distinct_chtest
3) Fin distinct_ch
Page 8/9
Les suites : Calculer le ni ème terme d’une suite ou Calculer
Révision bac 2020 limite Lycée Bourguiba Monastir
de U0=1 (Un+1=Un+5)
Les suites : afficher si x est un terme de la suite U ou non dans
0) Def fn suite(n :entier) :entier
l’afirmatif revoyer son rang
1) U<--1
U0=1 ,Un=2*Un-1+2/3
2) Pour i de 1 a n faire
0) Def fn rang( x:entier) :entier U <--U+5
1) Si u=1 alors rang1 3) Fin pour
Sinon 4) SuiteU
u1,r1 5) Fin suite
repeter
u<--2*u+2/3
Les suites : Calculer Un lorsue la différence entre deux terme
rr+1
jusqu'à u>=x Successif est inférieur à epsilon (U0=1,Un+1=Un+5)
2) si u=x alors 0) Def fn suite (n :entier ; ep :reel ) :entier
rangr 1) U<--1
sinon 2) repeter
rang -1 UP<--U
finsi U <--U+5
finsi Jusqu'à (abs(U-UP)<ep)
3) suite<--U
3) fin rang 4) fin suite
Les suites : afficher si x est un terme de la suite U ou non
Décomposition en Facteur premier 60=2*2*3*5 U0=1 U1=2 Un=2*Un-1+Un-2
0) Def fn fact_premier( n :entier) :chaine 0) Def proc afficher( x:entier)
1) I2 1) Si x=1 ou x= 2 alors
2) Ch’’’’ Écrire (x,''est un terme de la suite U'')
3) Repeter Sinon
Si n mod i= 0 alors Up1
Convch( i,x) ; uap2
Ch ch+ x+’’*’’ repeter
Nn div i u2*up+uap
Sinon
uapup
Ii+1
Finsi
upu
Jusqu’à n=1 jusqu'à u>=x
4) Fact_premierch si u=x alors
5) Fin fact_premier Écrire (x,''est un terme de la suite U'')
sinon
ecrire(x,'' n''est pas un terme de la suite U'')
finsi
finsi
Page 9/9 2) fin afficher