Formalisme de l'environnement :

  1. NOTION DE PROCESSEUR ET D'ENVIRONNEMENT
  2. Considérons les deux exemples suivants:

    Exemple :

    Confection de frite

    A) Eplucher les pommes de terre.

    B) Couper les pommes de terre en frites.

    C) Laver les frites crues.

    D) Mettre de l'huile à chauffer dans

    E) Verser les frites dans l'huile.

    F) Lorsque les frites sont cuites

    les retirer de l'huile.

    Cet énoncé décrit un travail

    Nous appellerons PROCESSEUR toute entité capable de
    comprendre un tel énoncé et d'exécuter le travail indiqué.

    Dans le cas de l'énoncé une personne sachant lire et disposant des ustensiles nécessaires, peut être un processeur convenable.

    Pour qu'un processeur puisse mener à terme la tâche qui lui a été confiée, il faut mettre à sa disposition les outils et matériaux indispensables.

    Dans l'exemple I, les ustensiles seront : des pommes de terre, un couteau, une friteuse, de l'huile.

    Tout ce qui est nécessaire (ustensiles) à la réalisation d'une
    tâche constitue l'ENVIRONNEMENT de cette tâche.

    Pour exécuter son travail, le processeur va, à l'aide des outils, mesurer et modifier les matériaux et, par conséquent, modifier son environnement.

  3. NOTION D'ACTION ET DE PRIMITIVE.
  1. Définition d'une Action
  2. On appelle ACTION tout événement de durée finie dans
    le temps qui examine ou modifie l'environnement.

    Ou encore

    Etant donné un environnement décrit formellement comme un ensemble d'objets, une action sur cet environnement est un événement de durée finie qui, à partir d'un état initial particulier de l'environnement, a pour conséquence un nouvel état bien défini.

  3. Définition d'une Primitive
  4. Considérons l'exemple d'un adolescent qui veut calculer la consommation moyenne pour 100 km de son vélomoteur après une promenade.

    1) Ecrire le nombre de kilomètres parcourus
    2) Ecrire le nombre de litres de carburant consommé

    3) Faire la règle de trois.

    On constate que si les actions 1 et 2 sont réalisables telles qu'elles par la personne, il n'en est pas de même pour l'action 3 qui doit être décomposée pour être réalisée.

    3) Diviser le nombre de litres par le nombre de km

    Multiplier le résultat obtenu par 100.

    Pour un processeur, une action est primitive si l'énoncé de cette action
    est à lui seul suffisant pour que le processeur puisse
    l'exécuter sans information supplémentaire.

    (Dans l'exemple précédant le résultat de la division était une information supplémentaire nécessaire pour exécuter l'action).

    La description de l'ensemble des actions élémentaires qu'un processeur est capable d'effectuer le détermine totalement. On appelle ces actions les PRIMITIVES.

    Toute action à exécuter par un processeur doit être décomposée en utilisant les primitives de ce processeur.

    Il existe généralement plusieurs utilisations possibles (plus ou moins performantes) des primitives pour obtenir le même résultat.

  5. Nouvelle approche de la notion d'Algorithme :

Nous avons vu qu'un algorithme est la description dans un langage universel des opérations nécessaires pour résoudre un problème.

Il est possible d'aborder cette notion d'une autre manière en considérant qu'un algorithme du problème est une succession d'actions qui permet de faire passer l'environnement de l'état initial donné à l'état final désiré, succession telle que chaque action soit :

- une primitive,

- ou bien un algorithme déjà connu et décrit.

  1. NOTION D'OBJET :
  1. Définition d'un objet
  2. On appelle OBJET, les éléments constituant l'environnement d'un processeur.
    Ces objets contiennent les informations relatives au problème traité.

    Exemple : Le processeur "Menuisier" modifie le bois brut de son environnement en utilisant ses outils pour construire une table en bois.

  3. Caractéristiques d'un objet.

Dans l'environnement d'un algorithme, lorsqu'on veut définir une action, il faut préciser quelle partie de l'environnement est traitée (observée et/ou modifiée) par l'action, ou encore sur quels objets va porter l'action.

Exemple : Pour effectuer l'action "Clouer deux planches", le menuisier a besoin des objets PLANCHE - MARTEAU - POINTE.

On constate donc la nécessité de citer la nature des objets que l'on veut manipuler et de ne pas les utiliser n'importe comment.

Le fait que ces éléments aient des noms distincts permet de les distinguer sans ambiguïté.

Le NOM apparaît donc comme un attribut d'un objet permettant sa désignation.
On parlera encore de CONTENANT.

Conseil :Le choix du nom est très important, il doit évoquer le plus clairement possible le rôle joué par l'objet afin d'assurer la lisibilité de l'algorithme. Ne pas se laisser tenter par la facilité qui consiste à choisir des identificateurs courts et vite écrits car leur valeur mnémotechnique est faible voire nulle.

Chaque objet est destiné à une utilisation bien particulière et les utilisations ne sont pas interchangeables (on ne peut pas impunément planter un marteau avec une pointe).

Pour marquer ces particularités nous dirons que les objets sont de TYPE différent.

Exemple : Dans l'atelier de menuiserie, on pourra introduire les types : outils, visserie, enduit, peinture, vernis...

Le TYPE d'un objet détermine l'ensemble dans lequel l'objet prend ses valeurs.

Modalité de déclaration :

- Pour décrire des objets de même nature et admettant les mêmes opérateurs, il suffit d'avoir décrit le type une fois pour toutes et d'annoncer que tel ou tel objet est de tel ou tel type.

Intérêt des types :

On dispose d'un moyen pour détecter un certain nombre d'erreurs sans exécuter le programme, simplement par l'examen des opérations effectuées sur les objets et en contrôlant qu'elles sont licites.

On optimise la taille mémoire nécessaire ainsi que les processus de codage et de décodage des valeurs.

Ceci permet au programmeur de ne pas mélanger les torchons et les serviettes, de ne pas être tenté d'additionner le nom du bateau avec l'âge du capitaine.

Exemple : On pourrait définir le type PEINTURE par l'énoncé des états possibles suivants : (FRAICHE - SECHE - MOLLE - DURCIE).C'est l'ensemble des états qui constitue la définition du type.

Un objet de TYPE PEINTURE pourrait prendre l'un des quatre états ci-dessus.

Le type d'un objet est un attribut de cet objet invariable dans le temps.

La VALEUR d'un objet indique son état à un moment
bien déterminé et est variable dans le temps.

EN RESUME : Pour caractériser parfaitement un objet, il est nécessaire de donner
son NOM (ou contenant ou enveloppe).
son TYPE qui traduit l'ensemble des valeurs qu'il peut prendre.
sa VALEUR (ou contenu) qui caractérise l'objet à l'instant donné.

  1. NOTION DE CONSTANTE ET DE VARIABLE

Rappel : tout algorithme se compose d'une suite d'actions à exécuter ( ces actions sont encore appelées instructions).

Ces actions manipulent des objets qui peuvent être:

- des objets dont la valeur est toujours la même : les CONSTANTES

- des objets dont la valeur peut varier au cours de l'exécution de l'algorithme : les VARIABLES

  1. Intérêt des constantes :
  2. En informatique il est commode de pouvoir donner un nom à certains objets,

    ils sont ainsi plus faciles à manipuler.

    C'est le cas, par exemple du nombre PI qui suivant la précision que l'on désire dans les calculs, doit être exprimé avec un nombre adéquat de chiffres après la virgule.

    Une autre raison de nommer certains objets à l'aide d'un identificateur, est d'expliquer plus clairement ce qu'ils expriment.

    Ainsi au lieu de noter 12 le nombre de mois dans une année, n’est il pas plus agréable de nommer ce nombre 12 par l'identificateur mois. Cette dénomination apporte plus de lisibilité dans l'algorithme où cette valeur est utilisée.

    Nous verrons également plus tard que le nommage de certains objets facilite grandement la modification que doivent subir les programmes lors de la maintenance des logiciels.

  3. Intérêt des variables

L'intérêt d'une variable est de nommer un objet dont la valeur peut évoluer au cours de l'algorithme pour aboutir à un résultat final.

Ainsi la variable apparaît comme une "boîte" ou "casserole" dont le contenu peut être modifié au cours du déroulement de l'algorithme. A tout moment, le contenu de cette boite, est appelé valeur de la variable. Il suffit de citer le nom de la variable pour accéder à la valeur qu'elle contient.

Exemples : Total imposable sur la feuille de solde.

Cumul des achats du mois.

  1. LES TYPES D'OBJET ET LEURS OPERATEURS ASSOCIES :

On peut considérer qu'il existe cinq types simples d'objets et deux que l'on peut qualifier de particulier. On peut ensuite, par combinaison, obtenir un nombre infini de types composés.

  1. Le type entier :
  2. Ce type correspond à l’ensemble mathématique des entiers relatifs Z.

    Les valeurs sont des nombres entiers en notation décimale avec ou sans signe ( une valeur sans signe est considérée comme positive).

    Exemples : +12 56 -24

    Les opérations usuelles associées sont l'addition, la soustraction, la multiplication, la division, la mise à la puissance, la division entière et les comparaisons.

    On peut en outre utiliser certaines opérations particulières comme par exemple valeur absolue ABS(-12) = 12.

  3. Le type réel :
  4. Ce type correspond à l’ensemble mathématique des réels R.

    Les valeurs sont des nombres réels en notation anglo-saxonne pour la virgule ( le séparateur est le point).

    Exemples : 13.6 0.18 -956.345

    Les opérations associées sont les mêmes que pour les nombres entiers.

  5. Le type booléen :
  6. Les valeurs booléennes sont au nombre de deux : VRAI et FAUX.

    Les opérateurs associés sont les opérateurs logiques NON, OU, ET ainsi que les opérateurs de comparaison: = (égal) , # (différent), < (inférieur), > (supérieur), =< , >=.

  7. Le type caractère :
  8. Les valeurs sont tous les caractères usuels lettres, chiffres et les caractères dits spéciaux : $, . %, §, @, #, * ....

    En notation, on entoure le caractère d'apostrophes.

    Exemples : 'A', '9', '#’

    Les opérateurs associés sont les opérateurs de comparaison = (égal) et # (différent).

    Exemple : Le résultat de 'A' = '6' est FAUX.

  9. Le type chaîne :
  10. Les valeurs sont l'ensemble des combinaisons que l'on peut former à l'aide des caractères usuels ou spéciaux.

    Pour éviter de confondre une chaîne de caractères avec le nom d'une variable, on la représente toujours entre deux apostrophes. Comme avec les caractères, ces deux apostrophes délimitent le début et la fin de la chaîne et ne sont pas à considérer comme faisant partie de la chaîne.

    Exemples: 'Nom' , 'prénom'

    Si la chaîne de caractères contient une apostrophe, celle-ci sera doublée.

    ' Il s'appelle Jean'.

    Comme pour le type caractère, les opérateurs associés sont les opérateurs d'égalité et de comparaison.

  11. Le type structure :
  12. Ces différents types d'objets peuvent être associés en les regroupant au sein d'un type particulier le type structure.

    Ce type étant modulable à volonté il faudra le définir avec précision chaque fois que l'on voudra l'employer.

  13. Le type pointeur :

Cité pour mémoire, ce type sera abordé ultérieurement.

  1. LES EXPRESSIONS ET LA PRIORITE DES OPERATEURS
  1. Composition d'opérations élémentaires : Expressions
  2. Une expression peut être définie comme une combinaison d'objets de base et d'opérateurs pris parmi ceux qui correspondent au type d'objet concerné.

    Exemple : Soient A, B, C, D de type ENTIER
    A + B * C / D est une expression

    Pour lever toute ambiguïté, à chaque opérateur est associé une priorité permettant de classer les opérateurs entre eux.

    Les règles suivantes représentent l'ordre des calculs

    - Une opération, est à évaluer en premier, si sa priorité est plus forte que celle des opérations adjacentes.

    - En cas d'égalité des priorités, l'évaluation a lieu de gauche à droite.

    - Le parenthèsage force l'ordre d'évaluation.

  3. Tableau des opérateurs par ordre de priorité décroissante :

OPERATEUR

NOTATION

Type des opérandes

Type du résultat

+ - unaires

+ -

Entier/Réel

Entier/Réel

Négation logique

NON

Booléen

Booléen

Puissance

 

Entier/Réel

Entier/Réel

Multiplication

Division

*

/

Entier/Réel

Entier/Réel

Entier/Réel

Entier/Réel

Division entière

DIV

Entier

Entier

Reste

MOD

Entier

Entier

Addition

Soustraction

+

-

Entier/Réel

Entier/Réel

Entier/Réel

Entier/Réel

Comparaison

< , < = , > , > =

= , < >

Entier/Réel

Tout type

Booléen

Booléen

Et / OU logiques

ET , OU

Booléen

Booléen

Exemple : Dans l'exemple précédent, le processeur calculera dans l'ordre :

- B * C puis
- (B * C) / D puis
- A + (B * C) / D

POUR FACILITER LA LISIBILITE, IL NE FAUT PAS HESITER A METTRE DES PARENTHESES

 

  1. LES PRIMITIVES DE BASE EN ALGORITHMIQUE

Nous avons vu que chaque variable est représentée dans l'algorithme par son Identificateur ( ou Nom). On peut faire évoluer la valeur d'une variable par l'instruction de lecture ou celle d'affectation.

  1. Notion de lecture :
  2. Il peut arriver qu'une valeur ne fasse pas partie de l'environnement d'un travail : pour pouvoir enregistrer cette valeur, il sera nécessaire de la faire entrer dans l'environnement.

    Cette entrée se fera par l'intermédiaire d'une instruction de lecture.

    L'instruction de lecture permet donc d'affecter à une variable une valeur lue en donnée. On précise l'endroit où se fait le lecture.

    Syntaxe : LIRE (Fichier ; Nom)

    Exemple : Dans le cadre d'un calcul de moyenne Lire(clavier ; note)

    A) Appuyer sur la touche "C"

    B) Taper la première note Lire (clavier ; note)
    C) Appuyer sur "+"
    D) Taper la seconde note Lire (clavier ; note)
    E) Appuyer sur "/"

    F)Taper "2"

    G) Appuyer sur "=". Le résultat

    est affiché

    On peut factoriser l'instruction de lecture

    Syntaxe : LIRE (Fichier ; Ident1, Ident2, , IdentN)

    Dans un exemple de dialogue Homme Machine (inter activité), l'instruction Lire provoque l'arrêt de la machine, l'utilisateur frappe alors au clavier une valeur qui sera affectée à la variable désignée par son Nom (ou Identificateur).

    Les valeurs doivent alors être rentrées dans l'ordre de leur affectation et être du même type que chaque identificateur auquel elles correspondent.

    Conventions :

    On considérera que par défaut l'instruction lire se fait à partir du clavier. Il ne sera donc pas nécessaire dans ce cas le spécifier.

    Syntaxe : LIRE (Nom)

    On peut, dans ce cas également factoriser l'instruction de lecture.

    Syntaxe : LIRE (Ident1, , IdentN)

  3. Notion d'affectation :
  4. Dans un environnement donné, pour attribuer à une variable une valeur qui provient de ce même environnement, nous conviendrons d'utiliser la notation suivante:

    Ident ¬ Val

    _ Ident est le nom ( ou identificateur) de la variable à laquelle le processeur doit attribuer la valeur,

    _ ¬ est le symbole qui caractérise l'affectation,

    _ Val est la valeur à affecter et peut être:

    -. une constante,

    -. le nom d'une autre variable qui contient la valeur,

    -. une expression arithmétique décrivant un calcul à effectuer.

    Il est important de bien noter que les deux entités qui, dans une affectation, apparaissent de part et d'autre du signe ¬ ,doivent toujours être du même type ou de type compatible

    L'affectation de valeur à une variable peut-être effectuée autant de fois que l'on veut au cours du programme. La valeur de la variable sera alors modifiée à chaque affectation.

    Exemples :

    A) Note1 ¬ 12 Note1 ¬ 13

    L'action A affecte à la variable Note1 la valeur numérique 12, puis écrase cette valeur avec 13.

    B) Prénom ¬ 'Pierre'

    L'action B affecte à la variable Prénom la chaîne de caractères 'Pierre'. Il est donc indispensable que la variable Prénom soit du type chaîne.

    C) Total ¬ Somme

    L'action C représente une affectation dans laquelle la valeur à affecter est indiquée par une variable. Les deux variables Total et Somme doivent bien sûr être de même type.

    Exemple : les variables Total et Somme ont respectivement pour valeur 124 et 18 avant l'instruction d'affectation. Après exécution de l'opération d'affectation, elles auront toutes les deux la valeur 18.

    En d'autres termes, seule la variable située à gauche du signe ¬ change de valeur lors de l'exécution d'une instruction d'affectation.

    D) Somme ¬ Note1 + Note2

    L'action D affecte à la variable Somme le résultat d'un calcul arithmétique. Les trois variables concernées doivent être du même type.

    L'action D s'exécute en deux temps :

    calcul de la valeur de l'expression Note1 + Note2

    affectation de cette valeur à la variable Somme.

    L'expression est toujours évaluée avant d'être affectée.

  5. Notion d'initialisation :
  6. Lorsque l'on utilise une variable dans une expression ou une instruction, il est absurde d'effectuer un traitement sur cette variable si son contenu est inconnu. Il faut donc avant toute utilisation initialiser cette variable, c'est à dire lui donner une première valeur.

    Toute première affectation d'une variable s'appelle l'initialisation de la variable.

    Cette initialisation est d'autant plus importante qu'une variable qui n'a pas été initialisée contient une valeur aléatoire qui faussera tous les calculs que l'on pourrait effectuer sur cette variable avant son initialisation.

    A retenir

    Après la déclaration d'une variable, l'état initial de sa valeur
    n'ayant pas été précisée, celle-ci est indéterminée.

  7. Notion d'écriture :

A l'inverse de la lecture, il est également nécessaire de faire sortir une valeur de l'environnement pour communiquer une information vers l'extérieur. Cette communication se fait à l'aide de la primitive Ecrire.

Syntaxe : Ecrire (Fichier ; Val)

L'action permet de communiquer à l'extérieur la valeur de la variable Val en l'écrivant dans un fichier. Il faut insister sur le fait que cette action, qui transmet vers l'extérieur une copie de la valeur de Val, ne modifie aucunement la valeur de cette variable.

On peut, dans ce cas également factoriser l'instruction d'écriture.

Syntaxe : ECRIRE (Fichier ; Ident1, Ident2, , IdentN)

Conventions :

On considérera que l'instruction écrire se fait par défaut sur l'écran. Il ne sera donc pas nécessaire le spécifier dans ce cas.

Syntaxe : ECRIRE (Variable)

On peut, dans ce cas également factoriser l'instruction de lecture

Syntaxe : ECRIRE (Ident1, , IdentN)

On peut également utiliser un libellé en tant qu'argument d'une primitive d'écriture.

La syntaxe sera alors : ECRIRE ('bonjour')

On peut également utiliser une expression en tant qu'argument d'une primitive d'écriture.

La syntaxe sera alors : ECRIRE ( A+B)

En résumé

L'action Lire (Val) affecte une nouvelle valeur à Val, l'action Ecrire (Val) ne modifie en rien la valeur de la variable.

Home