Algorithmique Et Programmation - Grintta - Bot PDF
Algorithmique Et Programmation - Grintta - Bot PDF
Algorithmique Et Programmation - Grintta - Bot PDF
Ridha Nairi
Le libre savoir a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et
fiable.
Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques.
Le libre savoir ne pourra en aucun cas être tenu pour responsable de préjudices ou dommages de quelque nature que ce
Couverture : Universal
Copyright © 2014
TABLE DES MATIERES
La programmation ...................................................................................................................................................... 4
Structures de données................................................................................................................................................ 6
Les constantes .................................................................................................................................... 6
Les variables........................................................................................................................................ 6
Les opérateurs .................................................................................................................................... 7
Les types de données ......................................................................................................................... 7
Structures simples .................................................................................................................................................... 11
Structures conditionnelles ...................................................................................................................................... 12
Structures itératives ................................................................................................................................................. 13
Les sous programmes .............................................................................................................................................. 14
Fonctions et procédures prédéfinies .......................................................................................................................16
Enregistrements et fichiers .....................................................................................................................................18
Les enregistrements ........................................................................................................................18
Les fichiers .......................................................................................................................................19
La Récursivité ...........................................................................................................................................................24
Les algorithmes de Tri ..............................................................................................................................................25
Tri par sélection / Procédé récursif .................................................................................................25
Tri à bulles / Procédé récursif ..........................................................................................................26
Tri par insertion / Procédé récursif .................................................................................................27
Tri Shell .............................................................................................................................................28
Tri par fusion ....................................................................................................................................29
Tri par comptage .............................................................................................................................31
Méthodes de recherche ...........................................................................................................................................32
Recherche séquentielle....................................................................................................................32
Recherche séquentielle -Procédé récursif- ...................................................................................32
Recherche séquentielle (vecteur trié) ...........................................................................................32
Recherche dichotomique (vecteur trié) .........................................................................................33
Recherche dichotomique -Procédé récursif- .................................................................................34
Fiches de révision
Fiches de révision
3
LA PROGRAMMATION
La programmation n’est rien d’autre que demander à un ordinateur de faire ceci, puis cela et d’afficher le ré-
sultat, le tout dans une langue qu’il comprend. Il faut donc apprendre à parler une langue que comprend la
machine vous pourrez alors lui donner une liste d’instructions qui vont constituer un programme autrement
appelé "logiciel".
Un programme informatique réalise en général trois choses :
Il lit des données en entrée.
Il effectue des calculs.
Il écrit des données en sortie.
DE L’ANALYSE A LA PROGRAMMATION :
a) L ‘analyse du problème :
Décomposer tout problème en (un grand nombre de) petits problèmes tout à fait élémentaires que toute
personne sensée doit être capable de résoudre; c’est ce qu’on appelle la méthode d’analyse descendante.
On procède par raffinements successifs en partant d’un problème complexe que l’on décompose en sous
problèmes moins compliqués. On décompose alors ces problèmes en sous problèmes de plus en plus
simples, jusqu’à parvenir à des problèmes tellement élémentaires que la solution en est évidente.
L’analyse descendante est un mode de pensée visant à construire des algorithmes en partant d'un niveau
très général et en détaillant peu à peu chaque traitement, jusqu'à arriver au niveau de description le plus
bas. C’est une méthode permettant d'aborder un problème, de reconnaître sa structure et donc les traite-
ments qu'il faudra mettre en œuvre pour le résoudre. De même; c'est la décomposition hiérarchique des
travaux.
c) La programmation :
C’est le passage du modèle logique qui est l’algorithme au modèle directement exploitable par l’ordinateur.
Pour cela, il faut traduire l’algorithme en un programme écrit dans un langage de programmation choisi par
l’utilisateur. Le langage de programmation dépendra de la nature du problème ou de l’application à automa-
tiser.
4
Problème Algorithme Programme
Analyse Programmation
b) Après avoir écrit notre programme, on fait recoure à l’une des deux étapes suivantes :
- Interprétation :
Consiste à faire la traduction au langage machine instruction par instruction jusqu'à la fin du programme (in-
terprète et exécute). S’il y a une erreur syntaxique ou sémantique l’interprétation s’arrête. Il n'y a pas pro-
duction de programme objet (exécutable).
- Compilation :
Consiste dans la production de programme exécutable objet; à fin de passer à l’étape d’exécution il faut que
la syntaxe du programme soit correcte. Le programme d’origine s’appelle programme source et le pro-
gramme compilé est dit exécutable.
Remarque : Tout langage est muni d’un traducteur en langage machine (interpréteur ou compilateur).
c) Exécution et tests :
Une fois le programme est écrit, on passe à l’exécution. Il est toujours utile de le tester avec un jeu d’essai.
5
STRUCTURES DE DONNEES
Les identificateurs servent à désigner les différentes entités manipulées par le programme telles les cons-
tantes, variables, fonctions…, ils sont formés d’une suite de caractères choisis parmi les lettres ou les chiffres,
le premier d’entre eux étant nécessairement une lettre.
LES CONSTANTES :
a) Définition :
On appelle constante un objet ayant une valeur inchangée tout le long d’un algorithme. Elle est caractéri-
sée par :
Son nom (un identificateur unique).
Sa valeur.
Exemple: NomConstante = 1.17
a) Déclaration :
ALGORITHME PASCAL
LES VARIABLES :
a) Définition :
On appelle variable tout objet pouvant prendre différents valeurs tout le long d’un algorithme. Elle est
caractérisée par :
Son nom (un identificateur unique).
Son type.
Sa valeur.
b) Déclaration :
ALGORITHME PASCAL
TYPE ………..;
Objet Type/Nature
NomVariable …………. VAR NomVariable : Type_variable;
a) Opérateurs relationnels : < , > , ≤ , ≥ , ≠ , = , DANS. (≠, DANS en Turbo Pascal<>, IN)
c) Opérateurs logiques :
ALGORITHME PASCAL Signification Exemples :
NON NOT Négation NOT True = False
OU OR Disjonction False OR False = False
ET AND Conjonction True AND True = True
OUex XOR Ou exclusif True XOR False = True
d) Priorité des opérateurs : NON * / MOD DIV ET + - OU OUex = < > ≤ ≥ ≠ DANS
1 2 3 4
En cas de priorités identiques (1 ou 2 ou 3 ou 4), les calculs s’effectuent de gauche à droite. Les parenthèses
permettent d’outrepasser ces règles de priorité, en forçant le calcul préalable de l’expression qu’elles
contiennent.
Les opérateurs arithmétiques unaires + et – (opposé) sont de priorités 1.
a) Le type BOOLEEN : Ce type contient les deux valeurs logique VRAI (TRUE) et FAUX (FALSE). (VRAI > FAUX)
On obtient un résultat de type booléen quand on est amené à comparer des expressions entre elles, au
moyen des opérateurs relationnels et des opérateurs logiques.
Turbo pascal fournit cinq types entiers prédéfinis. Chacun d’eux concerne un sous ensemble particulier des
nombres entiers : ShortInt, Integer et LongInt (entier court, entier et entier long) : Entier signé.
7
Byte et Word (octet et mot) : Entier non signé (positif).
c) Le type REEL (FLOTTANT) : Désigne les valeurs des nombres réels.
ALGORITHME PASCAL
Turbo pascal fournit cinq types réels prédéfinis. Chacun d’eux a un domaine de valeurs et une précision spéci-
fiques : Real, single, double, extended et comp. (réel, réel simple, réel double, réel étendu et réel compatible)
d) Le type CARACTERE :
Désigne tous les caractères alphanumériques imprimables de l’alphabet latin ainsi que les caractères spéciaux
non imprimables ayant des significations particulières tel que : le retour chariot, l’Echappe (Escape), le Bip s o-
nore, etc. Tous ces caractères sont ordonnés selon leur code ASCII.
e) Le type CHAINE :
Une chaîne de caractère est une succession de n caractères avec n compris entre 0 et 255, c’une suite
d’octets correspondant à chacun de ses caractères.
Les variables chaînes de caractères sont définies par une déclaration pouvant indiquer le nombre maximal
de ces caractères.
Le type chaîne est en fait un tableau de caractères (à une dimension) de taille la longueur de cette chaîne
(maximum 255), le premier caractère de la chaîne a pour indice 1.
ALGORITHME PASCAL
ALGORITHME PASCAL
ALGORITHME PASCAL
9
g) Les types définis par l’utilisateur :
Les types simples comme entier, réel, caractère, booléen, chaîne de caractères et tableau; sont des types pré-
définis d’un langage de programmation.
Tous les langages de programmation offrent à l’utilisateur la possibilité de définir des nouveaux types de don-
nées plus sophistiqués.
Exemple :
Le type Enuméré : liste de valeur donnée par l’utilisateur, exemple :
PASCAL
Une variable énumérée ne peut être lue ou écrite par les instructions READ ou WRITE.
PASCAL
Fiches de révision
Chaque variable définie correspond bien à un sous-type d'un type scalaire (classique ou énuméré défini),
mais ne peut en aucun cas contenir une valeur dépassant les bornes de l’intervalle. 1
0
STRUCTURES SIMPLES
Les échanges d’informations entre l’utilisateur et la machine sont appelées opérations d’entrée-sortie.
LA LECTURE DE DONNEES : Entrée d’information (une lecture) en règle générale, au clavier, afin de
l’affecter à une variable.
ALGORITHME PASCAL
Read (V);
Lire (V) ou
Readln (V);
L’ECRITURE DE DONNEES : Opération de sortie; on parle d’écriture, même si le résultat apparait sur
l’écran.
ALGORITHME PASCAL
Write (V);
Ecrire (V) ou
Writeln (V);
L’AFFECTATION : Il s’agit d’une affectation du résultat d’une expression à une variable. La partie droite
d’une expression d’affectation est toujours calculée avant que l’affectation n’ait lieu. Il faut vérifier que
les opérandes sont du même type que ce que vous souhaitez obtenir.
ALGORITHME PASCAL
V1 ← V2 V1 := V2; 1
Avec V1 un identificateur de variable.
Et V2 un identificateur de variable ou expression de même type ou compatible à la variable V1.
1
STRUCTURES CONDITIONNELLES
« Condition » : expression booléenne quelconque c’est-à-dire condition quelconque ou variable de type boo-
léen.
« Instructions_0_1_2...N » désignes toujours n’importe quelles instructions (structures) simples, structurées
(choix, boucles) ou un bloc.
ALGORITHME PASCAL
SI (Condition) IF (Condition)
ALORS THEN
Instructions BEGIN
FINSI Instructions;
END;
STRUCTURE CONDITIONNELLE SIMPLE (forme alternative) : Réaliser un choix parmi deux possibilités.
ALGORITHME PASCAL
SI (Condition) IF (Condition)
ALORS THEN
Instructions1 BEGIN
SINON Instructions1;
Instructions2 END
FINSI ELSE
BEGIN
Instructions2;
END;
Un ELSE se rapporte toujours au dernier IF rencontré auquel un ELSE n’a pas encore été attribué.
Le end terminant le then n'est pas suivi d'un point virgule.
STRUCTURE CONDITIONNELLE À CHOIX MULTIPLES : Comparer un objet à toute une série de valeurs.
ALGORITHME PASCAL
LA BOUCLE REPETER : On répète l’exécution du bloc d’instructions tant que Condition = FAUX.
ALGORITHME PASCAL
REPETER REPEAT
Instructions Instructions;
JUSQU’A (Condition) UNTIL (Condition);
LA BOUCLE TANT QUE : On répète l’exécution du bloc d’instructions tant que Condition = VRAI.
ALGORITHME PASCAL
LA BOUCLE POUR :
1ère forme : Le nombre de passages dans la boucle est connu au préalable (= F-D+1).
D, F peuvent être des constantes ou des expressions scalaires.
ALGORITHME PASCAL
C est une variable de type scalaire qui sera incrémenté après chaque parcours.
2ème forme : La valeur du pas peut être négative, dans ce cas la valeur initiale (F) sera supérieure à la
valeur finale (D).
ALGORITHME PASCAL
Fiches de révision
C est une variable de type scalaire qui sera décrémenté après chaque parcours. 1
3
LES SOUS PROGRAMMES
1. DEFINITIONS :
Procédure / Fonction : un module de programme auquel on peut faire référence par son nom.
Procédure : suite de commandes ou d’instructions décrivant une action simple ou composée a laquelle on
donne un nom et qui permet de retourner plusieurs résultats.
Fonction : procédure particulière qui ne transmet qu’un seul résultat, une seule valeur, au programme
appelant.
Variables globales : variables déclarées dans le programme principal, utilisable dans les instructions du
programme principal ainsi que dans les procédures et les fonctions.
Variables locales : variables déclarées dans la procédure ou la fonction, utilisable uniquement à l'intérieur
de la procédure ou la fonction.
Paramètres effectifs (réels) : figurent dans l'appel de la procédure ou la fonction. Ces paramétres sont
substitués aux paramètres formels au moment de l’appel de la procédure ou la fonction, il sajit de
variable, constante ou d’une expression.
Passage de paramètres : La substitution des paramètres effectifs aux paramètres formels s’appelle
passage de paramètres elle correspond a un transfert de données entre le programme principal et La
procédure.
Passage par valeur : Le transfert d’information est effectué dans un seul sens, du programme principal
vers la procédure.
Permet au programme appelant de transmettre une valeur à la procédure appelé. Toute modification du
paramêtre formel est sans consequence sur le paramètre effectif.
Les paramètres effectifs transmis par variable ne peuvent pas être des constantes ou des expressions. Il
ne peut s’agir que des variables.
On interdit l’emploi de paramètres variables dans les fonctions ainsi que la modification des valeurs des
variables globales.
1
4
2. LES PROCEDURES :
ALGORITHME PASCAL
ALGORITHME PASCAL
PROC NomP (Paramètres_effectifs) NomP (Paramètres_effectifs);
3. LES FONCTIONS :
ALGORITHME PASCAL
TypeF est le type du résultat retourné (doit être différent d’un tableau ou d’un enregistrement).
Valeur est un identificateur de variable ou expression de même type ou compatible à TypeF.
Le résultat de la fonction est la denière valeur qui a été affectée à son identificateur (NomF).
Appel d’une fonction : une fonction s'utilise comme on utiliserait une variable du type de la valeur
Fiches de révision
retournée par la fonction, on peut donc l'utiliser dans une expression; exemples :
ALGORITHME PASCAL
V ← FN NomF (Paramètres_effectifs) V := NomF (Paramètres_effectifs);
TYPE TYPE DU
ALGORITHME PASCAL RÔLE
OPERANDES RESULTAT
ABS (x) ABS (x) Valeur absolue de x. ENTIER / REEL ENTIER / REEL
CARRE (x) SQR (x) Carré de x. ENTIER / REEL ENTIER / REEL
RACINECARRE (x) SQRT (x) Racine carré de x. ENTIER / REEL REEL
SIN (x) SIN (x) Sinus de x (en radians). ENTIER / REEL REEL
COS (x) COS (x) Cosinus de x (en radians). ENTIER / REEL REEL
ARCTAN (x) ARCTAN (x) Arc tangente de x (en radians). ENTIER / REEL REEL
EXP (x) EXP (x) Exponentielle de x. ENTIER / REEL REEL
LN (x) LN (x) Logarithme népérien de x. ENTIER / REEL REEL
Π Pi Valeur de Pi = 3, 14. - REEL
ENT (x) INT (x) Partie entière. REEL REEL
FRAC (x) FRAC (x) Partie décimale. REEL REEL
Arrondie de x a la plus proche
ARRONDI (x) ROUND (x) REEL ENTIER
valeur.
TRONC (x) TRUNC (x) Supprime la partie décimale. REEL ENTIER
Randomize;
ALEA Valeur aléatoire ∈ 0. .1 - REEL
RANDOM
Randomize;
ALEA(x) Valeur aléatoire ∈ 0. . x − 1 ENTIER ENTIER
RANDOM (X)
TYPE DU
ALGORITHME PASCAL RÔLE
RESULTAT
ORD (A) ORD (A) Renvoie le code ASCII du caractère A. ENTIER
CHR (A) CHR (A) Renvoie le caractère dont le code ASCII est A. CARACTERE
SUCC (A) SUCC (A) Renvoie le caractère successeur du caractère A. CARACTERE
PRED (A) PRED (A) Renvoie le caractère prédécesseur du caractère A CARACTERE
MAJUS (A) UPCASE (A) Convertit le caractère A en majuscule. CARACTERE
Fiches de révision
Remarque : ORD, SUCC et PRED sont aussi utilisables sur les variables d’un type énuméré ou booléen (sont
respectivement numéro d’ordre (le 1er = 0), successeur et prédécesseur d’une valeur donnée).
Exemples : ORD(False) = 0
ORD(True) = 1
SUCC (False) = True
PRED (True) = False 1
6
LES FONCTIONS PREDEFINIES SUR LES CHAINES :
TYPE DU
ALGORITHME PASCAL RÔLE
RESULTAT
Concaténation d’un groupe
CONCAT (mot1, ..., motn) CONCAT (mot1, ..., motn) CHAINE
de chaîne de caractères.
Extrait de mot, nb caractères
SOUS_CHAINE (mot, pos, nb) COPY (mot, pos, nb) CHAINE
à partir de la position pos.
Renvoie la longueur de La va-
LONG (mot) LENGTH (mot) ENTIER
riable mot.
1
7
ENREGISTREMENTS ET FICHIERS
LES ENREGISTREMENTS :
a) Définition :
Un enregistrement (ou structure) permet de désigner sous un seul nom un ensemble de champ pou-
vant être de types différents.
b) Déclaration :
ALGORITHME
Champ1 : type1
Champ2 : type2
…
ChampN : typeN
FIN Element
PASCAL
ChampN : typeN;
END;
VAR V : Element;
Fiches de révision
Element est un type (modèle) d’enregistrement (structure), qui précise le nom et le type de chacun des
champs constituant cette structure (Champ_1_2...N).
Avec type_1_2...N : sont des types simples (prédéfinis du langage de programmation), définis par
l’utilisateur ou enregistrement.
ALGORITHME PASCAL
Accès global V1 ← V2 V1 : = V2;
Accès a un
V1.Champ ← Valeur V1.Champ : = Valeur;
champ
END;
Avec V1 un identificateur de variable et V2 une variable ou expression de même type que la variable V1.
Valeur_1_2...N sont des identificateurs de variable ou expressions de même type ou compatible avec
Champ_1_2...N.
LES FICHIERS :
Mode d’accès :
Accès séquentiel : pour atteindre l’élément de rang n, il est nécessaire de parcourir les (n-1) éléments
précédents.
Accès direct : retrouver directement l’élément recherché, à condition que l’on connaisse son numéro
d’ordre (c’est-à-dire sa position dans le fichier).
1
9
d) Opérations sur les fichiers à accès séquentiel et direct (Fichiers Typés):
Déclaration :
ALGORITHME
ChampN : typeN
FIN Element
PASCAL
TYPE
Element = RECORD
Champ1 : type1;
Champ2 : type2;
…
ChampN : typeN;
END;
2
0
Commandes sur les fichiers à accès séquentiel et direct (Fichiers Typés):
ALGORITHME PASCAL
1 ASSOCIER (Nom_interne, Nom_externe) ASSIGN (Nom_interne, Nom_externe);
P - Associer le Nom interne (logique) d’un fichier à son Nom externe (physique).
P - Ecriture ou modification d’un enregistrement sur le fichier (place le pointeur de sur l'élément suivant)
Fn - Détecte la fin du fichier, et retourne la valeur Vrai (True) sinon Faux (False).
1
TAILLE_FICHIER (Nom_interne) FILESIZE (Nom_interne)
0
Fn - Renvoie la taille (Nombre d’enregistrements) du fichier.
1
POINTER (Nom_interne, numero_ordre) SEEK (Nom_interne, numero_ordre);
1
Fiches de révision
P - Accéder directement à un enregistrement par son numéro d’ordre. (0 pour le 1er enregistrement).
1
TRONQUER (Nom_interne) TRUNCATE (Nom_interne);
2
P - Tronque un fichier à la position courante du pointeur, c a d tout ce qui se trouve après la position
courante du pointeur est supprimé.
1
3
POSITION_FICHIER (Nom_interne) FILEPOS (Nom_interne) 2
Fn - Renvoie la position courante (numéro d’ordre) du pointeur du fichier.
1
e) Opérations sur les fichiers texte :
Définition :
Les fichiers texte sont des fichiers séquentiels qui contiennent des caractères organisés en lignes terminées
par un caractère Retour Chariot (noté CR dont le code ASCII est 13) qui marque la fin de chaque ligne. Une
marque de fin de fichier (Ctrl-Z) termine la séquence de lignes.
Les commandes associer, recréer, écrire, lire, fin_fichier, renommer, effacer et fermer sont identiques à celle
appliquées sur les fichiers à enregistrements (la commande reset ouvre un fichier texte uniquement en lec-
ture).
Déclaration :
ALGORITHME PASCAL
Fiches de révision
2
2
Commandes sur les fichiers texte :
ALGORITHME PASCAL
Fn - Renvoie le statut de fin de ligne, retourne la valeur Vrai (True) si fin de ligne atteint sinon
Faux (False).
Fn - Renvoie le statut de fin de ligne, retourne la valeur Vrai (True) si fin de ligne atteint sinon
Faux (False). Avant ce test, la fonction supprime tout espace et caractère de tabulation.
Fn - Détecte la fin du fichier, et retourne la valeur Vrai (True) sinon Faux (False). Avant ce test,
la fonction supprime tout espace et caractère de tabulation.
Une procédure ou fonction est dite récursive si son corps contient un ou plusieurs appels à elle-même :
(Récursivité directe)
0) Procédure NomP (paramètres)
1) …
Proc NomP (valeurs)
…
n) Fin NomP
Dans l'écriture de tout module récursif, il sera nécessaire de mettre en évidence d'une part la forme de l'ap-
pel récursif et d'autre part la condition d'arrêt.
Factorielle(2) renvoie 2 * 1 = 2
Fiches de révision
Factorielle(3) renvoie 3 * 2 = 6
Factorielle(4) renvoie 4 * 6 = 24
FinPour
Si Indice i Alors
aux ← V[i]
V [i] ← V [Indice]
V [Indice] ← aux
FinSi
FinPour
2) Fin Tri_Selection
Indice, i, k, aux : entier.
FinPour
2) Si Indice i Alors aux ← V[i]
V [i] ← V [Indice]
V [Indice] ← aux
FinSi
3) Si i+1 n Alors Proc Tri_Selection (V, i + 1, n)
FinSi Indice, k, aux : entier. 2
4) Fin Tri_Selection 5
TRI A BULLES :
1) Répéter
Ok ← Vrai
Pour i De 1 A n – 1 Faire
Si V [i] > V [i + 1] Alors
aux ← V[i]
V [i] ← V [i + 1]
V [i + 1] ← aux
Ok ← Faux
FinSi
FinPour
1) Ok ← Vrai
Pour i De 1 A n – 1 Faire
Si V [i] > V [i + 1] Alors
aux ← V[i]
V [i] ← V [i + 1]
V [i + 1] ← aux
Ok ← Faux
FinSi
FinPour
Fiches de révision
2) Si Ok = Faux Alors
Proc Tri_a_bulles (V, n)
FinSi
i, aux : entier.
3) Fin Tri_a_bulles
Ok : booléen. 2
6
TRI PAR INSERTION :
1) Si n > 1 Alors
Proc Tri_Insertion (V, n – 1)
i←n
Répéter
V [i] ← V [i – 1]
i←i–1
Fiches de révision
V [i] ← aux
FinSi
FinSi
2) Fin Tri_Insertion
aux, i : entier.
2
7
TRI SHELL : Le tri Shell trie chaque liste d'éléments séparés de « pas » positions chacun avec le tri par in-
sertion. L'algorithme effectue plusieurs fois cette opération en diminuant « pas » jusqu'à « pas=1 » ce
qui équivaut à trier tous les éléments ensemble. (pas = espacements entre les éléments, Pas ou Gap)
3) Fin Tri_Shell
2
8
TRI PAR FUSION : A chaque étape on trie la première moitié du vecteur et la seconde moitié, puis on
interclasse les deux sous-vecteur triés.
milieu : entier.
Interclassement : procédure.
2
9
Algorithme
1) k←i
Tantque (i ≤ n1) Et (j ≤ n2) Faire
Si V1[i] ≤ V2[j] Alors
V3[k] ←V1[i]
i←i+1
Sinon
V3[k] ← V2[j]
j←j+1
FinSi
k ← k +1
FinTantque
2) Tantque i ≤ n1 Faire
V3[k] ← V1[i]
i ← 1+ i
k←k+1
FinTantque
3) Tantque j ≤ n2 Faire
V3[k] ← V2[j]
j←j+1
k←k+1
FinTantque
4) Fin Interclassement
Fiches de révision
K : entier.
3
0
TRI PAR COMPTAGE : L’algorithme de tri consiste à construire un vecteur intermédiaire ind dont
chaque élément ind[i] indique la place de l’élément V[i] dans le vecteur trié correspondant.
ind : vecteur.
i, k : entier.
Fiches de révision
3
1
METHODES DE RECHERCHE
Soit un tableau V de n entiers (vecteur) et X l’élément à rechercher.
RECHERCHE SEQUENTIELLE : Comparer X aux différents éléments du tableau jusqu’à trouver X ou at-
teindre la fin du tableau.
2) Recherche ← V[i] = X
3) Fin Recherche i : entier.
3
2
RECHERCHE DICHOTOMIQUE (VECTEUR TRIE – ORDRE CROISSANT) :
Diviser l’intervalle de recherche par 2 à chaque itération. Pour cela, on procède de la façon suivante:
Soient inf et sup les extrémités gauche et droite de l’intervalle dans lequel on cherche la valeur X, on
calcule m, l’indice de l’élément médian : m = (inf + sup) div 2.
Il y a 3 cas possibles:
• X = V [m] : l’élément de valeur X est trouvé, la recherche est terminée.
• X < V [m] : l’élément X, s’il existe, se trouve dans l’intervalle [inf .. m - 1].
• X > V [m] : l’élément X, s’il existe, se trouve dans l’intervalle [m + 1 .. sup].
La recherche dichotomique consiste à itérer ce processus jusqu’à ce que l’on trouve X ou que l’intervalle
de recherche soit vide.
3
3
RECHERCHE DICHOTOMIQUE (VECTEUR TRIE – ORDRE CROISSANT) :
FinSi
FinSi
2) Fin Recherche
m : entier.
3
4
ALGORITHMES DE MISE A JOUR
Soit un tableau V de n entiers (vecteur) et X l’élément à insérer/supprimer.
p ← i+1
V[p] ← X
FinSi
2) n ← n+1
3) Fin Insertion
SUPPRESSION (VECTEUR) :
recherche_position : Fonction permettant de rechercher la position (indice) d’une occurrence de la valeur
X à supprimer.
FinTantque
4) fermer(nomi)
5) Fin Insertion
Fiches de révision
i, k, F : entier.
T : vecteur.
verif : booléen.
3
6
SUPPRESSION (FICHIER) M1 :
SUPPRESSION (FICHIER) M2 :
lire(nomi1, F)
écrire(nomi, F)
FinTantque
FinSi
5) fermer(nomi1)
6) fermer(nomi) F : entier.
3
7) Fin Suppression
nomi1 : typfile.
7
SUPPRESSION (FICHIER A ACCES DIRECT) M3:
TRI (FICHIER) :
proc Tri : procédure permettant de trier un tableau T de taille n.
3) proc Tri(T, i)
Fiches de révision
4) ouvrir(nomi)
6) fermer(nomi)
i : entier. 3
T : vecteur.
7) Fin Tri_Fichier
Tri : procédure. 8
TRI (FICHIER A ACCES DIRECT) :
1) ouvrir(nomi)
2) n ← taille_fichier(nomi) - 1
Répéter
Ok ← Vrai
Pour i De 0 A n – 1 Faire
Pointer(nomi, i)
Lire(nomi, X)
Lire(nomi, Y)
Si X > Y Alors
Pointer(nomi, i)
écrire (nomi, Y)
écrire (nomi, X)
Ok ← Faux
FinSi
FinPour
3) fermer(nomi)
4) Fin Tri_a_bulles
i, n, X, Y : entier.
Ok : booléen.
Fiches de révision
3
9
NOTIONS COMPLEMENTAIRES
FACTORIELLE : Produit de tous les entiers de l’intervalle *1 .. n+. (Notez que 0 ! = 1).
𝐩
𝐀𝐧 : Nombre de mots de longueur p (groupement ordonné) parmi n :
p n!
An = ; avec 1≤ p ≤ n.
n−p !
𝐩
𝐂𝐧 : Nombre de mots croissants de longueur p (groupement non ordonné) parmi n:
p
p An n!
Cn = = ; avec 0≤ p ≤ n.
p! p! n−p !
Exemple : Dans l’exemple précédent, 3 arrangements représentent une seule et même combinaison (ce
sont des arrangements équivalents qui représentent le même ensemble de livres).
C32 = 3 => AB, AC, BC.
PPCM : le plus petit commun multiple de 2 entiers A et B. Le plus petit entier multiple à la fois de A et B.
Alors cm ← A
Sinon cm ← B
Fin Si
2) Tantque (cm mod A 0) OU ( cm mod B 0) Faire
cm ← cm + 1
FinTantque 4
3) PPCM ← cm
4) Fin PPCM
cm : entier. 0
PGCD : le plus grand commun diviseur de 2 entiers A et B; le plus grand entier permettant de diviser A et B.
NOMBRE PREMIER : un entier B supérieur à 1 est dit premier s’il n’est divisible que par 1 et par lui même.
FACTEURS PREMIERS : la décomposition d’un entier B en produit de facteurs premiers consiste à écrire
cet entier sous la forme d’un produit de ces diviseurs premiers.
i←1
Répéter
i←i+1
Jusqu’à (B mod i = 0)
ch ← c + ch
D ← D div b2
Jusqu’ à D=0
2) Convert_10_b2 ← ch r : entier.
3) Fin Convert_10_b2 c, ch : chaine.
Fiches de révision
REGLES DE DIVISIBILITE :
- 11, si la différence entre la somme des chiffres de rang pair et celle de rang impair est divisible par 11.
4
3
𝐛
CALCUL D’AIRES 𝐚
𝐅(𝐱) dx - METHODES DES RECTANGLES - :
L’intégrale d’une fonction réelle positive est la valeur de l’aire du domaine délimité par l’axe des abs-
cisses et la courbe représentative de la fonction.
𝐛
Rapprocher la valeur de 𝐚
𝐅(𝐱) dx : Subdiviser l’intervalle [a,b] en n intervalles avec le pas pour chaque
intervalle = b-a/n.
𝐚+𝐩𝐚𝐬 𝐛
Rapprocher 𝐚
𝐅(𝐱) dx … 𝐛−𝐩𝐚𝐬
𝐅(𝐱) dx.
x ← a + pas/2
Pour i De 1 A n Faire
integrale ← integrale + Fn F(x) * pas
x ← x + pas
FinPour i : entier. 4
pas, integrale, x : réel.
2) Rectangles ← integrale
F : fonction qui calcule F(x). 4
3) Fin Rectangle
𝐛
CALCUL D’AIRES 𝐚
𝐅(𝐱) dx - METHODES DES TRAPEZES - :
déplacer des disques de diamètres différents d'une tour de « départ » à une tour d'« arrivée » en passant
par une tour « intermédiaire » et ceci en un minimum de coups, tout en respectant les règles suivantes :
Elle consiste à placer un élément d'un tableau d'éléments à trier (appelé pivot) à sa place définitive en per-
mutant tous les éléments de telle sorte que tous ceux qui lui sont inférieurs soient à sa gauche et que tous
ceux qui lui sont supérieurs soient à sa droite. Cette opération s'appelle partitionnement. Pour chacun des
sous-tableaux, on définit un nouveau pivot et on répète l'opération de partitionnement. Ce processus est
répété récursivement, jusqu'à ce que l'ensemble des éléments soit triés.
Supposons que nous ayons à trier le vecteur t[Deb .. Fin] avec (Deb < fin), nous allons segmenter ce vecteur
en trois sous vecteurs tels que:
Fiches de révision
t …≤ pivot <…
Deb … Place … Fin
tous les éléments se trouvant à gauche de Place (Place ∈ [Deb. .Fin]) soient inférieurs ou égaux à t[place] et
que ceux se trouvant à droite de place soient supérieurs à t[place]. 4
On peut écrire: t [Deb .. place-1] ≤ t [place] < t [place+1 .. Fin]
6
Algorithme 0) Procédure Tri_Rapide (deb, fin : entier ; Var t : vecteur)
1) Si (fin > deb) Alors Si fin > deb alors le tableau nécessite d'être trié.
D ← deb + 1
F ← fin
Tantque D ≤ F Faire
Sinon
Sinon
Si D < F Alors
aux ← t [D]
t [D] ← t [F]
t [F] ← aux
D←D+1
F←F-1
FinSi
FinSi
FinSi
FinTantque
Mettre le pivot à la position adéquate c.à.d. à la suite des éléments qui lui sont inférieurs.
aux ← t [F]
t [F] ← t [deb]
t [deb] ← aux
2) Fin Tri_Rapide
4
7
PROBLEME DU VOYAGEUR DE COMMERCE :
Etant donné un ensemble de villes (des points dans le plan), il s'agit de trouver le plus court chemin fermé
passant une fois et une seule par chacun des points.
writeln ('Entrer le nom de la ville de départ: '); Entrer le nom de la ville de départ.
readln (vd);
while ville[vc] <> vd do vc := vc+1; Marquer la ville de départ comme ville visitée.
vv[vc] := true;
vi := vc;
for i := 1 to n-1 do
begin
dmin := dmax + 1;
for j :=1 to n do
if (dist[vc,j] < dmin) and (vv[j] = false) then
begin
dmin := dist[vc,j];
vs := j;
end;
dp := dp + dist[vc,vs];
write (ville[vs],' ');
vv[vs] := true;
vc := vs;
end;
Fiches de révision
dp := dp + dist[vi,vs];
writeln (vd);
write ('La distance totale parcourue est de : ', dp, ' Km.');
END.
4
9
PROBLEME DES HUIT DAMES :
Le but du problème des huit dames, est de placer huit dames d'un jeu d'échecs sur un échiquier de 8×8
cases sans que les dames ne puissent se menacer mutuellement. Par conséquent, deux dames ne devraient
jamais partager la même rangée, colonne, ou diagonale.
PROGRAM Huit_Dames;
CONST Nbr_dames = 8;
TYPE vecteur = array [1 .. Nbr_dames] of integer;
VAR RESULTAT : vecteur;
solution, LIGNE : integer;
RESULTAT[dames] := LIGNE;
Ajoute_Dame(RESULTAT, dames+1);
suivant :
end;
END;
Fiches de révision
BEGIN
for LIGNE := 1 to Nbr_dames do RESULTAT[LIGNE] := 0;
solution := 0;
Ajoute_Dame (RESULTAT, 1);
writeln ('Solution = ', solution);
5
END;
1
Dépôt légal : juillet 2009
Les sources présentées sur ce livre sont libres de droits, et vous pouvez les utiliser à votre convenance. Par
contre la page de présentation de ces sources constitue une œuvre intellectuelle protégée par les droits
d'auteurs. Aucune reproduction, même partielle, ne peut être faite de ce livre et de l'ensemble de son
contenu sans l'autorisation de l'auteur. Retrouvez toutes les informations sur cet ouvrage sur le site
internet : http://ProfRidha.BlogSpot.com