Skip to content

tamgucalc (fr)

Claude Roux edited this page Jul 3, 2020 · 25 revisions

Un tableur en mode caractère avec formules en Lisp: TAMGUCALC

English Version

Ce tableur, extrêmement léger, se lance instantanément dans votre terminal. Il vous permet de saisir des nombres, de définir des labels mais surtout de rentrer des formules numériques en Lisp. Vous pouvez ensuite sauvegarder vos feuilles de calcul avec leurs formules dans un fichier CSV. Vous pouvez aussi exporter vos feuilles en ne conservant que les données brutes.

Le code fait moins de 2000 lignes et est entièrement modifiable à votre convenance, si vous désirez rajouter vos propres options.

Initialisation

Par défaut, le tableur utilise les dimensions de votre terminal pour définir le nombre de lignes et de colonnes. La taille d'une colonne est 10 par défaut. L'ensemble de ces dimensions peut être modifié au sein du tableur. Notez que lorsque vous modifiez ces dimensions, celles-ci sont sauvegardés dans votre feuille de calcul.

Entrer une valeur

Pour rentrer une valeur, il suffit de se positionner sur une cellule avec les flèches et d'entrer votre valeur. Vous pouvez alors passer à la cellule suivante avec les flèches ou appuyer sur la touche "entrée". Une cellule peut contenir des chiffres, des formules ou des labels.

Vous pouvez aussi utiliser la souris pour positionner le curseur sur une cellule particulière ou pour sélectionner un groupe de cellules.

Entrer une formule Lisp

Pour entrer une formule, il suffit de se positionner sur une cellule et de taper: '('. Lorsque votre formule est terminée, le système vérifie que les parenthèses s'équilibrent et il vous affiche le message: "Ready to compute".

Il suffit de presser: "entrée" pour qu'elle soit alors calculée.

Sélection d'une cellule

Lorsque vous tapez une formule, vous pouvez utiliser les flèches pour choisir les cases qui entrent dans votre formule. Lorsque vous avez sélectionné une cellule, vous pressez "entrée" pour l'enregistrer dans votre formule.

Sélection d'un domaine de cellules

Pour choisir un domaine de cellules, il vous faut d'abord choisir une première cellule, puis taper ".." (deux points) puis choisir une seconde cellule. tamgucalc remplace alors votre sélection automatiquement avec les règles suivantes:

Le choix d'une cellule apparaît sous la forme suivant:

  • mat[i:j]: une seule cellule aux positions i,j.
  • mat[:c][a:b]: 'c' est le numéro de colonne, 'a,b' sont les lignes de 'a' à 'b' sur la colonne 'c'.
  • mat[l:][a:b]: 'l' est le numéro de ligne, 'a,b' sont les colonnes de 'a' à 'b' sur la ligne 'l'.

Notez, l'utilisation de "l:" et ":c" pour identifier lignes et colonnes.

Plusieurs lignes et colonnes

Notez que lorsque vous définissez un domaine qui comprend plusieurs lignes et colonnes, tamgucalc introduit un opérateur "&&&" afin de fusionner l'ensemble des lignes choisies en un seul vecteur de données. De cette façon, votre sélection devient un seul élément.

Exemple:

(sum (&&& mat[1:][1:3] mat[2:][1:3]))

Formules

Les formules dans tamgucalc doivent être écrite dans le Lisp défini pour Tamgu (voir la documentation). Vous pouvez définir des lambdas fonctions, des fonctions (defun) ou simplement utiliser les opérateurs de base.

Important Par défaut, toutes les valeurs numériques sont des "double" au sens C (type 'float' pour tamgu).

Opérateurs

Les opérateurs traditionnels tels que : +,-,/, * sont disponibles.

Vous pouvez aussi utiliser: "sum" et "product". Notez que "+" est utilisé pour des valeurs atomiques et que "sum" s'applique à la fois sur les listes et les valeurs atomiques.

L'ensemble des méthodes Lisp définie dans Tamgu (voir la documentation) est d'ailleurs disponible, ainsi que les méthodes disponibles pour les listes, telle que "size" par exemple.

# addition
(+ mat[6:1] mat[7:1] mat[10:1] ) 

# Reste d'une division
(% mat[6:1] mat[7:1])

# logarithme Népérien
(ln mat[9:1] )

# Vous pouvez encapsuler vos formules
(* 2 (+ mat[6:1] mat[7:1] mat[10:1]))

# Tester une valeur
(if (>= mat[8:2] 60) 20 0)

# Appliquer une modification sur une liste et faire la somme
(sum (_map '(* 2) mat[:1][6:10])) 

# Filtrer les valeurs sur lesquelles appliquer notre somme
(sum (_filter '(> 20) mat[:1][6:10])) 

Lambdas

Vous pouvez aussi définir des lambdas fonctions dans vos cellules et effectuer tous les calculs voulus y compris des récursions.

# Une fonction simple pour calculer la moyenne
((lambda (x) (/ (sum x) (size x))) mat[1:][1:10])

# On peut aussi récurser

((lambda (x) 
     (if (eq x ()) 
         0 
         (+ 
            (* 2 (car x)) 
            (self (cdr x))))) 
  mat[:1][6:10])

Fonctions

Quand vous définissez une fonction avec "defun" dans une cellule telle que:

(defun avg(x) (/ (sum x) (size x)))

La cellule prend alors le nom de cette fonction. Vous pouvez désormais l'utiliser dans votre feuille comme nouvel opérateur:

(avg mat[:1][1:8])) 

Formules plus traditionnelles

Il est possible aussi de rentrer des formules traditionnelles (regular formulas) en commençant votre définition avec un "=" and en finissant avec un ";".

= mat[1:2] + mat[2:4] - ln(mat[3:4]);

Valeurs Complexes

Certaines valeurs sont disponibles telles que: _pi, _phi, _tau et _e. Vous pouvez les utiliser directement dans votre code. Notez que lorsque vous tapez l'une de ces valeurs dans une formule, elles sont remplacées par leur nom grec.

Fonctions supplémentaires

Des fonctions peuvent également être définies directement dans le code du tamgucalc et ensuite utilisées dans vos feuilles. Notez que si vous avez l'intention de partager vos feuilles, vous devrez également partager ces fonctions. Un certain nombre ont déjà été rajoutées à titre d'exemple:

(average selection)

average calcule la moyenne d'une sélection: (average mat[:1][1:10])

(fillcolumn sélection cell_i cell_j)

fillcolumn remplit la colonne commençant à cell_i, cell_j avec le contenu de la sélection.

(fillcolumn (sort mat[:1][1:10] false) 1 2) remplit la colonne 2, depuis la ligne 1 avec les données triées de la sélection.
(fillcolumn (cauchy_distribution 20 0 1) 1 3) remplit la colonne 3 avec une distribution de Cauchy (voir chapitre 37: Random)
(fillcolumn (poisson_distribution 20  1) 1 4) remplit la colonne 4 avec une distribution de Poisson

(fillrow sélection cell_i cell_j)

fillrow remplit la ligne commençant à cell_i, cell_j avec le contenu de la sélection.

(fillrow (sort mat[:1][1:10] false) 1 2) remplit la ligne 1, depuis la colonne 2 avec les données triées de la sélection.

(upto sélection val)

upto extrait la sous-liste dans sélection jusqu'à la valeur val.

(fillcolumn (sort (upto mat[:1][10:] 0) false) 1 2): remplit la colonne 2 avec la liste de valeur dans la colonne 1 jusqu'au premier 0.

Notez l'utilisation de mat[:1][10:] pour extraire une colonne complète à partir de la cellule 1,10.

Commandes de base

tamgucalc offre quelques options:

  • Contrôle+b : Mode noir (pour les terminaux à fond noir) également -b sur la ligne de commande
  • Contrôle+i : Afficher/Masquer les index également -i sur la ligne de commande
  • Contrôle+n : Afficher/masquer les messages également -n sur la ligne de commande
  • Control+e : modifier une formule
  • Contrôle+d : supprimer des cellules
  • Contrôle+k : copie d'un groupe de cellules
  • Contrôle+x : déplacer un groupe de cellules
  • Contrôle+g : sauter à une cellule: écrire l,c.
  • Contrôle+s : sauvegarde
  • Contrôle+w : sauvegarde sous
  • Contrôle+f : sauvegarde les données brutes
  • Contrôle+r : permet de modifier le nombre de lignes et de colonnes affichés à l'écran: écrire l:c
  • Contrôle+t : permet de modifier la taille d'une colonne
  • Contrôle+q : permet de sortir

Installer tamgucalc

Vous pouvez trouver "tamgucalc" à: tamgucalc.tmg Une version plus avancée avec contrôle de la souris est disponible ici: tamgucalc_mc.tmg

Pour exécuter "tamgucalc" vous devez aussi vous procurer l'interpréteur "tamgu" dont des versions précompilées sont disponibles à:

Pour lancer tamgucalc: tamgu tamgucalc.tmg (fichier)

Notez que fichier est optionnel...

Clone this wiki locally