February 16, 200521 yr Salut à tous (je suis new!!!) Je cherche désespérement une info pour du Frotran (c'est pour mes concours de fin d'année, alors, on rigole pas, c'est sérieux!) Mon pb est le suivant: j'ai un prog en Frotran que je convertis en Maple, et j'ai cette ligne if (.NOT. CONVRG) GO TO 220 le go to 220, ça va, j'ai compris. Par contre, le not converg, non. convrg c'est défini par CONVERG=.FALSE, donc je go à 220 si quoi???? j'ai le même genre de procédure un peu plus loin avec une autre variable PRINTU qui n'est pas défini (si, juste LOGICAL PRINTU). Alors if (PRINTU) go to... je go à l'étiquette si quoi??? Vola, si qqn à une idée. MERCI
February 16, 200521 yr Heu c'est en quel norme ton fortran ? Je sais programmer en Fortran 77 et j'ai jamais vu ca...
February 17, 200521 yr Je crois que j'ai trouvé, en fait on a pas l'habitude de creer des conditions comme ca, si t'es CONVRG et PRINTU sont bien des noms de variables, alors si (non convrg ) = 1 go to 220 et si PRINTU = 1 go to ...
February 18, 200521 yr Author si (non convrg ) = 1 go to 220 =1 ça se traduite par yes? En fait, si j'ai convrg=false, alors je vais en 220, et si j'ai printu=true, je vais à l'autre étiquette? (de tte façon, printu et convrg ne peuvent avoir que true ou false comme valeur car ils sont défini comme suit convrg = ((un chiffre) .LT. (un ature chiffre))) Merci de me répondre, c'est super sympa!!!!
February 18, 200521 yr oui voila, en fait les variables de type logical ( que je ne connaissais pas :/ ) stockent la valeur d'une expresion logique ( .true. ou .false. ) C'est utilisé pour simplifier la condition. J'ai trouvé un site pas mal en cherchant : http://www.enstimac.fr/~gaborit/lang/CoursDeFortran/ PS: de rien pour une fois que mes connaissances en fortran servent à quelque chose... Edited February 18, 200521 yr by LePhasme
February 19, 200521 yr J'ai étudié ça en 1983, je cois ! Ben j'ai tout oublié ! Ah si, je me rappelle qu'il y avait des sections !... Ah ben non, c'était en Cobol, ça ! Crébordel, qu'est-ce qu'on devient vieux !
February 20, 200521 yr J'ai étudié ça en 1983, je cois ! Ben j'ai tout oublié ! Ah si, je me rappelle qu'il y avait des sections !... Ah ben non, c'était en Cobol, ça ! Crébordel, qu'est-ce qu'on devient vieux ! Je programme aussi en cobol, cobol ans-85 pour etre précis...
February 21, 200521 yr Author Le phasme, tu fais quoi dans la vie pour utiliser tous ces programmes???
February 21, 200521 yr En même temps, les GOTO, c'est très rare d'utilisation, sauf à programmer comme un pied . NB : j'ai aussi fait du fortran77, mais ça remonte . NB2 : comme cela, je te dirais aussi d'utiliser des booleans pour tes conditions et non des renvois anarchiques . édit : tiens, je suis dans la catégorie prog, bizarre (je me croyais dans la cat. Linux ). Edited February 21, 200521 yr by j_c_p
February 23, 200521 yr Salut, Le Fortran77 est encore massivement utilisé par les scientifiques. Ca peut donc encore servir de l'apprendre. Les variables logical prennent pour valeur .true. ou .false. L'instruction suivant le if n'est exécutée que si la condition, dans ton cas .NOT. CONVRG, a pour valeur .true. Elle est donc exécutée si CONVRG a pour valeur .false. De la même façon, il faut que PRINTU ait pour valeur .true. pour que l'instruction suivant le if soit exécutée. Il faut donc que PRINTU soit initialisée à un moment ou à un autre (il est déconseillé de laisser le compilateur se charger de l'initialisation des variables). Enfin, en ce qui concerne les goto, le Fortran77 étant dépourvu d'instructions de type tant que, on est parfois obligé d'y recourir, même en programmant correctement.
February 23, 200521 yr oui pour les boucle de type while ( en C ), pour les reproduire en fortran nous on a appris de la facon suivante : Do 10 if ( condition de sortie ) goto 20 10 continue 20 continue Maintenant il y a peut-etre mieux... Puis je crois que les scientifiques utilisent la norme 97 et plus la 77 Edited February 23, 200521 yr by LePhasme
February 24, 200521 yr Non non, je crois que la plupart utilise encore du 77 "amélioré" (les compilateurs récents acceptent plus de trucs que les vieux). Assez peu de gens font du 90, du 95 ou je ne sais quoi encore. Je pense que la principale raison est que beaucoup de codes scientifiques sont écrits en 77 et que les traduire demanderaient pas mal de boulot. Par exemple, je code à peu près tout en Fortran77 (simulation en astrophysique et en physique des lasers). Et des collègues travaillent comme des fous pour réécrire un code de calcul éléments finis en C++ (la version originale est en Fortran77).
February 24, 200521 yr Author ouaou, des spécialistes du fortran. Bah j'ai une deuxième question: à la fin d'une boucle if, j'ai un RETURN, mais le RETURN revoie où? Au début du programme, à la fin de la boucle?... Par exemple, je code à peu près tout en Fortran77 (simulation en astrophysique et en physique des lasers) Ouaou...astrophysique, physique des lasers, c'est du hut vol tout ça. Moi je me contente des écoulements autour d'ailes d'avions, c'est plus simple!!
February 24, 200521 yr Spécialiste, c'est beaucoup dire Le RETURN te fais sortir de ta procédure et te renvoie juste après l'appel à cette procédure dans la procédure appelante. Exemple : Program principal ... Call toto(a,b) ... End Subroutine toto(a,b) ... If(a.GT.1) RETURN ... END Si a est plus grand que 1, tu retourne immédiatement juste après le Call toto dans le programme pricipal sans exécuter la fin de ta procédure. Et pour l'astro et les lasers, c'est pas toujours si compliqué. Et les écoulements, ça peut être bien méchant
February 24, 200521 yr Tu peux télécharger une petite doc sur le Fortran que j'aime bien ici. C'est fait par des gens de l'Université de Rennes qui savent de quoi ils parlent
Archived
This topic is now archived and is closed to further replies.