(Fonctions, Tests, Boucles, Listes et Matrices, Avancé)

Memento: Programmation

Instructions élémentaires


On sépare les différentes instructions avec des ; Mise à part l'affectation, la syntaxe par défaut de giac/xcas est celle du C.

Fonctions

  1. Dans une fonction les variables non explicitement déclarées locales grâce à l'instruction local sont globales.
  2. Les variables locales doivent être initialisées. Donc pour utiliser un symbole formel dans une fonction, soit on utilisera une variable globale qui n'a pas été affectée, soit on fera comme dans l'exemple rfact ci dessous.
  3. Les blocs d'instructions sont entre des { }. On peut aller à la ligne dans un même bloc.
  4. Le programme retourne la dernière instruction. return est facultatif.
  5. N'utilisez pas i comme variable dans une bloucle car il est réservé pour le nombre complexe racine de -1.

Tests

Boucles principales


NB: Les parenthèses et accolades dans for, while sont obligatoires.

Séquences ( , , ) et Listes [ , , ] et Matrices

Les séquences et listes sont numérotées à partir de 0 (sauf en mode maple). on accède aux éléments avec des crochets:
a[0] est le premier élément de la liste ou séquence a

Les séquences ( , , ) sont des objets ordonnés séparés par des virgules. Les parenthèses sont simplifiées. Les opérations +,* ... n'ont rien à voir avec celles des vecteurs

Les listes [ , , ] sont des objets entre crochets séparés par des virgules. Les objets sont ordonnés et aucun crochet n'est simplifié. On les utilise pour les vecteurs et les matrices.

Une matrice [[ , , ],[ , ,]]est donnée par la liste de ses lignes entre crochets. Chaque ligne est entre crochets séparée par des virgules. Ci dessous les matrices m1 et m2 sont identiques et ont 2 lignes 5 colonnes.

Notions avancées

  • L'affectation := est une affectation par valeurs. Elle recopie les données, même avec des listes ou matrices.
  • Pour des raisons d'efficacité, on dispose aussi d'une affectation par référence:
  • =< est l'affectation par référence:
    Ex: a:=[1,2,3];b=<a;b[1]=<0;
    maintenant a vaut aussi [1,0,3]. En revanche, si l'on avait fait b[1]:=0 cela aurait crée une nouvelle liste b par recopie et a n'aurait pas été modifié
  • # permet de créer une variable à partir d'une chaine de caractères:
    Ex1: "a1"est une chaine de caractères et #"a1" est une variable.
    Ex2: S:=sum(#("a"+j),j=0..9);normal(S^5); développe (a0+a1+...+a9)^5.
  • Les syntaxes de programmation de type maple:
    Ces syntaxes sont déconseillées si l'on n'est pas en mode maple. Par exemple en mode xcas dans le cas du while, condi n'a pas le droit d'être entre parenthèses.
    • if condi then instrutions fi
    • for j from 1 to 5 do instruc od
    • while condi do instrutions od