## 1 Pour commencer

### 1.1 Interface

Pour l’instant, vous allez simplement saisir vos premières commandes. L’interface offre bien d’autres possibilités que vous découvrirez ensuite. Elle apparaît comme suit au lancement de `Xcas`.

Vous pouvez la redimensionner. De haut en bas cette interface fait apparaître :

- une barre de menu cliquable : `Fich`, `Edit`, `Cfg`, `Aide`, `CAS`,`Expression`, `Cmd`,`Prg`, `Graphic`, `Geo`,`Tableur`,…
- un onglet indiquant le nom de la session, ou `Unnamed` si la session n’a pas encore été sauvegardée (on peut ouvrir plusieurs sessions en parallèle et donc avoir plusieurs onglets représentant ces sessions),
- une zone de gestion de la session avec :
  - un bouton `?` pour ouvrir l’index de l’aide,
  - une barre-bouton `Save` pour sauvegarder la session,
  - un bouton affichant la configuration du CAS `Config: exact real ...` et permettant de la modifier,
  - un bouton rouge `STOP` permettant d’interrompre un calcul trop long,
  - un bouton `Kbd` pour faire apparaitre un clavier ressemblant à celui d’une calculatrice (on peut le voir ci-dessus). Il peut faciliter vos saisies, peut faire afficher une fenêtre de messages avec touche `Kbd->msg` (ou avec le menu `Cfg->Montrer->msg`) et afficher le bandeau des commandes avec la touche `Kbd->cmds` (ou avec le menu `Cfg->Montrer->bandeau`)
  - un bouton `x` pour fermer la session,
- une zone rectangulaire blanche numérotée 1 (première ligne de commande) dans laquelle vous pouvez taper votre première commande (cliquez si nécessaire pour faire apparaitre le curseur dans cette ligne de commande) : `1+1`, suivi de la touche "Entrée" ("Enter" ou "Return" selon les claviers). Le résultat apparaît au-dessous, et une nouvelle ligne de commande s’ouvre, numérotée 2.

Vous pouvez modifier l’aspect de l’interface et sauvegarder vos modifications pour les utilisations futures (menu `Cfg`).

Vous n’avez pour l’instant qu’à entrer des commandes dans les lignes de commandes successives. Si vous utilisez la version html de ce cours, vous pouvez copier-coller les commandes proposées depuis votre navigateur. Chaque ligne de commande saisie est exécutée par la touche "Entrée". Essayez par exemple d’exécuter les commandes suivantes :

    1/3+1/4
    sqrt(2)^5
    solve(a*x^2+b*x+c,x)
    50!

Toutes les commandes sont gardées en mémoire. Vous pouvez donc remonter dans l’historique de votre session pour faire afficher à nouveau des commandes antérieures avec `Ctrl+``↑` pour par exemple les modifier. Essayez, par exemple, en modifiant les commandes précédentes d’exécuter aussi :

    1/3+3/4
    solve(a*x+b*x+c,x)

On obtient alors

On peut alors voir apparaitre, sur la droite, une barre de scroll permettant de se déplacer dans les niveaux de la session et ici par exemple d’avoir accès au niveau 8. Le menu `Edit` vous permet de préparer des sessions plus élaborées qu’une simple succession de commandes. Vous pouvez créer des groupes de lignes de commandes (sections), ajouter des commentaires ou fusionner des niveaux en un seul niveau.

### 1.2 Les commandes et l’aide en ligne

Les commandes sont regroupées par thèmes dans les menus du bandeau supérieur : `CAS`, `Expression`,`Cmds`, `Prg`, `Graphic`, `Geo`, `Tableur`, `Phys`, `Scolaire`, `Tortue`. Certains menus sont des menus dit menus "Assistant" parce que les commandes sont classées par thème et sont explicitées (menu `CAS`) ou parce qu’une boite de dialogue vous demande de préciser les paramètres de la commande choisie (menu `Tableur``▸``Maths` ou menu `Graphic`).
Les autres menus contiennent les noms des commandes : le menu `Cmds` contient toutes les commandes de calcul formel, le menu `Prg` contient toutes les commandes que l’on utilise en programmation, le menu `Geo` contient toutes les commandes de géométrie... Lorsqu’on sélectionne une commande dans un menu,

- soit une boite de dialogue s’ouvre vous permettant de spécifier les arguments de la commande (par exemple pour tracer une courbe depuis le menu `Graphic` ou pour faire des statistiques depuis le menu `Tableur``▸``Maths`,
- soit la commande est recopiée dans la ligne de commande. Pour connaitre la syntaxe de cette commande, appuyez sur le bouton `?` en haut à gauche, ou faites afficher la zone de `Messages` (en utilisant le menu `Cfg->Montrer->msg`).
  Vous pouvez aussi :
  - ouvrir l’index de l’aide à la commande sélectionnée (cela est automatique si on a cocher la case `Aide index automatique` dans le menu de configuration générale : `Cfg`->`Configuration generale`). Il faut alors cliquer sur le bouton `OK` pour que la commande soit recopiée dans la ligne de commande à condition que le curseur soit dans une ligne de commande.
    utoriel.tex Vous pouvez aussi cliquer sur le bouton `Details` pour afficher la page du manuel correspondant à la commande dans votre navigateur.
  - ouvrir automatiquement la page correspondante du manuel dans votre navigateur, en cochant la case `Aide HTML automatique` dans le menu de configuration générale (`Cfg`-> `Configuration generale`).

Le menu `Aide` contient les différentes formes d’aide possible : un guide de l’utilisateur (interface), un guide de référence (`Manuels->Calcul formel`, aide detaillée sur chaque commande), un `Index` (liste des commandes classées par ordre alphabétique avec une ligne d’entrée permettant de se déplacer facilement) et une recherche par mots clefs.

Si vous connaissez déjà le nom d’une commande et que vous désirez vérifier sa syntaxe (par exemple `factor`), vous pouvez saisir le début du nom de commande (disons `fact`) puis taper sur la touche de tabulation (située à gauche de la touche A sur un clavier français) ou cliquer sur le bouton `?` en haut à gauche. L’index des commandes apparaît alors dans une fenêtre, positionné à la première complétion possible, avec une aide succinte sur chaque commande. Par exemple, vous voulez factoriser un polynôme, vous supposez que le nom de commande commence par `fact`, vous tapez donc `fact` puis la touche de tabulation, vous sélectionnez à la souris `factor` (ou un des exemples) puis vous cliquez sur OK.

Vous pouvez aussi saisir `?factor` pour avoir l’aide succinte en réponse. Si le nom que vous avez saisi n’est pas reconnu, des commandes proches vous sont suggérées.

### 1.3 Entrer des commandes

L’exécution d’une ligne se fait simplement par la touche "Entrée". Si on ne souhaite pas afficher le résultat, on termine la ligne de commande par `:;` et on valide avec "Entrée". On peut éditer plusieurs commandes à la file avant leur exécution à condition de les séparer par un point-virgule.

Au début, de nombreuses erreurs proviennent d’une mauvaise traduction des mathématiques : `Xcas` ne peut pas les comprendre telles que vous les écrivez. Votre clavier vous permet de taper ax2+bx+c, mais votre ordinateur ne peut pas comprendre que vous souhaitez élever x au carré, le multiplier par a, etc… Vous devez spécifier chaque opération, et la syntaxe correcte est `a*x^2+b*x+c`. La multiplication doit être notée par une étoile dans les commandes, mais est notée par un point dans les réponses. Nous insistons sur le fait que pour `Xcas`, `ax` est une variable dont le nom comporte deux lettres, et pas le produit de `a` par `x`.

Opérations
`+` | addition
`-` | soustraction
`*` | mutiplication
`/` | division
`^` | puissance

Modulo quelques précautions, l’écriture des formules est assez directe. Les parenthèses ont le sens usuel pour spécifier l’ordre des opérations. Les crochets sont réservés aux listes et aux indices. Les priorités entre opérations sont standard (la multiplication est prioritaire sur l’addition, la puissance sur la multiplication). Par exemple :

- `2*a+b` retourne 2· a+b
- `a/2*b` retourne a· b/2
- `a/2/b` retourne a/ 2/b
- `normal(a/2/b)` retourne a/2· b
- `a^2*b` retourne a2· b

Dans le doute, il est toujours prudent de mettre des parenthèses pour s’assurer que l’ordre des opérations est celui souhaité.

Les commandes sont numérotées, ainsi que les réponses, mais, si vous avez modifié une ligne de commande, celle-ci garde le numéro qu’elle avait. On peut rappeler par `ans()` (answer) la réponse précédente c’est à dire la réponse de la dernière commande évaluée.