Notions élémentaires

Langage algorithmique utilisé

 

  1. Variables et constantes   
  2. Objets composés
  3. Déclaration des variables d’un type donné
  4. Expressions sur les objets
  5. Vecteurs
  6. Listes linéaires chaînées
  7. Fichiers
  8. Structures de contrôle
  9. Autres actions du langage algorithmique
  10. Modules
  11. Structure d'un algorithme

 

Variables et constantes  Menu langage algorithmique

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 : l’ensemble des entiers relatifs

REEL : l’ensemble des réels

BOOLEEN : les valeurs Vrai et Faux

CAR : l’ensemble des chaînes de caractères.

En langage algorithmique, on définit les objets comme suit :

CONST Type Nom= valeur

VAR Nom1, Nom2, … : Type

Objets composés   Menu langage algorithmique

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 d’un type donné  Menu langage algorithmique

On définit les objets d’un 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 d’un objet composé

Si X est une variable de type article, X.Nom permet d’accéder au champ Nom de la variable composée X.

Expressions sur les objets   Menu langage algorithmique

Une expression est une suite d’opé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 <, <=, >, >=, =, <>

Vecteurs  Menu langage algorithmique

Description algorithmique d’un 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 d’un 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 d’un vecteur

L’accès se fait par l’opération d’indexation. Si T est le nom d’un tableau à un dimension, T[I] permet l’accès à son I-ème élément. Si T est un tableau à d dimensions, l’accès se fait par T[I1, I2, …Id].

Listes linéaires chaînées  Menu langage algorithmique

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.

Fichiers  Menu langage algorithmique

Description algorithmique d’un fichier

On définit un fichier comme suit :

VAR Nom : FICHIER DE Type

Nom est le nom du fichier et Type est le type d’un article du fichier.

Le fichier peut être vu comme

- un ensemble d’articles

- 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 d’articles. 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 l’article courant

Ecrirefichier(Nom, Zone): Ecriture du buffer Zone à la position courante du fichier.

Les opérations Lirefichier et Ecrirefichier permettent d’avancer dans le fichier d’une unité. A l’ouverture du fichier, la position courante est 1.

Article ou bloc d’en-tête

Au sein d’un 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 l’article (bloc) d’en-tête contenant les caractéristiques du fichier, c’est à dire toutes les informations utiles pour l’exploitation du fichier.

On adopte la définition suivante :

TYPE Nomdutype = STRUCTURE

    CAS Select DE

        1 : ( définitions des champs de l’article (ou bloc) )

        2 : ( définitions des champs de l’article (ou bloc) d’en-tête)

    FIN

Afin de modifier le type courant, on positionne le sélecteur à 1 ou 2 selon que l’on fait une lecture (écriture) d’un article (bloc)du fichier ou d’un article(bloc) d’en-tête.

Si Zone est un variable du type Nomdutype, la sélection se fait par l’opé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ôle  Menu langage algorithmique

Tous les algorithmes peuvent être exprimés par les ‘tournures’ suivantes qu’on appelle structures de contrôle du fait qu’elles permettent de contrôler le déroulement d’un algorithme :

Le séquencement 

Exprime qu’un ensemble d’action est exécuté dans un ordre bien précis.

La répétitive ‘TANTQUE’

Elle exprime qu’un 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 qu’on connaît à l’avance le nombre d’ité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 qu’un 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 algorithmique   Menu langage algorithmique

Affectation

C’est l’opération de base. Elle permet d’affecter la valeur d’une expression calculable à une variable. On utilisera le symbole ‘:=’

Lecture

Elle permet d’introduire les données dans les variables. Nous utiliserons l’opé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 l’opération

ECRIRE( Expression1, Expression2, …)

 

Modules  Menu langage algorithmique

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 l’action, 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’

C’est 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 d’un prédicat, il doit toujours exister une affectation du genre

‘Nom du prédicat := expression’

C’est cette valeur qui est retournée par le prédicat.

 

Structure d'un algorithme  Menu langage algorithmique

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