Assigner une valeur à un élément

Un algorithme utilise des informations en vue d’un traitement. En algorithmique un élément permet de définir de manière abstraite ce que l’on nomme variable en programmation. Il représente une donnée sous forme d’un contenu dans lequel est rangé une valeur

  • Un élément est défini par un nom et une  valeur.
  • L’attribution d’une valeur à un élément s’appelle une affectation.
  • Le contenu d’un élément peut être modifié.
  • Un élément est caractérisé par son type.
  • Attribuer un nom à un élément est une déclaration.
  • Le type d’un élément correspond au type de sa valeur.
  • Un élément est dit constant lorsque sa valeur ne peut être modifiée.
  • Un élément est dit variable lorsque sa valeur peut être modifiée.

Pour être utilisé dans un algorithme,  un élément doit être être parfaitement défini afin de recevoir une valeur modifiable ou non, il doit être déclaré afin de pouvoir lui affecter une valeur.

Pour le langage Schema l’opération d’affectation utilise le symbole >- ou <-. La plupart des langages de programmation utilise le signe = qui signifie égalité en mathématique. C’est la raison pour laquelle les signes d’affectation <- et >- sont proposés afin de ne pas faire la confusion avec le signe égalité.

  • Le signe d’affectation <- indique que le contenu de l’élément peut changer.
  • Le signe d’affectation >- indique que le contenu de l’élément ne peut changer.

Un autre raison pour ce choix, le symbole d’affectation permet la distinction entre un élément dont la valeur peut être modifiée ou non durant le cours de l’exécution d’un algorithme.

L’opération d’affectation :  permet de ranger une information dans un élément en spécifiant si cette information est variable ou constante. de la façon suivante:

    taxe >- 18.5
    prix <- 9.99
    prix <- 11.80
    age <- 18

L'élément de nom taxe reçoit la valeur 18.5 qui ne peut plus être modifiée
L'élément de nom prix reçoit la valeur 9.99 qui peut être modifiée

Les éléments taxe et prix sont dits déclarés sans spécifier le type de chaque élément. Bien que l’on ne fasse pas mention du type dans la déclaration, ces deux éléments sont de type nombre réel. La déclaration de type est implicite car c’est le type de la valeur qui définit le type de l’élément.

Element, Type et Valeur

Un élément d’information dénoté par un identificateur contient une valeur dont le genre ou type est

  • Entier pour manipuler des nombres entiers, ce sont tous les entiers relatifs
  • Reel pour manipuler des nombres réels, ce sont tous les nombres réels
  • Bool pour manipuler des valeurs booléennes vrai ou faux
  • Texte pour manipuler un chaine de caractère

Notation d’une affectation dans Schema, Swift, Python et JuliaNote

Schema
Note: vrai et Vrai représente l'élément et sa valeur
assignation 
    vrai >- Vrai
    faux >- Faux
    john >- "John Lennon"
    taxe <- 19.9
    prix <- 65
    entierNegatif <- -5
    reelNegatif <- 5.0
Fin

Swift
func assignation() {
    let vrai = true
    let faux = false
    let john = "John Lennon"
    var taxe = -19.9
    var prix = -65
    var entierNegatif = -5
    var reelNegatif = 5.0
} 

Python
def assignation():
    vrai = True
    faux = False
    john = "John Lennon"
    taxe = 19.9
    prix = 65
    entierNegatif = -5
    reelNegatif = 5.0

Julia
function assignation()
   vrai = true
   faux = false
   john = "John Lennon"
   taxe = -19.9
   prix = -65
   entierNegatif =-5
   reelNegatif = 5.0
end

Types des éléments  déclarés de façon implicite

  • vrai, faux: élément constant booléen type Bool
  • john : élément constant texte type Texte
  • taxe: élément variable nombre réel type Reel
  • prix: élément variable nombre entier type Entier
  • entierNegatif: élément variable nombre entier négatif type Entier
  • reelNegatif: élément variable nombre réel négatif type Reel

Algorithme &  Programme

Le langage algorithmique Schema est défini sur une grammaire formelle. Il est alors possible de développer un compilateur pour traduire un algorithme vers un langage de programmation cible. C’est le cas pour tous les algorithmes de ce site qui ont été traduits vers le langage Swift et Julia. Cependant il est parfois nécessaire d’ajuster le code généré en fonction des particularités sémantiques du langage à traduire.

Typage

Le typage garantit l’absence de calculs erronés dus à des opérations non-conformes. Cette vérification peut s’effectuer à l’exécution (typage dynamique) ou à la compilation (typage statique).
Le typage dans les langages de programmation garantit l’absence de calculs erronés qui seraient dus à des opérations manipulant des données non-conformes. Cette vérification peut s’effectuer à l’exécution (typage dynamique) ou à la compilation (typage statique) et accroît la sûreté d’exécution des programmes.

Swift est un langage typé statiquement. c’est-à-dire que la déclaration d’un élément lui attribue le type de la valeur assignée ce qui force à définir le type des éléments et à les conserver au cours de la vie du programme.

Python est un langage typé dynamiquement, c’est-à-dire que l’on peut changer le type d’un élément préalablement déclaré, mais cette facilité peut également être source de confusion et de difficultés lors de la phase de mise au point d’un programme.

Julia est un langage de programmation créé par un groupe de mathématiciens, d’informaticiens et de concepteurs de langage avec une syntaxe expressive et intuitive. Julia est un langage de programmation dynamique qui permet de changer  la valeur et le type d’un élément au cours de l’exécution d’un programme. Il est aussi considéré comme langage statique puisqu’il permet de déclarer explicitement le type d’un élément

Schema
assignation
    taxe <- 10
    taxe <- 19.9
    Afficher #taxe
Fin

Swift
A la compilation le code ci-après affiche le message:
       Cannot assign value of type 'Double' to type 'Int'
L'élément taxe , une fois déclaré comme type Int, ne peut être assigné ne peut recevoir une valeur de type Double
func assignation() {
    var taxe = 10
    taxe = 19.9
    print("\(taxe)")
}

Python
Le code python n'affiche aucun message d'erreur à l’exécution

def assignation():
    taxe = 10
    taxe = 19.9
    print(taxe)

Modification de paramètres

Le principe de l’immutabilité n’autorise les modifications d’un élément que si celui-ci a été déclaré comme une variable. Il s’applique aussi sur les paramètres d’une fonction où  la modification d’un paramètre dans le corps du programme n’est pas toujours autorisée. Cette règle assure que les mêmes paramètres d’une fonction fournissent toujours le même résultat quel que soit l’environnement.

Avec Swift, par défaut, les paramètres d’une fonction sont des constantes. En d’autres termes, bien que nous puissions accéder aux valeurs des paramètres dans le corps de la fonction, il n’est pas possible de modifier leur valeur. Pour modifier ce comportement par défaut, il faut ajouter le mot clé inout au nom du paramètre dans la liste des paramètres de la fonction.

Avec Python, on peut changer la valeur d’un paramètre à l’intérieur de la fonction sans modifier sa valeur à l »extérieur de la fonction.

Schema
plusUn nombre Entier
    nombre <- nombre + 1
    Afficher #nombre
Fin

plusUn nombre Entier -> Entier
    <- nombre + 1 
Fin
Swift
func plusUn(_ nombre: Int) {
    nombre = nombre + 1
    print("\(nombre)")
}
le message d'erreur: Cannot assign to value: 'nombre' is a 'let' constant
On peut adapter ce code sans le mot clé inout, pour lever l’exception

func plusUn(_ nombre: Int) {
    var somme = nombre + 1
    print("\(somme)")
}

func plusUn(_ nombre: Int) -> Int {
    return nombre + 1
}
Python
def plusUn(nombre):
    nombre = nombre + 1
    return nombre

nombre = 5
print(plusUn(nombre))
print(nombre)
Le résultat est
6
5

Résumé

  • Déclaration c’est attribuer le nom et le type de l’élément que l’on utilisera dans l’algorithme.  Pour déclarer un élément on spécifie simplement sa valeur sans préciser le type, age <- 18 est un élément dont le contenu est 18 et le type nombre entier. On dit que la déclaration du type est Implicite. En une seule écriture on a effectué en même temps un déclaration et une initialisation sans préciser formellement le type de la donnée.
  • Affectation ou Assignation c’est changer la valeur d’un élément déjà déclaré. En principe le type de la nouvelle valeur à affecter doit être identique au type de l’élément déjà déclaré, c’est le cas pour le langage Swift mais pas pour le langage Python. Le signe d’affection <- indique que le contenu de l’élément age pourra être changé avec une valeur de même type. L’élément age est souvent appelé variable puisque son contenu est modifiable. Le  signe >- indique que le contenu de l’élément taxe  ne pourra être changé. L’élément taxe est souvent appelé constante puisque son contenu n’est pas modifiable.

copyright A rchitectures A pplicatives A vancées A3-Soft

A3soft