next up previous
Next: Contrôle de l'exécution Up: Initiation au Langage Fortran Previous: Manipulation de textes

Sous-sections

Entrées / Sorties

On appelle « Entrées / Sorties », tout ce qui permet à un programme de dialoguer avec l'extérieur :

Le langage FORTRAN permet d'écrire ou de lire des données sur différentes choses.

Pour écrire, on utilise l'instruction write :

Pour lire, on utilise l'instruction read :

On distingue les lectures/écritures :

formatées
c'est à dire organisée en lignes de caractères. C'est la cas des lectures clavier et des écritures écran, des lectures/écritures de fichiers texte et de chaînes.

non-formatées
qui signifie transfert octet par octet. C'est le cas des lectures/écritures sur fichiers binaires.

   
Écriture formatée

Syntaxe

write(unité d'écriture, formatage) liste de données

Exemples

      write(*,*) i,j,x,y

écrit les valeurs des variables i,j,x,y sur une ligne, séparées par des blancs.

      write(*,*) 'z vaut',z

écrit la chaine « z vaut », suivie de la valeur de la variable z.

Important : se souvenir qu'une instruction write écrit une ligne puis revient à la ligne. Donc un write est égal à une ligne d'affichage.

   
Formats d'écriture

Un format est une série de codes, chaque code définissant le format d'écriture d'un élément d'une donnée.

Définition du format

Deux solutions :

Format entier

Dans un format, la notation in permet d'afficher un entier. L'entier est écrit sur n caractères en tout :

Exemples :

      i=11
      j=20312
      write(*,'(i6,i6)') i,j

donne

$\underbrace{\sqcup\!\sqcup\!\sqcup\!\sqcup\!11}_{{\sf 6 caract.}}
\underbrace{\!\sqcup 20312}_{{\sf 6 caract.}}$

Variante avec l'instruction format :

 10   format(i6,i6)
      i=11
      j=20312
      write(*,10) i,j

Format réel virgule flottante

Dans un format, la notation en.m permet d'afficher un réel en virgule flottante sur n caractères en tout avec m chiffres significatifs, c'est à dire :


\begin{displaymath}\underbrace{\pm 0.\underbrace{\sqcup\!\sqcup\!\sqcup\!\dots\sqcup}_{m\,caract.}
E\pm\sqcup\sqcup}_{n\,caract.}
\end{displaymath}

Pour que le format soit cohérent, il faut $n \geq m+7$.

Exemples :

      x=-1456.2
      y=1.6e-19
      write(*,'(e14.5,e14.5)') x,y

affiche

$\underbrace{\sqcup\!\sqcup\! -0.14562E+04}_{14\,caract.}$
$\underbrace{\sqcup\!\sqcup\!\sqcup 0.16000E-18}_{14\,caract.}$

Format chaîne

Dans un format, la notation an permet d'afficher une chaîne de caractères.

On peut ajouter un $ après le a pour éviter de revenir à la ligne.

Exemples de formats mixtes

      i=36
      px=-1456.2
      write(*,'(a,i4,a,e12.5)')
     &  'i vaut', i, ' et x vaut', x

affichera

i vaut 36 et x vaut -0.14562E+04

En conclusion

Les formatages doivent être utilisés si c'est absolument nécessaire. Dans la plupart des cas le format par défaut (*)1 suffit largement, et il est inutile de perdre du temps a formater les sorties écran.

Lecture formatée

La lecture formatée s'applique

au clavier
aux fichiers texte

Principe

On lit une ligne de caractères d'un seul coup, la lecture étant validée par :

Les données sur une même ligne doivent être séparées par des blancs.

Syntaxe

read(unité de lecture, formatage) liste de variables

Conseil

Le plus simple est d'utiliser tout le temps le format libre *. Exception: pour lire des variables caractères ou chaînes de caractères, le format libre ne fonctionne pas. Utiliser le format chaîne a.

Exemple

      real a,b,c
      ...
      read(*,*) a,b,c

attend de l'utilisateur qu'il frappe trois réels au clavier séparés par des espaces puis la touche RETURN ( $\hookleftarrow$). On peut entrer les nombres en format virgule flottante. Pour entrer (1,2) dans a, (1,6.10-19) dans b et (32) dans c, l'utilisateur pourra taper :

1.2 1.6e-19 32

Un exemple classique d'écriture suivie d'une lecture sur la même ligne :

      write(*,'(a,$)') 'Entrez x :'
      read(*,*) x

Le message sera affiché, mais le curseur ne reviendra à la ligne que lorsque l'utilisateur aura entré x suivi de RETURN.


next up previous
Next: Contrôle de l'exécution Up: Initiation au Langage Fortran Previous: Manipulation de textes

Copyright © EMAC - 1996-1999 - Paul GABORIT