| Download
All published worksheets from http://sagenb.org
Project: sagenb.org published worksheets
Views: 168744Image: ubuntu2004
Bienvenue sur l'interface graphique de Sage. Il s'agit d'une interface du type "question-réponse" qui ressemble à celles de tous les logiciels de calcul formel et numérique.
Dans une cellule, *Entrée* permet de sauter une ligne, *Maj+Entrée* permet d'évaluer le contenu de la cellule.
Pour ouvrir une nouvelle cellule, cliquez sur la zone bleue tout en bas de la feuille ou juste au-dessus d'une fenêtre préexistante. Pour supprimer une cellule, videz-la puis faites *Retour arrière*. Ouvrez puis fermez une cellule.
Le langage utilisé pour la programmation est le Python, dont on va faire des rappels. Souvenez-vous, l'assignation de variables utilise =, tandis que le test d'égalité utilise ==. Si l'interface plante à un moment ou à un autre, Faites *Save & Quit* puis ouvrez de nouveau la feuille.
Comme vous voyez, assigner une variable ne renvoie pas de valeur, et passer à la ligne permet de faire plusieurs commandes de suite. En revanche, seule la dernière sortie est affichée.
L'interêt de sage est la grande quantité de fonctions déjà présentes. Supposons qu'on cherche à savoir si a est un nombre premier, mais on ne connait pas la bonne commande. Dans ce cas, on tape *a.* puis *Tabulation* pour afficher une liste des fonctions fréquemment utilisées sur des entiers.
///
EXERCICE 1 : Essayez de trouver une fonction qui teste si a est premier (en anglais : "prime")
On cherche maintenant à savoir si a est une puissance de 5. Avec la touche *Tab*, on trouve la fonction "is_power_of", mais on ne sait pas l'utiliser. Ajouter ? permet d'obtenir la documentation de la fonction avec une description sommaire et les arguments requis.
Utiliser a.is_power_of(5) ou is_power_of(a,5) sont équivalents. Le premier est plus pratique pour trouver des fonctions inconnues avec *Tab*, mais ça ne marche que sur des variables.
Toutes les fonctionnalités du Python sont présentes : if, boucles for, boucles while, fonctions...
Pour les boucles for (répétition d'une action), la fonction range est bien pratique : range(n) va de 0 à n-1, range(a,b) va de a à b-1.
L'indentation (espace blanc au début d'une ligne) permet de définir les limites de la boucle.
EXERCICE 2 : Calculez la factorielle de 100, c'est-à-dire 1*2*3...*100, puis affichez le résultat.
Enfin, la boucle while, qui fonctionne de la même façon mais continue tant qu'une condition n'est pas remplie.
EXERCICE 3 : Écrire un algorithme qui calcule la plus petite puissance de 2 qui dépasse a. Indice : partez de 1, puis doublez jusqu'à dépasser a.
On va maintenant étudier quelques structures de données, à commencer par les listes. Une liste d'objets, par exemple d'entiers, permet de manipuler plusieurs objets à la fois.
Notez l'erreur explicite "list index out of range". Voyons maintenant quelques fonctions de base.
EXERCICE 4 : Construire une liste comprenant tous les entiers premiers de 0 à 100 en utilisant is_prime(i).
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
On peut même utiliser les listes comme arguments d'une boucle for.
Passons à un autre objet : les chaînes de caractères. Elles représentent du texte et sont utiles pour mieux décider de la sortie de nos programmes.
On peut concaténer deux chaînes avec +.
La fonction print permet de décider de ce qui est affiché en sortie. '\n' correspond à un saut de ligne, et on peut utiliser %d ou %s pour insérer un entier ou un chaîne, respectivement :
EXERCICE 5 : Programmez un algorithme qui parcourt une liste en écrivant 'La valeur () est / n"est pas un nombre premier' selon les cas (attention, ne pas utiliser d'apostrophe simple...).
EXERCICE 6 : La suite de Syracuse est définie par u(n+1) = u(n)/2 si u(n) est pair, 3u(n)+1 sinon. Programmez un algorithme qui calcule cette suite en partant d'une valeur quelconque, en imprimant à chaque étape la valeur par laquelle on passe, et s'arrête quand on a atteint 1. On pourra utiliser la fonction a.divides(b).
Enfin, utiliser des fonctions peut être utile pour éviter de trop faire grossir ses programmes et simplifier la lecture.
EXERCICE 7 : les fonctions peuvent prendre tous types d'entrée, par exemple une liste. En utilisant la fonction précédent, définir une fonction qui calcule le maximum d'une liste d'entiers donnée en entrée.
EXERCICE 8 : Manipulons True et False. On veut une fonction contient_x qui renvoie True si la chaîne d'entrée contient un x, False sinon. Indice : on peut "parcourir" une chaîne avec une boucle for comme une liste.