Structure d'un algorithme et exercices
Structure d'un algorithme et exercices
Travaux diriges
Exercice1
Ecrire un algorithme permet après avoir saisi le nom d’un utilisateur de lui dire bonjour
Exercice2
Écrire un programme qui permet de calculer le périmètre d’un rectangle
Exercice3
Ecrire le programme qui permet de déterminer le maximum et le minimum de deux
nombres saisis au clavier
Exercice4
Ecrire le programme qui permet de permuter deux nombres
Exercice5
Ecrire le programme qui permet de déterminer la somme ; le produit et la moyenne de trois
nombres saisis au clavier
Exercice6
Ecrire le programme qui permet de calculer la somme et le produit consécutif des
nombres compris entre 1 et 5
Exercice 7
Ecrire le programme qui permet de faire le factorielle d’un nombre
Exercice 8
Ecrire le programme qui permet de déterminer le maximum et le minimum de trois
nombres saisis au clavier
Exercice 9
Ecrire le programme qui permet de calculer la moyenne de quatre étudiants dans une
matière avec trois notes
Correction
Exercice 1
algorithme salutation
var
nom : chaine de caractère
message :chaine de caractère
debut
(*saisie du nom de l’utilisateur*)
Ecrire (‘entrer le nom de l’utilisateur’)
Lire(nom)
message bonjour+monsieur+nom
ecrire(message)
fin
Exercice 2
Algorithme calcul
Var
l,L ,p,s :reels
Début
(*saisie des valeurs du rectangle*)
Ecrire (‘entrer la longueur’)
Lire(l)
Ecrire (‘entrer la largeur’)
Lire(L)
(*traitement*)
P (L+l)*2
s L*l
(*affichage des résultats*)
Exercice3
Algorithme maximum_minimum
Var
Nb1,nb2,min,max :réels
Début
(*saisis des deux nombres*)
Afficher (‘entrer le nombre 1’)
Saisir(nb1)
Afficher (‘entrer le nombre 2’)
Saisir(nb2)
(*traitement des données*)
Si nb1>nb2 alors
max nb1
min nb2
sinon
max nb2
min nb1
fin
Exercice 4
Algorithme permutation
Var nb1,nb2,p, :réels
Début
(*saisis des données*)
Afficher (‘entrer les deux nombres’)
Saisir(nb1,nb2)
(*traitement des données*)
P nb1
Nb1 nb2
Nb2 p
(*affichage des résultats*)
Afficher (‘la nouvelle valeur de ,nb1,’est :’,nb1)
Afficher (‘la nouvelle valeur de ,nb2,’est :’,p)
Fin
Exercice5
Algorithme calcul
Var nb1,nb2,nb3,som,prod,moy :réels
Début
(*saisis des nombres*)
Afficher (‘entrer les trois nombres’)
Saisir(nb1,nb2nb3)
(*traitement*)
Exercice 8
Donnée en entrée : nombre (nb1 ;nb2 ;nb3)
Donnée en sortie : max ;min
Algorithme calcul
Var nb1,nb2,nb3,max,min : réels
Début
(*saisir des nombres*)
Afficher (‘entrer les trois nombres’)
Saisir(nb1,nb2,nb3)
(*traitement*)
Si nb1>nb2>nb3
Alors début
max nb1
min nb3
sinon
alors début
max nb3
min nb1
fin
finsi
si nb2>nb1>nb3
alors début
max nb2
max nb1
fin
sinon
début
max nb3
min nb2
fin
finsi
(*affichage des résultats*)
Afficher (‘le maximum parmi les trois nombres est’, max)
Afficher (‘le minimum parmi les trois nombres est’, min)
Fin
CHAPITRE II : LES STRUCTURE DE CONTROLES
INTRODUCTION
Les instructions d’un algorithme sont contenues dans différent type d’enchainement.
Ces enchainements font appel dans certains cas a des structures spécifiques appelées
structures de contrôles.
On distingue trois types d’enchainements :
_enchainement séquentielle
_enchainement alternatif
_enchainement répétitif
I l’enchainement séquentielle
1-1definition
On parle d’enchainement séquentielle lorsqu’une suite d’instruction est exécuter de façon
successif en respectant un ordre.
Ces instructions sont exécutées les unes à la suite des autres
1-2 exemple
Ecrire un algorithme qui permet de calculer le périmètre et la surface d’un rectangle
1-3algorithme
a-pseudo code
Donnée entre
Longueur(L) ; largeur(l)
Données en sortie
Périmètre(P) ; surface(S)
Algorithme surf_per_rectangle
VAR L,l,P,S :reels
Début
Afficher (‘entrer la longueur du rectangle ‘)
Saisir(L)
Afficher (‘entrer la largeur du rectangle ‘)
Saisir(l)
(*traitement*)
P (l+L)*2
S L*l
(*affichage des résultats*)
Afficher (‘Le perimetre du rectangle est :’, P)
Afficher (‘Le surface du rectangle est :’, S)
Fin
b-organigramme
Début
Saisir(L)
Saisir(l)
P (L+l)*2
S L*l
Afficher(P)
Afficher(S)
fin
II-L’ENCHAINEMENT ALTERNATIF
2-1 définition
L’enchainement alternatif est un enchainement qui permet d’exécuter alternativement une
suite d’instruction à condition qu’un texte logique soit vérifié.
Ce texte logique est une expression qui retourne une valeur booléenne (vrai /faux)
On parle dans ce cas de structure conditionnelle
On distingue quatre types de structures conditionnelles :
- La structure conditionnelle simple
- La structure conditionnelle alternative
- La structure conditionnelle imbriquée
- La structure conditionnelle composée
syntaxe
si
alors
<instruction>
Finsi
b)organigramme
debut
Saisir(n)
Saisir(d)
D<>0
q n/d
Afficher(q)
fin
faux vrai
texte
Instruction instruction
3-3-2 exemple
Ecrire un algorithme qui détermine la valeur absolue d’un nombre saisi au clavier
Saisir(n)
abs -n*(-1)
abs n
Afficher(abs)
fin
2-4 la structure conditionnelle imbriquée
2-4-1definition
Dans ce cas plusieurs contions peuvent être traitées à l’intérieur d’une autre condition.
Syntaxe
Si <test logique>
alors
<Instruction>
Sinon
si
<instruction>
Finsi
finsi
vrai test faux
Algorithme feu_tricolor
Var col,mes :chaine de caractère
Var n,abs :réels
Début
écrire(‘entrer la couleur ‘)
lire(col)
si col=’rouge’
alors mes ‘arrêt obligatoire’
sinon
si col =’verte’
alors mes ‘passage autorise’
sinon
si col=’orange ‘
alors mes dégagement rapide ou arrêt
sinon
alors mes ‘ce n’est pas une couleur de feu’
finsi
finsi
finsi
ecrire(mes)
fin
dans ce cas la valuer des repetitions n’est pas defini dans la base
la repetition ne s’arrete que si une certaine conditions est verifie ou pas
on distingue la structure repeter……………. jusqu’à
3-2-1l’enchainement repete………….jusqu’à
Cette structure permet de repeter de facon repetitive une suite d’action jusqu’à ce que la
condition soit verifiee
Syntaxe
a) Pseudo code
Repeter
<expression>
Jusqu’à<condition>
b) Organigramme
instruction
test
faux
vrai
Exercice
Écrire un algorithme qui permet de calculer le triple et le carre des nombres compris entre 1
et 50
Donnée en entrer : compteur(i)
donnée en sortie :carre(ca) ;triple (trp)
Algorithme carre_triple
Var ca,trp,i :entier
Debut
I 1 (initialisation)
répèter
ca i*i
trp i*3
ecrire(‘le carre du nombre est :’,ca)
ecrire(‘le triple du nombre est :’,tpr)
i i+1 (incrémentation)
jusqu’à i>50
finrepeter
fin
Organigramme
debut
i 1
ca i*i
tpr i*3
Ecrire(ca)
Ecrire(tpr)
i i+1
i>50 faux
vrai
fin
Syntaxe
a) Pseudo code
Tanque <condition>faire
<instruction>
Fintanque
b) Organigramme
Vrai instruction
Faux
Exercice (l’exemple précédant)
Algorithme carre_triple
Var ca,trp,i :entier
Début
I 1
tanque i<=50 faire
ca i*i
trp i*3
écrire (‘le carre du nombre est :’,ca)
écrire (‘le triple du nombre est :’,tpr)
i i+1 (incrémentation)
fintanque
fin
Organigramme
debut
i 1
i i+1
Ecrire(ca)
Ecrire(tpr)
faux
fin
faux
exercice(même exercice)
algorithme carre_ triple
var i,ca,trp :entier
debut
pour i 1 à 50 faire
ca i*i
trp 3*i
ecrire(‘le carre du nombre est :’,ca)
ecrire(‘le triple du nombre est :’,tpr)
finpour
fin
Chapitre II Les tableaux
Le tableau est une structure de donnée linéaire qui peut stocker des données de même
type : chaque donnée du tableau est repérée par un indice ( indexe)
Indiquant sa position dans le tableau.
Soit un tableau de 5 notes reçu par un étudiant une matière
Indice(indexe)
1 2 3 4 5
Algorithme creation_de_Tableau
Var note[1..5] : tableau de reels
I :entier
Début
(*création du tableau*)
Pour i 1 jusqu’à 5 faire
Ecrire (‘entrer la note’, i)
Lire (note(i))
Finpour
Fin
2-3-2 l’Edition d’un tableau a une dimension
Cette opération consiste à afficher le contenu d’un tableau déjà crée
Ex
Algorithme Edition du tableau
Algorithme creation_de_Tableau
Var note[1..5] : tableau de réels
I :entier
Début
(*création du tableau*)
Pour i 1 jusqu’à 5 faire
Ecrire (‘entrer la note’, i)
Lire (note(i))
Finpour
(*Edition du tableau*)
Pour i 1 jusqu’à 5 faire
Ecrire (note(i))
Finpour
Fin
Exercice
1-Ecrire l’algorithme qui permet de saisir le nom de 10 produits et de les afficher ensuite
2-ecrire l’algorithme qui permet de calculer la somme et la moyenne d’un étudiant qui
a eu 15 notes dans une matière
3- Ecrire l’algorithme qui permet d’afficher les jours de la semaine
Correction
Algorithme nom_produit
Var note[1..10] : tableau de chaine de caractère
I :entier
Début
(*création du tableau*)
Pour i 1 jusqu’à 10 faire
Ecrire (‘entrer la produit’, i)
Lire (produit(i))
Finpour
Pour i 1 jusqu’à 10 faire
Ecrire(produit(i))
Finpour
Fin
2
Algorithme nom_produit
Var note[1..15] : tableau de reels
Som,moy :reels
I :entier
Debut
(*création du tableau*)
som 0
Pour i 1 jusqu’à 15 faire
Ecrire (‘entrer la note’,i)
Lire (note(i))
som som+note(i)
Finpour
moy som/15
(*Edition de tableau*)
Ecrire (‘la somme est :’,som)
Ecrire(‘la moyenne est :’moy)
Fin
Exercice 2
Ecrire un programme qui permet de saisir le salaire de dis (10) employés ; de déterminer le
salaire le plus élevé et le nombre d’employé qui l’ont
Exercice 3
Ecrire le programme qui permet de calculer le factoriel de trois (3) nombres ainsi : que leur
somme
Exercice 4
Ecrire le programme qui permet de rechercher dans une liste de dix (10) produits, un produit
saisi au clavier
Escercice5
Un programme qui permet de calculer la moyenne de (6) étudiants ayant chacun trois (3)
notes dans une matière
Correction
Algorithme multiple_de_3
Var nombre[1..5] :tableau d’entier
I ,mult:entier
Nom,mes :chaine de caractere
Debut
(*création de tableau*)
Pour i 1 jusqu’à 5 faire
Ecrire(‘entrer le nombre ’,i)
Lire(nombre(i))
Finpour
mult 0
pour i 1 jusqu’à 5 faire
si nombre(i) MOD3=0
alors
mult mult+1
finsi
finpour
ecrire(‘le nombre de multiple de troi est :’,mult)
fin
exercice
Algorithme rechreche_salaire
Var nombre[1..10] :tableau de reel
Nbremploy, salmas, i:entier
Debut
(*création de tableau*)
Pour i 1 jusqu’à 10 faire
Ecrire (‘entrer le salaire de l’employé ’, i)
Lire(employes(i))
Finpour
(*recherche du salaire le plus eleve*)
salmas employes(i)
pour i 2 jusqu’à 10 faire
si salmas <employes(i)
alors
salmas employes(i)
finsi
finpour
(*recherche du nombre d’employes*)
nbremploy 0
pour i 1 jusqu’à 10 faire
si salmax=employes(i) alors
nbremploy nbremploy+1
finsi
finpour
écrire (‘le salaire le plus élevé est :’,salmas)
écrire(‘le nombre d’employé qui l’ont est :’,nombremploy
écrire(‘le nombre de multiple de trois est :’,mult)
fin
Exercice
Algorithme recherche_produit
Var produit[1..10] :tableau de chaine de caractere
I :entier
Mes, nomprod : chaine de caractère
Début
(*création de tableau*)
Pour i 1 jusqu’à 10 faire
Ecrire (‘entrer le produit ’,i)
Lire(produit(i))
Finpour
(*recherche d’un produit*)
Ecrire(‘entrer le produit a rechercher) Lire(nomprod)
pour i 1jusqu’à 10 faire
si nomprod=produit(i) alors
mes ce produit existe dans la liste
sinon
mes produit introuvable
finsi
finpour
fin
Exercice
Algorithme factoriel_som
Var nombre[1..3] :tableau de reels
i , j :entier
som , fact : reels
Debut
som 0
Pour i 1 jusqu’à 3 faire
Ecrire(‘entrer le nombre ’,i)
Lire(nombre(i))
Som som +nombre(i)
fact 1
j 1
tanque j<= nombre(i) faire
fact fact*j
j j+1
fintanque
écrire(‘le factoriel est :’,fact)
finpour
ecrire(‘la somme est :’,som)
fin
Exercice
Algorithme moy_etudiant
Var etudiant[1..6] :tableau de chaine de caractere
note[1..3] :tableau de reels
i , j :entier
moy: reel
Debut
Pour i 1 jusqu’à 6 faire
Ecrire(‘entrer l’identite de l’etudiant ’,i)
Lire(etudiant(i))
som 0
pour j 1 jusqu’à 3 faire
Ecrire(‘entrer la note’, j ,’de l’etudiant ’,j)
Lire(note(j))
som som+note(j)
finpour
moy som/3
Ecrire(‘la moyenne de l’etudiant ’, i ,’ est’,moy)
fin
Travaux diriges 2
Escercice1
Ecrire l’algorithme qui permet de calculer le perimetre et l’aire d’un cercle
Escrcice2
Ecrire l’algorithme qui permet de rechercher dans un tableau de 10 éléments, la position
d’un élément dans le tableau
Escercice3
Ecrire un programme qui permet de calculer la somme de deux vecteurs de taille5
Escercice4
Ecrire le programme qui permet de rechercher dans un tableau de 10 notes le minimum et le
maximum et le nombre de fois qu’ils apparaissent
Escercice5
Ecrire l’algorithme qui permet de localiser des objets dans un musée en fonction de leur
année de découverte
Avant 1960, en salle d’exposition
De 1961 à1980, à la cave
-de1981 à1999 ; aux archives
-après 2000 à la bibliothèque
Exercice
Algorithme maximum_minimum
Var note[1..10] :tableau de reels
i :entier
notemax,notemin: reels
Debut
Pour i 1 jusqu’à 10 faire
Ecrire(‘entrer la note ’,i)
Lire(note(i))
Finpour
Notmas note(1)
notmin note(1)
Pour i 1 jusqu’à 10 faire
Si notmin>note(i)
Alors
notemin not(i)
finsi
si notemax > note(i)
alors
notemax note(i)
finsi
finpour
ecrire(‘le maximum est’,notemax’)
ecrire(‘le minimum est’,notemin’)
fin
Correction
Exercice 1
Algorithme trie _note
Var nombre[1..10] :tableau de reel
Noteinf ,notesup ,i :entier
Moy, som : reel
Debut
Notesup 0
Noteinf 0
som 0
Pour i 1 jusqu’à 10 faire
Ecrire(‘entrer la note ’,i)
Lire(note(i))
som som+note(i)
si note(i)>10 alors
Notesup notesup+1
Noteinf noteinf+1
Finsi
Finpour
moy som/10
écrire(‘le nombre de note supérieur a 10 est’,notesup)
écrire(‘le nombre de note inferieur à 10 est’, noteinf)
écrire(‘la moyenne de la classe est’,moy)
fin
Exercice 2
Algorithme calcul de moyenne
Var épreuve [1..4] : tableau d’entier
J, nbetud, i : entier
Moy, sommoy, note, notcoef, moyepr, sommoyepr : reel
Début
sommoyepr 0
Pour i 1 jusqu’à 4 faire
afficher(‘entrer le coefficient de l’epreuve’,)
saisir(epreuve(i))
afficher(‘entrer le nombre d’etudiant’)
saisir(nbetud)
sommoy 0
Pour j 1 jusqu’à nbetud faire
afficher(‘entrer la note de l’etudiant’,j)
saisir(note)
notecoef note*epreuve(i)
sommoy sommoy+notecoef
finpour
moyepr sommoy/nbetud
sommoyepr sommoyepr +moyepr
finpour
moy sommoyepr /4
afficher(‘la moyenne de la classe est ‘,moy)
fin
execice 3
Algorithme nombre de mot
Var phrase : chaine de caractere
Car :chaine de caractere
Lphr=longueur(phrase)
Lphe=longueur(phrase)
J ,nbetud, i :entier
debut
nbmot 0
Pour i 1 jusqu’à lphr
Car sschaine(phrase,i,1)
Si car=’ ‘
Alors
nbmot nbmot+1
finsi
finpour
ecrire (‘le nombre d’espace de cette phrase est’,nbmot)
fin
Travaux dirige
Exercice
Dans une classe on a 5 étudiants qui composent dans 4 matières ou ils ont chacun trois
notes
Écrire un algorithme qui permet de déterminer la moyenne de chaque étudiant et la
moyenne la plus élevée
Exrcice2
écrire l’algorithme qui permet de recomposer un mot saisi au clavier
exemple papa p
pa
pap
papa
exercice
Écrire l’algorithme qui permet de détermine si un mot ou une phrase saisi au claver est un
palindrome ou nom. Un palindrome est un mot ou une phrase qui se lit de la même façon
dans les deux sens.
Exercice 4
Écrire l’algorithme qui permet de calculer la somme et le produit de deux vecteur de tailler5
Correction du td
Exercice 1
Algorithme trie_note
Var etudiant[1..5] :tableau de chaine de caractere
etudiant[1..4] :tableau de chaine de caractere
etudiant[1..3] :tableau de chaine de caractere
i, j, n :entier
Moy, som,sommoymat,moymat : reels
Debut
Pour j 1 jusqu’à 5 faire
afficher(‘entrer l’identité de de l’etudiant’,i)
saisir(etudiant(i))
sommoymat 0
pour j 1 jusqu’à 4 faire
afficher (‘entrer la matiere’,j)
saisir(matiere(j))
som 0
pour j 1 jusqu’à 3 faire
Afficher(‘entrer la note’,n)
Saisir(note(n))
Som som + note(n)
finpour
moymat sim/3
finpour
moy sommoymat / 4
Afficher (‘la moyenne de l’étudiant(i) est’ ,moy)
Finpour
Moyplus moymat(i)
exercice 2
Algorithme recompose_mot
Var mot :chaine de caractere
longmot, n :entier
Debut
afficher(‘entrer le mot)
saisir(mot)
longmot longueur(mot)
pour j 1 jusqu’à longmot faire
afficher ( sschaine,i,1)
finpour
fin
execice 4
Algorithme trie_note
Var vect1[1..5] :tableau de reel
Vect2[1..5] :tableau de reel
somvect [1..5] :tableau de reel
prodvect [1..5] :tableau de reel
i :entier
Debut
Pour j 1 jusqu’à 5 faire
afficher(‘entrer la valeur ‘,i’,de vecteur 1’)
saisir(vect1(i))
finpour
Pour j 1 jusqu’à 5 faire
afficher(‘entrer la valeur ‘,i’,de vecteur 2’)
saisir(vect2(i))
finpour
Pour j 1 jusqu’à 5 faire
sommvect vect1(i)+ vect2(i)
afficher (‘la somme des vecteur est :’,sommvect)
prodvect vect1(i)* vect2(i)
afficher (‘le produit des vecteur est :’,prodvect)
finpour
fin
execice 3
Algorithme palindrom
Var mot1, mot2 :chaine de caractere
longmot, i :entier
Debut
afficher(‘entrer le mot)
saisir(mot1)
longmot longueur(mot1)
pour j 1 jusqu’à 1 pas -1 faire
car sschaine(mot1,i,1)
afficher ( sschaine,i,1)
mot2 mot2+car
finpour
si mot2=mot1 alors
afficher (ce mot est un palindrome’)
sinon
afficher (‘ce mot n’est pas un palindrome ‘)
finsi
fipour
fin
8 4 10 5 12 18
Algorithme trie_note
Var etudiant[1..5] :tableau de reels
i :entier
inter :reel
Debut
(*création du tableau*)
Pour i 1 jusqu’à 6 faire
Afficher(‘entrer la note’,i)
Saisir(note(i))
Finpour
(*tri bulle*)
Pour i 1 jusqu’à 5 (n-1) faire
Si note(i)>note(i+1) alors
inter note(i)
note(i) note(i+1)
note(i+1) inter
finsi
finpour
(*edition du tableau*)
Pour i 1 jusqu’à 6 faire
Afficher(note(i))
Finpour
fin
exercice
1 ) ecrire un algorithme qui permet de ranger dans l’ordre alphabetique (06) six lettres
saisie au clavier
2) ecrire un algorithme qui permet de classer (10) dix moyenne dans l’ordre decroissante
Correction
Exercice 2
Algorithme classement_moyenne
Var moyenne[1..10] :tableau de reels
i :entier
inter :reel
Debut
Pour i 1 jusqu’à 10 faire
Afficher(‘entrer la moyenne’,i)
Saisir(moyenne(i))
Finpour
(*tri bulle*)
Pour i 1 jusqu’à 9 faire
Si moyenne(i)<moyenne(i+1) alors
Inter moyenne(i)
moyenne(i) moyenne(i+1)
moyenne(i+1) inter
finsi
finpour
Pour i 1 jusqu’à 10 faire
Afficher(moyenne(i))
Fipour
Fin
Algorithme ordre_alphabetique
Var lettre[1..6] :tableau de caractere
i :entier
inter :reel
Debut
Pour i 1 jusqu’à 6 faire
ecrire(‘entrer la lettre’,i)
lire(lettre(i))
Finpour
Pour i 1 jusqu’à 5 faire
Si lettre(i)>lettre(i+1) alors
inter lettre(i)
lettre(i) lettre(i+1)
lettre (i+1) inter
finsi
finpour
Pour i 1 jusqu’à 6 faire
Afficher(lettre(i))
Finpour
fin
Algorithme tri_min
Var note[1..6] :tableau de reel
Indmin,I,j :entiers
inter :reel
Debut
Pour i 1 jusqu’à 6 faire
ecrire(‘entrer la note’,i)
lire(note(i))
Finpour
Pour i 1 jusqu’à 5 faire
indmin i
Pour i j jusqu’à 7 (n+1) faire
Si note(j)<note(indmin)
Alors
Indmin j
finsi
Finpour
Si indmin <> i alors
inter note(indmin)
note(indmin) inter
finsi
Pour i 1 jusqu’à 6 faire
Ecrir (note(i))
Finpour
Finpour
fin
Il s’agit ici de recherche au sein d’un tableau trie délimite par une borne inferieur et une
borne supérieur un élément situe à l’indice médiane (milieu du tableau).
Exemple : soit le tableau suivant :
NOTE
1 2 3 4 5 6 7
8 4 10 5 12 18 6
TABLEAU TRIE
1 2 3 4 5 6 7
4 5 6 8 10 12 18
Bornesup= 7
Borninf=1
indice median=4
Algorithme dichotomie
Var note[1..7] : tableau de reels
Borninf, bornsup, mediane, i :entier
Inter, element : reels
Debut
(*creation de tableau*)
borninf 0
bornsup 0
pour i 1 jusqu’à 7 faire
ecrire(‘entrez la note’, i )
lire (note[i])
finpour
pour j 1 jusqu’à faire
si note (i)> note(i+1) alors
inter note(i)
note(i) note(i+1)
note(i+1) inter
finsi
finpour
(*edition du tableau*)
pour i 1 jusqu’à 7 faire
ecrire(note(i))
finpour
(*recherche d’un element par dichotomie*)
Ecrire(‘entrer un element du tableau’)
Lire(element)
Tanque (element <>note(median) et borninf <=borsup faire
Si element <note(median)
Alors bornsup median-1
Sinon
Alors
borninf median+1
Finsi
median (borninf+bornsup)/2
fintanque
(*resultat de la recherche*)
Si element =note(median) alors
Ecrire(‘element trouve a l’ndice’,i)
Sinon
Ecrire(‘l’element n’est pas dans le tableau’)
Finsi
Fin
Application
Soit un tableau de 15 moyennes saisi au clavier
Ecrire l’algorithme qui permet de rechercher la position d’une valeur saisis par dichotomie
Il s’agit de fusionner deux tableaux ordonnés en les lançant de façon ordonne dans un
troisième tableau
1 2 3 4
Note1 1 8 4 10
1 2 3 4
Note1 trie 1 4 8 10
Note2 5 3 6
Note2 trie 3 5 6
Note3 1 3 4 5 6 8 10
Algorithme fusion_tableau
Var note1[1..4] :tableau de reel
Note2[1..3] :tableau de reel
Note3 [1..7] :tableau de reel
i , indnot1, indnot2, indnot3 :entier
inter :reel
Debut
(*remplissage du tableau 1*)
Pour j 1 jusqu’à 4 faire
afficher(‘entrer la note‘,i)
saisir(note1(i))
finpour
(*remplissage du tableau 1*)
Pour j 1 jusqu’à faire
afficher(‘entrer la valeur ‘,i)
saisir(note2(i))
finpour
(*tri des tableau*)
Pour j 1 jusqu’à 3 faire
Si note1(i)> note1(i+1) alors
Inter note1(i)
note1(i) note1(i+7)
note1(i+1) inter
finsi
finpour
Pour j 1 jusqu’à 2 faire
si note2(i)> note2(i+1) alors
inter note2(i)
note2(i) note2(i+7)
note2(i+1) inter
finsi
finpour 1
indnot1 1
indnot2 1
indnot3 1
(*fusion des tableau*)
Tanque (indnote<=4) et (indnote2<3) faire
Si note(indnote1)> note2(indnot2) alors
Indnote2 indnot2+1
Sinon
Si note2(indnote2)>note1(indnot1)
Indnote3(indnot3) note1(indnot1)
Indnote1 Indnote1+1
Finsi
Finsi
Fintanque
Pour j 1 jusqu’à 4 faire
Indnote3(indnot3) note1(i)
Indnote3 Indnote3+1
Finpour
Pour j 1 jusqu’à 3 faire
Indnote3(indnot3) note2(i)
Indnote3 Indnote3+1
Finpour
(*edition du tableau fusionne*)
Pour j 1 jusqu’à 7 faire
Ecrire(note3(i))
Finpour
fin
6-6 application
Exercice 1
Écrire l’algorithme qui permet de calculer la moyenne de 5 étudiants qui ont trois notes
dans une matière
Exercice 2
Écrire un algorithme qui permet d’afficher le contenu du tableau suivant
Région 1 2 3 4
produit
1 riz florido tarro graine
Correction
Algorithme moyenne
Algorithme affichage_produit
Lir (produit(i,j))
Finpour
Finpour
fin
Travaux diriges
Exercice 1
Ecrire un algorithme qui permet de saisir dix (10) valeurs réels et de les classer dans l’ordre
décroissant
Exercice 2
Une entreprise commerciale vend cinq (5) produit à ses distributeurs dans quatre régions.
Ecrire l’algorithme qui permet de saisir et d’afficher les différents prix des produits par
région
Exercice 3
Ecrire l’algorithme qui permet de déterminer le salaire la plus basse paye dans une
entreprise sachant que l’entreprise dispose de 25 employés
Exercice 4
Un gestionnaire de stock d’un grand magasin réalise la gestion du stock selon les règles
suivant
-si la commande du client est inférieure ou égale a la quantité en stock on sert le client et le
stock est mise à jour
-si la commande du client est supérieur a la quantité en stock on réalise le
réapprovisionnement avant de le servir.
Selon La formule QEC=(2FVC)1/2
QEC=Quantité économique à commander
F : frai associe à la passation de la commande
V : vente annuelle (en unité)
C : frai associe à l’entreposage
TAF Ecrire l’algorithme qui permet de mettre à jour le stock après la commande d’un client.
Correction
Exercice 1
Algorithme classement_valeur
Var valeur[1..10] :tableau de reels
i :entier
inter :reel
Debut
Pour i 1 jusqu’à 10 faire
Afficher(‘entrer la valeur’,i)
Saisir(valeur(i))
Finpour
Pour i 1 jusqu’à 9 faire
Si valeur(i)<valeur(i+1) alors
Inter valeur(i)
valeur(i) valeur(i+1)
valeur(i+1) inter
finsi
finpour
Pour i 1 jusqu’à 10 faire
Afficher(valeur(i))
Finpour
Fin
Var
QS ,q,QEC,F,V,C : reels
Debut
Ecrire(‘entrer la quantite en stock’)
Lire(QS)
Ecrire(‘entrer la quantite du client’)
Lire(q)
Si q<= QS alors
QS QS – q
QS QS – q
Sinon
Ecrire(‘entrer le frais associe a la passation ‘)
Lire(F)
Ecrire(‘entrer la vente annuelle ‘)
Lire(V)
Ecrire(‘entrer les frais associes a l’entrepassage ‘)
Lire(C)
QEC ((2Fνc)0,5
QS QS – QEC
QS QS – q
Finsi
Ecrire(‘le client est servi’)
Ecrire(‘la qantite de stock QS)
fin
Travaux diriges
Exercice 1
Ecrire un algorithme qui permet de résoudre l’équation AX+B+C
Exercice 2
Ecrire un algorithme qui permet da un usa gé d’afficher pour une phrase saisie au clavier de
déterminer le nombre de mots et d’espace.
Exercice 3
Ecrire l’algorithme qui permet à une société de calculer le salaire de ses chauffeurs (20) et sa
part sachant que les chauffeurs ont travaillés 26 jours et que la part des chauffeurs est de
20/100 de sa recette.
Exercice 4
Ecrire l’algorithme qui permet de calculer la somme et le produit consécutif des compris
entre 10 et 25
Exercice 5
Ecrire l’algorithme qui permet de saisir un élément étude vérifier si cet élément existe dans
un tableau de dix (10) éléments et à quel indice il se trouve.
Correction
Algorithme calcul
Var a,b,c :entier
S1 :reel
S2 :chaine de caractere
Debut
Ecrire(‘entrer la valeur 1’)
Lire(a)
Ecrire(‘entrer la valeur 2’)
Lire(b)
Ecrire(‘entrer la valeur 1’)
Lire(c)
Si a<>0 alors
c−b
S1 a
Execice4(voire page)
Algorithme recherche
Var element[1..10] :tableau de reel
I :entier
eltrech : reel
Début
I) Introduction
Les enregistrements sont une meilleure organisation dans la gestion des informations. Tout
comme le tableau l’enregistrement regroupe plusieurs informations. cependant
contrairement au tableau l’enregistrement regroupe des informations de type différents.
Ces différentes informations sont appelées champs.
II) DECLARATION
L’enregistrement est un agrégat de plusieurs données de type quelconque ;ces différents
données appelées champs constituent les différentes informations nécessaires au
traitement. Chaque enregistrement est identifier par un identificateur appelé nom de
l’enregistrement.
II) Déclaration
La déclaration d’un enregistrement ces fait sous la forme de la déclaration d’un
type de donnée
Type <identificateur>=enregistrement champs
Champ1 <type>
Champ2 <type>
:
:
Champn<type>
Finenregistrement
Exemple
Soit l’enregistrement client avec les donnees suivantes
numclt nom prénom adresse
Cl001 Konate Marius Belleville6
type client=enregistrement
numclt :chaine de caractère
nom : chaine de caractère
prenom : chaine de caractère
adresse : chaine de caractère
finenregistrement
Finenregistrement
Var unetudiant :etudiant
Debut
(*saisi de l’enregistrement etudiant*)
Ecrire(‘entrer la matricule de l’etudiant ‘)
lire(‘[Link] ‘)
Ecrire(‘entrer le nom de l’etudiant ‘)
lire([Link] )
Ecrire(‘ entrer le prenom de l’etudiant‘)
lire([Link])
(*affichage des resultats*)
Ecrire([Link])
Ecrire([Link])
Ecrire([Link])
Fin
b) L’instruction avec
L’instruction avec permet de palier a la lourdeur de la notation pointée.
Algorithme saisi_ aff_etudiant
Type etudiant=enregistrement
Matricule : chaine de caractère [7]
nom : chaine de caractère[15]
Prénom : chaine de caractère[25]
âge : entier[3]
finenregistrement
var unetudiant :etudiant
Début
(*saisi de l’enregistrement*)
Avec unetudiant faire
Ecrire (‘entrer le matricule de l’étudiant ‘)
Lire (matricule)
Ecrire (‘entrer le nom de l’étudiant ‘)
Lire (nom)
Ecrire (‘ entrer le prénom de l’étudiant‘)
Lire(prénom)
finavec
(*affichage des résultats*)
Ecrire(matricule)
Ecrire(nom)
Ecrire(âge)
Fin
Les tableau d’enregistrements
ON PARLE ici d’une composition de type structure. Dans ce cas ; tous les éléments du
tableau sont des enregistrements.
Exemple
Ecrire l’algorithme qui permet d’afficher le contenu d’un tableau de 10 éléments sachant
qu’un élément se présente comme suit
Nom note1 note2 appréciation
KONE 13 13 ASSEZ BIEN
Algorithme tabl_enregistrement
Type eleve=enregistrement
Appréciation : chaine de caractère [15]
nom : chaine de caractère[25]
note1 : entier[3]
note2 : entier[3]
finenregistrement
var unetudiant
tabelev[1..10] :tableau de eleve
debut
(*remplissage du tableau*)
Pour i 1 jusqu’à 10 faire
Ecrire (‘entrer le nom de l’enregistrement’, i)
Lire(tabelv[i]. Nom)
Ecrire (‘entrer la note 1 de l’enregistrement ‘, i)
lire(tabelv[i].note1)
Ecrire (‘entrer la note 2 de l’enregistrement’, i)
lire(tabelv[i].note2)
Ecrire (‘ entrer l’appréciation de l’enregistrement’, i))
lire(tabelv[i].appreciation)
finpour
pour i=1 jusqu’à 10 faire
Ecrire(tabelv[i].note1)
Ecrire(tabelv[i].note2)
Ecrire(tabelv[i].appreciation)
Finpour
fin
Exercice d’application
Exercice1
Écrire l’algorithme qui permet de créer un annuaire prenant en compte 100 personnes.
Chaque personne est caractérisée par
- Nom (chaine de caractère)
- Numéro de téléphone (chaine de caractère)
- Numéro carte bancaire(numérique)
Exercice2
Ecrire un algorithme qui permet d’afficher la note d’orale (coeficient1) et la note
d’écrit(coeficient2) obtenu dans une matière pour 20 étudiants d’une classe.
NB on souhaite mémoriser le nom et le prénom de chaque élevé
Correction
Algorithme creation_annuaire
Type citoyen=enregistrement
Appréciation : chaine de caractère [15]
nom : chaine de caractère[25]
nemero telephone : chaine de caractère[20]
Numéro carte : numérique
finenregistrement
var tcitoyen [1..100] :tableau de citoyen
i :entier
Début
(*remplissage du tableau*)
Pour i 1 jusqu’à 100 faire
Ecrire (‘entrer le nom de l’enregistrement’, i)
Lire(tcitoyen [ i]. Nom)
Ecrire (‘entrer le numero de telephone de l’enregistrement ‘, i)
lire(tcitoyen [ i].numero de telephone)
Ecrire (‘entrer le numero de carte de l’enregistrement’, i)
lire(tcitoyen [ i].numerocart)
finpour
pour i 1 jusqu’à 100 faire
Ecrire(tcitoyen [ i]. Nom)
Ecrire(tcitoyen [ i].numero de telephone)
Ecrire(tcitoyen [ i].numerocart)
Finpour
fin
Algorithme creation_annuaire
Type citoyen=enregistrement
Appréciation : chaine de caractère [15]
nom : chaine de caractère[25]
nemero telephone : chaine de caractère[20]
numero carte : numerique
finenregistrement
var tcitoyen [1..100] :tableau de citoyen
i :entier
debut
(*remplissage du tableau*)
Pour i 1 jusqu’à 100 faire
Ecrire (‘entrer le nom de l’enregistrement’, i)
Lire(tcitoyen [ i]. Nom)
Ecrire (‘entrer le numero de telephone de l’enregistrement ‘, i)
lire(tcitoyen [ i].numero de telephone)
Ecrire (‘entrer le numero de carte de l’enregistrement’, i)
lire(tcitoyen [ i].numerocart)
finpour
pour i 1 jusqu’à 100 faire
Ecrire(tcitoyen [ i]. Nom)
Ecrire(tcitoyen [ i].numero de telephone)
Ecrire(tcitoyen [ i].numerocart)
Finpour
fin
Algorithme exament
Const coeforal=1
Coefecrit=2
Type étudiant=enregistrement
prenom : chaine de caractère[25]
nom : chaine de caractère[21]
note1 :reel
note2 :reel
finenregistrement
var tbetudiant [1..20] :tableau de etudiant
i :entier
moy :reel
debut
(*remplissage du tableau*)
Pour i 1 jusqu’à 20 faire
Ecrire (‘entrer le nom de l’enregistrement’, i)
Lire(tbetudiant [ i]. Nom)
Ecrire (‘entrer la note orale de l’enregistrement ‘, i)
lire(tbetudiant [ i].noteorale)
Ecrire (‘entrer la note ecrite de l’enregistrement ‘, i)
lire(tbetudiant [ i].noteecrit)
finpour
pour i 1 jusqu’à 20 faire
moy (tbetudiant [ i].noteorale*coeforal+ tbetudiant [ i].noteecrit*coefecrir)/3