Académique Documents
Professionnel Documents
Culture Documents
Pr. G. Mangoub
Master PVRM
A. U : 2019-2020
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
Avant-propos
Ce cours est destiné à tout débutant désirant apprendre les bases d’écriture d’algorithme et sa
traduction en langage C++
Nous avons tenu à ce que ce cours ne présente pas de difficultés à l’apprenant et nous avons
veillé à le présenter d’une façon la plus pédagogique qui nous semble. Les différentes
structures algorithmiques seront exposées ainsi que leur traduction en C++ avec pour chaque
cas différentes applications.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
I Introduction
Si l’on s’attache au domaine informatique, la réalisation d’une application informatique peut
se schématiser de la façon suivante :
Nous remarquons que la phase de création de l’algorithme est en tête du processus qui va
fournir la solution du problème posé. La base de la programmation est donc l’analyse
algorithmique et lorsque l’analyse est bonne, il est possible de programmer dans n’importe
quel langage.
II Qu’est ce qu’un algorithme ?
C’est un inventaire et une mise en forme d’un ensemble d’actions permettant d’accomplir une
tache que l’on s’est fixée d’avance. En effet, c’est une sorte de recette qui donne un résultat
juste lorsque nous exécutons la suite d’actions répertoriées et classées au sein de l’algorithme.
Un algorithme doit être d’une lisibilité et d’une clarté exemplaires afin qu’il puisse être lu et
repris facilement par d’autre utilisateurs, d’où l’intérêt du choix d’une méthode algorithmique
simple et facile à implémenter. C’est-à-dire qu’un algorithme doit refléter une représentation
textuelle des différentes étapes conduisant à la solution du problème avec une série de
conventions ressemblant à un langage de programmation mais sans les problèmes de syntaxe.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
Un algorithme doit être aussi lisible que possible, d’où l’intérêt des commentaires qui sont de
deux type :
a) Les commentaires qui n’apparaissent pas à l’étape d’exécution
Pour ces commentaires, on utilise le signe // s’il s’agit d’un commentaire sur une seule ligne.
Exemple
// Ceci est un commentaire sur une seule ligne
Pour le cas d’un commentaire qui porte sur plusieurs ligne, on le commence par le signe /*
et on le ferme par le signe */.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
Exemple
/* Ceci est un autre
Commentaire
Sur plusieurs lignes
*/
b) Les commentaires qui apparaissent à l’étape d’exécution
On les met entre deux guillemets, on les verra après les ordre d’entrée sortie.
III-1 Types de bases
3 types élémentaires
Les entiers
Courts(short int), normaux(int), long(long int)
Exemple :
a : entier
a, b :entiers courts
Les réels
Courts(float)(32 bits)(6 chiffres significatifs), long(double)(64 bits)(16 chiffres),très long(long
double)(80 bits)
Exemple :
a : réel
a, b :réels longs
Les caractères
Char
Exemple : char a,b,c ;
Un algorithme qui ne satisfait pas à ces deux conditions n’a pas de justification et par
conséquent n’existe pas. Les données traitées par l’algorithme sont de deux types : variable ou
constante. Chaque variable et constante doit être déclarée avant d’être utilisé : nom + type.
Cette déclaration consiste en une réservation en mémoire de la place nécessaire et suffisante à
l’hébergement de la valeur.
Notion de constante : une constante porte un nom qu’on appelle identificateur et garde la
même valeur On la déclare de la façon suivante :
Const type identificateur = valeur_de_la_constante
Exemple :
Const entier N = 10 ;
C’est à dire qu’on déclare que N est une constante entière qui a pour valeur 10.
Notion de variable : Une variable est un endroit en mémoire permettant de stocker une
valeur. Une variable est caractérisée par un nom appelé un identificateur, par un type
(l’ensemble dans lequel elle prend ses valeurs) et par une valeur.
Exemple : si notre variable est la masse alors pour identificateur on peut choisir m, pour le
type c’est un réel et pour la valeur 30Kg.
La syntaxe de la déclaration est la suivante :
identificateur : type
Exemple1 : a : entier
Pour déclarer la variable dont le nom est l’identificateur a comme entier qui peut être positif
ou négatif.
Exemple2 : X,Y,Z : réels
Pour déclarer les 3 variables dont les noms respectifs sont les identificateurs X,Y et Z comme
réels qui peuvent être positifs ou négatifs.
Exemple3 : c : boelien
Pour déclarer la variable dont le nom est l’identificateur c comme boeliène. C’est à dire une
expression logique qui ne peut avoir que deux valeurs soit vrai soit faux.
Exemple4 : a,b,c : char
Pour déclarer les 3 variables dont les noms respectifs sont les identificateurs a, b et c comme
caractères.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
En ce qui concerne l’identificateur, il peut être constitué de plusieurs lettres, chiffres et mots
dans ce derniers cas les différents mots sont séparés par un signe souligné c’est à dire « _
«
Exemple : X_a : entier ;
Y_b : réel;
Quelques notions utiles:
1) L’identificateur ne doit pas commencer par un chiffre. Il doit être en rapport avec ce que
contient la variable. Il ne doit pas contenir d’espaces ni contenir le caractère -. En général un
identificateur doit refléter la variable qu’il contient
Exemple : si notre variable est la masse d’un premier objet, on peut choisir comme
identificateur : masse_objet1
2) On peut copier directement une variable initialement déclarée comme entierdans une
variable initialement déclarée comme double.
Exemple a :entier ;
X :réel;
X=a ;
Alors que pour copier une variable initialement déclarée comme double dans une variable
initialement déclarée comme entier, il faut d’abord transformer la variable réelle en une
variable entière .
III-4 Expressions
Une expression peut être une instruction ou une suite d’instructions séparées par l’un des
opérateurs suivants :
Opérateurs d'assignation
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
Opérateur logiques
OU : ||
ET : &&
NON :!
Exercice1
Ecrire un algorithme qui lit trois variables réelles A, B et C et qui calcule :
X= A+B
Y= (A*B)-C
W=A+C
On utilisera les commentaires autant que possible
Solution de l’Exercice1
A,B,C,X,Y,Z,W :reel
//lecture des données
Ecris(« donner trois reels A,B et C »)
Lis(A,B,C)
//traitement
X← A+B
Y← (A*B)-C
W←A+C
Si (W !=0)
{
Z← (A-B)/W
Ecris(« Z= »,Z)
}
//Edition des résultats
Ecris(« X=» ,X)
Ecris(« Y= »,Y)
Ecris (« FIN »)
// Déclaration
L,L,S : réel
// préparation du traitement
Ecris(‘’donner la largeur et la longueur du rectangle)
Lis (l,L)
//traitement
S=l*L
Identificateur : entier
Fin pour
Remarque
Exemple d’exécution
Pour I de 0 à 9 pas de 1
Ecris(I,’’*’’,N,’’=’’,I*N)
EX: Ecrire un algorithme qui permet d’afficher N fois de suite le mot ‘phrase1’, puis une
fois le mot ‘phrase2’.
/* Ecrire un algorithme qui permet d’afficher N fois de suite le mot ‘phrase1’, puis une
fois le mot ‘phrase2’. */
// Déclaration
N : entiers
// préparation du traitement
Ecris(‘’donner un entier positif N’’)
Lis N
//traitement
Pour I de 1 à N pas de 1
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
{
Ecris(‘’ phrase1 ‘’)
}
Ecris(‘’ phrase2 ‘’)
// Edition des résultats
Ecris (‘’Fin’’)
Première méthode
Deuxième méthode
I=I+1
}
EX: Afficher la table de multiplication d’un entier. On ne tiendra compte de N que s’il est
>0.
/* Afficher la table de multiplication d’un entier. On ne tiendra compte de N que s’il est >0.
*/
// Déclaration
I,N : entiers
// préparation du traitement
Ecris(‘’donner un entier>0’’)
Lis N
Tant que (N<=0)
{
Ecris(‘’donner un entier>0 pour lequel vous voulez la table’’)
Lis N
}
//traitement
I=0 //initialisation du compteur
Tant que (I<=9) faire
Ecris(I,’’*’’,N,’’=’’,I*N)
// Edition des résultats
Ecris (‘’Fin’’)
EX: Ecrire un algorithme qui permet d’afficher N fois de suite le mot ‘phrase1’, puis une
fois le mot ‘phrase2’.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
/* d’afficher N fois de suite le mot ‘phrase1’, puis une fois le mot ‘phrase2’.
*/
// Déclaration
I,N : entiers
// préparation du traitement
Ecris(‘’donner un entier>0’’)
Lis N
Tant que (N<=0)
{
Ecris(‘’donner un entier>0 pour lequel vous voulez la table’’)
Lis N
}
//traitement
I=0 //initialisation du compteur
// si on initialise le compteur à 1 la condition serait I<=N
Tant que (I<N) faire
{
Ecris(‘’phrase1’’)
I=I+1
}
Ecris(‘’phrase2’’)
// Edition des résultats
Ecris (‘’Fin’’)
somme =somme +I
}
TantQue (I<N)
Exemple d’exécution
}
TantQue (I<=9)
EX: Ecrire un algorithme qui permet d’afficher N fois de suite le mot ‘phrase1’, puis une
fois le mot ‘phrase2’.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
}
TantQue (I<N)
Ecris(‘’phrase2’’)
Remarque :
préciser le pas. Par contre avec les deux autres structures, le compteur doit être
Si (condition) { traitement}
EX-1 calculer l’inverse d’un nombre
// calcul de l’inverse d’un nombre
//réalisé par G. Mangoub
//29 Septembre 2014
//déclaration
Nombre,invnombre :réel
// préparation du traitement
Lis (Nombre)
// traitement
Si (Nombre !=0 )
{ invnombre= 1/ Nombre
Ecris (‘’ inverse= ‘’,invnombre)
}
Lorsqu’il y’a une deux condition à vérifier, la syntaxe algorithmique peut se présenter
deux manières.
IV-3-2-1 Première variante (structure alternative simple répétée)
Si (Condition1) {traitement1 }
Si (Condition2) {traitement2}
// préparation du traitement
Ecris(‘’donnez un reel’’)
Lis (Nombre)
// traitement
Si (Nombre>=0)
{ absnombre= Nombre
Ecris (‘’ val_absolue= ‘’,absnombre)
}
Si (Nombre<0)
{ absnombre= - Nombre
Ecris (‘’ val_absolue= ‘’,absnombre)
}
{ invnombre= 1/ Nombre
Ecris (‘’ inverse= ‘’,invnombre)
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
}
Sinon
Ecris (‘’ Votre nombre est nul, pas d’inverse ‘’)
Sinon
{Ecris (‘’ solutions complexe ‘’)}
Sinon
Si (D<0)
Ecris (‘’FIN’’)
Si (conditionN-1) identificateur=N-1 ;
Si (conditionN) identificateur=N ;
selon(identificateur)
{
cas 1 :{traitement1 ;break ;}
cas 2 :{traitement2 ;break ;}
.
.
case N-1 :{traitementN-1 ;break ;}
default:{traitementN ;break ;}
}
{ si la valeur de expression ne correspond à aucun cas et s'il n'y a pas d'énoncé default, alors
aucune instruction n'est exécutée.
Attention. Lorsqu'il y a branchement réussi à un énoncé cas, toutes les instructions qui le
suivent sont exécutées, jusqu'à la fin du bloc ou jusqu'à une instruction de rupture (break).
EX Editer le résultat pour la résolution d’une équation du second avec A non nul.
/* Résolution d’une équation du second degré
A.X2 + B .X +C =0 avec A non nul */
//réalisé par G. Mangoub
//29 Septembre 2014
//déclaration
A,B,C,D :réel
I :entier
// préparation du traitement
Ecris’’Donner trois reels A, B et C avec A non nul’’
Lis (A,B,C)
// traitement
D=B*B – 4*A*C
Si (D>0) I=1
Sinon
Si (D<0) I=2
Sinon
I=3
Combinaison de conditions
L'opérateur logique ET
Ces deux si imbriqués reflètent une combinaison de deux conditions qui peut se traduire
par si la valeur de note est supérieure ou égale à cinq et que la valeur de note est inférieure à
dix, alors effectuer l'instruction, ce que l'on écrira :
L'opérateur logique OU
Pour exprimer l'alternative, on utilise l'opérateur ou, la condition du si sera vraie si au moins
une des sous-conditions est vraie. Il faut donc que toutes les sous-conditions soient fausses
pour que le sinon soit exécuté.
si x < 0 ou x == 0 alors {
Ecrire ("l inverse de la racine carre de votre nombre x ne peut pas être calculee");
}
sinon {
Ecrire ("l inverse de la racine carre de votre nombre x vaut :", 1/sqrt(x));
}
sinon {
traitement2
L'opérateur non représente la négation, il peut s'appliquer à une variable ou à une condition à
évaluer. En effet, dire "X<0" est une négation de "X>=0".
si non(X<0) alors {
Ecrire (" Votre nombre X a une racine carre);
}
sinon {
Ecrire (" Votre nombre X n’a pas de racine carre);
}
EX : écrire un algorithme qui classe par ordre croissant et qui affiche trois nombres lus au
clavier.
Supposons qu’on a une grande liste d’éléments de même type à manipuler, dans ce cas il
est plus commode de les caser dans un tableau dont le nombre de case est égale au nombre
d’éléments qu’on veut manipuler.
Déclaration
Pour les tableaux statiques 1D, la taille N c’est à dire le nombre de cases est fixée une fois
pour toute au début du programme. La numérotation des éléments commence à partir de 0
et se termine à un indice égal à N-1. Le i ème élément occupe donc la case (i-1) du
tableau. L’indice est obligatoirement un entier.
Exemple
Exemple
Ecrire un algorithme qui lit et affiche un tableau d’entiers
Exemple
Ecrire un algorithme qui lit et affiche un tableau d’entiers de dimension N avec la
dimension déclarée comme constante.
Exemple :
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
Syntax algorithmique :
entier I,pospp,pp
Contante entier N=10
Pospp=0
Pp=T[0]
Pour I allant de 0 jusqu’à N-1 par pas de 1 fait
{si(T[I]<PP
{ pp=T[I]
Pospp=I
}
}
Ici nous ne présentons qu’un cas simple d’algorithme de tri dont le principe est le suivant :
Supposons que l’on veut classer par ordre croissant N variables casées dans un tableau. On
commence par supposer que la première variable est celle qui est la plus petite et on la
compare aux N-1 autres variables. Si cela est toujours vrai, la première variable dans
l’ancienne numérotation garde sa place, sinon on échange la place de cette variable avec la
première petite trouvée et ainsi de suite jusqu’à ce que la première case soit occupée
effectivement par la variable minimale, ensuite on fait pareil avec la deuxième variable, sans
toucher à la première et ainsi de suite sans toucher aux variables déjà triées . L’algorithme se
Syntax algorithmique :
entier I,ECH
Contante entier N=10
{si(T[I]> T[J]
{ ECH=T[I]
T[I]=T[J]
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub
T[J]=ECH
}
}
for (I = 0 ;I<N-1 ; I++)
if (B[I]> B[J])
Valint= B[I];
B[I]= B[J];
B[J] = valint ;
}
d) Suppression et tassement
On veut dans un tableau supprimer certains éléments et décaler vers la gauche d’autres
éléments du tableau à leur place. Dans les cases vides, on mettra des zéro.
Exemple
On donne
2 4 0 0 10 0 3 5 6 12
2 4 10 3 5 6 12 0 0 0
Exemple : int A[5] [6]; pour déclarer une matrice à 5 lignes et 6 colonnes dont les
éléments sont des entiers.
Exemple
Ecrire un algorithme qui lit et affiche une matrice A(NL,NC)avec NL et NC déclarés
comme constante. NL=3 et NC=4
Exemple
Ecrire un algorithme qui lit une matrice A(NL,NC)et qui met à zéro les éléments des deux
diagonales.
Ecrire un algorithme en C qui lit deux matrices carrées A(N,N)et B(N,N) et calcule leur
produit, soit C=A*B.