Vous êtes sur la page 1sur 34

//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Certains problèmes consistent à des programmes longs, difficiles à écrire et à comprendre.


On les découpe en des parties appelées sous programmes (fonctions ou procédures)

Les fonctions :

Ecrire un algorithme intitulé Combinaison et son implémentation en Python d’un programme


qui permet de calculer puis d’afficher le nombre de combinaison de P objets parmi N.
N, P sont deux entiers strictement positifs avec N≥P

……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
………………………………………………………………………………………. ……………………………………………………………………………………….
……………………………………………………………………………………….. ……………………………………………………………………………………….
.

51
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

1) Définition :
Les fonctions sont des sous-programmes qui fournissent un seul résultat de type simple
(entier, réel, caractère, chaine de caractères, booléen) à partir d’une liste de paramètres par
valeur

1) Vocabulaire & Syntaxe :


Syntaxe en algorithmique
Fonction Nom_fonction (paramètres formels :types) :
type_résultat
Debut
Traitement
Retourner le résultat
Fin
Syntaxe en python
def Nom_fonction (paramètres formels ) :
Traitement
return résultat

2) L’appel d’une fonction :


L’affectation :
Variablenom_fonction (paramètres effectifs)
L’opération de sortie :
Ecrire (nom_fonction (paramètres effectifs))
La structure conditionnelle :
Si (nom_fonction (paramètres effectifs)=valeur)

La structure itérative :


Répéter Tant que (nom_fonction (paramètres effectifs)=valeur) faire
…………………………………….. ……………………………………..
……………………………………. …………………………………….
Jusqu’à (nom_fonction (paramètres effectifs)=valeur) Fin Tant Que

52
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Les procédures :

Analysez puis déduisez l’algorithme d’un programme qui permet de remplir un tableau T de N
entiers positif, avec N ∈ [5..20], calcul et affiche la somme des éléments paires du tableau
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
………………………………………………………………………………………. ……………………………………………………………………………………….
……………………………………………………………………………………….. ……………………………………………………………………………………….
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
………………………………………………………………………………………. ……………………………………………………………………………………….
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
……………………………………………………………………………………….. ………………………………………………………………………………………..
………………………………………………………………………………………. ……………………………………………………………………………………….
……………………………………………………………………………………….. ………………………………………………………………………………………..

1) Définition :
Les procédures sont des sous-programmes qui peuvent avoir zéro, un ou plusieurs résultats.

Remarque :
Une astuce à appliquer lors de l’analyse modulaire est de considérer que tous les modules sont
des procédures et si un module accepte (ou bien reçoit) des paramètres sans les modifier et
retourne un seul résultat alors cette procédure sera une fonction.
53
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

2) Vocabulaire & Syntaxe :


Syntaxe en algorithmique
Procedure Nom_procedure (paramètres formels :types) :
Debut
Traitement
Fin
Syntaxe en python
def Nom_ptocedure(paramètres formels ) :
Traitement

3) L’appel d’une procédure :


nom_procedure (paramètres effectifs)
4) Les types de paramètres :
 Les paramètres formels : Les paramètres placés dans la déclaration d’un sous-programme.
 Les paramètres effectifs : Les paramètres placés dans l’appel d’un sous-programme.

5) Le mode de passage des paramètres :


Lors d’un appel d’un sous-programme, les paramètres effectifs viennent remplacer les
paramètres formels. Cette substitution des paramètres s’appelle passage des paramètres.
 Passage par valeur : La valeur du paramètre effectif ne sera jamais modifiée après l’exécution
d’un sous-programme.
En python : Les types non modifiables (entier, réel, caractère, booléen, chaine) passent en
valeur.

 Passage par adresse : La valeur du paramètre effectif sera donc modifiée. Les variables de types
tableaux passent par adresse.
En algorithme : on ajoutera le symbole @ avant le nom du paramètre dont le mode de passage est
par adresse.
Remarque :
 Les paramètres effectifs et les paramètres formels doivent s’accorder de point de vue,
nombre, ordre et doivent être de mêmes types ou bien de types compatibles.
6) Les variables locales et les variables globales :
 Une variable locale :
o définie à l'intérieur d'une fonction,
o inaccessible depuis l'extérieur de la fonction,
o détruite après l'exécution de la fonction.
 Une variable globale :
o définie à l'extérieur des fonctions,
o contenu visible depuis l'intérieur des fonctions,
o non modifiable depuis l'intérieur d'une fonction.

54
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exemple :

Remarque :
Une variable globale peut devenir modifiable à l'intérieur d'une fonction en indiquant dans la
fonction : global NomDeLaVariable

QCM1 :
Qu’affiche le programme suivant :

3 5
def bonjour (nb) :
def bonjour (nb) : 5 return nb+a 10
return nb+3 a=5
print(bonjour(5)) 8 15
print(bonjour(10))
Erreur Erreur

55
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

6 1
def bonjour (nb) : def bonjour () :
a=1 11 a=1 10
return nb+a print(a)
a=5 15 a=10 11
print(bonjour(10)) bonjour()
Erreur ‘Bonjour’

1 10
def bonjour () : def test (a) :
a=1 10 ‘a’
a=a+10
a=10 print(a)
‘a’ Rien
bonjour() test()
print(a) Erreur
Erreur

11 3
def test (valeur) :
def test (a) :
valeur=12 12 13
a=a+10
print(valeur)
23 print(a) a+10
valeur=11
test(3)
test()
Erreur Erreur

11 11
def test (valeur) : def test () :
valeur=12 12 valeur=12 12
valeur=11 print(valeur)
test() 23 valeur=11 23
print(valeur) test()
Erreur Erreur

def test () : 11 11
def test () :
valeur=12
12 valeur=12 12
return valeur
return valeur
valeur=11 23 23
valeur=test()
valeur=test(11)
print(valeur)
print(valeur) Erreur Erreur

56
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

def test () : 11 def test () : 20 30 30


global valeur a=a+10
12 print(a) 20 30 20
valeur=12
valeur=11 23 a=20
30 20 20
test() print(a)
print(valeur) Erreur test(a) 20 20
print(a)

def test () : 20 30 20 def test (a) : 20 50 20


glabal a a=a+10
20 30 30 print(a) 20 30 20
a=a+10
print(a) a=20
20 20 20 30 20 20
a=20 print(a)
print(a) test(40)
20 20 30 50 20 20
test() print(a)
print(a)

def test (valeur) : 20 30 20 def test (a) : 20 20


glabal a a=a+10
valeur=valeur+10 20 30 30 20 40
return a
print(a) a=20
a=20 20 20 20 print(a) 20 50
print(a) a=test(40)
20 20 30 Erreur
test(a) print(a)
print(a)

def calcul(a,b) : a vaut 3, b vaut 5 et c vaut 15


a=a+2
b=b+5 a vaut 3, b vaut 5 et c n’est pas défini.
c=a+b
return c a vaut 5, b vaut 10 et c vaut 15
a=3
b=5 a vaut 5, b vaut 10 et c n’est pas défini.
c=calcul(a,b)
57
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

def comptage (phrase,lettre) : 0


i=0
for j in range(len(phrase)): 2
if(phrase[j]==lettre) :
i=i+1 19
return i
print(comptage(‘Vive l’informatique’,’e’)) ‘e’
Application1 :
Soit le tableau de déclaration des objets suivant :
Tableau de déclaration des objets (TDO)
Objet Type/nature
x, y, i, a, b entier
ch, x1, x2 Chaines de caractères
r Booléen
c Caractère
Compléter la deuxième colonne du tableau ci-après par l’appel d’une fonction prédéfinie en
spécifiant les paramètres d’appel :

58
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Séquence algorithmique Appel de la fonction prédéfinie


yx
Si (x<0) alors :
y-x y……………………………..
Fin Si

x1 ‘’
Pour i de a à (b-1) faire :
x1x1+ch[i] x1……………………………..
Fin Pour

a-1
i0
Répéter
Si (ch[i]=c) alors
ai a……………………………….
Sinon
ii+1
Fin Si
Jusqu’à (i>long(ch)-1) ou (a≠-1)
x1’’
Pour i de 0 à (a-1) faire
x1x1+ch[i]
Fin Pour
x2’’ ch……………………………….
Pour i de b à (long(ch)-1) faire
x2x2+ch[i]
Fin Pour
chx1+x2
rlong(ch)>0
i0
Tant que r et (i<long(ch)) faire
r’0’≤ch[i]≤’9’
r……………………………….
ii+1
Fin Tant que

Application2 :
On donne ci-dessous, l’algorithme d’une fonction inconnue, avec t un tableau de type tab.
tab =Tableau de 100 entier
Foncton inconnue (ta :…, x :…………...) :………
Debut
a0
mta[0]
pour i de 1 à x-1 faire :
Si (ta[i]>m) alors
ai
mta[i]
Fin Si
Fin pour
59
Retourner (a)
Fin
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

1) Compléter l’entête de la fonction inconnue par les types appropriés :

Foncton inconnue (ta :…………., x :…………...) :……………


2) Compléter le tableau de déclaration des objets locaux de la fonction inconnue :
Tableau de déclaration des objets (TDOL)
Objet Type/nature
…………… ……………
…………… ……………

3) Donner le résultat de cette fonction pour :


t 4 5 8 1 3
0 1 2 3 4
inconnue(t,5)=…………

11 2 17 4 2 0
t 0 1 2 3 4 5
inconnue(t,6)=……………

4) En déduire le rôle de cette fonction :


…………………………………………………………………………………………..

Application 3 :
Soit l’algorithme de la fonction inconnue suivante :
Foncton inconnue (x :…………, a :…………...) :………
Debut
Tant que (x mod a =0) faire :
xx div a
Fin Tant que
bx =1
Retourner (b)
Fin

60
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

1) Compléter l’entête de la fonction inconnue par les types appropriés :


Foncton inconnue (x :…………., a :…………...) :……………
2) Compléter le tableau de déclaration des objets locaux de la fonction inconnue :
Tableau de déclaration des objets (TDOL)
Objet Type/nature
…………… ……………
…………… ……………

3) Donner le résultat de cette fonction pour :


 x=12 a=2 :………………………
 x=27 a=3 :………………………
4) En déduire le rôle de cette fonction :
…………………………………………………………………………………………..
Application 4:
Soit l’algorithme de la fonction inconnue suivante :
Foncton inconnue (ch :…………, d,f :…………...) :………
Debut
r’’
id
Tant que (i≠f) faire :
rr + ch[i]
ii+1
Fin Tant que
Retourner (r)
Fin
1) Compléter
l’entête de la fonction inconnue par les types appropriés :
Foncton inconnue (ch :…………., d,f :…………...) :……………
Compléter le tableau de déclaration des objets locaux de la fonction inconnue :
Tableau de déclaration des objets (TDOL)
Objet Type/nature
…………… ……………
…………… ……………

2) Donner le résultat de cette fonction pour :


 ch=’bonjour’ d=3 f=7 :………………………
 ch=’programmation’ d=0 f=4 :………………………
3) En déduire le rôle de cette fonction :
…………………………………………………………………………………………..
4) Donner la fonction prédéfinie en algorithme qui fournit le même résultat :
61
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

…………………………………………………………………………………………..
Application 5:
Soit l’algorithme de la fonction inconnue suivante :
Foncton inconnue (ch :………………..) :…………….
Debut
s0
Pour i de 0 à long(ch)-1 faire :
Si (ch[i] ∈ [‘0’..’9]) alors
ss+ord(ch[i])-48
Fin SI
Fin Pour
Retourner (s)
Fin

1) Compléter l’entête de la fonction inconnue par les types appropriés :


Foncton inconnue (ch :……………….) :……………
2) Compléter le tableau de déclaration des objets locaux de la fonction inconnue :
Tableau de déclaration des objets (TDOL)
Objet Type/nature
…………… ……………
…………… ……………

3) Donner le résultat de cette fonction pour :


 ch=’A2b5m8’ :………………………
 ch=’x7v3b26’ :………………………
4) En déduire le rôle de cette fonction :
…………………………………………………………………………………………..
Application 6:
Il s’agit d’écrire un algorithme qui permet de saisir 3 réels n1, n2 et n3 avec n1>0, n2>0 et
n3>0 puis vérifier s’ils forment un triplet Pythagore :
n1, n2 et n3 forment un triplet Pythagore si n12+n22=n32
Exemple : n1=5, n2=12, n3=13
52+122=1325,12 et 13 forment un triplet Pythagore
Soit cette solution formée par ces deux algorithmes :

62
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Algorithme exercice
Debut
…………………………………………….
…………………………………………….
…………………………………………….
…………………………………………….
Si (r) alors
Ecrire (n1,’,’,n2,’,’,n3,’forment un triplet de Pythagore’)
Fin SI
Fin
……………………………………………………………….
Debut
sa*a+b*b
Si (s=c*c) alors
pVrai
Sinon
pFaux
Fin SI
Retourner (p)
Fin
1) Ecrire l’algorithme du module Saisir qui permet de saisir un réel x>0 :
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
………………………………………………………………………………….
……………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………
…………………………………………………………………………..
………………………………………………………………………………………………………………………
…………………………………………………………………………..
2) Ajouter l’appel du module Saisir dans l’algorithme du programme principal.
3) Pour chacune des propositions suivantes, mettre dans la case correspondante la réponse
Vrai si l’entête de la fonction Pythagore est correcte ou la réponse Faux dans le cas
contraire :

Entête proposée pour la fonction Pythagore Réponse


Fonction Pythagore (a, b, c : entier) : Booléen ……………
Fonction Pythagore (n1, n2, n3 : réel) : Booléen ……………
Fonction Pythagore (a, b, c : réel) : Booléen ……………
Fonction Pythagore (a, b, c : réel) : réel ……………
4) Ajouter
l’appel de la fonction Pythagore dans l’algorithme du programme principal :
5) En se référant à l’algorithme de programme principal et aux méthodes Saisir et
Pythagore, compléter le tableau suivant :

63
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Objets globaux …………………………


Objets locaux …………………………
Paramètres formels …………………………
Paramètres effectifs …………………………
6) Améliorer l’algorithme de la fonction Pythagore en remplaçant tout l’algorithme par
une seule instruction simple :
……………………………………………………………………………………………
……………………………………………………………………………………………
Application 7:
Soient les algorithmes ci-dessous correspondant à un programme principal exercice et à une
fonction inconnue appelée par celui-ci :
Algorithme exercice
Debut
lire(m)
Si (inconnue(m)) alors
Ecrire (m,’vérifie la propriété’)
Sinon
Ecrire (m,’ne vérifie pas la propriété’)
FinSi
Fin
Fonction inconnue (ch :………………) :………………..
Debut
bch≠’’
Tant que (b) et ( ch≠’’)faire
bch[0]∈ [‘0’..’9])
cheffacer (ch,0,1)
Fin Tant Que
………………………………………….
Fin

1) Compléter l’entête de la fonction inconnue par les types appropriés :


Foncton inconnue (ch :……………….) :……………
2) En utilisant la liste de vocabulaire ci-dessous, on vous demande de compléter les pointillés
des phrases suivantes : locale, globale, paramètre effectif, paramètre formel, valeur,
booléen.
La chaine m est une variable…………………..mais aussi un
…………………………..
La chaine ch est une variable…………………..passé par … …………………………..
La chaine b est une variable…………………..de type… … …………………………..
3) Donner le résultat de cette fonction pour :
 inconnue (‘Python’) :………………………

64
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

 inconnue (‘ 2023’) : ………………………


 inconnue (‘ ch[0]’) : ………………………
4) En déduire le rôle de cette fonction :
……………………………………………………………………………………………..
5) Donner la fonction prédéfinie en algorithme qui fournit le même résultat :
……………………………………………………………………………………………..
Application 8:
Soit l’algorithme suivant :
Algorithme exercice 1) Ajouter le contrôle de saisie de x pour qu’il soit 4) E
Debut strictement positif et impair : c
Ecrire (‘x=’) lire(x) ………………………………………………………………………. r
……………………………………………………………………… i
S0 ………………………………………………..
………………………………………………………………………. r
k2*x-1 ……………………………………………………………………… e
Répéter ………………………………………………..
SS+k ……………………………………………………………………….
…………………………………………
kk-2
2) Donner les valeurs de k et s pour :
jusqu’à (k<1)
x=5  k=…………. s=…………..
Ecrire(S) x=7  k=…………. s=…………..
Fin
3) En déduire le rôle de cet algorithme :
……………………………………………………………………….
………………………………………………………………………
………………………………………………..
…………………………………………………………
l’algorithme d’un module qui réalise le même traitement que la partie encadrée dans
l’algorithme :
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………

65
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

5) Réécrire l’algorithme ci-dessus en remplaçant la partie encadrée par l’appel du module


réalisé dans la question précédente :
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………
……………………………………………………………………….
……………………………………………………………………………………………………………………………
…………………

Application 9:
Soit l’algorithme ci-après, qui permet de vérifier si une chaine de caractère est composée
uniquement par des lettres alphabétiques :

Fonction verifier (ch : chaine de caractère) : booléen


Debut
vvrai
Pour i de 0 à long(ch)-1 faire
Si non (majus(ch[i]]∈ [‘A’..’Z’]) alors
vFaux
Fin Si
Fin Pour
Retourner (v)
Fin
1) L’algorithme du module vérifier présente un choix inapproprié de la structure itérative
utilisée, réécrire cet algorithme en modifiant la boucle pour par une autre structure
adéquate :
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
66
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
……………………………………………………………………….
………………………………………………………………………………………………………………………..
……………………………………………………………………….
………………………………………………………………………………………………………………………..
…………………………………………
2) Pour vérifier si deux chaines de caractères ch1 et ch2 sont simultanément composées
uniquement par des lettres alphabétiques, on propose les trois instructions ci-après. Mettre
dans la case V si l’instruction correspondante est correcte et la lettre F dans le cas contraire :

Si (verifier (ch1, ch2)) alors


Ecrire (‘Les deux chaines sont composées uniquement par des lettres
alphabétiques’)
Fin Si
Si (verifier (ch1) et verifier (ch2)) alors
Ecrire (‘Les deux chaines sont composées uniquement par des lettres
alphabétiques’)
Fin Si

Si (verifier (ch1) ,verifier (ch2)) alors


Ecrire (‘Les deux chaines sont composées uniquement par des lettres
alphabétiques’)
Fin Si

Série d’exercices : Les sous programmes


Exercice n°1 : Nombre heureux
Un nombre heureux est un entier strictement positif, qui, lorsqu’on additionne les carrés de
chacun de ses chiffres, puis on additionne les carrés des chiffres de la somme obtenue et ainsi
de suite, on obtient un entier à un seul chiffre égal à 1.
On se propose d’écrire un programme qui permet de chercher et afficher tous les nombres
heureux de l’intervalle [10,1000].
Exemple :
Le programme affichera :
 13 est un nombre heureux

67
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

 19 est un nombre heureux


 23 est un nombre heureux
 28 est un nombre heureux
 31 est un nombre heureux
 32 est un nombre heureux
 44 est un nombre heureux
 ……………………………………….
Exercice n°2 : Frères
Deux nombre n1 et n2 sont dits frères si chaque chiffre de n1 apparait au moins une fois dans
n2 et inversement (avec n1>0 et n2>0)
On se propose d’écrire un programme qui permet de saisir deux entiers n1 et n2, de vérifier et
d’afficher s’ils sont frères ou non.
Exemple :
Saisir un nombre (>0) :1164
Saisir un nombre (>0) :614
Le programme affichera : 1164 et 614 sont frères.
Exercice n°3 : Nombre de harshad
Un nombre de harshad est un entier qui est divisible par la somme de ses chiffres.
On se propose d’écrire un programme qui permet de chercher et d’afficher tous les nombres
harshad de l’intervalle [10,1000]
Exemple :
Le programme affichera :
 10 est un nombre harshad
 12 est un nombre harshad
 18 est un nombre harshad
 20 est un nombre harshad
 21 est un nombre harshad
 24 est un nombre harshad
 ………………………………………..

Exercice n°4 : Nombre extraordinaire


Un nombre extraordinaire est un entier naturel composé des chiffres distincts non nuls et
divisible par chacun de ses chiffres.
On se propose d’écrire un programme qui permet de chercher et d’afficher tous les nombres
extraordinaire de l’intervalle [10,1000]
Exemple :
Le programme affichera :
 12 est un nombre extraordinaire
 15 est un nombre extraordinaire
 24 est un nombre extraordinaire

68
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

 36 est un nombre extraordinaire


 48 est un nombre extraordinaire
 124 est un nombre extraordinaire
 126 est un nombre extraordinaire
 128 est un nombre extraordinaire
 132 est un nombre extraordinaire
 135 est un nombre extraordinaire
Exercice n°5 : Nombre Super premier
Un nombre est dit super premier s’il est premier et si en supprimant les chiffres à partir de sa
droite, le nombre restant est aussi premier.
On se propose d’écrire un programme qui permet de saisir un entier n (40000<n<100000) et
de chercher et d’afficher tous les nombres super premiers de l’intervalle [10,n]
Exemple :
Saisir un nombre (>40000 et <100000) :41000
Le programme affichera :
 233 est un nombre supe premier
 239 est un nombre supe premier
 293 est un nombre supe premier
 311 est un nombre supe premier
 313 est un nombre supe premier
 317 est un nombre supe premier
 373 est un nombre supe premier
 379 est un nombre supe premier
 ……………………………………………….
 37397 est un nombre super premier.

69
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°6 : Nombre Super pairplus


Un nombre N est dit super pairplus s’il vérifie les deux conditions suivantes :
 Condition1 : N est formé uniquement par des chiffres pairs.
 Condition2 : tous les diviseurs de N autre que 1 sont des entiers pairs.
Exemple 1 :
N=64 est un entier super-pairplus car 64 vérifie les deux conditions :
 Condition1 : 64 est formé uniquement par des chiffres pairs (6 et 4)
 Condition2 : les diviseurs de 64 autres que 1 (2, 4, 8, 16,32 et 64) sont des entiers pairs.
Exemple 2 :
N=28 n’est pas un entier super-pairplus car une de deux conditions (condition 2) n’est pas
vérifiée :
 Condition1 : 28 est formé uniquement par des chiffres pairs (2 et 8)
 Condition2 : les diviseurs de 28 autres que 1 (2, 4, 7, 14 et 28) ne sont pas tous des
entiers pairs. En effet, 7 est impair.

Ecrire le programme qui permet de vérifier si un entier naturel n (n>0) est un nombre super-
pairplus ou non.
Exercice n°7 : Cryptage1
Dans le but de sécuriser les messages à envoyer, on peut faire appel à une méthode de
cryptage.
Une des méthodes utilisées consiste à remplacer chaque lettre du message à crypter par celle
qui la suit de p positions dans l’alphabet français, ou p désigne le nombre de mot du message.
 On suppose que le caractère qui suit la lettre ‘Z’ est le caractère ‘A’ et celui qui suit la lettre
‘z’ est le caractère ‘a’.
 Le caractère espace ne subit aucune modification.
 Le code ASCII de la lettre ‘a’ est égal à 97 et celui de la lettre ‘A’ est égal à 65.
On se propose d’écrire un programme qui permet de saisir un message M formé uniquement
par lettres et d’espaces puis de l’afficher crypté, en utilisant le principe cité ci-dessus.
Exemple :
Saisir le texte à crypter : Exercice cryptage
Le programme affichera : Le texte crypté :Gzgtekeg etarvcig
Exercice n°8 : Décomposition
On se propose d’écrire un programme qui permet de décomposer une chaine de caractères ch
selon l’exemple donné ci-dessous.
La chaine ch contient une lettre suivie de sa fréquence suivie d’un espace suivie d’une
deuxième lettre suivie d’un espace est ainsi de suite….
Exemple :
Si ch=’a12 b10 C2’

70
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Le programme affichera : la chaine résultat de la décomposition sera la


chaine=’aaaaaaaaaaaabbbbbbbbbbCC’
Exercice n°9 : Cryptage2
On se propose d’écrire un programme qui permet de saisir un mot non vide et composé
uniquement par des lettres majuscules, puis d’afficher le mot crypté selon le principe décrit ci-
dessous :
 Pour chaque lettre, déterminer le nombre d’occurrences (apparitions) n dans le mot ch.
 Déterminer k qui est égal à 2*n si n est impair et sera égal à (n div 2) si n est pair.
 Remplacer chaque lettre par kième lettre qui la suit dans l’intervalle de l’alphabet [‘A’..’Z’]
 Pour les dernières lettres, on rend dès le début,,par exemple si k=3, on remplacera ‘A’ par
‘D’,’B’ par ‘E’, ‘C’ par ‘E’…………’Y’ par ‘B’ et ‘Z’ par ‘C’.
Exemple :
Saisir le message à crypter : PYTHON
Le programme affichera : Le message crypté est:RAVJQP
Exercice n°10 : Chaine équilibrée
Une chaine de caractère binaire est dite équilibrée si elle contient de 1 que de 0.
Exemple :
 La chaine ‘101100’ est équilibré car le nombre d’occurrence de chiffre1=le nombre
d’occurrences du chiffre 0=3.
 La chaine ‘10110000’ n’est pas équilibré car le nombre d’occurrence de chiffre1≠du
nombre d’occurrences du chiffre 0.

Soit ch une chaine de caractères contenant un certain nombre des chaines binaires séparées
les uns des autres par deux astérisque ’**’ et qui ne commence pas et ne se termine pas par
un astérisque ‘**’.
Ecrire l’algorithme qui permet de calculer le nombre des chaines équilibrés figurants dans ch.
Exemple :
Pour ch=’101100**0111**11011000**0101**100**0110’
Le programme affichera : le résultat=4

Exercice n°11 : Inverser mot


Soit une chaine de caractère ch non vide qui ne commence pas et ne se termine pas par le
caractère espace et ses mots sont séparés par un seul espace.
Ecrire l’algorithme qui permet d’inverser les caractères de chaque mot de ch.
Exemple :
Pour ch=’Bon courage mes amis’
Le programme affichera : le résultat sera la chaine ‘noB egaruoc sem sima’

71
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°12 : Code Secret


Soit ch une chaine de caractère non vide, qui ne contient que des lettres et des espaces, qui ne
commence pas et ne se termine pas par le caractère espace et ses mots sont séparés par un
seul mot.
On veut former un code secret X à partir de la chaine ch en suivant les étapes ci-dessous :
 Chaque lettre de ch est remplacée par le code ASCII et le caractère espace reste
inchangé. Le résultat de cette étape sera stocké dans une chaine de caractères ch1.
 Calculer Y qui est égal à la somme des nombres obtenus dans ch1.
 Le code secret X est obtenu par la concaténation sans redondance des chiffres figurant
dans Y.
Exemple :
Prenons ch=’Python au lycee’
Après étape1 :ch1=’80121116104111110 97117 10812199101101’
Après étape2 : Y=80131928303309328
(car 80121116104111110+97117+10812199101101=80131928303309328)
Après étape3 : Le code secret X=801392

On se propose d’écrire un programme qui permet de saisir la chaine ch, former et afficher le
code secret X en respectant la démarche décrite auparavant.
Exercice n°13 : Bigramme
Le terme bigramme désigne la combinaison des deux lettres consécutives et distinctes dans un
mot.
On se propose d’écrire un programme qui permet d’afficher le nombre d’occurrences de
chaque bigramme d’une chaine de caractères ch non vide et formé uniquement des lettres
minuscules.
Exemple :
Donner la chaine à tester=’mamapappacma’
Le programme affichera :
Le nombre d’occurrences de ma est :3
Le nombre d’occurrences de am est :1
Le nombre d’occurrences de ap est :2
Le nombre d’occurrences de pa est :2
Le nombre d’occurrences de ac est :1
Le nombre d’occurrences de cm est :1

72
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°14: Cryptage3


Dans le but de sécuriser les messages à envoyer, on peut faire appel à une méthode de
cryptage :
 Etape1 : Découper le message à envoyer en blocs de deux lettres.
 Etape2 : Déterminer pour chaque lettre d’un bloc l’entier correspondant selon le tableau
suivant :
Z
t A B C D E F G H I J K L M N O P Q R S T U V W X Y espace
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

On obtient ainsi pour chaque bloc un couple d’entiers (x1, y1), ou x1 est l’entier qui
correspond au premier caractère du bloc et x2 est l’entier qui correspond au deuxième
caractère du bloc.
 Etape3 : Transformer le couple (x1, x2) de chaque bloc en un couple (y1, y2) tels que :
y1 est égal au reste de la division entière de 11*x1+3*x2 par 27
y2 est égal au reste de la division entière de 7*x1+4*x2 par 27
 Etape4 : Transformer chaque entier des couples (y1, y2) en un caractère, en utilisant le
tableau de correspondance de l’étape n°2 et la chaine obtenue sera le message crypté
correspondant à M.
Exemple :
Saisir le message à crypter=’PYTHON AU LYCEE’
Le programme affichera : le message crypté=’VMO EPQUKWAOCR’

On se propose d’écrire un programme qui permet de saisir un message M de longueur paire


et constituée seulement par des lettres majuscules et des espaces, puis d’afficher le
message crypté correspondant en appliquant la méthode décrite ci-dessus.

73
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Série d’exercices : Les sous programmes(Les tableaux)


Exercice n°1 : Chiffres distincts
On se propose d’écrire un programme qui permet de :
Remplir un tableau t par n entiers supérieurs à 100 (2≤n≤100).
Afficher tous les éléments qui sont formés par des chiffres distincts.
Exemple :
Donner la taille de tableau t (≥2 et ≤100) :5
113 234 567 89 312
t 73
0 1 2 4
Le programme affichera :
234 est formé par des chiffres distincts.
567 est formé par des chiffres distincts.
891 est formé par des chiffres distincts.
312 est formé par des chiffres distincts.

Exercice n°2 : Produits chiffres


On se propose d’écrire un programme qui permet de remplir d’une façon aléatoire un tableau
t de n entiers formés de 3 chiffres non nuls (2≤n≤100) ,de déterminer et afficher la position de
l’élément qui possède le plus petit produit de ses chiffres.
Exemple :
Donner la taille de tableau t (≥2 et ≤100) :6

Le programme affichera : Le plus petit produit se trouve dans la position 2.

443 899 51 744 33 728


t 22 24
0 1 3 5
Exercice n°3 : Première occurrence
On se propose d’écrire un programme qui permet de remplir un tableau t de n entiers non
nuls (2≤n≤100), de garder la première occurrence de chaque élément et de remplacer les
autres par 0.
Exemple :
Donner la taille de tableau t (≥2 et ≤100) :6
10 7 9 7 10 6 7 4 8 8
t
0 1 2 3 4 5 6 7 8 9

Le programme affichera : Le tableau résultat est :


10 7 9 0 0 6 0 4 8 0
t
74
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

0 1 2 3 4 5 6 7 8 9

Exercice n°4 : Appartenance


Soit un tableau t de n entiers de 4 chiffres chacun (5≤n≤100).
On se propose de vérifier le type d’appartenance d’un entier p formé de 4 chiffres dans le
tableau t en appliquant le principe suivant :
 1er cas : Si p est égal à un élément du tableau t alors on dit que l’appartenance est totale.
 2éme cas : Si le nombre formé par les trois premiers chiffres à gauche de p est égal au
nombre formé par les trois premiers chiffres à gauche d’un élément de t alors
on dit que l’appartenance est partielle.
éme
 3 cas :Si les deux cas précédents ne sont pas vérifiés alors on dit que l’appartenance
est nulle

On se propose d’écrire un programme qui permet de :


Saisir un entier n puis remplir aléatoirement un tableau t par n entiers de 4 chiffres.
Afficher les éléments du tableau t.
Saisir un entier p de 4 chiffres.
Vérifier le type d’appartenance de p dans t et d’afficher le message correspondant.
Exemple :
Saisir un entiers (>0 et formé de 4 chiffres) :3235
Donner la taille de tableau t (≥5 et ≤100) :6
t 8180 522 6524 3230 365 7300
0 91 2 3 44 5
Le programme affichera : L’appartenance est partielle.
Exercice n°5 : Majoritaire
Un élément est dit majoritaire dans un tableau si le nombre d’apparitions de cet élément est
strictement supérieur au nombre des autres éléments existants dans ce tableau.
Exemple1 :
Pour n=10 et le tableau suivant :
t 27 9 9 9 7 9 21 12 9 9
0 1 2 3 4 5 6 7 8 9
L’entier 9 possède le plus grand nombre d’apparitions qu’est égal à 6.
Le nombre d’éléments, autres que 9, restant dans le tableau est égal à 4.
Le programme affichera dans ce cas le message suivant :
L’élément majoritaire dans le tableau est 9
Exemple 2 :
Pour n=10 et le tableau suivant :
t 27 21 81 21 7 21 19 21 9 21
0 1 2 3 4 5 6 7 8 9
L’entier 21 possède le plus grand nombre d’apparitions qu’est égal à 5.
Le nombre d’éléments, autres que 21, restant dans le tableau est égal à 5.
Le programme affichera dans ce cas le message suivant :

75
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Il n’existe pas un élément majoritaire dans le tableau.


On se propose d’écrire un programme qui permet de saisir un entier n (2≤n≤100) puis de
remplir un tableau t par n entiers, de vérifier l’existence d’un élément majoritaire dans ce
tableau et afficher le message correspondant conformément aux exemples ci-dessus.

Exercice n°6 : Point d’équilibre


Nous appelons point d’équilibre un tableau t de taille n tout indice k qui sépare deux sous
tableaux ayant la même somme des éléments (S1=S2) avec S1 est la somme des éléments
indicés de 0 à k-1 et S2 la somme des éléments indicés de k+1 à n-1.
Exemple1 :
Pour le tableau suivant, les points d’équilibres sont 3 et 6 :
t -2 19 -8 -14 4 5 -4 3 -8 9
0 1 2 3 4 5 6 7 8 9

S1=9 S2=9

t -2 19 -8 -14 4 5 -4 3 -8 9
0 1 2 3 4 5 6 7 8 9

S1=4 S2=4

On désire d’écrire un programme qui permet pour un tableau t de n entiers donnée (2≤n≤100)
de trouver et d’afficher tous les points d’équilibre s’ils existent.
Le message « aucun point d’équilibre » est à afficher dans le cas d’absence d’un point
d’équilibre dans le tableau t.
Exercice n°7: Palindrome
On se propose d’écrire un programme qui permet de :
Remplir le tableau A par n chaines de caractères non vides (2≤n≤100)
Remplir un tableau B à partir de A de sorte que B[i] est la chaine des lettres de A[i] écrites
en majuscules.
Afficher les chaines non vides palindromes de B

Exemple : Donner la taille du tableau (≥2 et ≤100):5


A ‘abE1LzLE ‘12TEST’ ‘3ABA’ ‘RaDAr’ ‘Exe’
0 1 2 3 4

Le programme affichera :
B ‘ABELZLE’ ‘TEST’ ‘ABA’ ‘RADAR’ ‘EXE’
0 1 2 3 4

Les mots palindromes sont : ABA, RADAR, EXE

76
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°8: Degré de ressemblance


On définit le degré de ressemblance DR entre deux mots de même longueur par la formule
suivante :
DR=(nombre de caractères en commun bien placés/longueur du mot)*100
Remarque : Un caractère est dit bien placé lorsqu’il occupe la même position dans les deux
mots.
On se propose d’écrire un programme qui permet de :
saisir une chaine ch non vide et composées des lettres majuscules.
remplir un tableau t par n (5≤n≤100) chaines de caractères composées des lettres
majuscules et de même longueur que ch .
Afficher le degré de ressemblance entre ch et les éléments.

Exemple :
Saisir un mot à tester : EXEMPLE
Donner la taille de tableau (≥5 et ≤100) :5
t ‘EXAMENS’ ‘NOTOIRE’ ‘PARLANT’ ‘ESPACER ‘VOCATIF’
0 1 2 3 4

Le programme affichera :
Le degré de ressemblance (‘EXEMPLE’,’EXAMENS’)=42,857142857142854
Le degré de ressemblance (‘EXEMPLE’,’NOTOIRE’)=14,285714285714285
Le degré de ressemblance (‘EXEMPLE’,’PARLANT’)=0,0
Le degré de ressemblance (‘EXEMPLE’,’ESPACER’)= 14,285714285714285
Le degré de ressemblance (‘EXEMPLE’,’VOCATIF’)= 0,0
Exercice n°9: Mono_vocalisme en voyelle
Un mot est dit mono-vocalisme en voyelle donnée s’il inclut une seule voyelle, qui est celle
donnée, avec un ou plusieurs occurrences, sans distinction entre majuscule et minuscule.
On se propose d’écrire un programme qui permet d’afficher les mon-vocalismes en une
voyelle donnée dans un tableau t de n chaines de caractères formées uniquement par des
lettres (2≤n≤100).
Exemple :
Donner la taille de tableau (≥5 et ≤100) :6
t ‘autre’ ‘trente’ ‘cours’ ‘HASARD’ ‘Son’ ‘bon’
0 1 2 3 4 5
V= ‘a’
Le programme affichera :
Les mots mono-vocalisme en « a » sont :HASARD’

77
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°10: Mot de passe


Un administrateur d’un site web veut assurer un maximum de sécurité pour les utilisateurs du
site.
Pour ceci, il décide de réaliser une application qui évalue la force des mots de passe des
différents utilisateurs de site, sachant qu’un mot de passe est une chaine de caractères qui ne
comporte pas d’espaces.
La force d’un mot de passe varie selon la valeur d’un score de très faible jusqu’à très fort.
 Si le score <20, la force du mot de passe est très faible.
 Sinon si le score <40, la force du mot de passe est faible.
 Sinon Si le score <60, la force du mot de passe est Moyen.
 Sinon Si le score <80, la force du mot de passe est Fort.
 Sinon la force du mot de passe est Très fort.

Le score se calcule en additionnant le bonus et retranchant des pénalités.

Les bonus attribués sont :


(Nombre total des caractères-nombre des lettres majuscules)*2
(Nombre total des caractères-nombre des lettres minuscules)*3
Nombre des caractères non alphabétiques*5

Les pénalités imposées attribués sont :


La longueur de la plus longue séquence de lettres minuscules*2
La longueur de la plus longue séquence de lettres majuscules*2
Exemple :
Pour le mot de passe :’B@cSI_juin2023’
La somme des bonus= (14-3)*2+(14-5)*3+6*5=79
Car :
Le nombre total des caractères=14
Le nombre de lettres majuscules=3
Le nombre de lettres minuscules=5
Le nombre des caractères non alphabétiques=6
La somme des pénalités= 4*2+2+2=12
Car :
La longueur de la plus longue séquence de lettres minuscules (‘juin’)=4
La longueur de la plus longue séquence de lettres majuscules (‘SI’)=2

Le score final=79-12=67puisque 67≥60 alors le mot de passe est considéré comme Fort.

78
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

On se propose d’écrire un programme qui permet de :


Remplir un tableau t par n mots de passe sachant que :
n est le nombre de mot de passe que l’utilisateur doit saisi (4≤n≤20)
Le mot de passe est e longueur comprise entre 0 et 20 et qui ne doit pas comporter
d’espace.
Créer un tableau f ou chaque élément f[i] comporte le score et la force séparé par le
caractère ‘#’du mot de passe t[i]
Afficher la liste de mot de passe ayant la force égale à Très fort suivis de la liste des
mots de passe ayant une force Fort à raison d’un mot de passe par ligne ,tout en
séparant les deux listes par une ligne vide.
Exercice n°11 : Mot de passe2
Afin de former les mots de passe de n employés d’une société, on suit les étapes suivantes :
 Remplir un tableau t1 par les prénoms de n employés (2≤n≤100)
Le prénom d’un employé est une chaine de caractères de longueur minimale 5
caractères et qui ne contient que des lettres majuscules.
 Remplir un tableau t2 par les numéros des employés.
Un numéro est une chaine de 8 chiffres.
L’employé ayant le prénom t1 [i] a pour numéro t2 [i].
 Former à partir de t1 et t2 un nouveau tableau q contenant les mots de passe de ses
employés de façon que :
q[i]=les cinq derniers de t1 [i] suivi par un code à déterminer comme suivant :
Code=S1-S2 avec
S1=la somme des codes ASCII des caractères d’ordre pair de t1 [i]
S2=la somme des chiffres pairs de t2 [i]

On se propose d’écrire un programme qui permet de réaliser les étapes précédentes et


d’afficher le contenu du tableau q :
Exemple :
Donner la taille de tableau (≥2 et ≤100) :4

‘FATIMA’ ‘AHMED’ ‘NOUHENE’ ‘SOULEIMENE’


t1
0 1 2 3

t2 41205608 33302222 98700532 48049140


0 1 2 3

Le programme affichera :

q ‘ATIMA211’ ‘AHMED202’ ‘UHENE291’ ‘IMENE372’


0 1 2 3

79
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°12 : Promotion


A l’occasion de la promotion de proclamation du résultat du baccalauréat, un opérateur
téléphonique fait preuve de générosité et donne la possibilité à ses abonnés la possibilité à ses
abonnés d’être encore plus proche , tout en diminuant le prix de la minute et offre des bonus
sur recharge pour ses clients qui ont des numéros magiques.
Un numéro est dit magique si la somme de ses six derniers chiffres et un entier parfait.
Un entier est dit parfait s’il est égal à la somme de ses diviseurs sauf lui-même.
Exemple : 28=1+2+4+7+14 (28 est un entier parfait)

On se propose d’écrire un programme qui permet de :


Remplir un tableau t par n numéros représentant des numéros GSM (2≤n≤100).
Un numéro est une chaine de 8 chiffres.
 Afficher les numéros magiques bénéficiés
Exemple :
Donner la taille de tableau (≥2 et ≤100) :6

t 22321546 21698230 21113175 21283941 20201003 24221010


0 1 2 3 4 5

Le programme affichera :
o 21698230 est un numéro magique.
o 20201003 est un numéro magique.
o 24221010 est un numéro magique.
En effet, pour le numéro : 21698230
La somme de six derniers chiffres :6+9+8+2+3+0=28
28 est parfait donc 21698230 est un numéro magique.

80
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Série d’exercices : Les sous programmes (Les matrices)


Exercice n°1 : Somme_chiffre
On se propose d’écrire un programme qui permet de :
 Saisir le nombre de lignes l (l compris entre 2 et 10)
 Saisir le nombre de colonnes c (c compris entre 2 et 10)
 Remplir une matrice au hasard par des entiers de 3 chiffres.
 Former une deuxième matrice par les sommes des chiffres de chaque entier dans la
même position.
 Afficher la matrice résultat.
Exemple :
Saisir le nombre de lignes : 2
Saisir le nombre de colonnes : 4
0 1 2 3 0 1 2 3
m 0 123 220 335 564 m 0 6 4 11 15
1 534 634 749 898 1 12 13 20 25

Exercice n°2 : Point cols


On appelle point cols dans une matrice, les éléments qui sont à la fois un maximum sur leur
ligne et un minimum sur leur colonne.
On se propose d’écrire un programme qui permet d’afficher les cordonnées des points cols
dans une matrice d’entiers d’ordre n (n compris entre 2 et 10)
Exemple :
Pour n : 4
La matrice m ci-dessous :
0 1 2
m 0 4 9 6
1 1 12 3
2 7 18 9

Le programme affichera : m[0,1] est un point cols.


Ecrire l’algorithme d’un programme principal en le décomposant en modules.

81
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exercice n°3 : Nombre d’occurrences


Ecrire l’algorithme d’un programme qui permet de :
Remplir une matrice carrée x par n*n lettres en majuscules (2≤n≤6)
Former à partir de x une matrice y composé de deux lignes et n colonnes de façon que :
Y[0,i]=chaine résultat de la concaténation des lettres de la ligne i de x.
Y[1,i]=chaine résultat de la concaténation des lettres de la colonne i de x.
Afficher le contenu de la matrice y.
Saisir un mot m composé de n lettres en majuscules.
Calculer et afficher le nombre d’occurrences du mot m dans la matrice y, sachant que le
mot m existe dans la matrice y, s’il est égal à l’un des éléments de y, ou il est égal à
l’inverse de l’un de ses éléments.
Exemple :n=4
0 1 2 3
x 0 A L I A 0 1 2 3
Y 0 ALIA IACL LOUI AILA
1 I A C L
2 L O U I 1 AILA LAOI ICUL ALIA

3 A I L A

Prenons m=’ALIA’ Le programme affichera : le nombre d’occurrence sera 4.


En effet m=y[0,0]=y[1,3] et m=l’inverse de (y[0,3))=l’inverse de (y[1,0])

Exercice n°4 : Fréquence maximale


On se propose d’écrire un programme qui permet de :
 Remplir une matrice m par nl*nc entiers ≥10 (nl et nc sont compris entre 3 et 15).
 Déterminer et afficher la fréquence de chaque chiffre figurant dans m.
 Déterminer et afficher la fréquence maximale.
 Déterminer et afficher le ou (les) chiffres ayant un fréquence maximale.
Exemple :
Pour n=5, et la matrice carrée m ci-dessous :
0 1 2 3
m 0 12 130 919 821
1 923 456 384 998
2 640 9109 1541 5489
1 4

82
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Le programme affichera :
0 figure 3 fois
1 figure 8 fois.
2 figure 3 fois
3 figure 3 fois
4 figure 6 fois.
5 figure 3 fois
6 figure 2 fois
7 figure 0 fois
8 figure 4 fois
9 figure 8 fois.
La fréquence maximale=8
Les chiffres ayant cette fréquence :1,9

Exercice n°5: Nombre tout-distinct


Un nombre tous-distinct si un nombre formé par tous les chiffres de 1 à 9 sans répétition.
Le nombre 321456879 est formé par tous les chiffres (de 1 à 9) et sans répétition donc c’est
un nombre tout distinct.
Le nombre 123419876 n’est pas composé par tous les chiffres (de 1 à 9) et ils ne sont pas
distincts donc ce n’est pas un nombre tout-distinct.
Soit la matrice malea formé par n lignes et 9 colonnes contenant des entiers aléatoires entre 1
et 9.
On veut remplir le tableau Dist par les nombre tout distincts obtenus à partir de la
concaténation de chaque ligne de la matrice malea.
On se propose d’écrire un programme qui permet de :
 Saisir le nombre de ligne n (10 ≤n ≤50).
 Remplir la matrice malea par des entiers aléatoires entre 1 et 9.
 Former un tableau Dist qui va contenir tous les nombres tout-distinct obtenus par la
concaténation de chaque ligne de la matrice malea.
 Afficher les éléments de tableau Dist.

83
//Chapitre 5 : Les sous programmes 3éme année Sciences Techniques

Exemple : n=12
0 1 2 3 4 5 6 7 8
malea 0 3 5 4 7 8 6 1 9 2
1 1 5 1 7 8 9 4 7 4
2 7 9 3 2 5 6 8 1 4
3 1 2 6 3 5 4 2 2 7
4 9 1 4 5 8 9 7 4 3
5 9 5 6 8 7 1 2 3 4
6 7 6 3 2 5 4 1 7 9
7 3 2 6 5 1 7 9 8 9
8 5 6 1 2 3 4 7 9 8
9 8 9 1 2 3 6 5 4 7
10 4 7 8 3 5 7 9 1 4
11 1 3 2 5 6 7 9 4 8

On aura le tableau dist suivant :


354786192 793256814 956871234 561234798 891236547 132567948
dist
0 2 3 4 5 6

84

Vous aimerez peut-être aussi