Fortran 95 Types, objets, déclarations

Opérations numériques

● Pour entiers (integer) et réels (real), opérateurs relationnels : <, <=, ==, /=, >=, >
Résultat logique Exemple : x = i == 3
● Opérations arithmétiques : + – * / **
Sous-types numériques
● Ensembles de valeurs plus ou moins étendus (valeurs extrêmes, nombres de chiffres significatifs)
Cf. programme num_inquiry.
● Existence d’un sous-type par défaut real a ! sous-type par défaut a = 3.
Choix d’un sous-type à la déclaration integer(kind=…) a real(kind=…) x complex(kind=…) z
Valeurs possibles de kind : entières ≥ 1, dépendent du compilateur
x = 3._2 ! real(kind=2)

Type entier

● Plus grande valeur du sous-type : huge(i), huge(0)
● Constantes littérales : sans point décimal
● / : division euclidienne
Attention : 1 / 2 vaut 0
● Fonctions prédéfinies : abs(a) valeur absolue mod(a, p) identique à : a – (a / p) * p

Choix d’un sous-type entier

selected_int_kind(r)
pour un sous-type qui contienne au moins les entiers à r chiffres
Exemple :
integer, parameter:: wp & = selected_int_kind(9) integer(wp) i
Type réel
● Plus petite valeur positive non nulle : tiny(x)
Plus grande valeur : huge(x)
Plus petit ε tel que 1 + ε > 1 : epsilon(x)
● Constantes littérales : Sans exposant : -8.4
Avec exposant : 1e4, 64.2e-5
● Choix d’un sous-type réel : selected_real_kind(p, r) p : nombre de chiffres décimaux
r : intervalle de valeurs de l’exposant (10-r à 10r) 29/200

Réel double précision

● C’est un sous-type réel prédéfini
● Déclaration : double precision x équivalent à : real(kind=une certaine valeur qui dépend du compilateur) x
● Constantes littérales : 0d0 4.3d0 5d-3

Type character

● Constantes littérales entre apostrophes ou guillemets : ‘*’ ‘A’ ‘9’ « ‘ » ‘ »‘ « x = ? »
● Longueur d’une chaîne : nombre de caractères Déclaration : character(len=5) a character b
● Opérateur de concaténation : //
Type logique
● Constantes littérales : .false. .true.
● Opérateurs : .not. .or. .and. .eqv. .neqv.

Initialisation à la déclaration

● Obligatoire pour une constante symbolique : real, parameter:: pi = 3.14159265,& e = 2.7182818
● Facultative pour une variable : real:: x = 0, y

Affectation

● variable réceptrice = expression Exemple : n = n + 1
● La variable et l’expression doivent être toutes deux de types numériques, ou toutes deux logiques, ou toutes deux chaînes de caractères
● Des règles de priorité entre opérateurs (arithmétiques avant comparaison avant logique, / et * avant + et -, etc.) Parenthèses pour imposer un ordre Exemples :
a / b / c identique à : x > y .or. i + j ==
a / (b * c)
k * l

Conversions entre types

numériques
● Conversion implicite lors de l’affectation Exemple : integer i real r
i = -1.9 ! reçoit -1 (pas d’arrondi) r = 2 ! reçoit 2.
r = (2.3, 1.) ! reçoit 2.3
● Conversion explicite : int(a[, kind]) real(a[, kind]) cmplx(x, [y, ][, kind])
● Conversion vers le type « le plus riche » dans une expression
Exemple : 1. / 2
Sous-chaînes et affectation entre chaînes de caractères
● Sous-chaîne :
v(d:f) v(d:) v(:f)
Exemples :
character(len=8):: mot = « aversion » mot(2:5) vaut « vers » mot(6:6) vaut « i » mot(2:1) vaut «  »
● Affectation : chaîne expression tronquée ou complétée avec des blancs si besoin
Affichage à l’écran et saisie au clavier
● print *, liste de valeurs print * ! ligne vide
● read *, liste de variables
Chaîne de caractères : guillemets inutiles en général
Valeurs peuvent être entrées sur plusieurs lignes
● Question et réponse sur la même ligne : write(unit=*, fmt= »(a) », & advance= »no ») « x = ? » read *, x

● Introduction
● B, A, BA
● Types, objets, déclarations
● Affectations, expressions
● Alternative
● Itération
● Procédures : sous-programmes et fonctions

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *