Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
862 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Somme en pascal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Somme en pascal

n°1058578
quasarXXX
Posté le 24-04-2005 à 14:05:59  profilanswer
 

Bonjour à tous,
 
Voila j'ai un autre problème,j'aimerais réaliser une somme en turbo pascal correspondant un peu à une série numérique.(du type 2+4+6+8... en choissant le nombre de termes)
 
J'ai alors écrit une petite procédure simple :
 
Procedure somme (a:integer);
 
for i:=1 to 7 do
begin
S:=2+2*i;
end;
 
Je pensais ainsi réaliser la somme successive suivante :
2+2+4+6+8+10+12+14
 
mais le résultat que me donne pascal est 16,c'est à dire qu'il ne réalise pas la boucle,il fait directement 2+2*7.
 
Comment réalise-t-on alors une somme en pascal avec une récurence telle que je l'ai présenté?
 
Merci beaucoup de votre aide.  :)

mood
Publicité
Posté le 24-04-2005 à 14:05:59  profilanswer
 

n°1058599
jagstang
Pa Capona ಠ_ಠ
Posté le 24-04-2005 à 14:37:36  profilanswer
 

en utilisant la notion de récursivité ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1058604
quasarXXX
Posté le 24-04-2005 à 14:41:33  profilanswer
 

je te remercie de ta réponse JagStang mais je pense avoir trouver,il faut faire non pas : S:=2+2*i;  
mais S:=S+2*i;
pour que la somme S mise en mémoire soit recalculé avec celle du calcul précédent.
;)  

n°1058608
jagstang
Pa Capona ಠ_ಠ
Posté le 24-04-2005 à 14:45:39  profilanswer
 

c'est bien sur possible, mais l'idée de récurence n'est pas illustrée dans ce cas.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1059081
quasarXXX
Posté le 24-04-2005 à 22:03:34  profilanswer
 

oui C'est vrai,
quelle est alors ton idée JagStang?

n°1059089
dreameddea​th
Posté le 24-04-2005 à 22:17:59  profilanswer
 

bah je pense que l'idée de Jag stang c'est de faire qqch du style

Code :
  1. function sumprod2(rank:integer):integer;
  2. begin
  3.    if(rank=0) then result:=0
  4.    else result:=2*rank + sumprod2(rank-1);
  5. end;
  6. begin
  7.   b:=sumprod2(7);
  8. end.


 
Voilà avec la récursion
 
++
 
Dreameddeath

n°1060900
Cate Winig​an
Paranormal activity detected.
Posté le 26-04-2005 à 10:19:53  profilanswer
 

Faut savoir quand même que lors de chaque appel de fonction, ya tout un tas d'opérations faites par le processeur pour construire le cadre de cette fonction : allocation de RAM pour les variables locales, sauvegarde des registres, empilage d'une adresse de retour pour que le programme sache où reprendre en sortant de la fonction, retour à la fonction appelante... Beaucoup d'opérations qui ne sont pas directement utiles au calcul, surtout pour un calcul aussi simple que celui présenté dans cet exemple. De plus, plus on récurse et plus on consomme de mémoire. Tant qu'on récurse pas beaucoup ça va, on a quand même des machines rapides avec plein de RAM.
 
Personnellement, pour des raisons d'optimisation en vitesse et en mémoire (de sécurité même : je risque pas de me retrouver à court de RAM), j'évite autant que possible la récursivité. Mais quand yen a besoin, j'hésite pas non plus.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Somme en pascal

 

Sujets relatifs
Pascal:unités[TURBO PASCAL] Need Help !
pivot gauss en PASCALAide programmation Pascal
Turbo pascal: exercice a résoudreTurbo pascal: problème pour résoudre un exercice
somme d'une colonnelogiciel R: pb somme de vecteurs
[pascal] calcul de dérivée ?Borland Pascal
Plus de sujets relatifs à : Somme en pascal


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR