Vous êtes sur la page 1sur 28

Mathématiques et Informatique pour la géologie

Pr. G. Mangoub

Master PVRM

Partie I : Informatique : programmation avec C++


Chapitre 1 : Rappel sur les algorithmes et les différentes structures algorithmiques

Cours préparé par :


Pr. Ghita Mangoub

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

Chap.1 Rappel sur les algorithmes et les différentes structures algorithmiques

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 :

Problème Algorithme Programme Solution au


posé problème
posé

Analyse, choix codage exécution


méthode

Mise en Choix Choix Choix cas


équations méthode langage test
algorith-
mique

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

Structure d’un algorithme


Un algorithme doit en général comporter les étapes suivantes :
1) Partie déclaration
2) préparation du traitement et lecture des données
3) traitement
4) édition des résultats
Ces étapes peuvent être complétées par l’introduction de commentaires qui peuvent faciliter la
lecture de l’algorithme à l’étape d’édition mais aussi d’autres commentaires qui peuvent en
faciliter la lecture des résultats à l’étape d’exécution.
Dans chaque étape, un ordre fourni se traduit par un ensemble d’instructions. Ces instructions
manipulent des objets. Chaque objet est définit grâce à un ensemble de trois qualificatifs qui
sont :
- L’identificateur : c’est le nom de baptême de l’objet.
- Le type : c’est l’ensemble dans lequel l’objet prend sa valeur.
- La valeur : c’est une valeur précise dans l’ensemble définit par son type .
On note cela de la manière suivante :
objet→ ( identificateur, type, valeur)
Exemple : masse→ ( m, réel, 20 Kg)
Noter qu’un objet doit être déclaré avant d’être manipulé.

II- Les éléments de base d’un algorithme

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 ;

III-2 constantes, variables


Un algorithme traite une ou des variables entrantes : les données
Il restitue une ou des variables sortantes : les résultats
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

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-3- Opération entré – sortie


Lis (variable)
Écris ( variable )
Ecris(‘’X=’’,X) pour avoir à l’étape d’exécution X= valeur de X, ainsi, on a utilisé la notion
de commentaire affichable à l’étape d’exécution.

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

Affectation d’une valeur ou d’une expression x à une variable y : (y ← x) Addition de la


valeur de gauche à la valeur de droite : + = (x ← x+2) Soustraction de la valeur de gauche à la
valeur de droite : - =
Multiplication de la valeur de gauche à la valeur de droite : * =
Division de la valeur de gauche à la valeur de droite : / =
Incrémentation : ++ : I←I+1 est équivalent à I++
Décrémentation : - - : I←I-1 est équivalent à I--

Opérateurs comparateurs de nombres


Egalité : = =
Infériorité stricte : <
Supériorité stricte : > Infériorité : < =
Supériorité :> =
Différent : ! =

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

//Utilisation des opérations arithmétiques


//Déclaration
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

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 »)

IV- les différentes structures algorithmiques


IV-1 La structure séquentielle
Dans cette structure les étapes conduisant à la solution du problème à résoudre apparaissent
dans un ordre bien défini dans l’algorithme.
EX: Calculer la surface d’un rectangle

// calcul de la surface d’un rectangle

// 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

// Edition des résultats


Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Ecris (‘’surface = ‘’,S)


Ecris (‘’Fin’’)

IV-2 Les boucles en algorithmique :la structure ittérative


Si pour résoudre un certain problème, on est obligé de répéter une instruction ou bien

un ensemble d’instructions un certain nombre de fois on parle de structure en boucle

ou encore de structure alternative ou répétitive. Il existe en gros trois façon pour

exprimer cette répétition.

IV-2-1 La structure itérative « pour »

La syntaxe algorithmique de cette structure est la suivante :

Identificateur : entier

Pour identificateur de « Val initiale » à « Val finale » pas de « pas » {traitement}

Fin pour

Remarque

1) Le nombre de traitement de la boucle =

(ValeurFinale – ValeurInitiale)/ pas

2) On utilise cette structure quand on connaît le nombre de passage dans la boucle

EX: Calculer la somme des N premiers entiers

// calcul de la somme des N premiers entiers avec la boucle pour


// Déclaration
I,N,somme : entiers
// préparation du traitement
Ecris(‘’donner un entier N positif’’)
Lis N
//traitement

somme = 0 //initialisation de somme


Pour I de 1 à N pas de 1
somme =somme +I

// Edition des résultats


Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Ecris (‘’somme = ‘’,Somme)


Ecris (‘’Fin’’)

Exemple d’exécution

donner un entier N positif


10
Somme = 55
Fin

EX: Afficher la table de multiplication d’un entier

// Afficher la table de multiplication d’un entier


// Déclaration
I,N : entiers
// préparation du traitement
Ecris(‘’donner un entier pour lequel vous voulez la table’’)
Lis N
//traitement

Pour I de 0 à 9 pas de 1
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’.

/* 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’’)

IV-2-2 La structure itérative « Tant que »

La syntaxe algorithmique de cette structure est la suivante :

TantQue (condition) Faire Bloc de traitement de la boucle FinTantQue

EX: Calculer la somme des N premiers entiers

Première méthode

// calcul de la somme des N premiers entiers avec la boucle tant que


// Déclaration
I,N,somme : entiers
// préparation du traitement
Ecris(‘’donner un entier N positif’’)
Lis N
//traitement

somme = 0 //initialisation de somme


I=0 //initialisation du compteur
Tant que ( I<N ) faire
{
I=I+1
somme =somme +I
}

// Edition des résultats


Ecris (‘’somme = ‘’,Somme)
Ecris (‘’Fin’’)

Deuxième méthode

// calcul de la somme des N premiers entiers avec la boucle tant que


// Déclaration
I,N,somme : entiers
// préparation du traitement
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Ecris(‘’donner un entier N positif’’)


Lis N
//traitement

somme = 0 //initialisation de somme


I=0 //initialisation du compteur
Tant que ( I<=N ) faire
{
somme =somme +I

I=I+1
}

// Edition des résultats


Ecris (‘’somme = ‘’,Somme)
Ecris (‘’Fin’’)

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’’)

IV-2-3 La structure itérative « répéter Tant que »

La syntaxe algorithmique de cette structure est la suivante :

Répéter Bloc d'instruction de la boucle TantQue (condition)

Remarque : on utilise cette structure quand on ne connaît pas le nombre de passage

dans la boucle mais que l'on va y passer au moins une fois.

EX: Calculer la somme des N premiers entiers

// calcul de la somme des N premiers entiers avec la boucle pour


// Déclaration
I,N,somme : entiers
// préparation du traitement
Ecris(‘’donner un entier N positif’’)
Lis N
//traitement
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

I=0 // initialisation du compteur I


somme = 0 //initialisation de somme
Répéter
{I=I+1

somme =somme +I
}
TantQue (I<N)

// Edition des résultats


Ecris (‘’somme = ‘’,Somme)
Ecris (‘’Fin’’)

Exemple d’exécution

donner un entier N positif


10
Somme = 55
Fin
EX: Afficher la table de multiplication d’un entier

// Afficher la table de multiplication d’un entier


// Déclaration
I,N : entiers
// préparation du traitement
Ecris(‘’donner un entier N positif’’)
Lis N
//traitement
I=0 // initialisation du compteur I
Répéter
{
Ecris(I,’’*’’,N,’’=’’,I*N)
I=I+1

}
TantQue (I<=9)

// 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

/* Ecrire un algorithme qui permet 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 N positif’’)
Lis N
//traitement
I=0 // initialisation du compteur I
Répéter
{
Ecris(‘’phrase1’’)
I=I+1

}
TantQue (I<N)

Ecris(‘’phrase2’’)

// Edition des résultats


Ecris (‘’Fin’’)

Remarque :

Avec la structure pour, le compteur est incrémenté automatiquement, il suffit de

préciser le pas. Par contre avec les deux autres structures, le compteur doit être

incrémenté(ou décrémenté) lors du traitement sans oublier de l’initialiser au départ.

IV-3 La sélection en algorithmique : La structure alternative


Dans cette structure, un certain nombre d’instructions est exécuté si la condition du test est
vérifiée, sinon, c’est un autre groupe d’instructions qui est exécuté. On distingue quatre
variantes de cette structure.
IV-3-1Sélection avec une seule alternative (structure alternative simple)

Lorsqu’il y’a une seule condition à vérifier, la syntaxe algorithmique se présente de la


manière suivante.
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

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)
}

// Edition des résultats


Ecris (‘’FIN’’)

IV-3-2 Sélection avec deux alternatives

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}

EX calculer la valeur absolue d’un nombre


// calcul de la valeur absolue d’un nombre
//réalisé par G. Mangoub
//29 Septembre 2014
//déclaration
Nombre,absnombre :réel
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

// 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)
}

// Edition des résultats


Ecris (‘’FIN’’)
IV-3-2-2 Deuxième variante (structure alternative complète)
Si (Condition1) {traitement1 }
Sinon{traitement2}
EX calcul de 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
Ecris’’Donner nombre reel’’
Lis (Nombre)
// traitement
Si (Nombre !=0)

{ 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 ‘’)

// Edition des résultats


Ecris (‘’FIN’’)

EX Editer le résultat pour la résolution d’une équation du second


/* 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
// 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)

{ Ecris (‘’ solution(s) reelle ‘’)}

Sinon
{Ecris (‘’ solutions complexe ‘’)}

// Edition des résultats


Ecris (‘’FIN’’)
IV-3-3 Imbrication de la sélection (la structure alternative complète imbriquée)
Elle est aussi utilisée lorsqu’il y’ a N conditions à vérifier, avec N>2.
Si (condition1) { traitement1}
Sinon Si (condition2) { traitement2}
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Sinon Si (condition3) { traitement3}


.
.
Sinon Si (conditionN-1) { traitementN-1}
Sinon { traitementN}
EX : Editer le résultat pour la résolution d’une équation du second degré uniquement sous
forme de message en utilisant la structure alternative complète imbriquée
/* 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
// 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)

{ Ecris (‘’ deux racines reelles ‘’)}

Sinon
Si (D<0)

{Ecris (‘’ deux racines complexes ‘’)}


Sinon

{Ecris (‘’ une racine double reelle ‘’)}

// Edition des résultats


Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Ecris (‘’FIN’’)

IV-3-4 Le choix multiple (la structure alternative de cas)


Elle est aussi utilisée lorsqu’il y’a N conditions à vérifier.
Cette structure peut se présenter de la façon suivante :
Identificateur :entier
Si (condition1) identificateur=1 ;
Si (condition2) identificateur=2 ;

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 ;}
}

Cette structure est aussi appelée la structure du switch.


Le corps de l'instruction switch prend la forme d'un bloc { } renfermant une suite
d'instructions.
Le fonctionnement de cette instruction est le suivant : expression est évaluée ;
{ s'il existe un énoncé cas avec une constante qui égale la valeur de expression, le contrôle est
transféré à l'instruction qui suit cet énoncé ;
{ si un tel cas n'existe pas, et si l'énoncé default existe, alors le contrôle est transféré à
l'instruction qui suit l'énoncé default ;
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

{ 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

// Edition des résultats


Ecris (‘’FIN’’)
selon(identificateur)
{
cas 1 :{ { Ecris (‘’ deux racines reelles ‘’) ;break ;}
cas 2 :{ {Ecris (‘’ deux racines complexes ‘’);break ;}
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

cas3:{ {Ecris (‘’ une racine double reelle ‘’) ;break ;}


}
Ecris(‘’ FIN de l algorithme’’)
Remarque :
On peut remarquer ici que la nature de la structure alternative nous a obligé dans la majorité
des cas de ne pas respecter la structure tracée au départ. C’est à dire l’affichage des résultats
dans le second bloc et non le troisième.

Combinaison de conditions

L'opérateur logique ET

si note >= 5 alors {


si note < 10 alors {
Ecrire ("vous devez passer le rattrapage du module");
}

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 :

si note >= 5 et note <=10 alors {


Ecrire ("vous devez passer le rattrapage du module ");
}

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));
}

Il est possible de donner plusieurs conditions :

si cd1 ou cd2 ou cd3 alors {


traitement1
}
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

sinon {
traitement2

L'opérateur logique NON

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.

V- Les tableaux statiques

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.

V-1 Les tableaux statiques à un seul indice (1D)

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.

Syntax algorithmique de déclaration d’un tableau 1D :


type nom_du_tableau[taille]

Exemple

entier T[10] pour déclarer un tableau de 10 entiers.


reel V[20] ; pour déclarer un tableau de 20 réels
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Autre façon de déclarer T


constante N=10
entier T[N]

Manipulation des tableaux statiques 1D


a) Lecture et affichage

Exemple
Ecrire un algorithme qui lit et affiche un tableau d’entiers

// algorithme qui lit et affiche un tableau d’entiers


//déclaration
entier T[10]
I :entier
//préparation du traitement
Pour(I allant de 0 jusqu’à 9 par pas de 1)
{ecris(‘’donner l’elmt ‘’,I)
Lis T[I]
}
//traitement et affichage
Ecris(‘’voici votre tableau ‘’)
Pour(I allant de 0 jusqu’à 9 par pas de 1)
Ecris(T[I])
Ecris(‘’FIN’’)

Exemple
Ecrire un algorithme qui lit et affiche un tableau d’entiers de dimension N avec la
dimension déclarée comme constante.

// algorithme qui lit et affiche un tableau d’entiers


//déclaration
Constante N=10
entier T[N]
I :entier
//préparation du traitement
Pour(I allant de 0 jusqu’à N-1 par pas de 1)
{ecris(‘’donner l’elmt ‘’,I)
Lis T[I]
}
//traitement et affichage
Ecris(‘’voici votre tableau ‘’)
Pour(I allant de 0 jusqu’à N-1 par pas de 1)
Ecris(T[I])
Ecris(‘’FIN’’)

b) Recherche dans un tableau un seul indice

Exemple :
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

trouver le plus petit élément et sa position

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
}
}

c) Tri des éléments d’un tableau à un seul indice

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

présente de la manière suivante :

Syntax algorithmique :
entier I,ECH
Contante entier N=10

Pour I allant de 0 jusqu’à N-2 par pas de 1 fait


Pour J allant de J+1 jusqu’à N-1 par pas de 1 fait

{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++)

for (J = I+1; J<N ; J++)

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

Et on veut arriver au tableau suivant :

2 4 10 3 5 6 12 0 0 0

Ecrire l’algorithme correspondant

V-2 Les tableaux statiques à deux indices (2D)

Pour Ces tableaux statiques à deux indices, le nombre de lignes NL et le nombre de


colonnes NC sont fixés une fois pour toute au début du programme. La numérotation des
éléments commence à partir de (0,0) et se termine à un indice égal à (NL-1,NC-1).

Syntax de déclaration d’un tableau à deux indices :


type nom_du_tableau[NL][NC] ;
Mathématiques et Informatique pour la géologie
Pr. G. Mangoub

Exemple : int A[5] [6]; pour déclarer une matrice à 5 lignes et 6 colonnes dont les
éléments sont des entiers.

Manipulation des tableaux statiques 2D


a) Lecture et affichage

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

b) Mise à zéro des éléments des deux diagonales

Ecrire un algorithme qui lit une matrice A(NL,NC)et qui met à zéro les éléments des deux
diagonales.

c) Produit de deux matrices


Exemple

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.

Vous aimerez peut-être aussi