Download as pdf
Download as pdf
You are on page 1of 19
CUAPITRE.3 LE LANGAGE DE PROGRAMMATION FORTRAN Te Langage Tortran a été conu en 1956 Par IBM. Ce langage est destiné 4 exprimer facilement la résolution des problémes de calculs numériques. Il est particuliérement bien adapté aux applications scientifiques d’oil son nom « FORmula TRANslator » (traduction de formules) Comme vous Pavez vu en Trone commun de technologie, toute étude a réaliser sur ordinateur, doit se dérouler en deux phases La phase.1 : Fait Vobjet d’une analyse détaillée du probléme posé pour arriver & une solution explicite et @ sa rédaction en une certaine forme (dans notreyeas 'algorithme (et/ou Porganigramme)). 5 La phase.2 : Fait Vobjet de la traduction de cet algorithme (et/ou l’organigramme) en un programme écrit en langage compris par Vordinateur (dans notre cas : le langage évolué FORTRAN) Exemple : Résolution ’une équation du premier ordre : aX +b=0 Pour résoudre ce probleme, il faut 1 Recherchre la solution et fa rédiger sous forme d’algorithme (et/ou organigramme) 2. traduire cet algorithme (et/ou organigramme) sous forme de programme écrit en Fortran La phase. :L?algorithme (et/ou Porganigramme) : algorithme Debut Organigramme Lire a,b ‘Si a=0 alors écrire « pas de solution » Sinon 2 tos, pF ae wo are Progcamme en FORTRAN.77 ****resolution dune équation du premier ordre veal a,b write(’") donner at read(",*) a write”) ‘donner bt read(*)b IF (2.EQ.0) then ‘write(*,*) ‘pas de solution’ goto 10 etse bla write(’,*) ‘la valour de x est’ x goto 10 endif 10 | end De cet exemple, on constate que pour traduire Valgorithme en un programme FORTRAN plusieurs types d’instruction sont utilises, & savoir ~ Les instructions d’ entrée /sortie - L’instruction de test (conditionnelles) - L'instruction de calcul (affectation) ine Higne du programme doit tenir sur 2. Les colonnes de 1 & 5 sont réservées aux emiers caracteres uniquement iquettes. A 1 3. Lat colonne est utilisée pour indiquer si la ligne est une instruction commentaire ou non. Elle sera considérée comme instruction commentaire si apparait un ¢ ou C ou * en 1** colonne. La 6° colonne est utilisée pour compléter le ligne précédente (dans le cas des instructions) dont le nombre de caractére dépasse les 72, Pour cela on écrit un caractére autre que 0 et /, On peut utiliser jusqu’é 19 lignes suites 5. La ligne commentaire ne peut avoir de lignes suites. On doit la compléter par une autre ligne commentaire 6. Le texte de programme Fortran est terminer par Pinstruction End. 7, Les caractéres permis par le langage Fortran sont: les lettres alphabétiques (majuscules ou minuscules), les chiffies (0-9) et les caractéres spéciaux tels que : * / ~ +), Guiste SI Types SiMples - Le type entier - le type réel - le type Double précision - \e type booléen, le type caractére - le type complexe. 3.a_Le type entier : Ce type caractérise Pensemble des nombres entiers positifs négatifs ou nuls signés ou non. ‘Exenple:-125 +85 0 100 Ce type est représenter par le mot clé Integer. 3b. Le type réel : Ce type caractérise l'ensemble des nombres réels signés ou non. La virgule 4,» sera représentée par le point « » Exemple :-125.6 0.6 +5.42 Le type réel est représenté par le mot olé Real Une constante de ce type ce compose obligatoirement dune mantisse et éventuellement d'un exposant (cn puissante de 10), La mantisse doit nécessairement comporter un point décimal KXX.XK——=-KXEAZZ, Espotant (02 chiles sgt) 17 stécrita: 17. ou 17.0 ou I7-E#0 ou LLE+1 3.14 s’écrira: 3.14 ou 314E-2 ou .314E+1 0 sécrira: 0.0 ou .0 ou 0. 3.c._Le type double précision : Ce type est un sous-ensemble des réels, Il est représenté par ie mot clé Double précision. II est plus large que le type réel en ce sens que le nombre de chiffres significatifs est doublé, Syntaxiquement, le puissance E est remplacée par D : XX—--KXK XK XXDEZZ. Exemple 0 séctira: 0. ou O.D+0 3.14165030 s'écrira: 3.14165030D0 ou 314.165030D-2 ou .314E1 Bel. Remarques importantes : Dans le logiciel qu’on utilise en TP (microsoft developer studio) le réel et la double précision est exprimée par - En solution réelle: On obtient (en mode standard) 6 chiffres aprés la virgule exemple: 3.14 est écrit: 3.140000 et T'exposant est composé de deux chiffres exemple : 0,0000000148 est écrit 1.480000E-08 et zéro (0) est écrit 0,0000006+00 - En solution double précision: on obtient (en mode standard) 15 chiffres aprés la virgules : exemple 3.14 est écrit : 3.140000000000000 et I’exposant est composé de trois chiffres en gardant toujours la lettre E exemple: 0,0000000148 est écrit 1.4800000000000E-008. zéro (0) est écrit 0.000000000000000E+000, - Le degré d’ approximation du double précision est supérieur ou égale a celui du type réel. Les opérateurs utilisés dans ces trois types sont : les opérateurs arithmétiques (+ * / -) et les opérateurs de relations = > <2 <, Toutefois dans le langage Fortran ceux-ci peuvent étre éerits comme suit Ly fortran Les opérateurs arithmétiques qui sont - * / + garde leur représentation normale La puissance sera représentée par ** > Les opérateurs de relation ont une autre forme représentation qui est : Dans le langage Fortran | “LT. “LE. GT. GE, EQ. # .NE. > — Lorsque les opérateurs sont de types différents, le type du résultat sera celui du plus grand (en place mémoire) : si une expression contient un type double précision, un type réel et un type entier le résultat sera donné en type double précision. Si elle ne contient qu'un type réol et un type entier Ie résultat sera donné en type réel. : Double précision > réel > entier 3.c.2.Régle de priorité dans le Fortran Lordre de priorité en fortran est donné comme suit, > Expression entre parentheses (....) > Appel de fonctions (elles seront étudiées plus tard) % Opérations arithmétiques dans cet ordre : ** puis * / puis + - > > Exemple: Expression ordre d’évaluation ab c (aye at*h*te a**(b* te) arth at*(b) -a™h = (a**b) alble (abye De cet exemple, on constate que Mordre de priorité est de gauche 2 droite sauf pour exponentiation oii elle s “effectue de droite a gauche. 3.d._Le type booléen ou logique : Ce type est représenté par le mot clé Logical. Ils sont les suivants Dans Palgoriihme [Dans Te langage Fortran a Vral cl Faux Non Et Ou ‘Equivalant Non équivalant, Exemple : soit le programme ~ LOGICAL L, L1,L2, S1, $2 Exécution : Writec,-yS1?" On donnant : READC.)S1 S= true (ou 7) writee)'S27" ‘S2= faux (ou F) READ(*-) S2 Solution L-81.and.s2 write(*)L est, L Li = St eqv. $2 write(*,")'L1 est:',L1 L2=S1.or $2 write(**VL2 est!\L2 end 3.e. Le type caractére : Le type caractére est roprésenté par le mot clé Character. Sa longueur en Fortran est comprise entre éindid it Exemple : soit le programme : character A“10 write(*,*)'la valeur de A est” read(,)A vwrite(*YA obtenu est “VA end Exécution (On donnant Remarques : Si on écrit A*3 alors la solution sera aha, ‘Alors. si on écrit par contre A alors la solution sera A=h ce qui équivalant & A"1 Sif Le type complexe : Le type complexe est représenté par le mot clé Complex. ‘Un nombre complexe est représenté sous forme de deux constantes mise entres parenthéses et séparé par une virgule, La I°* constate étant la partie réel et la seconde, la partie imaginaire . Exemple : Searctires 2,45+3,14i est écrit (2.450000,3.140000) | Eséeution: soit le programme : Donner a ‘complex a,b.x @3) write¢. donner a: donner b read(’.}a Ga) write(*,")'donner b:” Résultat : read(*,*)b Ja valeur de x : (-1.307692 , 4.615385E-01) xia write(*,*)'la valeur de x : end cris cmon a Z_INSTRUCTION EN FORTRAN (EN FORMAT LIBRE ET SUR FICHIER STANDARD) : ‘Linstruction lire (v1,V2,....a) sera traduite le plus simplement possible par une instruction de lecture avec format libre sur terminal a, Dans le cas d'une valeur. : Read(*.*)vi b. Dans le cas de plusieurs valeurs : Read(*,")vi, V2, V3..--Va 4.1.LRemarques : > La signification de (*,*) sera étudié plus loin > Lallecture peut aussi étre effectuée par I’instruction : Read*,v1, V2, V3....-Va 4.1.2.Exécution : > Soit a, b, ¢, d quatre objets entiers de valeurs respectifs 4 4 4 et 5. La déclaration de ces objets sera Integer a,b,¢.d La déclaration de lecture sera Read(*")a,bc,d ou read(*,*a; read(*,*)b ; read(’,")c; read(*,")d Lors de I’exécution nous pouvons choisir une des formes suivantes 3*45 ou 34,5 ou 44,45 oud 44 5 ou bien 4(entrée) 4(entréé) 4(entrée) 4(entrés) S(entréé) > — Soit MNA un objet type caractére de longueur (par exemple 6), Sa déclaration sera Character MNA"6 La déclaration de lecture sera Read(*")e Lors de lexécution, nous pouvons choisir des lettes, des chiffres ou des symboles & condition que leur nombre ne dépasss pas 6 caractéres [instruction écrire (v1,v2,...-Va) sera traduite le plus simplement possible par une instruction de lecture (avec format libre sur terminal) 2. Dans le cas dune valeur, : write(*,*)vi b. Dans le cas de plusieurs valeurs : write(*,*)v1, Va, V3.....Va 4.2.1. Remarques + > La signification de (#,*) sera étudié plus loin } La lecture peut aussi étre effectué par l'instruction : Print*,v1, V2, V3...-Va Exemple Si on désire réaliser un programme permettant d’écrire sur une méme ligne un commentaire, une chafine de caractére et un réel nous procédant de la sorte Supposant que nous désirant écrite la note du TEC778 d’un étudiant quelconque Real a Character b*15 Write(*,*)'donner le nom de letudiant” read(“.)b Write(*,*) donner la note de letudiant” read(’)a Write(,*)'la note de letudiant : '\b,dans le riiodule TEC778 est ?,a End Vexécution donnera : donner le nom de letudiant kerkour donner la note de letudiant 15.5 résultat : Ta note de letudiant : kerkour dans lemodule TEC778 est: 15.300000 —<— ‘Dans cette instruction, le symbole de l'affectation est « =» On remarque ici que le type de variable et de ’expression doivent étre compatibles A titre d’exemple : Sil identificateur est de type entier et l’expression de type réel ou double précision, le résultat de lévaluation de expression sera tronqué. Ceci est illustré dans Pexemple suivant Soit a et b deux nombres réels et soit un identificateur : x = a/b. Si on affecte : a=1 et b=3 le résultat sera normalement x=3,333333E-1. Toutefois, si nous déclarons x entier Ie résultat deviendra x0 program asurb double precision a,b | Exécution integer x 1 readt)a 3 read("/)b 3338-1 (sion déctare x comme rée!) xald 30 (Sion déclare x comme enter) write) x= end Exemple : Ecrire un programme permettant de permuter les valeurs de a et b Program permutation a Wirte(Ydonner a et b’ | Dennera tb Read('*)a 4 Read(*,")b a = 3-8.00000 ‘4000000 Pres yey corns vite(”*)'solution” write wite¢™D=.D end ILexiste en Fortran trois types d'instructions conditionnelles «Le IF logique avec blocs diinstructions + Le IF logique * Le IF arithmétique 4.4.1 Le IF logique avec blocs d’'instructions : L instruction conditionnelle de type Si condition Sera traduite | IF Condition then Alors action! cee 70" Sinon action? ae tas ENDIF Si action 1 contient une instruction conditionnelle (voir ci-dessous & gauche), instruction Fortran sera (voir ci-dessous & droite) Si condition 1 alors IF (condition 1) Then si condition 2 alors \F eee: 2) Then action’ pectionl Sera Else action2 Sinon action? ait Endl Finsi Else Sinon action3 action3 Endif | Finsi Plusieucs autres formes peuvent étre écrites comme le montre l’exemple suivant Exemple : rechercher le maximum entre a et b valeurs entiéres Integer a,b Read(’,")a,b H@ct.bthen Lordi Maximum = Write(*,*)'Maximum Else IF(@.LT.b) then Manin Exécution : Write(",")Maximum: 2 Else 3 Write(**)a Max- 3 Press any key to continue Cette instruction utilise une expression logique qui permet le branchement a l'une, parmi deux actions différentes __Exemple :L instruction de type $i condition Alors IF (condition) then Sion Est traduite | gj, Acton? inon i ea f ENDIF sera dans ce cas traduite IF (condition) goto étiqt Aotion2 goto étiq2 étiqt actiont étia2... Remarques = goto est traduit par : «aller &: > 1: est un chiffre de branchement exemple : 10. = Un programme de type (4.4.1) est plus lisible qu’un type (4.4.2) comme le montre Pexemple suivant ‘On cherche le maximum entre a et b entiers, La solution de type (4.4.1) est donnée ci-dessus, Voyons maintenant un solution de type (4.4.2. : IF logique) Integer a,b Read(*,")a,b oe If (@.GT.) goto 10 Exécution : IF(@.LT.b) goto 20 2 Write(’*Ja=b'a 3 Goto 30 Max= 3 10 Maximum =a laa bisiene Press any key to continue goto 30 20 Maximum =b Write(*,*)Maximum =b Goto 30 30 continue End Remarques * 10, 20 30 sont des étiquettes. * Liinstruction: Continue n’a pas d’eflets mais elle est trés utilisée en Fortran notamment pour fermer les boucle ou dans des branchements. En effet, dans cet exemple nous avons supprimé Pinstruction : continue ct faire le branchement de Pétiquette 30 Aend:30 End au lieu de utilisé 30 continue end 43 Le IF arithmétique: Cette instruction conirairement aux deux précédentes n’utilise une expression logique mais une expression arithmétique pour permettre le branchement vers une parmi trois instructions possibles. Elle se présente sous la forme syntaxique suivante : TF(exp) m1, M2, ns ‘ vai a Oi: exp : une expression mathématique nj, mz ef ma sont des étiquettes d’instruction de méme programme L’exécution de instruction HF(exp) mi, mz, ms ce fait comme suit : © Si exp est négative, le branchement se fait vers instruction = Siexp est nulle, le branchement se fait vers linstruction m2 * Siexp est négative, le branchement se fait vers linstruction ms Exemple : Une expretion de type : IF(-3) 10, 20, 30 veut dire - sixGle branchement se instruction étiquetée 10 = six=3 le branchement se fait vers instruction étiquetée 20 ~ six>3 le branchement se fait vers instruction étiquetée 30 A pattir de cela, Je programme de calcul du maximum vu précédemment sera Integer a,b Read(’,"}2,b =e Hf (a-b) 10,20,30 Exécution : 10 Maximum 2 Write(’,*Y’Maximum =, 3 Goto 40 Riese 20 Write(",*Ya=b'a ‘i Goto 40 Press any key to continue 30 = Maximum =a Write(’,*) Maximum 40 continue End xt foriran ‘Néanmoins, il existe d'autres instructions de branchement inconditionnel en particulier = Lego to caleulé 45.1 Le go to caleulé : Cette instruction utilise une expression entiére (éventuellement convertie en entier). Bille 4 la forme syntaxique suivante : go to (mi, m2, .-.-Tin) exp Ou:nt,n2, nm sont des étiquettes du programme et exp prend une valeur entire, Déroulement & si exp =1 on se dirigera vers I'étiquette my & si exp =2 on se dirigera vers I’étiquette mz & si exp =m on se dirigera vers I'étiquette thn © siexp inférieure (<) 1 ou supérieure (>) A m, on se dirigera vers l’étiquette m. exemple : Soit le programme suivant. integerr ~¢ write(,") ‘donner tata’ read’) teta re(teta)"72 + 0.S*(teta) +1 write(™")pourteta='teta, r= 'r goto(100,200,300,400)r_ <——— fe troisieme 100 —_write(.")'le premier Press any key to continue goto 10 200 write(*,*)e second” goto 10 300 write(",*)'"e troisieme’ goto 10 400 wrte(*,*)"e quatrieme’ 10 continue end Dans ce programme sir (entier calculé : r= teta“2 + 0.5%teta + 1) est égale respectivement & 1, 2, 3, 4 0n aura comme solution : « le premier » pour r=1, « le second » pour r=2, « le troisieme » pour 73, «ie quatriéme » pour =4. Toutefois, sir <1 ou m4, on aura comme résuitat :« le premior ». 4.5.2 Remarque : I) existe une autre forme de goto appelée : goto imposé Cette forme a la syntaxe suivante : go to m (m,,tms, ....11) Od : m1, m2, mj sont des étiquettes du programme et n (entiet) une variable donné par Finstruction assign comme suit: Assign etiq to i. exemple :'exemple précédant peut étre écrit comme suit : integer r write(") ‘donner tata’ read") teta r(leta)"2 + 0.5(teta) +1 write(*,""pour teta=" feta, = assign 100tor goto r(100,200,300,400}4-—— 100 write(*,")"e premier goto 10 200 wrte(,")"e second” goto 10 300 wrte(","\'e troisieme’ : goto 10 400 —_write(",""e quatrieme’ 10 continue end 4.200000 = 3 4.6.: L’INSTRUCTION REPETITIVE:} existe formes d’instruction repetitive : = le Do indexé = le Do while 4.6.1: LE DO INDEXE. Cette instruction pour étre traduite par: faire, elle est utilisée lorsque le nombre d’itération de répétition est connu, Sa firme suntarime ect Ta étia var een.een. ore Do hry Vars epg | Fortran Actions étiq, ~<— demiere instruction de instruction (boucle) oil : 6tiq : étiquette, var : variable A dérouler, expt valeur ir variation de var. exemple : programme de calcul d’une somme allant de 1 a 10: integer s integer s s=0 do 100 is sssti 100 continue write(*,")'la somme 100 Celui-ci peut aussi étre en rajoutant instruction continue La solution sera a somme= 55 Si instruction ’éeriture est & Pintérieure De la boucle, comme le montre la programme Exécution : ci-dessous, la solution deviendra alors :__». a . Integer 3 la sommi 6 4 la somm 10 do 100 i=1,10 5 la sommi 18 sesti 6 la som 21 write(*" pour 7 la somm 28 100 continue 8 fa sommi 8 end 8 fa sommi 45 10 lasomme= 35, Remarque : Sil existe deux instructions Do imbriquées, | Press any key to continue Ja plus interne doit étre entiérement contenue dans le plus Externe 4.6.2: LE DO [BEE yohi\e Cette instruction pour étre traduite par: tamt que, elle est utilisée lorsque le nombre itération est inconnu. : Sa forme syntaxique est: Do while condition Actions Enddo <——_ exemple: On cherche en combien d'itération nous pouvant atteindre une somme = 56 (le contraire de I’exemple précédent) en commengant par somme=0 integers 0 0 do while (s.le.56) ‘sestl write(*,")' pour i pet end do end remarques : 1. nous constatant que 56 est aiteint apres 11 itérations. Exéeution : a 2, Dans ce programme, nous pouvons supper les eeu ee instruction : s=0 et i=0 sans affecter exécution du programme. Cette instruction n’a pas @effet particulier (elle signifie continue V'exéoution) mais elle est trés utilisée en Fortran en particulier lors de fermeture de boucles de Do. Dans ce cas elle aura Vétiquette de Do 4.7.2. Instruetion « Stop » = i Cette instruction termine l’exécution d’un programme Fortran avant end. Cette instruction’ést facultative, 4.7.3. Instruetion « Program » : Elle ala forme; Program identificateur Elle sert 4 donner un nom au programme : aussi, elle doit étre la premiére instruction & exéeuter rt S_LES TABLEAUX : 1 Déclaration d'un Objet Tableau : En Fortran, un tableau est déclaré une seule fois 4 aide d'une spécification de tableau qui peut étre + Soit linstruction Dimension, * Soit instruction de Déclaration de type, © Soit Pinstruction Common (8 voir plus loin) Exemples T. Un tableau & une dimension portant le nom de note ayant 04 entiers (10, 11, 09, 04) peut tre déclarer par: dimension note(4) ou integer note(4). 2. Un tableau a deux dimensions portant le non de nota ayant 12 réels 11 15 10 09 peut étre déclarer : real nota (3,4) ou dimension nota (3,4) ; real nota 16 17 12 14 3. en ce qui est de la déclaration des chaines de caractére nous pouvons,,o.ws 10 99 08 05 suit ~ une déclaration d’un tableau Z d'une dimension de (05) est déclarer comme suit : character Z(5)*4 éments de 04 caractéres chacun Exercice : Que signifie le déclaration suivante? { pimension jour(?), 1.5) Solution Character * 6 jours¥4, y(10)"3 Cette déclaration signifie : On déclare 03 tableaux Jour, T et Y, portant tout les trois des chaines de caractéres, ~ Le tableau Jour présente une seule dimension constitué de 07 colonnes ayant chacune 06 caractéres. = Le tableau T présente deux dimensions constitué de 03 lignes et de 05 colonnes ayant chacune 04 caractéres. = Le tableau ¥ présente une seule dimension constitué de 10 colonnes ayant chacune 03 caractéres. 5.2, Lecture et écriture des valeurs d'un Tableau Pour lire ou écrire les valeurs d'un tableau, on utilise une boucle implicite dont la syntaxe est (liste, ind=e1,e2,¢s) Oi: Liste est la liste des objets a lire ou 4 écrire. Ind : est la variable de contrile de ta boucle. e1, e2 et e3 sont des expressions arithmétiques ayant la méme fonction que dans une boucle ordinaire. 5.2.1. Applications : ‘A. Dans le cas de valeurs quelconques Soit x, y, z trois |, Y=2 et Z=3, Si nous désirons écrire 04 fois les valeurs de x, yz dont obtenir 123123123123 nous réaliserons le programme suivant : VU 04 fo 23 real x, y.Z road read()y aE ae He readt’z tere reece write(*,*)(x,y,2, I=1,4) Press any key to continue end + Dans cet exemple : liste est: x,y,z ind est :i ef est:1; e2est:4; 03 n'est pas spécifié done, il est égal a 1 par défaut B_Dans le cas d’un Tableau & une dimension Soit V(G) un tableau ayant des entiers La lecture et I’écriture de ce tableau sera ~ Lecture ~ Beriture : write(*,*) (V(),i=1,3) Dans cet exemole ; liste est : V() ind est :1 et est: 1; e2est:8; 3 n'est pas spécifié donc, il est égal a4 par défaut La traduction en fortran sera alors 4 Fortran integer V(5) rean(’,")(V(i) i write ")(v),F=1,5) end G_ Dans le cas d’un Tableau @ deux dimensions, Soit A(2,3) 4 deux lignes et 3 colonnes Constituéed’entiers La lecture e* I’écriture de ce tableau sera ~ Leciure : cead (*,*) (A@.j=1.3). -Ecnture : write(*,*)(A(J=1,3),# Dans cet exemple le Iécture et Pcriture se fera comme suit: A(1,1), A(1,2), A(L,3), AQ,1), AQ,2), AQ2.3). La treduction en fortran sera alors Solution : integar A(2,3) read{*,*)((A(i),J=1,3),=1,2) vite" (AG) j=1,3) 1,2) end Exercice : Commed€ tiéroule fa boucle suivante waite (*,%) (x 4), y(k), k=2,4) Sachant : eX =(1357) =(2-1043) La lecture sera : x(2) ; y(2) 5 x(3) ; y(3) 5 x(4) ; y(4). Dont :3 :-1:5;0;754. 2 3 4 5 Press any key to continue OnaeNa 1 2 3 4 5 6 Press any key to continue Solut Remorques : Nous pouvant lire et écrite des tableaux @ un ou plusieurs dimension en utilisant instruction répét sive Do, A. Dans le cas (un tableau A une dimension : L’exemple précédent de V(5) sera ire: Do 10-15 Do 10i=1,5 Reati(’) Write¢,*ydonner V( 40 _contiue Read¢*") v(), 2Ecriture : 410 continue Do 20 i=1,5 Ou bie waiter") VQ) Do 20-1, 20. continue writer") De ce fait l sxemple précédent peut tre éerit :} 20 continue integer VS) Do 10 i=t.5 Reail(®") v() 10° contisue Do 20) i=1,5 writer") v@) 20. continue end B. Dans te vas d’un tableau 4 deux dimensions : L’exemple précédent de A(2,3) sera écrit KS) est: VO Read) AG) 20. continue 20. continue 40 contirue 40 continue 2.Ber:tux Do 3) Do 4) j=1,3 write?) Ad 40. confirue 30 continue De ce frit exemple précédent peut étre écrit nteger A(2,3) 0 10 1,2 D0 20 j=1,3 Read(*,9) AG) 20. continue 10. continu Do 3 Do 40 j= write.) AG) 40 continue 30. continue end son unt Qu bien Do 30i=1,2 Do 40j=1,3 writer) AC hs Vk") est AG) 30 continue 40 continue {74 Fortran GL instruction OPEN : |) PMSTUCHON VPeH'HssoGie'un numéro au fichier 4 ouvrir, Syntaxiquement pour un fichier ouvert par défaut est : Open (u,file—"nom’) 08 a U: est un entier sans signe représentant l'unité logique & connecter au fichier physique. Nom : cst une variable ou constante caractére qui représente le noln du fichier & connecter 4 Punité logique u Exemple:: soi: le programme suivant Program t2c 778 Open (6,filehakim’) Read (',") a write (6.") a end Dans ce prog-amme nous ouvrons un fichier portant le nom de hakim et lunité fogique & conitectet & ce fichier est: 5. Dans ce programme les données sont tapés sur clavier et les résultats sont enregistrés dans un fichier p ytant te nom de hakim, Dans cet exemple, nous avons pris par défaut un fichier portant le nom de hakim. Celui-ci sera vtilisé s'il existe ou il sera crié dans le cas contraire, Dans cette vision, si nous désirons utilises un fichier déja existant, ou un nouveau fichier, ou un fichier par défaut ou un fichier ¢ détmire une fois Punité logique est déconnectée nous ut suivantes : Open (u,file="nom’, status='s°) ‘ Ou: $= ‘old’ sile Shier existe déja 5 = ‘nev.’ sie fichier 1’existe pas ‘unkown’ sie fichier est inoonna s="sersich’ 1 le fichier est & détruire une fois Punité logique est déconnectée Notant jue instruction par défaut est ‘unknown’ c'est a dire ‘s’ n’est pas spécilié cette instruction set prise par défaut. Exemple : soi: le programme suivant : Program i6c 7/8 Real a Open (4, ile=" -arim’, statu: Open (5, te Read (4,).a write ,") a end Dans ce progiamme on lit la valeur de ‘a’ d'un fichier existant portant le nom de ‘karim’ et Pécritur’ sera faite dans un nouveau fichier portant le nom de ‘hakim” Remargres Tune form Open (1, fil Ot: a: est un lichisr & accés séquentiel ou & accés direct, il prend la forme ‘sequential’ ou ‘direct’ F: les e uegis rements seronf formatés ou non formatés, il prend la forme “Formatted” ou ‘unformitted” 1 bb: peut prendre la forme ‘null? ou ‘zero’, si on choit ‘null’ les espaces serons ignorés dans le as cont aire s:ront pris comme des zéros. 1: expression arithmétique spécifiant Ia longueur de chaque enregistrement d'un fichier & accés di-ect (lengueur en mots). €: étiquette Pune instruction vers laquelle le controle d’exécution sera transféré si Finstruciion open donne fieu 4 une erreur. 2, Par defaat (1 prend : status~’ unknown” old’) akim’, status="new’) rus compléte d’ouverture est utilisées, qu’on verra pas dans notre cours, qui est: ‘uom’, status="s’, access="a’, form="f, blank="b’, recl="r’, err="e) acces~’sequential’, form="formatted’ Z_Liinsirwetion Format k Cette siniciSh permef de spécifier le format de lecture ou de Pécriture : c’est-idire de décrire disposition des données sur le support extemne, Elle a la forme syntaxique n 2.1.3. Données de type Logique, descripteur L ‘ ; Ce type de descripteur est noté : Lm 5 Ot: m est une constante entigre sans signe Fortran 2.2, Les descriptions de mise en page 7.2.1Saut de colonnes, descripteur X NoténX ; Ot n= constante non signée supérieure ou égale a 1 A la lecture, les n positions suivantes sont ignorées alors qu’a I’écriture, ces n positions sont remplies de vide comme le montre le programme suivant’! données program np (02p-100pp2pR-15-4 open(§fle="C:\aaal, status="unknown’) césuilats opené6 ,file='C. \aaa' status="uninown) ee ome read(5,100) Ki, K2, K4, K6 123486789101 23456789 100. formatt((3,15,3X14,1X,12) résultats vwrite(®,101)K1,K2,K4, K6 ee 101 format(|3,15,3X,14,1X,12) 1 23R-45678PHB9101 823456789 end {eperneso0op2 (B : case vide) 7.2.2, Saut d’enregistrement, descripteur «/» Ce descriptour a pour effet le passage au début de P’enregistrement suivant. Exemple suit le programme suivant writet!,10) 10 format (‘itre’y//,'sujet’) write(*,20) 20 format?) “<< veut dire : sauter une ligne 7.2.3. Instruction de texte, constante caractore , descripteur « H » Noté nBtexie; ol n est ne constante non nulle égale la longueur du texte qui suit H. Comme le montre l’exemple suivant, vwatite(*,10) 10 Format (1x,’Equation du second degré’) Ses deux instructions sont identiques qui veut write(#,20) dite : écrite « Equation du second ordre » 20 Format(1X, 24Hfequation du second degré) 2.4 autres descripteurs : @. Interruption de contrale de format, « : » U permet d’interrompre I exploitation de la liste des descripteur du format Exemple : soit ’instructin ‘Witet*,200) (i, i=1,2) ‘pecan 200 format (1: X, 5( ;, Facteur’ 12,3X)) pea tea alors que Write 200) (i, #=1,2) 200 format (1, 5(°, facteur’I2,3X)) b, Supressios de retour, «$ » Ti permet de suppri Pécriture. Exem ‘xteution ‘Facteur Factour? Pactoor er le positionnement le début de Ienregistrement suivant la fin de write(*,20) 4 20 =ormal(1X,‘Donner le nom de letudiant ‘,$) Exécution : read(’,“ynom Donner le nom de letudiant - Réipétition d’un descripteur et groupe de descripteurs = Les descripteurs de données (I, F..) et certains de mise en page peuvant étre précédés d’un facteur de répétition qui est une constante entiére sans signe. Exem; S12 es! équivalent 4 12, 12, 12, 12, 2 et 3F5.2 est équivalent 4 F5.2, F5.2, F5.2 2(E5.2,2X,14) est equivalent & F5.2,2%,14, F5.2,2X,14 3(Nest équivalent a/// — 5(‘*) est équivalent a **#** tel que write(*,10) 410 Format(10x,20(*)) SS 10exees 20 Holes eae omen ay elie N fortron LES ACTIONS PARAMETREE: ‘Déinition : Tout programme peut décomposer son probléme a résoudre en sous-problémes {qui doivent Gire résolus dans un ordre précis. Son algorithme de résolution sera done compose de la suite ordonnée d’algorithmes de résolution de chaque sous-probléme, Il existe deux actions paramétrées : Les procédures et les fonctions. 8.1. Les procédures : 8.1.1 Définition : ‘Une procedure est une action paramétrée déclarée par Subroutine et exprimée comme suit Subroutine Proo(p1,p2,....pn ) Partie déciaration Actions traduites Return End Oi : PL,P2....Pn :identificateurs des paramétres formels proc : Pidentificateur représentant le nom de la prooédure 8.1.2 Appel dune procédure L’appel une procédure se fait par expression : Call comme suit : Call Proc(idft, iaf2,...,idfn) Od : P1,P2....Pn :identificateurs des paramétres formels Taft, ..,idfin: les types des différents paramétres formes. Exemple : soit un programme qui calcule les racines d'une équations de seconde ordre dans le cas ou delta est supérieure A zéro : et on cherche le valeur absolue des racine abs(x1) et abs(x2). Le programme sera . Program hak Real a,b,c,delta Read(",")2,b,c Delta=b""2 -(4"a"c) X1=(b-sqrtGelta))/(2"a) X2=(-btsqrt(detta)y/(2"a) ‘Call vabs(X1,Vat) Call vabs(X2, Va2) Write(",*)Vat, Va2 End ‘Subroutine vabs(X,V) aoe Real XV IFCK.LT.0) then VeX Else Vex Endif Retum end 8.2. Les procédures : 8.2.1 Définition = Tne procédure est une action paramétrée déclarée par Function et exprimée comme sult Function Fonc(p1,p2,..p ) Partie'déclaration Actions Proc=expression Return End Oa : pl....pn : identificateurs des paramétres formels Fone : Pidentificateur représentant le nom de la fonction exp : expression qui donne sa valeur au nom de la fonction &. dune procédure : Dappel dune fonction se fait par Vexpression suivante : var = prootidt! idf2, vidi) Gay War us identificateur dont le type est le méme que celui de la fonction de nom « Fone » Tafl,...,idfin : 1a méme définition que précédemment, Exermple :le méme exemple précédent sera écrit comme suit : Program hak Real a,b,c,delta Read(’.a.b.c Delta=b**2 -(4*a*c) bescyrt(delta)) (2%) +sqri(delta))/(2"a) Vat=vabs(X1) Va2=vabs(X2) write ")Vat, Va2, x1 x2 End Function vabs(X) Real X IF(X.LT.0) then Vabs=X Else Vabs=x Endif Return end exemple % ‘Nous désirons calculer la moyenne de deux vecteurs X et Y dans les valeurs sont réelles Program fonct Real ¥(20), Z(20) write(*"Ydonner le nombre d"elts de y' Read(",")nbt write("Ydonner le nombre d'elts de Z" Read¢’,Snb2 write(’,*\'Ie vecteur Y" Read *\(v().i=1.nb1) write(*,*\e veoteur Z° nb2) Zmoy=somn(z,nb2)/ab2 Write(,"moydey=,ymoy,'moy de 2=",zmoy End Function som(x,n) Real x(20) Son Do 10 +1, 419 som = som+x() Return and BT onner te ombre as ey | 2 donner le nome des eZ ‘ levoeaur ¥ . 1 3 ie vecteurZ Y 2 3 4 Imoydey~ — 2.000000m0y dez= 2.500000 % LAG’ RAL iu Toinstiachon enmmen permet fe creation sly th leurs er arsmone ets batt dc ty Vunilisation de cones de momotre bonito nun ecusrammnig ef Ses SoursepFangr aM Weviste de de famun — be enmunoan blame — We eeu cliques Le premies permet ke creation enn bhoe sans: none lar came ge secu pared Be tat eve iconic pon tan HHO Lecompie Les tois instruction commen sure anis sx ran alent Sainmen, ef HTT he Camman dda BIE G0 naman 01 de abs Elles permetien! fi creation de deus blaes Cit 4 dit ete Pautre esi plan. contenant traits objet a1, Uilisanen du conunon bane uit la resolution dune equation the second ordre Program prema: Commor a.b.c FED pearemnean es mplacants 13 du sous-prawi . | ( \ \ | Writer’ “ies racine sont | Stop | Read(’int.t End | Call racines (xt,x2) | writeg Yes taaines sont yt= xt 2° x j Stop | End | Subrowline sacines common a.b.2 | V1 delta = (ur"2) = idta*e} | | FFedotta 1 Onten | subroutine racines (sy) if ‘Wite(*.*) pas de solution | ‘ a.b.c- ofyets alohaux. grace au commat | | (testis) a} | | + delta - ahjet loca’ non déstaré (eel) aes ‘(-heseirtidettayy/(2"—) i focy CV | common a.b.c | eet i | delta = (2) - (4*a"c H| (sens oo} | IFideka.L7.Ovlher ; [| Remargue :J. Dans te 1° progranime. | | Waite? *Ypas de solution | | Tarsiracion common | pein Pai | i et) 11 abe comme objets slobaus. aloes qe dist \ } | 2°) elle permet en plus ta transmission de: | yecb-cqttdeitayy(2tay i v ' ' | pees 1 javamiiin effects i. <2 Dam ce demnics | pesrtideliay (2a) itt Se aa | ena | | ens ta dni cle ty rw pes batt oat | 48 continue parametres (sor Heehes) \ | Retamn | | Pods ta subroatine de 2 pres ws | nd pouvane chsi | ot x2 au het des priors eee eee Ce eee \ 8.3.2, Uritisation du common étiquette Dans Tesemple precedant suit un bloc étiquete portant te Toutes les instructions restent identiques saul: Comme eb. 2 taieztammne prutcipal ef sous progeanmne Common a hc X12 (pioeramantc pi omy de hakim et hakim! —Seommantakans # > commonitakin’ ac + Common ad? Common a bes ton ptoqgamme }-———-¥ eanamonhalin ales fcanumann hand 5.9 SA. Les fonctions avithandtiqnes : que west définic gua | intericer € crique on caractere ct doit finiiion dune fonction artthnieticn Heater de lx fonction arithmenquy « ni ¢ peut &tie logiquee nun Senthasieienent ts clare av debut ca peoetamny esi maunfane(pl. p2.o. 5p pI. p2.. po sonties parametres Formels et exp Fespres appels de fonetios 4 Celuie jon arithmeétiquet...) powvant conten se lait pat idn) Exempl ——— Sort Ie programme suivant 2 Exéeurion : Program Fenton donner Rapp(ab)=ta*aviata th b) 2 swritel*,2¥'domner | donner y he verite(* *Ydomner Readt* 1s G(s me O} and (y ne 0) 2>rapplo.s) I Water? Riwty Xl=xty Zberappls 1.52) Wiel yal zt Endif cn! . ah 3 ee = Lago ple SS82350F-02 Press any hey 6 continue

You might also like