Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Test d'iCalc 2.1a
(Article écrit par Pierre Ardichvili et extrait d'Amiga News - janvier 1993)
|
|
Présentation
Pour faire commodément et rapidement des calculs un tant soit peu complexes,
je vous recommande iCalc. On le lance de préférence à partir d'une fenêtre Shell
dont vous aurez mis la pile (stack) à 20000 (de manière à ne pas planter si
vous utilisez des fonctions récursives). Il permet de définir "à la volée" des variables
dont le nom n'est soumis qu'à peu de restrictions, mais aussi des expressions mathématiques
des plus simples aux plus complexes.
À propos, iCalc traite indifféremment les nombres réels ou complexes, mais attention.
La version 1.0 que l'on trouve sur la disquette Fish 472 comporte un bogue
sérieux : elle donne dans certains cas des valeurs fausses pour les racines carrées
complexes ou pour les fonctions inverses complexes, comme asin, etc.
Ce bogue, une fois signalé, a été corrigé en quelques jours par l'auteur, la
version 1.1 de la Fish 550 en est donc exempte.
Si vous avez la version 1.0 et que vous souhaitez faire des calculs sur des variables complexes,
écrivez-lui pour qu'il vous envoie la dernière version. N'oubliez pas de joindre votre
contribution, même en argent français, c'est la moindre des choses. La version testée est
la 2.1 bêta. La version 2.1 sortira prochainement sur une Fish. Mais revenons à iCalc.
Dis, comment ça marche ?
Donnons un exemple simple (les signes en caractères gras à la fin
de chaque ligne indiquent des pressions de touches à effectuer) :
Pour faire le deuxième calcul, il a suffi de rappeler les lignes précédentes du Shell,
pour introduire la nouvelle valeur de "a" et faire le calcul sans avoir à réécrire
la formule. Les caractéristiques d'édition de la ligne de commande et de manipulation
de l'historique des commandes de votre Shell sont conservées.
- iCalc stocke par ailleurs le résultat dans une variable temporaire nommée
"ans", qui permet de réutiliser immédiatement le résultat d'un calcul sans avoir
à le retaper ; très pratique pour faire des itérations à la main.
- Les calculs se font par défaut avec 8 chiffres significatifs, on peut changer ce
nombre instantanément par une instruction prec (n) avec n=20 au maximum.
- Les variables sont par défaut des nombres complexes de la forme a+ib.
On écrira tout simplement : x=5+3i.
- Mais si l'on ne donne pas de parties imaginaires, iCalc calcule sur des
nombres réels, ce qui est plus rapide et plus précis.
- iCalc traite également les tableaux de variables à une dimension.
Fonctions
Il y a une quarantaine de fonctions mathématiques classiques. A part ces fonctions mathématiques
classiques, on trouve dans iCalc d'autres fonctions intégrées comme :
- sum(nom de yariable limite supérieure, expression) et prod() pour faire des sommes et
des produits finis.
- every() et vevery() pour faire des itérations, la différence étant l'affichage des étapes
(mode verbose) par vevery().
On peut définir soi-même des fonctions, par exemple :
func volumeducone(r,h)=(1/3)*Pi*sqr(r)*h
|
Ou encore : en statistique, on a souvent besoin de la somme d'un certain nombre de valeurs, de
la somme des carrés, et du nombre d'entrées. On pourra définir comme suit une fonction
qui met ces trois valeurs à jour chaque fois qu'une valeur "x" est entrée. On écrira :
func sommes(x)={som=som+x; somcar=somcar+x^2; n=n+1;}
|
En fait, les paramètres utilisés dans les fonctions peuvent être de quatre types :
- Valeurs.
- Pointeurs, comme en C, dénotés par "*".
- Tableaux, référencés par nom et non par valeur, dénotés par "@".
- Expressions, dénotées par "~".
Exemples
func swap(*a;b)={local tmp; tmp=a; a=b; b=tmp;}
|
...pour échanger les valeurs des variables "a" et "b". Ou encore :
func fill(@a,~expr)=
{
for n=sizeof(a); n>0 ; n-=1 )
a[n]=expr;
}
|
...où "expr" est une fonction de la variable globale "n;".
Cette fonction remplit le tableau "a" d'éléments contenant le résultat du calcul de
l'expression "expr" pour la valeur de "n" correspondant au rang de l'élément dans le tableau.
L'ensemble de possibilités de traitement des fonctions est puissant. Il permet une approche très
structurée de procédures de calcul complexes.
Fichiers auxiliaires
iCalc, lancé avec comme argument un ou plusieurs nom(s) de fichier(s), exécute ce
fichier, qui peut être, entre autres un fichier de prédéfinition de formules souvent
employées. Neuf de ces fichiers sont fournis, traitant depuis les formules trigonométriques
rarement utilisées jusqu'aux racines de polynômes complexes jusqu'aux fonctions statistiques.
S'il existe un fichier s:icalc.init, il est exécuté au lancement. L'appel au fichier
s:icalc.init au démarrage peut être remplacé par la définition d'une variable d'environnement
ICALCINIT.
Les résultats des calculs peuvent être redirigés vers un fichier, ce qui permettra à un autre
programme de les exploiter. ARexx est tout désigné pour faire ce travail et envoyer les valeurs
à un programme comme MathVision. Cette possibilité d'automatisation
du passage de résultats de calculs est intéressante car elle évite la refrappe de nombres qui,
outre le fait d'être fastidieuse, peut occasionner des erreurs.
Ceci est d'autant plus utile
que l'auteur n'a pas l'intention d'ajouter à iCalc des fonctions permettant le tracé de
courbes en plan ou de surfaces en perspective.
Branchements
iCalc possède des instructions if-then-else , while-do et repeat-until, avec la
possibilité de tests sur opérateurs relationnels selon la syntaxe du C (&&, >. etc.).
Le tout s'agrémente de la possibilité d'inclure des groupes d'instructions dans des blocs
délimités par des accolades. On dispose donc d'un véritable langage de programmation.
Couplage au Shell
iCalc dispose d'une commande exec 'chaîne' qui permet de lancer n'importe
quel programme ou commande AmigaDOS sans devoir quitter iCalc. La commande read
'fichier' permet de faire exécuter le contenu du fichier appelé. En mode interactif,
cela permet la mise au point de fonctions compliquées en les découpant en morceaux que l'on appelle
interactivement. Placée dans un script, cette commande peut jouer un rôle analogue à une instruction
#include.
La commande writevars 'toto' copie la valeur de toutes les variables et des
tableaux dans le fichier toto.
Incorporation des routines dans un programmes écrit en C
Les sources étant fournies, les routines de calcul peuvent être incorporées dans un
programme quelconque. C'est particulièrement intéressant pour combler une lacune du C,
qui ignore fort malencontreusement les variables complexes.
Les souhaits
Tant qu'à faire, puisqu'il y a des tableaux à une dimension, pourquoi pas des tableaux multidimensionnels ?
Conclusion
Travaillant chez Hewlett-Packard, je n'irai pas jusqu'à dire qu'iCalc peut remplacer
intégralement une calculatrice HP 28S ou 48S, mais ce programme du DP vous permettra
de faire commodément sur votre Amiga beaucoup de choses qui autrement demanderaient
le recours à une de ces machines, tout en permettant de faire instantanément des choses
simples mais un peu plus évoluées que ce qu'offre la commande "Eval" classique du Shell.
Nom : iCalc 2.1a.
Développeurs : Martin W. Scott.
Genre : calculateur.
Date : 1992.
Configuration minimale : Amiga OCS, 68000, 512 ko de mémoire.
Licence : gratuiciel.
Téléchargement : Fish 713.
|
|