|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() |
Voilà, j'ai créé un logiciel en Pascal qui permet de calculer la somme de deux entiers. En Pascal il ne faut pas dépasser 32767 mais avec ce programme on peut dépasser 32767.
Vos avis sur mon projet svp Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : novembre 2008 Messages : 14 ![]() |
sinon,
Code :
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() Inscription : avril 2002 Messages : 2 274 ![]() |
C'est un concours ?
![]() Code :
__________________
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal |
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Foe,
Il faut correctement présenter le code (indentation, aération par des lignes vides pour séparer les différents blocs, commentaires...) ET éclater tout ça en fonctions/procédures pour rendre le code plus facile à suivre. Comme il est écrit, je n'ai pas envie de plonger dans ton code.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : juillet 2007 Messages : 1 296 ![]() |
j' ai eu à faire une unité traitant toutes les operations basiques sur des grands entiers (300 chiffres) pour le besion de la cryptographie RSA. Le probleme qui se pose alors est le cout du calcul.
Je te donne en piece jointe cette unité. |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() |
ouiii mais c'est ma premier pas vers la programmation.
Merci a vous amis La prochaine fois ça sera améliorer |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Heo,
Pour implémenter une bibliothèque de calcul multi-précision, il faut oublier les char comme tu l'as fait, ce n'est absolument pas efficace (on peut éventuellement s'en servir pour tester les algorithmes, sans plus). Pour être efficace, il faut faire de l'assembleur (je ne connais aucun langage, et donc aucun compilateur capable d'optimiser ce genre de calcul), en faisant : - Le mot à traiter en une fois (au lieu de char) doit être le type natif du processeur (32 bits sur une machine 32, 64 sur 64... [pour le 64, sous réserve que le système d'exploitation soit lui-même en 64 bits, sinon ça posera des problèmes, et il faut alors se limiter à la taille maxi des mots pour l'OS]). - Ce mot doit être traité en non signé, pour profiter au maximum de la capacité du processeur. - Pour distinguer nombres positifs/négatifs, on ajoute un mot dans lequel on stocke le signe. - Pour connaître la longueur actuelle du nombre, encore un mot pour la stocker. Le tout stocké dans un tableau, qui peut être dynamique pour la souplesse, mais il faut alors être attentif pour les allocations (ne jamais diminuer l'allocation faite pour un tableau, sauf besoin impératif de mémoire, et lors de l'augmentation, ajouter une quantité suffisante pour ne pas avoir à recommencer à chaque tour de boucle [en général, on double la longueur réservée chaque fois qu'on a besoin de l'augmenter]) Bien entendu, cela implique d'écrire ce qu'il faut pour traduire une chaîne contenant le nombre au format de ces données, et inversement, mais c'est facile à faire, une fois qu'on a la division et la multiplication. Enfin, une fois les algorithmes "naïfs" implémentés, il faut implémenter des algorithmes plus performants, car il en existe qui permettent de gagner beaucoup en temps de calcul quand la taille des nombres augmente). Donc, bon courage si tu veux aller plus loin.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() ![]() Prof, développeur amateur vaguement éclairé... Inscription : mars 2004 Messages : 623 ![]() |
On peut aussi utiliser les bonnes vieilles instructions BCD (ou DCB en français) de l'assembleur x86. Je sais ce que tu vas me dire, droggo, c'est moins performant pour les calculs (encore que pour les additions/soustractions je n'en sois pas certain sur un processeur moderne), mais on gagne pour les conversions vers/depuis l'écriture décimale. N'ayant jamais tenté de programmer une multiplication/division en BCD, je ne sais pas pour ces opérations (je m'étais posé la question, mais n'ai jamais eu le temps de le faire).
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() |
Oui vous avez raisons.
Mais je suis débutant dans le monde de programmation pas à pas j'augmente mes connaissances. Merci pour vous |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Gai,
Citation:
Les conversions ne sont pas le problème de ce genre de bibliothèque, car dès qu'on s'en sert pour des calculs effectifs, donc enchaînés, etc., les conversions ne représentent qu'une toute petite partie de l'exécution (j'ai des programmes qui calculent plusieurs heures ou jours entre 2 conversions Ma remarque était destinée à t'orienter, pas à te reprocher ce que tu as fait concernant la possibilité de calculer sans limite de taille.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() |
je crois qu'il faut avoir des chose avant de programmer en pascal par exemple des cours d'algorithme.....
svp que ce qu'il faut faire.... c'est mieux d'étudier assembleur avant le pascal ou directement vers le c ou avoir une formation en algo !!!!!!!!!!!. Aidez moi donnez moi un schéma à suivre pour être un excellent programmeur |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2004 Messages : 1 964 ![]() |
Bonjour
Citation:
Citation:
Apres étudier un langage avant un autre comme Assembleur avant Pascal, le choc peut être brutal pour certains mais ça peut justement varier suivant les personnes et donc c'est possible à faire. Pascal déjà te montrera les bonnes bases de la programmation à avoir pour débuter encore l'Assembleur ou C sont encore plus stricte (l'assembleur ça pardonne pas ). Après faut savoir les objectifs qu'on s'est fixé pour choisir ....Cordialement
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! ! Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells |
||
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() |
Merci Krachik
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com