IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

Quelle est la fonction qui calcule la puissance d'un nombre ?


Sujet :

Langage Pascal

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 258
    Points : 54
    Points
    54
    Par défaut Quelle est la fonction qui calcule la puissance d'un nombre ?
    slt,
    quelle est la fonction qui calcule la puissance d'un Nbr

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par messahel Voir le message
    slt,
    quelle est la fonction qui calcule la puissance d'un Nbr
    ça n'existe pas en pascal standard.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 258
    Points : 54
    Points
    54
    Par défaut
    et en delphi, quelle est la fonction

  4. #4
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Power pour les puissances réelles positives, et IntPower pour les puissances entières relatives.

  5. #5
    Membre averti
    Avatar de Mic**
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 409
    Points
    409
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par messahel Voir le message
    slt,
    quelle est la fonction qui calcule la puissance d'un Nbr
    On peut faire une fonction ou une procédure comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    PROGRAM PUIS;{Eleve un nombre Y … la puissance X}
    Uses Crt;
    Var
    X:Integer;
    Y,Y1:Real;
     
    Procedure puisX(X:Integer;Y:Real);
    Var Bcl:Integer;
    Begin
    Y1:= Y;
    for Bcl := 1 to X-1 do
    Y:= Y*Y1;
    WriteLn(Y:15:2);    {Affichage de Y format‚ a 2 decimales apres virgule}
    End;
     
    BEGIN
    ClrScr;
    puisX(4,12.5);{ 12.5 a la puissance 4}
    Readln;{ attend Entree pour quitter le programme}
    END.
    A++ Mic**

  6. #6
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    je ne vois pas trop l'intérêt de créer une nouvelle fonction alors qu'il suffit d'écrire :
    exp(X*ln(Y))
    qui donne Y puissance X.
    Ce n'est pas plus long que d'écrire Puissance(X,Y) ce qui suppose que la fonction "Puissance" ait été déclarée.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Gie,
    Citation Envoyé par JJJJJ Voir le message
    Bonjour,

    je ne vois pas trop l'intérêt de créer une nouvelle fonction alors qu'il suffit d'écrire :
    exp(X*ln(Y))
    qui donne Y puissance X.
    Ce n'est pas plus long que d'écrire Puissance(X,Y) ce qui suppose que la fonction "Puissance" ait été déclarée.
    Certes, mais il y a un os.

    En codant une fonction puissance, on peut la sécuriser, alors qu'avec ta formule, que va-t-il se passer si Y <= 0 ?

    Boum !!!

    Un programme bien conçu doit toujours prendre en compte les exceptions prévisibles, et essayer d'éviter les autres.

  8. #8
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Citation Envoyé par JJJJJ Voir le message
    Bonjour,

    je ne vois pas trop l'intérêt de créer une nouvelle fonction alors qu'il suffit d'écrire :
    exp(X*ln(Y))
    qui donne Y puissance X.
    Ce n'est pas plus long que d'écrire Puissance(X,Y) ce qui suppose que la fonction "Puissance" ait été déclarée.
    Tu soulèves là un vrai problème mathématique, qui explique pourquoi Delphi définit deux fonctions. La définition que tu donnes est la définition utilisée en analyse, qui n'est valable que pour des puissances réelles d'un nombre strictement positif (ensemble de définition du logarithme).
    Il existe une autre définition, algébrique, qui marche pour n'importe quel nombre x positif ou négatif, éventuellement non nul :

    • x^n=x*x*...*x (n facteurs) pour n entier strictement positif, x quelconque [ex : 2^3=8],
    • x^0=1 pour x quelconque non nul [ex : 3 2541 784 632^0 = 1],
    • x^n=1/(x^(-n)) pour x quelconque non nul et n entier strictement négatif (donc -n positif ) [ex : 2^(-4)=1/16=0,0625],


    Citation Envoyé par Mic** Voir le message
    On peut faire une fonction ou une procédure comme suit:
    Ta fonction ne marche que pour le premier cas : quid de la puissance nulle et des puissances négatives ? Elle renverra toujours x, ce qui n'est pas seulement limité, mais faux !

    Citation Envoyé par droggo Voir le message
    Certes, mais il y a un os.
    En codant une fonction puissance, on peut la sécuriser, alors qu'avec ta formule, que va-t-il se passer si Y <= 0 ?
    Sous FreePascal, cela déclenchera une exception qu'on pourra gérer en aval !

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Gei,
    Citation Envoyé par CapJack Voir le message
    Sous FreePascal, cela déclenchera une exception qu'on pourra gérer en aval !
    Oui, mais je ne pense pas que JJJJJ avait ça en tête, et encore faut-il que le programmeur soit conscient de devoir intercepter cette exception.

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    pow(x,n) cela veu dire x ala puissance n. donc si tas un nombre et tu veu calculer sa puissance ta qapliqer cela.
    32 est par exemple pow(2,5).

    je crois qavec ceci il te suffit juste de declare les variables et tout le reste et tu auras ce que tu cherche.

  11. #11
    Membre averti
    Avatar de Mic**
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 409
    Points
    409
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par CapJack Voir le message
    Tu soulèves là un vrai problème mathématique, qui explique pourquoi Delphi définit deux fonctions. La définition que tu donnes est la définition utilisée en analyse, qui n'est valable que pour des puissances réelles d'un nombre strictement positif (ensemble de définition du logarithme).
    Il existe une autre définition, algébrique, qui marche pour n'importe quel nombre x positif ou négatif, éventuellement non nul :

    • x^n=x*x*...*x (n facteurs) pour n entier strictement positif, x quelconque [ex : 2^3=8],
    • x^0=1 pour x quelconque non nul [ex : 3 2541 784 632^0 = 1],
    • x^n=1/(x^(-n)) pour x quelconque non nul et n entier strictement négatif (donc -n positif ) [ex : 2^(-4)=1/16=0,0625],


    Ta fonction ne marche que pour le premier cas : quid de la puissance nulle et des puissances négatives ? Elle renverra toujours x, ce qui n'est pas seulement limité, mais faux !


    Sous FreePascal, cela déclenchera une exception qu'on pourra gérer en aval !
    Je ne connaissais pas le calcul pour les -n , dans le cas de la procedure en Turbo Pascal citée, on peut faire un test de Y s' il est < 0 on applique ta dernière formule.

  12. #12
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut puissance
    function Power(const Base, Exponent: Extended): Extended;

  13. #13
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 564
    Points : 3 968
    Points
    3 968
    Par défaut
    Citation Envoyé par JJJJJ Voir le message
    Bonjour,

    je ne vois pas trop l'intérêt de créer une nouvelle fonction alors qu'il suffit d'écrire :
    exp(X*ln(Y))
    qui donne Y puissance X.
    Ce n'est pas plus long que d'écrire Puissance(X,Y) ce qui suppose que la fonction "Puissance" ait été déclarée.
    Autant écraser une mouche avec un rouleau compresseur, une fonction qui calcule directement la puissance avec une boucle est une solution tout à fait honnête, en turbo Pascal j'entend, car en Delphi et FreePascal tout est prêt.

    Cdlt

Discussions similaires

  1. quelle est la fonction qui retourne la partie date sans heure
    Par solawe dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/08/2007, 16h23
  2. Réponses: 11
    Dernier message: 09/05/2006, 10h34
  3. Quelle est cette commande qui plante linux?
    Par 123quatre dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 18/02/2006, 14h48
  4. Réponses: 2
    Dernier message: 06/12/2005, 10h34
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo