[PDF] Fortran 90 & Programmation Numérique Notes de Cours





Previous PDF Next PDF



Introduction to Fortran 90

For example a program may identify the following values: 7. 96.4. 3.14159 by these variable names: daysinweek temperature pi. It is common for the value of a 



Introduction to Fortran 90 for Scientists and Engineers

Running Fortran Programs. If you are new to Fortran you should run the sample programs in this section as soon as possible



Fortran 90 Handbook.pdf

examples giving the location of program examples that illustrate the use of many Fortran 90 features. For an informal and tutorial approach to learning ...





Beginner Fortran 90 tutorial

Exercise 1: Write this little program up in a text editor save the file as myprogram.f90 then compile the code using the command: gfortran myprogram.f90 -o 



Fortran 90/95 Programming Manual

For example one may need to execute the same group of statements many times



Programming with Fortran.pdf

The following is a sample ForTran program written in upper case and mixed cases. (90 105)



Quick Guide to FORTRAN 90

b) Fortran 90: A Reference Guide. Chamberland;. Prentice Hall 1995. General Remarks. • Short sample program illustrating some features: program quote implicit 



Quick Guide to FORTRAN 90

b) Fortran 90: A Reference Guide. Chamberland;. Prentice Hall 1995. General Remarks. • Short sample program illustrating some features: program quote implicit 



Using GNU Fortran

Fortran compiler implements ISO/IEC 1539:1997 (Fortran 95). As such it can also compile essentially all standard-compliant Fortran 90 and Fortran 77 programs.



Introduction to Fortran 90

Fortran 90 is a superset of Fortran 77 that is programs written in Fortran 77 may be referred to as declaring or specifying a variable



Fortran 90 Handbook.pdf

There is an index of examples giving the location of program examples that illustrate the use of many Fortran 90 features. For an informal and tutorial 



COURS DE FORTRAN 90

langage informatique (pour nous le fortran 90 (f90)). ? ce fichier constitue le programme ;. ? c'est une suite d'opérations sur des variables



Programming with Fortran.pdf

The following is a sample ForTran program written in upper case and mixed cases. Writing a ForTran90 program in Microsoft ForTran.



Beginner Fortran 90 tutorial

Beginner Fortran 90 tutorial A very basic program in Fortran contains: ... In the previous example your code probably ran but has nothing to show for.



An introduction to programming in Fortran 90

the context of Fortran 90 and a series of examples and exercises is used to programming and Fortran 90 to write straightforward programs.



PH25520 Experimental Physics Introduction to Fortran 90

To get a computer to perform a specific task it must be given a sequence of unambiguous instructions or a program. An everyday example is instructions on how to 



Fortran 90/95 Programming Manual

also a standard-conforming Fortran 90 program. Some of FORTRAN For example an integer-type variable can be declared in FORTRAN 77 format: integer i.



THE UNIVERSITY LIVERPOOL

2 keyboard. A piece of software is a computer program for example: 2 an operating system. 2 an editor. 2 a compiler. 2 a Fortran 90 program.



Fortran 90 & Programmation Numérique Notes de Cours

Nov 8 2021 Juste apr`es l'instruction PROGRAM EXEMPLE1



Beginner Fortran 90 tutorial - University of California

Example 1: This rst example contains the function as part of the original program: program plotfunction implicit none integer :: i real :: x real parameter :: xmin = 0 xmax=10 a=-2 open(10file=’myplot dat’) do i = 1100 x = xmin + xmax*(i-1 0)/(100 0-1 0) write(10*) xf(x) enddo close(10) contains function f(x) implicit none real

FiliereGENIEMATHEMATIQUE ETMODELISATION

1 ereAnnee d'Ecole - (3eme annee Universitaire)

Fortran 90 & Programmation Numerique

Notes de Cours

Novembre 2021

Ces notes constituent le document du cours intitule \Fortran 90 et programmation numerique" dispense aux etudiants de 3A GMM (premiere annee du cycle ingenieur de la liere Genie Mathematique et Modelisation) de Polytech Clermont-Ferrand. Ce cours ne pretend pas presenter aux etudiants l'ensemble des possibilites oertes par le fortran

90, mais se concentre sur les aspects les plus interessants pour la programmation numerique.

Les seances de Travaux Pratiques qui accompagnent ce cours permettent aux etudiants d'imple- menter des algorithmes elementaires d'analyse numerique, tels que les resolutions de systemes lineaires par des methodes directes et iteratives, la methode de Newton-Raphson pour la resolution de problemes non lineaires, les methodes de recherche de valeurs propres, d'orthogonalisation, ... Bien que le fortran 90 soit quasiment \machine-independant", certains resultats (messages d'er- reurs a la compilation, erreurs suite aux \debordements de tableaux", ...) dependent de la machine sur laquelle on travaille. Il est donc possible d'observer des comportements dierents de ceux presentes dans ces notes. Ces notes peuvent ^etre telechargees a l'adresse : http://math.univ-bpclermont.fr/ ou elles sont regulierement mises a jour.

F. Bouchon, le 8 Novembre 2021.

Plani

Chapitre 1: Introduction.

1.1 Quelques notions elementaires sur les ordinateurs .......................1

1.2 Introduction au langage fortran 90 ..................................... 3

1.2.1 Exemple de programme fortran 90 - Regles de base. ...................3

1.2.2 Types de donnees, declaration. ........................................4

a. Regles pour la declaration des variables. ......................4 b. Caracteres.(CHARACTER type)................................5 c. Entiers.(INTEGER type)....................................... 5 d. Reels.(REAL type)............................................ 6 e. Complexes.(COMPLEX type)....................................7 f. Booleens.(LOGICAL type).......................................7 g. Parametres. .................................................. 7 h. Declaration avec aectation...................................7

1.2.3 Expressions arithmetiques. ............................................8

a. Operateurs .................................................. 8 b. Aectations ................................................. 9

Chapitre 2: Boucles et Tests.

2.1 Expressions logiques, tests. ............................................11

2.1.1 L'instruction conditionnelleIF(the logicalIFstatement) ............. 11

2.1.2 La structure blocIF-THEN-ELSE....................................... 11

2.2 Les boucles ........................................................... 12

2.2.1 Boucles indexees .....................................................12

2.2.2 Boucles non indexees .................................................14

2.3 Boucles et Tests "embo^tes" ...........................................15

2.3.1 Principe, regles ...................................................... 15

2.3.2 Contr^oles dans les boucles ............................................16

2.4 Branchements .........................................................18

2.4.1 L'instruction GOTO ................................................. 18

2.4.2 Le bloc SELECT CASE ..............................................19

Chapitre 3: Tableaux.

3.1 Declaration ........................................................... 21

3.1.1 Tableaux monodimensionnels (\vecteurs") ............................21

3.1.2 Tableaux multi-dimensionnels ........................................21

3.2 Utilisation ............................................................ 23

3.2.1 Operations sur chaque element . ..................................... 23

3.2.2 Operations globales. ................................................. 23

3.2.3 Operations sur des \sous-tableaux". ..................................25

3.3 Allocation dynamique de la memoire .................................. 28

3.4 Fonctions intrinseques travaillant sur les tableaux. .....................29

iiPlan

Chapitre 4: Subroutines et fonctions.

4.1 Objectifs - Premiers exemples. ........................................ 33

4.2 Variables locales & globales. .......................................... 35

4.3 Subroutines, fonctions et tableaux. ....................................37

4.3.1 Adressage memoire, "debordements de tableaux" .....................38

4.3.2 Passage des dimensions en arguments. ............................... 41

4.3.3 Tableaux automatiques .............................................. 41

4.4 Fonctions et procedures \recursives". ................................. 42

4.5 Arguments optionnels. ................................................ 43

Chapitre 5: Entrees / Sorties.

5.1 Formats d'entrees / sorties. ........................................... 45

5.2 Lectures et ecritures dans des chiers. ................................ 48

5.2.1 Ouvertures, fermetures, ecritures formatees. ..........................48

5.2.2Ecritures non formatees. .............................................49

Chapitre 6: Pointeurs - Types derives.

6.1 Pointeurs ............................................................. 51

6.1.1 Principe. ............................................................ 51

6.1.2 Pointeurs et cibles. .................................................. 51

6.1.3 Pointeurs et tableaux, allocation dynamique. .........................53

6.2 Types derives ......................................................... 54

6.2.1 Principe, exemple. ...................................................54

6.2.2 Types derives et allocation dynamique. .............................. 55

Chapitre 7: Compilation separee & Modules.

7.1 Compilation separee de gros code, inter^et, syntaxe. ....................57

7.2 Exemple de creation d'un module. .................................... 59

Annexe A : Fonctions intrinseques.

Annexe B : Les erreurs les plus frequentes....

Bibliographie.

Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 20211

Chapitre 1: Introduction.

1.1 Quelques notions elementaires sur les ordinateurs

Un ordinateur (ou \une machine" ) est un dispositif permettant le traitement rapide et precis d'informations symboliques stockees sous formed'instructionsappeleesun programme. L'unite de contr^olecommande le fonctionnement de la machine entiere. Elle permet de : stocker les dierentes instructions en memoire, rechercher les instructions du programme, les interpreter et les traiter, rechercher les informations necessaires pour ce traitement, les envoyer a l'unite arithmetique qui execute les dierents calculs, recuperer les resultats de chaque calcul a partir de l'unite arithmetique et les stocker dans la memoire, Lamemoirepermet le stockage des programmes et des informations. Elle se compose d'un ensemble d'unites de stockage appeleesles mots(en anglais \word", d'ou les unites MW : Mega-Word, ...), chaque word est caracterise par sonadressememoire. Chaque word contient une serie d'elements de stockage, qui peuvent contenir deux etats (conven- tionnellement designes par 0 et 1). Toute information elementaire est donc stockee sous forme binaire. Lorsqu'un programme est execute, les instructions sont recherchees et traitees dans l'ordre ou elles sont stockees en memoire. Il est possible d'eectuer des branchements, c'est-a-dire de demander a l'unite de contr^ole d'aller chercher l'instruction suivante a une adresse determinee. Il est egalement possible d'eectuer des boucles, c'est-a-dire de demander a l'unite de contr^ole d'executer plusieurs fois une serie d'instructions,... Pour ^etreexecutable, un programme doit ^etre ecrit dans le code machinebinairecompris par le processeur(en \langage machine"). Le programme en langage machine est indechirable pour l'utilisateur : l'edition d'un executable en mode texte donne une serie de caracteres speciaux incomprehensibles. En outre, chaque type de processeur reconna^t un certain type de langage. Un programme ecrit pour un type de processeur n'est pas executable par un autre. Aujourd'hui, la plupart des programmes sont ecrits enlangages de niveau eleve. Ces langages ressemblent a de l'anglais et sont donc plus faciles a manipuler que le langage machine.

2Chapitre 1: Introduction

Ils ont un vocabulaire specialise et limite, et une syntaxe assez stricte. Ces langages ne sont pas directement compris par le processeur, on a besoin d'uncompilateur qui traduira un programme ecrit en langage de niveau eleve en un programme binaire executable par le processeur. Fortran (de l'anglais FORmula TRANslation), est ne au milieu des annees 1950. C'etait le premier langage de niveau eleve.

1954 : John Backus, d'IBM, est a l'origine du projet de developpement du premier

langage symbolique.

1957 : Sortie des premiers compilateurs Fortran.

1958 : Sortie de Fortran II : apparition de la \compilation separee".

Au debut des annees 1960, on s'occupe du developpement de compilateurs pour les autres constructeurs de machines. Il na^t aussi une commission chargee de developper \une norme fortran".

1966 : Sortie de Fortran IV(ou Fortran 66).

1977 : Sortie de Fortran V(ou Fortran 77).

1994 : Sortie des compilateurs Fortran 90.

1999 : Sortie des compilateurs Fortran 95.

???? : Sortie des compilateurs Fortran 2000. ???? : Sortie des compilateurs Fortran ????. Enfortran 90, les instructions sont ecrites dans un chier dont l'extension est \f90",(par exemple : toto.f90), la commande de compilation sur un systeme Unix est generalement >f90 toto.f90 Cette commande demande a la machine d'eectuer les operations suivantes : tester la coherence du code : le compilateur renvoie a l'ecran des messages d'erreurs lorsque les regles du fortran 90 ne sont pas respectees.(Ces messages d'erreurs ne sont pas toujours tres explicites, mais ils contiennent systematiquement les numeros des lignes du chier ou apparaissent les erreurs), renvoyer a l'ecran des messages d'avertissement(\Warning"), creer un chier nomme a.out, executable binaire compris par le processeur. Une fois la compilation achevee (avec succes), on peut executer le code par la commande >./a.out La machine execute alors les instructions du chier a.out, ces instructions sont directement comprises par les processeur et correspondent aux instructions du code source toto.f90. Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 20213

1.2 Introduction au langage fortran 90

1.2.1 Exemple de programme fortran 90 - Regles de base.PROGRAM EXEMPLE1

INTEGER :: A,B,C

PRINT*, 'TAPER AU CLAVIER LA VALEUR DE A'

READ*,A

PRINT*, 'TAPER AU CLAVIER LA VALEUR DE B'

READ*,B

C=A+B

PRINT*, 'LA VALEUR DE C=A+B EST',C

C=A-B

PRINT*, 'LA VALEUR DE C=A-B EST',C

C=A*B

PRINT*, 'LA VALEUR DE C=A*B EST',C

END PROGRAM EXEMPLE1

Ce programme elementaire permet deja de comprendre les points suivants : Le programme commence par l'instruction :PROGRAM EXEMPLE1et s'acheve parEND PROGRAM EXEMPLE1. Ceci est indispensable. Naturellement, on peut modier le nom du programme (iciEXEMPLE1), mais la derniere instruction doit reprendre le m^eme nom que la premiere. Juste apres l'instructionPROGRAM EXEMPLE1, on \declare" les dierentes variables qui vont ^etre utilisees dans le code. INTEGER :: A,B,Cindique que l'on va utiliser trois variables, nommees A,B et C, qui seront toutes les trois de type \INTEGER", c'est a dire de type entier. Les instructions suivantes sont quasiment ecrites en anglais. PRINT*,demande l'achage a l'ecran de donnees(ici une cha^ne de caracteres et l'entierC un peu plus loin dans le code), READ*,demande la lecture au clavier d'une donnee. La variable qui suit cette instruction prendra la valeur qui sera saisie au clavier lors de l'execution. Suivent trois instructions correspondant a des calculs et aectations, ainsi que trois af- chages a l'ecran. L'instructionC=A+Bdemande a la machine d'evaluer la somme des variables entieresAetB, et de stocker le resultat dans la variableC. Ensuite, l'instructionC=A-Bpermettra d'evaluer la dierenceA-Bet modiera la valeur de la variableClui aecter la valeur du resultat de ce calcul.

De m^eme pour l'instructionC=A*B...

Exemple d'execution :TAPER AU CLAVIER LA VALEUR DE A 8

TAPER AU CLAVIER LA VALEUR DE B

3

LA VALEUR DE C=A+B EST 11

LA VALEUR DE C=A-B EST 5

LA VALEUR DE C=A*B EST 24

4Chapitre 1: Introduction

Regles de bases concernant la structure du code source Le code source designe l'ensemble des instructions ecrites dans le chier portant l'extension f90. La seule restriction concernant ce code est que seuls les 127 premiers caracteres de chaque ligne sont pris en compte. Cela signie que si l'on code une commande sur une ligne trop longue, les caracteres tapes apres la 128eme colonne ne sont pas pris en compte par le compilateur, ce qui risque fort d'entra^ner une erreur de syntaxe. Il est possible de contourner ce probleme en scindant une instruction sur deux ou plusieurs lignes. Il sut pour cela d'ajouter le caractere&a la n de la premiere ligne; le compilateur comprend alors que cette ligne ne constitue pas une instruction a elle seule, mais que cette instruction se prolonge sur la ligne suivante. Exemple :A = V+Z*(C+E)**(A-B)+D-E*A+B-T/D+(T+M/G)/R+G*E+Z*(C+E)**(C-B)+D-E*C+B-U/D+(T+A*G)/R+G*E est equivalent a :

A = V+Z*(C+E)**(A-B)+D-E*A+B-T/D+(T+M/G)/R+G*E &

+Z*(C+E)**(C-B)+D-E*C+B-U/D+(T+A*G)/R+G*EInversement, il est possible de mettre sur une m^eme ligne plusieurs instructions, separees par des

Ainsi,A=0

B=0est equivalent a :

A=0 ; B=0

Indentation:

Contrairement au fortran 77, le format est libre en fortran 90. Chaque ligne peut ^etre ecrite indieremment a partir de la premiere colonne, deuxieme colonne, ou plus loin encore. Cela dit, pour faciliter la lecture du code, on respecte generalement des regles d'indentation. Il s'agit de decaler une ou plusieurs instructions vers la droite, dans certains cas. Les exemples de codes donnes dans ce polycopie respectent ces regles, notamment pour les boucles et tests qui seront vus au chapitre 2.

1.2.2 Types de donnees, declaration.

a. Regles pour la declaration des variables. La declaration d'une variable se fait de la maniere suivante(pour l'instant... on verra d'autres manieres de declarer des donnees par la suite): :: oudoit ^etre l'un des types enumeres dans cette section, et oudoit ^etre le nom de la variable. La presence des::est souvent facultative; cela dit, comme elle est obligatoire dans certains types de declaration, il est de coutume de les mettre systematiquement. Le nom de la variable doit obeir aux regles suivantes : Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 20215 Le nom ne doit pas commencer par un chire, et ne doit pas contenir de caractere special, sauf(\underscore") qui est autorise.

La taille est limitee a 31 caracteres.

Il est de bon go^ut de choisir comme nom de variable dans un code un nom susamment explicite pour faciliter la lecture du code. exemples: tdesignera en general un temps,xgauchepourra designer l'abscisse de l'extremite gauche d'un segment, ... Il serait malheureux de donnerxcomme nom a une variable correspondant a un temps, ...

Il est prudent de faire preceder toutes les declarations par l'instructionIMPLICIT NONE. Ceci indique

au compilateur que l'on s'interdit de faire reference a des variables non declarees. La compilation serait alors interrompue avec achage d'un message d'erreur dans le cas ou l'on aurait tente d'utiliser une variable non declaree. Si l'on ne fait pas preceder les declaration parIMPLICIT NONE, le compilateur attribue de lui- m^eme un certain type aux variables qui ne seraient pas declarees, ce qui pourrait conduire a des erreurs... b. Caracteres.(CHARACTER type) Une variable de type caractere - appele parfois aussi cha^ne de caractere - (en anglais : \CHAR- ACTER" et \STRING") est une succession de symboles qui peuvent ^etre : des lettres majuscules ou minuscules, des chires, des \caracteres speciaux" (espace, -*+,;.&# ...) c. Entiers.(INTEGER type) Les elements de ce type sont des nombres entiers, dont la valeur absolue est limitee par une valeur qui depend du nombre d'octets utilises pour les stocker. Si l'entier est \simple precision" (c'est a dire : declare parINTEGERouINTEGER*4), alors il est stocke sur 4 octets, c'est a dire sur 32 bits. L'un des bits correspond a son signe + ou, les 31 autres permettent de denir la valeur absolue de l'entier. L'entier est donc compris entre(2311), c'est a dire entre2147483647 et +2147483647. Si l'entier est \double precision" (c'est a dire : declare parINTEGER*8), alors il est stocke sur 8 octets, c'est a dire sur 64 bits. L'un des bits correspond a son signe + ou, les 63 autres permettent de denir la valeur absolue de l'entier.

6Chapitre 1: Introduction

L'entier est donc compris entre(2631), c'est a dire entre

9223372036854775807 et 9223372036854775807.

d. Reels.(REAL type) Les elements de ce type sont des nombres qui peuvent avoir une \partie decimale". Tout nombrex2Rnon nul peut s'ecrire de maniere unique sous la forme :x="m10e, ou : "=1 correspond au signe,

1m <10,

e2Z. Le mode de stockage d'un reel sur machine s'inspire de cette idee, mais en base 2 : Tout nombrex2Rpeut s'ecrire (pas de maniere unique) sous la forme :x="m2e, ou : "=1 est le signe,

0m <1 s'appelle la \mantisse",

e2Zest l'exposant. Si le reel est \simple precision" (c'est a dire : declare parREALouREAL*4), alors il est stocke sur

4 octets, c'est a dire sur 32 bits.

L'un des bits correspond a", son signe + ou.

Les 8 bits suivants correspondent a l'exposant. Cet exposant peut donc prendre 2

8= 256 valeurs

dierentes, qui sont les entiers allant de128 a +127 inclus. Les 23 bits restants servent a stocker la mantisse, comprise entre 0 et 1. Le plus grand reel stockable ainsi est doncrmax= 1mmax2127<2

1271:70141181038.

Le plus petit est son oppose (1:70141181038).

Le reel strictement positif le plus proche de 0 stockable est r min= 1mmin2127= 2222127= 21491:40129851045 Laprecision relativeen simple precision est la dierence relative entre deux valeurs voisines de la mantisse.

Elle est donc de 2

22, c'est a dire de l'ordre de 2:3841857107.

Si le reel est \double precision" (c'est a dire : declare parREAL*8), alors il est stocke sur 8 octets,

c'est a dire sur 64 bits.

L'un des bits correspond a", son signe + ou.

Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 20217 Les 11 bits suivants correspondent a l'exposant. Cet exposant peut donc prendre 2

11= 2048

valeurs dierentes, qui sont les entiers allant de1024 a +1023 inclus. Les 52 bits restants servent a stocker la mantisse, comprise entre 0 et 1. Le plus grand reel stockable ainsi est doncrmax= 1mmax21023<2

10238:98846567431158

10 307.
Le plus petit est son oppose (8:9884656743115810307). Le reel strictement positif le plus proche de 0 stockable est r min= 1mmin21024= 25221024= 210744:94065645841246510324 Laprecision relativeest donc ici de 252, c'est a dire de l'ordre de 2:2204461016. e. Complexes.(COMPLEX type) Un element de typeCOMPLEXest un couple de reels. Il necessite donc deux fois plus d'espace memoire qu'un reel. Ainsi, un element declare parCOMPLEXouCOMPLEX*8est stocke sur huit octets, soit deux reels simple precision, et un element declare parCOMPLEX*16est stocke sur seize octets, soit deux reels double precision. f. Booleens.(LOGICAL type) Un element booleen (ou logique) peut prendre deux valeurs appelees conventionnellement VRAI et FAUX (ou + et -, ou 0 et 1, ...) .

Il est bien s^ur code sur 1 bit.

g. Parametres. Les declarations que nous avons vues jusqu'a present permettent de declarer des variables pro- prement dites, ce qui signie que l'on peut non seulement utiliser leurs valeurs \en lecture" mais aussi les modier. Il est possible de declarer des parametres, dont la valeur ne pourra pas ^etre modiee par l'execution du code.

La declaration se fait de la maniere suivante :

INTEGER, PARAMETER :: N=10

(la presence des::est indispensable dans ce cas),Nest alors un element ENTIER, dont la valeur reste obligatoirement egale a 10 dans toute l'execution du code. Si l'on tente de modier cette valeurs par une aectation de la formeN=..., on aura une erreur a la compilation.

Nous verrons par la suite (au chapitre 3) quel peut ^etre l'inter^et de declarer des parametres plut^ot

que des variables. h. Declaration avec aectation. Lorsqu'on declare une variable, fortran 90 lui attribue une valeur \par defaut". Par exemple, pour un element de type numerique, fortran 90 attribue par defaut la valeur 0.

8Chapitre 1: Introduction

Il est possible de donner une valeur dierente au moment de la declaration, ceci se fait de la maniere suivante :

REAL :: A=3.5

(la presence des::est indispensable dans ce cas),Aest alors un element de type reel, qui vaut

3.5 au debut du code.

Contrairement aux parametres, une variable declaree ainsi peut ^etre modiee dans la suite du code.

1.2.3 Expressions arithmetiques.

a. Operateurs Les operateurs correspondent aux dierentes operations arithmetiques que sait faire fortran 90. Il y a des operateurs destines aux types numeriques (INTEGER,REALetCOMPLEX), ces operateurs sont + , - , * , / et ** (qui correspond a la \puissance"). D'autres sont destinees au type booleen (les operateurs.AND.,.OR.). Un operateur numerique travaille sur la variable qui le precede et celle qui le suit, et transforme l'expression en une variable du m^eme type. Si les types des arguments sont dierents, le resultats sera du type \le moins inclusif".COMPLEX est moins inclusif queREALqui est moins inclusif queINTEGER. exemples :

3.0 + 0.26correspondra au reel3.26

7 / 2correspondra a l'entier3

3 * 0.25correspondra au reel0.75

Dans les expressions ci dessus, un element ache sans partie decimale designe un element de type ENTIER. 3 n'est donc pas le m^eme objet que 3.0. L'ordre de priorite d'execution des dierentes operations est dicte soit par le parenthesage, soit par les regles usuelles de l'arithmetique.

Ainsi :

3 * ( 7 + ( 1.0 + 2 / ( 1 + 5 ) ) + 3 / ( 2 + 4.0 ) ) = 3 * ( 7 + ( 1.0 + 2 / 6 ) + 3 / 6.0 )

= 3 * ( 7 + ( 1.0 + 0 ) + 0.5 ) = 3 * ( 7 + 1.0 + 0.5 ) = 3 * 8.5 = 25.5 Il est naturellement possible d'eectuer ce type d'operation avec des variables declarees en ent^ete, le resultat dependra de la valeur que contient la variableau moment precis ou est eectuee l'operation. Il existe aussi des operateurs dont le resultat n'est pas de m^eme type que les donnees, c'est notamment le cas des operateurs de tests, dont les resultats sont booleens. Ces operateurs sont.EQ.(teste l'egalite),.NE.(inegalite),.GT.(strictement superieur),.GE. (superieur ou egal),.LT.(strictement inferieur),.LE.(inferieur ou egal).

Exemples :

7.GT.2donne le booleen.TRUE.,

3 * ( 7 + ( 1.0 + 2 / ( 1 + 5 ) ) + 3 / ( 2 + 4.0 ) ) .LT. 20.0 = ... = 25.5 .LT. 20.0 = .FALSE.

Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 20219 b. Aectations Une aectation consiste a attribuer (eventuellement modier) la valeur contenue dans une vari- able.

La syntaxe est :(variable) = (expression)

Dans le programme donne en exemple (section 1.2.1), les aectationsC=A+B,C=A-B,C=A*Bmodient successivement la valeur numerique de la variable entiereC. Les valeurs numeriques des variablesAetBne sont pas modiees car ces variables n'apparaissent qu'a droite du signe egal: on dit que ces deux variables sont utilisees icien lecture. Nous verrons dans la suite de ce cours qu'il existe d'autres moyens de modier les valeurs des dierentes variables. Dans le cas ou les types a gauche et a droite du signe egal ne sont pas les m^emes, l'aectation se fait apres uneconversion.

Exemples

Supposons dierentes variables aient ete declarees de la maniere suivante :

INTEGER :: I

REAL :: A,B

L'instruction

I=3.6 est correcte,3.6est converti a l'entier inferieur le plus proche,Iprendra donc la valeur 3.

L'instruction

A=I+2 est correcte, elle evalue l'expression entiere 3+2, obtient donc l'entier 5. Cet entier est ensuite converti en reel,Aprend donc la valeur5.0.

Attention !!!

L'instruction

B=3/4 est correcte, elle evalue l'expression entiere3/4, obtient donc l'entier0. Cet entier est ensuite converti en reel,Bprend donc la valeur0.0et non pas0.75!!! Beaucoup d'erreurs proviennent de l'oubli de cette regle.

Autre exemple conduisant au m^eme resultat :

B=10**(-6)

est correcte, elle evalue l'expression entiere10**(-6), obtient donc l'entier0.Bprend donc encore la valeur0.0et non pas1E-6...

10Chapitre 1: Introduction

Polytech Clermont-Fd 3AGMM - Fortran 90 & Programmation Numerique - Version Novembre 202111

Chapitre 2: Boucles et Tests.

2.1 Expressions logiques, tests.

Ce paragraphe a pour objet de presenter les dierentes syntaxes possibles pour coder les tests en fortran 90.

2.1.1 L'instruction conditionnelleIF(the logicalIFstatement)

La syntaxe estIF(booleen)

L'instruction qui suit n'est executee que si le booleen a la valeur.TRUE..

Exemple :PROGRAM EXEMPLE21

REAL :: A,B

PRINT*, 'ENTRER LA VALEUR DU REEL A'

READ*, A

PRINT*, 'ENTRER LA VALEUR DU REEL B'

READ*, B

IF (A.GT.B) PRINT*, 'A EST STRICTEMENT PLUS GRAND QUE B'

END PROGRAM EXEMPLE21

donne a l'execution :ENTRER LA VALEUR DU REEL A 3.0

ENTRER LA VALEUR DU REEL B

1.0 A EST STRICTEMENT PLUS GRAND QUE BouENTRER LA VALEUR DU REEL A 2

ENTRER LA VALEUR DU REEL B

2

2.1.2 La structure blocIF-THEN-ELSE

Il est possible d'utiliser une structure \bloc d'instructions" pour ce type de test. Ceci est necessaire dans le cas ou l'on a plusieurs instructions conditionnees par le resultat du test :

Exemple :PROGRAM EXEMPLE22

REAL :: A,B

PRINT*, 'ENTRER LA VALEUR DU REEL A'

READ*, A

PRINT*, 'ENTRER LA VALEUR DU REEL B'

READ*, B

IF (A.GT.B) THEN

PRINT*, 'A EST STRICTEMENT PLUS GRAND QUE B'

PRINT*, 'A=',A

PRINT*, 'B=',B

END IF

END PROGRAM EXEMPLE22

donne a l'execution :ENTRER LA VALEUR DU REEL A 3.0

ENTRER LA VALEUR DU REEL B

1.0

A EST STRICTEMENT PLUS GRAND QUE B

A= 3.0

B= 1.0ouENTRER LA VALEUR DU REEL A

2

ENTRER LA VALEUR DU REEL B

2quotesdbs_dbs21.pdfusesText_27
[PDF] fortran 90 tutorial for beginners pdf

[PDF] fortran 95 examples

[PDF] fortran primer lenguaje de programacion

[PDF] fortran syntax cheat sheet

[PDF] fortran textbook pdf

[PDF] fortran tutorial pdf

[PDF] fortunately synonym

[PDF] forum examen professionnel inspecteur des finances publiques

[PDF] foss mixtures and solutions module answer key

[PDF] foss mixtures and solutions teacher guide

[PDF] foundation mathematics for computer science a visual approach

[PDF] foundation of data science berkeley

[PDF] four skills of language learning

[PDF] fourier series applications in real life

[PDF] fourier series coefficients calculator wolfram