Langage algorithmique utilisé |
Un algorithme opère sur des objets. A tout objet est associé un nom qui permet de l'identifier de façon unique. C'est une suite de caractères alphanumériques dont le premier est alphabétique.
On distingue deux types d'objets :
des objets qui peuvent varier durant le déroulement d'un algorithme : Variables( ardoises).
- des objets qui ne peuvent pas variés par le déroulement d'un algorithme : Constantes.
On peut répartir l'ensemble des objets en sous ensembles appelés classe ou type. Il existe 4 type standard :
ENTIER : lensemble des entiers relatifs
REEL : lensemble des réels
BOOLEEN : les valeurs Vrai et Faux
CAR : lensemble des chaînes de caractères.
En langage algorithmique, on définit les objets comme suit :
CONST Type Nom= valeur
VAR Nom1, Nom2, : Type
Définition de type
Au niveau du langage algorithmique un type est construit comme suit :
TYPE Nomdutype = STRUCTURE
Idf1 : type1
Idf2 : type2
.... .....
FIN
Typei peut être un type standard ou construit.
Déclaration des variables dun type donné On définit les objets dun type construit comme suit:Var Nom : Nomdutype
On peut aussi si nécessaire définir une relation d'ordre entre les éléments appartenant à une même classe d'objets.
Accès à un champ dun objet composé
Si X est une variable de type article, X.Nom permet daccéder au champ Nom de la variable composée X.
Expressions sur les objetsUne expression est une suite dopérandes reliés par des opérateurs.
Une expression peut être
- arithmétique : on utilisera les opérateurs +,-,/, *, **
exemple A+B/C, A/B/C
- logique : les opérateurs utilisés sont ET, OU, et NON
- relationnelle : les opérateurs utilisés sont <, <=, >, >=, =, <>
Description algorithmique dun vecteur
On décrit un vecteur comme suit :
Var Nom : Tableau[1..N] DE Type
Nom est le nom du tableau, N sa taille et Type un type quelconque des éléments du vecteur.
Description algorithmique dun vecteur à d dimensions
Var Nom : Tableau[1..N1, 1..N2, 1..Nd] DE Type
Nom est le nom du tableau, d sa dimension et Type un type quelconque des éléments du vecteur. N1, N2, sont les tailles respectives pour les dimensions d1, d2,
Accès à un élément dun vecteur
Laccès se fait par lopération dindexation. Si T est le nom dun tableau à un dimension, T[I] permet laccès à son I-ème élément. Si T est un tableau à d dimensions, laccès se fait par T[I1, I2, Id].
Afin de développer des algorithmes sur les LLCs, on construit une machine abstraite avec les opérations suivantes : Allouer, Libérer, Aff_adr, Aff_val, Suivant, Valeur définies comme suit :
Allouer(t, p) : allocation d'un espace de taille spécifiée par le type t. L'adresse de cet espace est rendue dans la variable pointeur p.
Liberer(p): libération de l'espace pointé par p.
Valeur(p) : consultation du champ valeur du maillon d'adresse p.
Suivant(p) : consultation du champ adresse du maillon d'adresse p.
Aff-adr(p, q): dans le champ adresse du maillon d'adresse p, on range l'adresse q.
Aff-val(p, val): dans le champ valeur du maillon d'adresse p, on range la valeur val.
Description algorithmique dun fichier
On définit un fichier comme suit :
VAR Nom : FICHIER DE Type
Nom est le nom du fichier et Type est le type dun article du fichier.
Le fichier peut être vu comme
- un ensemble darticles
- un ensemble de blocs
Dans le cas où le fichier est vu comme un ensemble de blocs, on peut considérer les cas où les articles sont de longueur fixe ou variable. Dans le premier cas le bloc est contient au moins un tableau darticles. Dans le second cas, un tableau de caractères.
Opérations
Ouvrir (Nom) : ouverture du fichie.
Fermer(Nom) : fermeture du fichier
Positionner (Nom, I) : positionnement au I-ème article (ou bloc) du fichier
Lirefichier (Nom, Zone) : Lecture dans le buffer Zone de larticle courant
Ecrirefichier(Nom, Zone): Ecriture du buffer Zone à la position courante du fichier.
Les opérations Lirefichier et Ecrirefichier permettent davancer dans le fichier dune unité. A louverture du fichier, la position courante est 1.
Article ou bloc den-tête
Au sein dun même fichier on peut avoir des articles ( ou blocs) de types différents : un type pour les articles (ou blocs) et un type pour larticle (bloc) den-tête contenant les caractéristiques du fichier, cest à dire toutes les informations utiles pour lexploitation du fichier.
On adopte la définition suivante :
TYPE Nomdutype = STRUCTURE
CAS Select DE
1 : ( définitions des champs de larticle (ou bloc) )
2 : ( définitions des champs de larticle (ou bloc) den-tête)
FIN
Afin de modifier le type courant, on positionne le sélecteur à 1 ou 2 selon que lon fait une lecture (écriture) dun article (bloc)du fichier ou dun article(bloc) den-tête.
Si Zone est un variable du type Nomdutype, la sélection se fait par lopération SELECT(Valeur) avec valeur dans {1, 2}. La sélection courante reste valide, jusquà la nouvelle opération de sélection.
Structures de contrôleTous les algorithmes peuvent être exprimés par les tournures suivantes quon appelle structures de contrôle du fait quelles permettent de contrôler le déroulement dun algorithme :
Le séquencement
Exprime quun ensemble daction est exécuté dans un ordre bien précis.
La répétitive TANTQUE
Elle exprime quun ensemble d'actions se déroule plusieurs fois tant qu'une condition reste vérifiée.
TANTQUE condition :
Action 1
Action 2
....
Action n
FINTANTQUE
La condition constitue le critère d'arrêt.
La répététive POUR
On utilise cette structure quon connaît à lavance le nombre ditérations de la boucle. La formulation algorithmique est la suivante :
POUR Variable = Expression1, Expression2, Expression3
Action 1
Action2
.
Action n
FINPOUR
La conditionnelle
Elle exprime quun ensemble d'actions est exécuté que si une condition est vérifiée.
SI Condition :
Action 1
Action2
.
Action n
FSI
L'alternative
Elle exprime un choix entre deux ensembles d'actions à exécuter selon la valeur d'une condition.
SI Condition :
Action 1
Action2
.
Action n
SINON
Action n+1
Action n+2
.
Action n+m
FSI
Autres actions du langage algorithmiqueAffectation
Cest lopération de base. Elle permet daffecter la valeur dune expression calculable à une variable. On utilisera le symbole :=
Lecture
Elle permet dintroduire les données dans les variables. Nous utiliserons lopération LIRE(X, Y, )
Ce qui est équivalente à
X := première donnée
Y := deuxième donnée
Ecriture
Elle permet de restituer les résultats. Nous utiliserons lopération
ECRIRE( Expression1, Expression2, )
Action composée
En langage algorithmique, on définit un module de la façon suivante :
ACTION nom ( v1, v2, )
définition des paramètres d'entrée et de sortie
définition des objets locaux
DEBUT
Corps
FIN
Au niveau de la définition de laction, les paramètres sont dits formels.
Fonction
Quand le résultat de l'action composée est unique et de type arithmétique (ou caractère) , il est préférable d'écrire l'action composée sous la forme d'une fonction.
Une fonction est définie comme suit :
Fonction Nom ( paramètres d'entrée ) : type
Définition des paramètres et des objets locaux
DEBUT
corps
fin
Une fonction est utilisée directement dans une expression.
Dans le corps de la fonction, il doit toujours exister une affectation du genre
Nom de la fonction := expression
Cest cette valeur qui est retournée par la fonction.
Prédicat
Quand le résultat de l'action composé est unique et de type booléen, il est préférable d'écrire l'action composée sous la forme d'un prédicat.
Prédicat Nom ( paramètres )
Définition des paramètres et des objets locaux
DEBUT
Corps
fin
Dans le corps dun prédicat, il doit toujours exister une affectation du genre
Nom du prédicat := expression
Cest cette valeur qui est retournée par le prédicat.
Structure d'un algorithme
Un algorithme est composé de 2 parties :
- définition des données : en-tête
- corps de l'algorithme
l'en-tête précise
- le nom de l'algorithme
- définition des objets manipulés
Le corps est un ensemble d'actions ordonnées composé généralement de 3 parties:
- initialisations ( lectures, .. )
- itérations ( parcours d'un ensemble de donné)
- opérations finales ( écritures, .. )
La description algorithmique:
ALGORITHME nom
Définition des objets
DEBUT
Définition du corps
FIN