• Aucun résultat trouvé

Eléments de syntaxe du langage de programmation Maple

N/A
N/A
Protected

Academic year: 2022

Partager "Eléments de syntaxe du langage de programmation Maple"

Copied!
4
0
0

Texte intégral

(1)

Informatique 2011-2012 : TP Maple 1 (10/10 et 17/10) MPSI B Hoche

Eléments de syntaxe du langage de programmation Maple

Test

machin1

machin2

truc1

truc2

V F

suite

if test then machin1;

machin2;

else truc1;

truc2;

fi;

suite;

Fig. 1 – structure de contrôle "if"

Vous pouvez utiliser les feuilles de calcul Psyntelem.mw et Psyntelem.mws (té- lécharger et enregistrer avant d’ouvrir).

Une session de travail maple est un document qui mélange du texte inerte et des enchaînements d’instructions qui peuvent être exécutées. En ce qui concerne le texte inerte, le logiciel dispose de fonctionnalité de type traitement de texte (paragraphes, styles, ...).

Il faut savoir passer du mode "texte" au mode "intructions".

Une intruction commence par un >

> bouh! ; est une instruction.

Une instruction doit toujours se terminer par un " ;" (ou un " :").

Pour exécuter une instruction, il suffit de placer le curseur n’importe où dans la ligne la contenant et appuyer sur la touche "entrée".

En réponse à l’exécution, Maple modifie son état et affiche (en bleu ou en rouge violet) une réponse. Une réponse en violet traduit une erreur de syntaxe et vous donne des indications sur le type de l’erreur. Une réponse en bleu signifie que l’instruction s’est bien exécutée ce qui ne veut pas dire qu’elle a fait ce que vous pensiez qu’elle ferait. Il faut toujours lire et chercher à comprendre cette réponse il NE SERT JAMAIS À RIEN DE L’EFFACER. Si la réponse n’est pas celle que vous attendez, corrigez l’instruction et exécutez à nouveau.

Les instructions sont sensibles aux majuscules.

Si vous voulez exécuter successivement plusieurs instructions. Il est conseillé de les placer dans une zone d’exécution. Pour cela, à la fin d’une ligne, au lieu d’appuyer sur "entrée" pour aller à la ligne (ce qui provoquerait l’exécution) il faut appuher sur "shift (flèche vers le haut comme pour les majuscules) entrée". Vous allez alors à la ligne sans exécuter. La zone d’exécution est matérialisée par une ligne verticale sur la gauche. Pour exécuter les instructions, placer le curseur n’importe où dans la zone et appuyer sur "entrée".

Maple n’interprète pas les espaces dans une commande ce qui permet l’indentation.

Il s’agit d’une règle de présentation du code qui consiste aligner à gauche des lignes de même niveau d’imbrication et à ajouter des espaces (par exemple deux espaces ou une tabulation) en début de ligne chaque fois que l’on augmente le niveau.

Vous devrez OBLIGATOIREMENT indenter votre code.

Voila quelques éléments de syntaxe utiles au débutant :

# commentaire. Un commentaire n’est pas exécuté.

; fin d’instruction avec affichage.

: fin d’instruction sans affichage.

:= assignation. Le code pour le symbole ←− des diagrammes.

Vous pouvez aussi commencer à manipuler les éléments suivants.

pi la lettre. Utilisée seule, elle est par défaut le nom d’une variable Pi le nom (réservé par Maple) du nombre célèbre

Digits la variable (réservé par Maple) désignant le nombre de décimales utilisé dans les calculs en virgule flottante (décimaux).

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

1

Rémy Nicolai TP1101

(2)

Informatique 2011-2012 : TP Maple 1 (10/10 et 17/10) MPSI B Hoche

evalf(expression) la fonction d’évaluation décimale (floating) d’une expression.

irem(a,b) le reste de la division euclidienne de a par b. Il s’agit de la division des nombres entiers (i : integer, rem : remainder).

iquo(a,b) le quotient de la division euclidienne entière de a par b.

Exécutez les commandes suivantes

> Pi; cos(x); cos(Pi);

> evalf(Pi); evalf(pi);

> Digits :=2; evalf(Pi);

> Digits :=200; evalf(Pi);

> Pi := 3.14;

et comprenez les réponses.

Test

inst 1

Inst 2 F

V

suite

while test do inst1;

inst2;

od;

suite;

Fig. 2 – boucle "while"

i <−− 0

i <= n

inst1

inst2

i <−− i+1

suite V

F

for i from 0 to n do inst1;

inst2;

od;

suite;

Fig. 3 – boucle "for"

Implémentation de la structure de contrôle : "if"

Certaines configurations d’enchaînements d’instructions se retrouvent souvent.

La structure de contrôle "if" est implémentée dans la figure 1 en schéma conven- tionnel et en syntaxe maple.

Implémentation des boucles : "while", "for"

La figure 2 implémente la boucle "while".

La boucle "for" est en fait d’une boucle "while" particulière dite non conditionnelle.

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

2

Rémy Nicolai TP1101

(3)

Informatique 2011-2012 : TP Maple 1 (10/10 et 17/10) MPSI B Hoche

On sait à l’avance combien de fois on doit exécuter une séquence d’instructions donnée et on utilise un compteur qui est incrémenté automatiquement. On peut toujours l’implémenter aussi avec une boucle "while" :

i:= 0;

while i <= n do inst1;

inst2;

i := i+1;

od;

suite;

Intervertir deux variables

On est très amené à intervertir les noms (deux variables) de deux objets. Evi- demment, il ne faut perdre aucun de ces deux objets. On peut se figurer la situation

Fig. 4 – Intervertir deux récipients

en regardant les variables comme des récipients contenant les objets. Le problème est d’intervertir les deux récipients. Un troisième est clairement indispensable.

On dispose de trois variables : var1 , var2 , vartemp. On vous demande d’écrire, avec un diagramme puis en syntaxe Maple, un enchainement de trois instructions tel que

– avant l’exécution : var1 désigne l’objet obj1 et var2 désigne l’objet obj2 – après l’exécution : var1 désigne l’objet obj2 et var2 désigne l’objet obj1 Vous devez ensuite implémenter ces instructions sur un exemple dans votre feuille de calcul.

Itérations d’une fonction

Soit f une fonction, on cherche à calculer un objet de la forme f f ◦ · · · ◦ f (x)

Suivant les configurations des espaces de départ et d’arrivée et les propriétés de la fonction, il n’est pas du tout certain qu’un tel objet existe toujours.

Vous disposez de la variable xini qui désigne la valeur initiale que vous voulez itérer, de la variable x qui désigne les valeurs itérées, de est_dans_le_domaine (x) qui renvoie vrai ou faux, de f(x) qui renvoie l’image par f de la valeur désignée par x et de print(x) qui affiche la valeur de x.

1. Former un diagramme (rectangles, losange, flèches) affichant tous les itérés possibles de la valeur de xini. Il est à noter que cet algorithme peut ne jamais s’arrêter.

2. Ici la valeur initiale ainsi que toutes les images par f sont dans le domaine de f de sorte que les itérations sont toujours possibles.

Vous devez former un diagramme affichant seulement la valeur après la n ième itération. Vous disposez de la variable n désignant le nombre d’itérations à effectuer et d’une variable i (souvent appelée compteur).

3. Dans cette question aussi, les images par f sont toujours dans le domaine de f de sorte que les itérations sont toujours possibles. De plus, vous savez que la suite des valeurs est convergente. Vous devez former un diagramme affichant seulement le premier itéré tel que la valeur absolue de la différence avec l’itéré précédent soit inférieure à 10

−9

. Vous disposez d’une nouvelle variable xx en plus de celles de la question 1.

4. On se replace dans les conditions de la question 2. On veut cette fois conserver une trace de tous les itérés calculés en utilisant un objet du type tableau (array) indexé de 1 à n. Former un diagramme réalisant cela.

5. Toujours dans les conditions de la question 2, on veut cette fois utiliser une séquence. Pour cela, on place les itérés de gauche à droite (en les séparant par des virgules) dans un objet désigné par Res. Former un diagramme réalisant cela.

6. Implémenter en syntaxe Maple et exécuter les algorithmes des questions 2.

3. 4. 5. pour la fonction cos avec 1.0 comme valeur initiale.

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

3

Rémy Nicolai TP1101

(4)

Informatique 2011-2012 : TP Maple 1 (10/10 et 17/10) MPSI B Hoche

Transformation de Lehmer

On considère l’application f définie par : C \ R C

z

−b Re(z) Im(z) c + i

z

Pour tout nombre réel x, on désigne par bxc la partie entière de x c’est à dire l’unique entier relatif n tel que

n x < n + 1

La syntaxe Maple de la fonction partie entière est floor(x), celle des parties réelle et imaginaire est simplement Re et Im.

On admet que si les parties réelles et imaginaires de z

0

sont des entiers relatifs, un des itérés de z

0

est réel et le processus s’arrête.

Lorsque z désigne un itéré non réel, on note

n = b Re(z)

Im(z) c α =

 

 

arctan 1

n si n 6= 0 π

2 si n = 0

On veut exprimer formellement la somme des α pour tous les itérés possibles puis la comparer numériquement à

arctan Im z

0

Re z

0

Pour ne pas être géné par les problèmes de syntaxe, former d’abord un diagramme avant d’implémenter en Maple. Pour comparer les valeurs numériques de la somme avec l’expression en arctan, utiliser la fonction evalf.

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

4

Rémy Nicolai TP1101

Références

Documents relatifs

Cette relation permet de dénir le Pfaen d'un endomorphisme antisymétrique : il s'agit du Pfaen de sa matrice écrite dans n'importe qu'elle base orthonormée directe ; la quantité

La déclaration de la classe sera écrite dans un fichier d'en-tête (.h), contenant éventuellement quelques petites fonctions en ligne. Le corps des fonctions membres de cette

Plusieurs instances de cette classe devront référencer le même objet en mémoire : définition d'une sous-classe assistante, associant l'adresse réelle de l'objet et un compteur...

Une pile représente un ensemble de données où l'on ne peut accéder qu'au dernier élément entré, qui devient donc le premier à sortir. On les appelle parfois LIFO (last in

A présent le code peut s'utiliser pour afficher tous les éléments d'une liste d'entiers différents de -5, tous les éléments d'un tableau de chaînes de moins de trois

sinon si valeur dans feuille courante &lt; valeur à ajouter Prend branche gauche comme nouvelle racine Ajout. sinon si valeur dans feuille courante &gt; valeur à ajouter Prend

parenthèse ouvrante : on remarque que l'utilisation d'une pile peut simplifier la gestion des parenthèses pour la construction de l'arbre..... 15

• Arbre de recherche suivant la valeur Facile à programmer Très rapide à chercher Espace mémoire moyen Aucune n'est préférable, le contexte. décidera de la