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.
Table des matières
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.
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?
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.
i = c c = i c = c + 1 c = i + 1
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.
Ces opérations sont autorisées également pour les mêmes raisons.
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) ;
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)