Exportation

Attention, en Python et Java, l’affectation d’un caractère à un entier, ou l’inverse n’est pas encore opérationnelle et provoque une erreur à la compilation. L’utilisateur devra procéder lui-même à certaines modifications du code comme expliqué ci-dessous.

A propos de types

Dans la plupart des langages de programmation modernes, le programmeur doit  définir les types des variables qu’il va utiliser. Cela permet au compilateur d’effectuer des vérifications de compatibilité de type. Ces vérifications avant exécution ont pour objectif de détecter des erreurs probables qu’il serait parfois difficile à trouver à l’exécution.

Parmi les langages utilisés par AlgoTouch pour effectuer des exportations (C, Java, Python et C++), seul le langage Python n’oblige pas à déclarer les variables. En effet, leur type est défini lors de la première affectation ce qui permet au compilateur d’effectuer des vérifications par la suite.

Cas des entiers et des caractères

Les entiers et les caractères sont des types différents. A chaque type, sont associées des opérations spécifiques. Chacun sait que l’on peut effectuer des opérations et des comparaisons entre deux entiers. Mais qu’en est-il pour les caractères? 

 

Opérations sur les caractères

En fait, les caractères sont ordonnés suivant l’ordre alphabétique habituel pour les lettres, suivant l’ordre naturel pour les chiffres. Il est donc possible de les comparer.

Par exemple, si on veut savoir si un caractère est une majuscule, il doit être supérieur ou égal à ‘A’ et inférieur ou égal à ‘Z’. De même un chiffre doit être compris entre ‘0’ et ‘9’. Dans certains langages, certaines opérations arithmétiques sont permises avec les caractères. Par exemple en AlgoTouch, C et C++, ajouter 1 à un caractère permet d’obtenir le suivant.

Affectations entre types différents

Affecter le contenu d’une variable d’un type à une variable d’un autre type est uniquement réalisable sous certaines conditions et suivant les langages. En effet si i est un entier et c un caractère, que signifient les affectations suivantes:
i = c
c = i
c = c + 1
c = i + 1

En AlgoTouch

Ces opérations sont autorisées. En effet, chaque caractère étant codé sur un entier, AlgoTouch considère qu’il s’agit dans le premier cas de l’affectation du code du caractère c à la variable entière i, et dans le second cas, de l’affectation de la valeur de i comme code de la variable c.

En C et C++

Ces opérations sont autorisées également pour les mêmes raisons.

En Java

L’affectation d’un entier à un caractère nécessite une conversion, alors que la conversion de type est automatique pour affecter un caractère à un entier. Exemples :

c = i ; convertir en c = (char)i ;
i = c ; ne change pas
c = c + 1 ; convertir en c = (char)((int)c + 1) ;

En Python

Les affectations entre types différents ne sont pas autorisées. De plus, les opérations sur les caractères non plus. Le programmeur doit effectuer lui même la conversion de type. Exemples :

c = i ; convertir en c = chr(i)
i = c ; convertir en i = ord(c)
c = c + 1 ; convertir en c = chr(ord(c) + 1)
c = i + 1 ; convertir en c = chr(i + 1)