Voilà voilà, le projet est fin prêt pour être utilisé !
Voici un petit résumé des modifications que le projet a subi, ou pour ceux qui n'ont pas lu le début du sujet :
Le langage UnderBasic est un langage de programmation pour les débutants ou pour les programmeurs qui souhaitent se simplifier la vie. Ce langage propose notamment un système de fonctions qui permets de réutiliser plusieurs fois un bout de code sans le réécrire à chaque fois.
Voici à quoi ça ressemble (j'ai pris la suite de Fibonacci) : (NOTE : la syntaxe a été modifiée pour être plus simple et accessible aux utilisateurs)
Démonstration
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
i : A
suite : _SUITE
suite = [0, 1]
for(i, 3, 18) {
suite[i] = suite[i - 2] + suite[i - 1]
print suite[i]
}
ce qui nous donne en TI-Basic (les "L" correspondent au petit L de liste sur les TI) :
- Code: Select all
{0, 1}->LSuite
For(A,3,18)
LSUITE(A-2)+LSUITE(A-1)->LSUITE(A)
Disp LSUITE(A)
End
Actuellement, on est est à ce stade là :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
#library alias
i : A
suite : LSUITE
suite = {0, 1}
for(i, 3, 18)
suite[i-2]+suite[i-1]->suite[i]
print suite[i]
End
il reste donc encore un peu de boulot (mais le plus gros est fait !)
Explications1. "#library" permets d'inclure une bibliothèque stockée sur le serveur. Actuellement, il n'en existe qu'une, à savoir "alias". D'ici peu de temps il y aura aussi "short-alias", "alias-fr" et "generic", mais j'y reviendrais plus tard. La bibliothèque "alias" permets d'avoir accès à des fonctions comme "disp", "print", "input", etc. Elle sert également à vous permettre de coder avec moins d'erreur, mais nous verrons ça un peu après.
2. "i : A" sert à indiquer au compilateur que, lorsque l'on utilisera la variable "i", on fera en fait référence à la variable "A" de la calculatrice. Cela vous permets de nommer vos variables. Par exemple, on pourra appeler "Str1" avec le nom "nomDeFamille" par exemple, pour améliorer la clareté du programme.
3. La fonction "print" est une fonction définie dans la bibliothèque "alias" qui a été incluse au début. Elle permets d'afficher du texte à l'écran.
Définir une fonctionVoici une autre petite démonstration pour montrer comment on définit une fonction :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
function hello (nom) {
print "Bonjour "+nom
}
hello("Michel")
ce qui donnera
- Code: Select all
Disp "Bonjour "+"Michel"
PrototypageDans l'objectif de coder mieux en faisant moins de fautes, j'ai mis en place un système (optionnel) de prototypage.
En gros, cela permets de dire qu'une fonction n'acceptera comme argument qu'une chaîne de caractères et un nombre.
Par exemple, si vous utilisez une fonction pour faire un calcul avec deux nombres, et que vous passez une chaîne de caractères sans faire attention, le programme plantera. Le temps de vous rendre compte de votre erreur et de la corriger, vous aurez perdu une minute. Multipliez ça par le nombre d'erreurs potentiels que vous pouvez faire en oubliant un guillemet, une virgule...
Il est également possible d'exiger qu'un argument soit un pointeur. En d'autre termes, la fonction n'acceptera pas que vous lui passiez en argument "Salut !" mais une chaîne de caractères, comme Str1. Petit exemple : si j'ai une fonction qui fait des calculs puis stocke le résultat dans une variable, et que je lui passe en paramètre le nombre "2", on va se retrouver avec un truc du genre :
- Code: Select all
2*7*sin(8)+B->2
Bim ! Erreur de syntaxe. Là, vous ne ferez pas l'erreur car le compilateur refusera tout simplement de convertir votre code tant que vous n'aurez pas passé un pointeur à la fonction.
Vous pouvez également mixer les deux. Prenons l'exemple de la fonction "input" dans la bibliothèque "alias". Elle se présente sous cette forme :
- Code: Select all
function input(string text, string *name) {
\Input {{text}},{{name}}
}
(NOTE : Le "\" signifie que le compilateur ne doit pas tenter d'interpréter cette ligne comme un appel à une fonction)
Ici, il faut passer en paramètre à la fonction une chaîne de caractère et une autre chaîne de caractère sous la forme d'un pointeur. Autrement dit, les lignes suivantes ne fonctionneront pas :
- Code: Select all
input 2,"Salut"
input "Salut","Nom"
input "Nom",[A]
il faudra obligatoirement mettre quelque chose du style :
- Code: Select all
input "Nom",Str1
ou
- Code: Select all
nom : Str1
input "Nom", nom
Voilà !
Pour conclure...Le plus gros et le plus difficile du travail est enfin terminé. Les fonctions sont supportées, tout comme les noms de variables.
Notez qu'il est possible d'appeler une fonction avec des parenthèses :
- Code: Select all
// Ceci
input "nom",Str1
// équivaut à
input("nom", Str1)
// ou à
input "nom" , Str1
P.S. : J'ai ajouté la traduction en français pour les anglophones
Donnez-moi vos impressions !