Apprendre Maple Travail dirigé 3
Programmation


 
  Page d'accueilPage d'accueil   RechercherRechercher   Forum de discussionForum de discussion   ContactContact   SommaireSommaire 
  Cours MapleCours Maple   Travaux dirigésTravaux dirigés   Thèmes d'activitésThèmes d'activités   Thèmes d'activitésMaplets
Ecran MapleEcran Maple  TéléchargementTéléchargement  BibliographieBibliographie  LiensLiens  


 

 

Page d'accueil   Travaux dirigés   << TD précédent   TD suivant >>


TD 3.1:

Corrigé TD 3.1

Écrire une procédure second_degré(a,b,c) qui résout l'équation du second degré à

coefficients réels: a*x^2+b*x+c = 0 en distinguant 3 cas selon le signe du discriminant.

 


TD 3.2:

Corrigé TD 3.2

Écrire une procédure somme(n) calculant récursivement la somme des entiers de 0 à n , pour

n entier naturel donné.

 


TD 3.3:

Corrigé TD 3.3

Écrire une procédure renverser(n) , qui , étant donné un entier naturel n ne comportant pas de

0 dans son écriture décimale , rend pour résultat l'écriture renversée de cet entier .

Prévoir un message d'erreur si l'entier comporte le chiffre 0.

 

Exemple:

> renverser(122564);

465221

> renverser(120325);

Error, (in renverser) le chiffre 0 n'est pas autorisé.

 


TD 3.4:

Corrigé TD 3.4

Écrire un module segment permettant de modéliser un segment du plan, défini par ses deux
points extrémités.Ce module comportera des variables locales exportées rendant comme
résultat la première et la seconde extrémité du segment, sa longueur, et son milieu.
On pourra utiliser le module défini par la procédure
pnt de l'exercice corrigé 3.2 .

 


 

Corrigé du Travail dirigé 3:

TD 3.1:

Énoncé TD 3.1

> second_degre:=proc(a,b,c)
        local delta;
            if a=0 then
                error "a doit être non nul"
            else
                delta:=b^2-4*a*c;
                if delta<0 then print(`pas de solution`)
                    elif delta=0 then print(`racine double `,x=-b/(2*a))
                    else print(`2 racines distinctes `, x=(-b-sqrt(delta))/(2*a),x=(-b+sqrt(delta))/(2*a))
                end if;
            end if;
    end proc;

second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...
second_degre := proc (a, b, c) local delta; if a = ...

> second_degre(0,2,4);

Error, (in second_degre) a doit être non nul

> second_degre(1,7,2);

`2 racines distinctes `, x = -7/2-1/2*sqrt(41), x =...

> second_degre(4,4,1);

`racine double `, x = -1/2

> second_degre(1,1,4);

`pas de solution`

 


TD 3.2:

Énoncé TD 3.2

La récursivité est fondée sur la formule: somme( n )= n +somme( n-1 ) pour 1 <= n et

somme(0)=0.

 

> somme:=proc(n::nonnegint)
        if n=0 then 0 else n+somme(n-1) end if;
    end proc;

somme := proc (n::nonnegint) if n = 0 then 0 else n...

> somme(20);

210

 


TD 3.3:

Énoncé TD 3.3

> renverser:=proc(n::posint)
        local a,i,L,n1,n2;
            n2:=0;n1:=n;
            L:=floor(ln(n)/ln(10))+1; # longueur du nombre n
            for i from L-1 to 0 by -1 do
                a:=floor(n1/(10^i));
                if a=0 then error "le chiffre 0 n'est pas autorisé" else
                    n2:=n2+10^(L-1-i)*a;
                    n1:=n1-a*10^i;
                end if
            end do;
            n2
    end proc;

renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...
renverser := proc (n::posint) local a, i, L, n1, n2...

> renverser(122564);

465221

> renverser(120325);

Error, (in renverser) le chiffre 0 n'est pas autorisé


TD 3.4:

Énoncé TD 3.4

On utilise la procédure pnt de l'exercice corrigé 3.2 :

 

> pnt:=proc(x,y)
        module()
            export abscisse,ordonnee;
                abscisse:=()->x;
                ordonnee:=()->y;
        end module
    end proc;

pnt := proc (x, y) module () export abscisse, ordon...

 

> segment:=proc(p1,p2)
        module()
            export point1,point2,longueur,milieu;
                point1:=()->p1;
                point2:=()->p2;                         
                longueur:=()->sqrt((p1:-abscisse()-p2:-abscisse())^2+(p1:-ordonnee()-p2:-ordonnee())^2);
                milieu:=()->pnt((p1:-abscisse()+p2:-abscisse())/2,(p1:-ordonnee()+p2:-ordonnee())/2);
        end module
    end proc;

segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...
segment := proc (p1, p2) module () export point1, p...

 

Etude d'un exemple:

 

> A:=pnt(a,b):B:=pnt(c,d):

> S:=segment(A,B);

S := module () export point1, point2, longueur, mil...

> S:-point1(),S:-point2();

A, B

> S:-longueur();

sqrt(a^2-2*a*c+c^2+b^2-2*b*d+d^2)

> M:=S:-milieu();

M := module () export abscisse, ordonnee; end modul...

> M:-abscisse(),M:-ordonnee();

1/2*a+1/2*c, 1/2*b+1/2*d

 

 

 

 

haut de cette page


©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.