je vais voir si je peut faire sa ![]()
en gros je fait quoi ? 2 retour a la ligne pour chaque ligne de code ?
Finalement je pense pas qu'une fonction puissent avoir un impacte sur le code source non compilé dommage ![]()
En vrai tous les editeurs raisonnables ont une fonction d'indentation automatique.
En relisant mon message. C'est rien de personnel envers OP. C'est juste une constatation general.
Oui, comme Godrik le dit, normalement quand tu fais un saut de ligne (touche Enter), ton éditeur devrait te mettre au bon nombres d'alinéas !
« a ok quand je dis p =( p-1 )/2 ben en faite p = 1 puisque 1 =/= 2 bonjour la boucle infini »
« j'aime pas faire du cas par cas mais bon »
c'est ça LA précaution apprendre quand on utilise une méthode récursive (même si là tu codes ça de façon non récursive à l'aide d'une boucle) : s'assurer qu'on traite bien les cas d'arrêt !
Dans le cas de la puissance, tu as deux cas d'arrêt à traiter :
1) lorsque p devient 0,
2) lorsque p devient 1.
Caudheur: ça c'est du mythe. J'ai vu mes étudiants devant Dev-C++ et paie leur système d'indendation de merde. ![]()
Non mais devc++ n'est plus maintenu depuis des annees ou je me trompe ?
iLIKEto (putain ton pseudo est complique gars) tu es sur la bonne voie mais tu brules un peu des etapes j'ai bien peur que tu ne comprennes pas ton propre resultat mais qui sait...
Code blocks devrait indenter automatiquement a chaque retour a la ligne. Et on indente avec la touche tab pas avec des espaces !
Moi j'ai toujours dit : "code pas indente, code pas corrige"
Je passe mon chemin.....
tbop2: il me semble que si. Après, ce qui s'applique à Dev-C++ s'applique à Code::blocks bien souvent. ![]()
Et vous en pensez quoi de Notepad++?
Que ce n'est pas un IDE et que je ne le recommanderais pas d'emblee sans savoir ce que tu veux coder avec.
Chris en fait en regardant la page wiki (seul truc ou j'ai pu trouver des informations) il semble bien que le projet ait ete pendant tres longtemps inactif : http://en.wikipedia.org/wiki/Dev-C%2B%2B
Moi j'aime bien Visual Studio express, c'tout.
Que ce n'est pas un IDE , donc que c'est l'idéal pour débuter la programmation.
On notera l'évidente contradiction avec le message précédent.
tbop2: oui, mais en même temps un projet qui remplit son cahier des charges, tu veux qu'il se passe quoi (à part le fork vers code::blocks parce que forkeuh!!!!) ? ![]()
Il est en bonne voie mais mon Dieu que le code est complexe comparé à la version récursive qui fait 3 lignes et qui coule de source avec la définition Wikipédia!
Si on a compris les fonction la récursivité c'est pas bien compliqué, même sans avoir vu la récurrence en cours de math. Pour reprendre un exemple plus simple que la factorielle car j'avais oublié que l'OP était en seconde:
La somme des entiers de 1 à n:
somme(n)=
n si n < 2
Sinon ça vaut n + somme(n - 1)
En code ça donne:
int somme(int n)
{
if (n < 2)
return n;
else
return n + somme(n - 1);
}
Pour l'exponentiation rapide il suffit de traduire la définition wiki:
pow(a, b)=
1 si b = 0
pow(a * a, b / 2) si b est pair
a * pow(a * a, b / 2) si b est impair
en C.
Pour récurrence/récursivité j'y peut rien, je confonds souvent les mots. Dans le même genre j'ai souvent tendance à fourcher en disant librairie au lieu de bibliothèque(en parlant des bibliothèques de code), ce qui énerve beaucoup certaines personnes.
En ce qui concerne l'IDE je te conseille Visual Studio aussi c'est simple à utiliser, par contre CodeBlocks
.
hyrulink2: toi, tu n'as jamais fait chargé de TP de programmation, ça se voit.
En vrai, beaucoup d'étudiants que j'ai eu se sont comportés exactement comme iLIKEto sur ce thread. Donc son cheminement (qui certes n'est pas optimal en terme de développement de code) me parait normal et même sain pédagogiquement parlant.
Et non, le code récursif ne coule pas de source d'après Wikipedia. Il a fallu des millénaires à l'homme pour bien saisir le principe de récurrence. Si iLIKEto n'a pas vu ça en cours, il n'a pratiquement AUCUNE chance de réinventer ça tout seul, vraiment.
« souvent tendance à fourcher en disant librairie au lieu de bibliothèque(en parlant des bibliothèques de code), ce qui énerve beaucoup certaines personnes. »
j'avais cherché à un moment. Et à part le fait qu'on dise "library" en anglais courant, ce qui se traduit en "bibliothèque" en français, je n'ai aucun élément en faveur de l'un ou de l'autre (et j'emploie plutôt librairie).
Je n'ai jamais été chargé de tp mais les premiers 4 mois de tp de prog que j'ai eu en tant qu'étudiant ont été exclusivement orienté récursivité avec OCaml. Comme j'avais été habitué au raisonnement itératif avant de commencer les études d'info ça coinçait un peu au début mais les étudiant qui n'avaient jamais codé avant n'avaient aucun problème.
La définition Wikipédia qu'a donné tbop2( http://fr.wikipedia.org/wiki/Exponentiation_rapide#Algorithme ) il y a quelques messages est clairement récursive, c'est même indiqué "algorithme récursif"(je cite). Ce que l'OP essaie de faire c'est de dérécursiver l'algo, si ça c'est pas plus dur que d'implémenter une définition récursive je vois pas. Enfin bref j'ai été élevé à la récursivité ça doit surement influer sur ce que je considère comme plus simple.
Pour les bibliothèques tu verrait les réaction de certaines personnes quand on se trompe c'est assez marrant, c'est limite on affirme que la terre est plate.
tbop2 explique moi comment j'aurai pu programmer un code sans le comprendre ![]()
Mais je suis d'accord mieux vaut avancer prudemment ![]()
La je dl Visual Studio mais j'avoue que écrire mon code via notepad++ et le compilé moi même via console windows m'attire beaucoup ![]()
A se qu'on doit bien maîtrisé la console ou il y a juste quelque principe a comprendre ![]()
je vais aussi essayé d'amélioré ma fonction sqrt en utilisant ma fonction pow ![]()
"Que ce n'est pas un IDE , donc que c'est l'idéal pour débuter la programmation. "
Non mais ce se tient parfaitement aussi ne t'inquietes pas, tu remarques que ma reponse etait tout a fait prudente quand meme.
Ecarte toi loin de ces considerations de mon cher IDE prefere iLIKEto pour le moment et reste sur ton code::blocks, il n'y a aucun probleme.
"explique moi comment j'aurai pu programmer un code sans le comprendre"
Quelque part au moins tu as reussi a reproduire l'algorithme donc tu en as compris un peu quelque chose.
Concernant les vrais tenants et aboutissants j'ai deja retire ma proposition de faire une version recursive d'emblee car (cf. l'incroyablement longue discussion) c'est tout sauf une priorite a ton age, et vu ton niveau en programmation de s'embeter avec ca. Donc encore une fois je te le redis : indente, traduis, et fait un getInt et getFloat et passe au(x) chapitre(s) suivant(s).
Hyrulink: Je confirme tout comme toi que la majorite des gens n'ayant jamais vu de code de leur vie quand j'etais en prepa allait beaucoup plus naturellement vers les formes recursives que le mode iteratif (inversement pour ceux qui connaissaient un tout petit petit peu). Il semble qu'il y ait des SCI fortes dans l'experience ici :D
Apres notre experience sur deux labs est forcement moindre que les nombreux TP qu'a du dispense Chris dans sa vie.
DESOLE POUR LES FAUTES
« mais les étudiant qui n'avaient jamais codé » et qui ont eu tranquillement leur bac S « avant n'avaient aucun problème. ».
Coder récursivement quand on t'a tanné pendant un an avec la récurrence en maths, c'est naturel. Raisonner directement par récurrence, c'est complétement pas naturel en revanche (vraiment vraiment).
« Ce que l'OP essaie de faire c'est de dérécursiver l'algo, »
oui c'est ce que j'ai dit plus haut en qualifiant ça "d'exercice non trivial". Et c'est un exercice... alors que réinventer la récurrence en partant de rien, c'est 2000 ans de progrès.
« Pour les bibliothèques tu verrait les réaction de certaines personnes quand on se trompe c'est assez marrant, c'est limite on affirme que la terre est plate. »
je sais... mais c'est sont un peu idiot dans la mesure où, quand on y réfléchit, l'emploi de bibliothèque (qui fait référence soit à un bâtiment, soit à un meuble) c'est tout aussi idiot.
iLIKEto:
« écrire mon code via notepad++ et le compilé moi même via console windows m'attire beaucoup »
je suis personnellement persuadé que c'est a bonne façon de faire à ton niveau. ![]()
"je suis personnellement persuadé que c'est a bonne façon de faire à ton niveau. "
je le pense aussi mais j'ai pas trouvé comment faire avec windows ![]()
peut être que le moment est venue de migrer vers debian ![]()
Damned, il va falloir de nouveau que je cherche où j'ai dis ça (c'est pour ocaml mais ça doit pouvoir se transposer) :
https://www.jeuxvideo.com/forums/1-47-44969-1-0-1-0-outils-et-libs-ocaml.htm#message_45041
En fait, c'était pour MinGW afin de faire marcher les Makefiles. Bien sûr, il faut remplacer MinGW par ton compilateur (quoi que si ça se trouve, MinGW fournit gcc en fait).