Spitfire_fr Posté(e) le 16 février 2005 Partager Posté(e) le 16 février 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 16 février 2005 Partager Posté(e) le 16 février 2005 Heu c'est en quel norme ton fortran ? Je sais programmer en Fortran 77 et j'ai jamais vu ca... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spitfire_fr Posté(e) le 16 février 2005 Auteur Partager Posté(e) le 16 février 2005 fortran 77...ça m'ennui réellement parce que c'est assez important... Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 17 février 2005 Partager Posté(e) le 17 février 2005 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 ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spitfire_fr Posté(e) le 18 février 2005 Auteur Partager Posté(e) le 18 février 2005 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!!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 18 février 2005 Partager Posté(e) le 18 février 2005 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
zigomat Posté(e) le 19 février 2005 Partager Posté(e) le 19 février 2005 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 20 février 2005 Partager Posté(e) le 20 février 2005 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spitfire_fr Posté(e) le 21 février 2005 Auteur Partager Posté(e) le 21 février 2005 Le phasme, tu fais quoi dans la vie pour utiliser tous ces programmes??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 21 février 2005 Partager Posté(e) le 21 février 2005 je suis étudiant en info... Lien vers le commentaire Partager sur d’autres sites More sharing options...
j_c_p Posté(e) le 21 février 2005 Partager Posté(e) le 21 février 2005 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 ). Lien vers le commentaire Partager sur d’autres sites More sharing options...
fafaro Posté(e) le 23 février 2005 Partager Posté(e) le 23 février 2005 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 23 février 2005 Partager Posté(e) le 23 février 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
fafaro Posté(e) le 24 février 2005 Partager Posté(e) le 24 février 2005 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). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spitfire_fr Posté(e) le 24 février 2005 Auteur Partager Posté(e) le 24 février 2005 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!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
fafaro Posté(e) le 24 février 2005 Partager Posté(e) le 24 février 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
fafaro Posté(e) le 24 février 2005 Partager Posté(e) le 24 février 2005 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.