1. SYNTAXE GÉNÉRALE
1.1. Plusieurs instructions par ligne :.Utiliser un point-virgule :
sage: 1+1; 2+2;
2 4
1.2. Commenter une ligne sans qu’elle soit lue par Sage :.Utiliser le caractère croisillon « # » :
sage: 2*3; 3*4; 4*5 # Trois résultats sont attendus 6
12 20
1.3. Effectuer plusieurs retours à la ligne avant d’exécuter une commande :.
Utiliser le caractère «\» : sage: 123 + \ ....: 345 468
1.4. Supprimer l’affectation d’une variable :.
sage: del x
1.5. Ré-initialiser l’ensemble des variables :.
sage: reset()
1.6. Substituer, Permuter :.Méthode économique : sage: (a, b) = (b, a)
• Exemple :
1
• Méthode équivalente, standard : Employer une variable auxiliaire dotée d’un autrenom :
sage: auxiliaire = a; a = b; b = auxiliaire
1.7. Tester (comparer) l’égalité entre deux objets :.Utiliser le signe égal double
«==»
sage: 2+2 == 2^2, 3*3 = 3^3 (True, False)
1.8. Affecter une valeur à une variable :.Utiliser le signe égal simple «=»
sage: y = 3; y = 3*y + 1; y = 3*y + 1; y 31
• Explication : La partie à droite du symbole «=» est d’abord évaluée, puis sa va- leur est mémorisée dans la variable dont le nom est à gauche.
1.9. Tableau de syntaxe générale :.
1.10. Caractères spéciaux :.
1.11. Deux symboles équivalents pour écrire « différent » :.
2 ! = 1 et 2 <> 1.
1.12. Parenthèses :.
• Nécessaires pour évaluer une fonction : sage: cos(pi)
• Nécessaire pour oublier : sage: forget()
• Nécessaire pour ré-initialiser l’ensemble des variables : sage: reset()
• Facultatif pour la commande print :
sage: print(25) 25
sage: print 32 32
2. ALGORITHMIQUE ETINDENTATION
2.1. Programmation :.La programmation structurée écrit des programme infor- matiques, qui consistent en une collection finie d’instructionseffectuées les unes à la suite des autres.
Ces instructions peuvent êtreélémentairesoucomposées.
peuvent elles-mêmes être simples ou composées.
2.2. Indentation :.Avec Sage, il importe au plus haut point destructurer rigou- reusement l’indentation1, parce qu’elle possède unesignification pour la ma- chine, comme cela se voit dans lesboucles.
3. BOUCLES
3.1. Boucles d’énumération..
• Illustration de l’importance de l’indentation par deux exemples :
• Les calculs correspondants diffèrent : S = 2 0 + 1 + 2 + 3
= 12 S = 2 (3 + 2 (2 + 2 (0 + 1))) = 22.
3.2. Importance cruciale des « : ».Les deux points « : » à la fin de la première ligne qui introduit un bloc d’instructions annoncent le bloc, et sont d’une importance cruciale pour le langage de Sage.
3.3. Boucles « tant que ».. Voici un exemple très typique de l’utilisation de la boucle « tant que » :
sage: x = 10^4; u = 1; n = 0 sage: while u <= x:
n = n+1 u = 2*u sage: n
1. En informatique, l’indentationdésigne la disposition particulière du texte d’un programme faisant apparaître des décalages de la marge dans l’écriture des divers blocs, les diverses lon- gueurs étant rigoureusement les mêmes pour chaque bloc.
Sn = 1 + 2 + 3 +· · ·+n tant que l’exponentielle den:
en < 106
reste inférieure à un million, ce qui s’arrête àn = 13, puisque : e13≈442 413 < 106 < e14 ≈ 1 202 604, et donc on doit obtenir :
12+ 22+· · ·+ 132 = 13(13 + 1) 2
= 819
3.4. Boucles « for » et suites..Encore un autre exemple, concernant l’itération de la suite défine paru0 := 1et :
un+1 = 1 1 +u2n.
3.5. Approche numérique et approche formelle..Soit à calculer : Sn =
n
X
k=1
(2k) (2k+ 1)
= 2·3 + 4·5 +· · ·+ (2n)·(2n+ 1),
ce qui peut aussi se formuler sous forme d’une suite, en partant deS0 = 0: Sn = Sn−1+ (2n)·(2n+ 1).
Une première approche consiste à calculer ces sommes itérativement pour une valeur fixée concrète de l’entiern:
• Mais si l’on souhaite une expression close valable pout tout entiern, il faut pro- céder différemment :
4. TESTS
4.1. Structure générale :.
4.2. Exemple :.
À ce jour, on ignore si, pour tout choix deu0 ∈ N∗, la suite converge toujours vers le cycle :
17−→27−→47−→17−→ · · · ,
mais les ordinateurs sont suffisamment simplets pour tester la conjecture en par- tant de n’importe quelu0fini concret, par exemple en partant deu0 = 6.
sage: u = 6; n = 0
sage: while u != 1: # test "différent de", symbole alternatif: <>
....: if u % 2 == 0 # reste de la division euclidienne ....: u = u//2 # quotient de la division euclidienne
....: else:
....: u = 3*u+1
4.3. Utilisation d’un « print-espion » :.
sage: u = 6; n = 0 sage: while u != 1:
....: if u % 2 == 0
....: u = u//2
....: else:
....: u = 3*u+1
....: n = n+1 ....: print u, n sage: n
8
4.4. Imbrication des boucles « if . . .else . . .if . . .else » :.
5. PROCÉDURES ET FONCTIONS
sage: fonction(a,2*a) 5*a^2
RÉFÉRENCES
[1] Casamayou, A. ; Cohen, N. ; Connan, G. ; Dumont, T. ; Fousse, L. ; Maltey, F. ; Meulien, M. ; Mezzarobba, M. ; Pernet, C. ; Thiéry, N. ; Zimmermann, P. :Calcul mathématique avec Sage, Creative Commons, 2014, xii+460 pp.