1 Chapitre 1 R´ esum´ e du cours FORTRAN 1.1 Exemple d’un programme Fortran Exe
1 Chapitre 1 R´ esum´ e du cours FORTRAN 1.1 Exemple d’un programme Fortran Exercice : Soit la suite : un = un−1 + un−2 u0 = 0 , u1 = 1 Ecrire un programme qui calcule le terme uL pour L = 20. On doit trouver u20 = 6765. Posons vn = un−1, le probl` eme devient : un = un−1 + vn−1 vn = un−1 u0 = 0 , u1 = 1 , v1 = 0 M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 2 Algorithme : • On donne L = 20 • Faire varier n de 1 ` a L • Pour chaque valeur de n • Calculer un = un−1 + vn−1 • Calculer vn = un−1 • Fin de la boucle sur un • Ecrire le r´ esultat Programme : c Donn´ ees parameter(L=20) c Initialisation un=1 vn=0 do 100 N=2,L k=un un=un+vn vn=k 100 continue stop end 1.2 Les ´ el´ ements essentiels d’un programme 1. Instructions : Les insructions doivent ˆ etre ´ ecrites entre la colonne 7 et la colonne 72. Si la colnne 6 contient un caract` ere (en g´ en´ eral 1,2, ..), la ligne est interpr´ et´ ee comme la suite de la ligne pr´ ec´ edente. Les colonnes 1,2,3,4,5 sont r´ eserv´ ees aux M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 3 ´ etiquettes (ici 100) ; et si la premi` ere colonne contient le caract` ere c, elle est consid´ er´ ee comme ligne commentaire. 2. Mots cl´ es : parameter, data, do, continue, stop, end, ... Ils d´ efinissent les caract` eres des donn´ ees, les rˆ oles des instructions, ... 3. Variables : Les variables sont choisies par le programmeur et form´ ees de 6 car- act` eres alphanum` eriques, la 1` ere ´ etant un caract` ere. Les variables : 1X, a-t, SUIVANT ne sont pas valides. Le compilateur ne fait pas de diff´ erence entre majuscules et minuscules. 4. Op´ erateurs arithm´ etiques : +, -, *, /, **, ... La mˆ eme r´ egle de priorit´ e est ap- pliqu´ ee qu’en langage C, en cas de besoin ne pas h´ esiter ` a utiliser des parenth` eses. 5. Op´ erateurs d’ordre : • .GT. Greater Than (>) • .LT. Little Than (<) • .GE. Greater or Equal (≥) • .LE. Little or Equal (≤) • .EQ. EQual (=) • .NE. Not Equal (̸=) 6. Etiquettes : Permettent de se brancher ` a une ligne quelconque du programme. 1.3 Types de donn´ ees 1.3.1 Donn´ ees enti` eres Si aucune d´ eclaration n’est faite, les variables commen¸ cant par : i, j, k, l, m, n sont automatiquement consid´ er´ ees comme enti` eres. 1.3.2 Donn´ ees r´ eelles Si aucune d´ eclaration n’est faite, les variables commen¸ cant par : a-h et o-z sont automatiquement consid´ er´ ees comme r´ eelles. M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 4 1.3.3 Donn´ ees r´ eelles en double pr´ ecision Si on veut travailler en double pr´ ecision, il faut d´ eclarer les variables concern´ ees. Plusieurs fa¸ cons sont possibles. • double precision a, b, c uniquement les variables a, b, c sont en double pr´ ecision • implicit double precision (a) : toute variable commen¸ cant par a est en double pr´ ecision • implicit double precision (a-h,o-z) : toute variable commen¸ cant par a−h ou o−z est en double pr´ ecision 1.3.4 Donn´ ees de type caract` ere Un caract` ere (lettre, chiffre, espace, caract` ere sp´ ecial, ..) s’´ ecrit entre apostrophes: character*8 nom nom=’EINSTEIN’ nom sera une chaine de 8 caract` eres. Deux chaines de caract` eres peuvent ˆ etre group´ ees en une seule par l’instruction // appel´ ee concat´ enation. character*8 nom, espace*1, prenom*6, np*16 nom=’EINSTEIN’ prenom=’ALBERT’ espace=’ ’ np=nom//espace//prenom stop end La variable np contiendra la chaine AINSTEIN ALBERT 1.3.5 R´ egle de priorit´ e des op´ erations arithm´ etiques Dans l’ordre, on a les priotit´ es suivantes : 1. ** (puissance ) M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 5 2. * et / (multiplication et division) 3. + et - addition et soustraction 1.3.6 Fonctions intrins` eques Parmi les fonctions intrins` eques les plus usuelles : sqrt(), abs(), max(), min(), cos(), sin(), tan(), log(), log10(), exp() L’argument peut ˆ etre une constante ou une expression. 1.3.7 Lecture et impression Lecture et impression sur ´ ecran Lecture et impression en format libre sur ´ ecran : write(*,*)’Donner les valeurs des constantes a, b :’ read(*,*)a,b write(*,*)’Les valeurs des constantes a, b sont :’ write(*,*)a, b Lecture et impression sur ´ ecran avec format fixe : write(*,*)’Donner les valeurs des constantes i, a, b :’ read(*,1000)i, a, b write(*,*)’Les valeurs des constantes i, a, b sont :’ write(*,1000)i, a, b 1000 format(I5, F10.4, E12.6) Lecture et impression sur un fichier open(32,file,=’lecture.dat’,status=’old’) open(33,file,=’ecriture.dat’,status=’new’) read(32,1000)i, a, b write(33,*)’Les valeurs des constantes i, a, b sont :’ write(33,1000)i, a, b 1000 format(I5, F10.4, E12.6) Bien entendu dans le fichier lecture.dat le prgramme doit trouver les valeurs des con- stantes i, a, b sous le format indiqu´ e, sinon il va d´ eclarer une erreur. M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 6 Les num´ eros 32 et 33 sont des num´ eros de l’unit´ e ` a utiliser ; tout num´ ero entre 7 et 99 peut ˆ etre utilis´ e. Initialisation d’une donn´ ee Les constantes dont les valeurs ne changent pas au cours du programme peuvent ˆ etre fix´ ees au d´ ebut du programme par l’instruction parameter ou l’instruction data : parameter(l=20) data i/10/, x/23.6/ 1.4 Tests et choix 1.4.1 if logique L’instruction s’´ ecrit : if (expression logique) instruction ex´ ecutable Exemple : if (x .lt. 0.) a=sqrt(-x) 1.4.2 S´ equences conditionn´ ees if ... then/endif L’instruction s’´ ecrit : if (expression logique) then instructions ex´ ecutables endif Exemple : read(*,*) L if (L .lt. 0.) then write(*,*)L, ’est negatif’ stop end 1.4.3 L’alternative if ... then/elseif/endif L’instruction s’´ ecrit : if (expression logique) then M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 7 instructions ex´ ecutables else instructions ex´ ecutables endif Exemple : Calculer N1/N2 ` a conditon que N2 soit non nul read(*,*) N1, N2 if (N2 .eq. 0.) then write(*,*)’Le denominateur est nul’ else nq=N1/N2 end if end 1.4.4 Renvoie par l’instruction goto L’instruction goto s’´ ecrit : goto etiquette L’ex´ ecution s´ equentielle du programme est interrompue pour reprendre ` a la ligne por- tant l’´ etiquette. Exemple : goto 100 instructions 100 continue Une autre instruction goto dite goto de ventilation peut ˆ etre utilis´ ee : goto (et1, et2, ..., etn)expression Exemple : goto(10, 20, 30) ICODE Traitement relatif ` a ICODE=4 goto 40 10 Traitement relatif ` a ICODE=1 goto 40 20 Traitement relatif ` a ICODE=2 goto 40 M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 8 30 Traitement relatif ` a ICODE=3 40 suite du programme 1.4.5 Choix fond´ e sur le signe d’une quantit´ e L’instruction s’´ ecrit : if(expression arithm´ etique) etn, et0, etp etn, et0, etp sont les ´ etiquettes de 3 s´ equences ` a ex´ ecuter lorsque l’expression est n´ egative, nulle ou positive. Exemple : if(I-J)40, 50, 60 40 Traitement si (I-J) est n´ egatif goto 100 50 Traitement si (I-J) est nul goto 100 60 Traitement si (I-J) est positif 100 continue 1.5 Les boucles Boucle ordinaire Elle s’´ ecrit : do etiq I=1,N Traitement etiq continue ou do I=1,N Traitement end do Cette derni` ere forme est ` a ´ eviter autant que possible. Exemple: ´ ecrire un programme qui lit la valeur de n puis calcule le factoriel de n (n!): integer fac read(*,*) n M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 9 fac=1 do 100 i=2,N fac=fac*i 100 continue write(*,*)’Factoriel de ’,n,’=’,fac stop end Boucle avec un pas n´ egatif Elle s’´ ecrit : do etiq I=1,N,-1 Traitement etiq continue Boucle g´ en´ erale On peut parcourir un intervalle [N1, N2] avec un pas K, dans ce cas l’instruction s’´ ecrit : do etiq I=N1, N2,K Traitement etiq continue Exemple : ´ ecrire un programme qui lit N puis calcule la somme des nombres pairs inf´ erieurs ou ´ egaux ` a N. integer somme read(*,*) N somme=0 do 100 I=2,N,2 somme=somme+I 100 continue write(*,*)’La somme des ’,N, ’premiers nombres pairs est =’,somme) M. Boulerhcha - Fili` ere : Master ”ER” - Ann´ ee : 2012-2013 10 Boucles imbriqu´ ees do etiq1 I = N1, N2 Traitement do etiq2 J = K1, K2 Traitement etiq2 continue etiq1 continue 1.6 Tableau Un tableau peut ˆ etre de dimension 1 (un vecteur) ou de dimension uploads/Litterature/ cours-fortran.pdf
Documents similaires










-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 04, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.1369MB