Structure d’un programme
Quelque soit le langage utilisé, un programme se présente comme une succession d’instructions. L’algorithmique étudie la structure des programmes. Cette structure peut se présenter sous forme d’un organigramme où apparaissent de façon schématique les opérations à faire et leur séquence. Les entrées-sorties sont représentées dans des parallélogrammes, les traitements par des rectangles, les ruptures de séquence (ou aiguillages qui donnent des alternatives dans la séquence des instructions) par des polygones. Un organigramme est une représentation graphique de l’enchaînement des suites d’instructions.
Structure d’un fichier Fortran
Le fichier fortran doit posséder un suffixe .f pour être reconnu par le compilateur (par exemple : perim.f). On y trouve une seule instruction par ligne.
La ligne comprend 80 caractères. (C’était le format des cartes perforées). Elle comprend plusieurs zones (1-5 type, 6 suite, 7-72 ordre fortran, 73-80 identification) Les colonnes 1 à 5 contiennent le type:
Si la colonne 1 contient un C, cette ligne est ignorée par le programme, cela vous permet de mettre des commentaires pour faciliter la lecture de votre programme (ou des lignes blanches pour l’aérer). Il est important que votre programme soit bien lisible; les commentaires aident beaucoup.
Les colonnes 1 à 5 contiennent éventuellement des étiquettes, c’est-à-dire un nombre repérant une ligne et qui sert de référence ailleurs.
La colonne 6 indique, si elle contient un caractère, qu’il faut trouver dans cette ligne la suite de l’instruction de la ligne précédente. (Celle -ci est trop longue pour tenir sur une seule ligne). Le caractère peut être quelconque (excepté 0). En règle générale, il vaut mieux éviter d’écrire des instructions longues.
Les colonnes 7 à 72 contiennent l’instruction proprement dite.
Les colonnes 73 à 80 sont ignorées par le compilateur. Vous pouvez y mettre un commentaire; elles servaient autrefois pour numéroter les cartes.
Le programme est structuré de la manière suivante :
− Le mot PROGRAM suivi d’un titre
− déclarations des variables
− lecture des données
− traitement des données
− sortie des résultats
− le mot END pour signaler la fin du programme
Le titre
La ligne-titre ne peut être composée que de deux mots: le mot PROGRAM, suivi (avec un espace) d’un nom de six caractères (lettre ou chiffre) et commençant par une lettre:
^^^^^^PROGRAM^PERI
Ce nom ne doit pas entrer en conflit avec un autre nom ayant aussi une signification (nom d’une variable de votre programme, nom d’une fonction-bilbliothèque…).
Les déclarations
Pour forcer à déclarer TOUTES les variables du programme on utilisera l’instruction
Fortran suivante :
^^^^^^IMPLICIT^NONE
Dans les déclarations, vous allez définir les noms et les types de toutes les variables utilisées dans le programme. Soit
INTEGER
REAL
DOUBLE PRECISION
COMPLEX
CHARACTER
LOGICAL
pour des nombres entiers
réels
réels longs
complexes
texte
logiques
Les variables sont des cases-mémoires repérées par un nom. Ce nom contient six caractères; il doit débuter par une lettre et ne pas avoir déjà reçu une autre signification (il n’est pas possible de réutiliser le nom du programme).
Exemples de déclarations:
^^^^^^INTEGER^*2^I, J, K
I, J et K sont des entiers stockés sur deux octets.
^^^^^^REAL^*4^RAYON, PERIM
RAYON et PERIM sont des réels stockés sur quatre octets.
Si l’on ne précise pas le nombre d’octet, la simple précision correspond sur IBM à 4 octets et la double à 8.
^^^^^^DOUBLE PRECISION^A, B
^^^^^^CHARACTER^*12^C
Le choix réel ou double précision est important pour les manipulations de ces nombres. Il n’est pas indifférent de déclarer REAL*8 A ou DOUBLE PRECISION A car cela va déterminer le choix de fonctions bibliothèque qui vont être appelées (par exemple la fonction sinus est différente suivant les déclarations SIN() ou DSIN()).
Les constantes contiennent des valeurs qui ne peuvent pas être modifiées lors de l’exécution du programme.
exemples de constantes:
entières : 15, -4 le signe + peut être omis
réelles : 3.14159, -12.3, 1.E3, 1.6E-19
double precision : 0.D0, 6.023D-23
C’est le point qui correspond à la virgule en français.
Un réel utilisant 4 octets (soit 32bits) est codé de la façon suivante: Le nombre réel est converti en binaire et la virgule est décalée vers la gauche. 4.25 s’exprime par 1.0001 *22. Un bit définit le signe, 8 bits sont réservés pour l’exposant (ici 2) et le reste (23 bits) sert pour la mantisse (10001). Les valeurs limites pour l’exposant sont -126 et +127 ce qui conduit en binaire à 1*2-126 et à 2*2127 c’est à dire en base 10 à 1.2*10-38 et à 3.4*1038.
Caractères : ‘RESULTATS’
la chaîne de caractère doit être placée entre cotes logique : .T. ou .F. (à revoir plus tard)
On peut également affecter des valeurs à une série de variables au moyen d’un DATA placé après les déclarations.
^^^^^^DATA^E,AVOG,PLANC^/1.6E-19,6.023E23,6.62E-34/ ^^^^^^DATA^ZERO,NUL,O^/3*0.0/
Affectation de valeurs: Cela se fait par le signe =
^^^^^^N=2
^^^^^^N=M
^^^^^^PI=3.14159
^^^^^^IM=(3.14,0.0)
^^^^^^NOM=’RESULTAT’
signifie que l’on met 2 dans la case mémoire appelée N (cette instruction se lit de droite à gauche), M dans la case N, 3.14159 dans la case PI…
La nouvelle valeur remplace toute autre valeur précédemment définie.
Au terme de la séquence
^^^^^^N=2
^^^^^^N=3
N vaudra 3
^^^^^^N=N+1 signifie que l’on calcule d’abord N+1 et que l’on attribue cette valeur calculée à N.
ATTENTION, il doit y avoir compatibilité (Homogénéité) entre les déclarations de N et M. Sinon, vous aurez un message d’erreur. Si l’on définit un entier à partir d’un réel, celui-ci prendra la valeur entière la plus proche. Toute nouvelle définition remplace la précédente; une variable N a la valeur attribuée par la dernière instruction N= exécutée.
1 : Introduction
2 : Structure d’un programme Fortran
3 : Aiguillages
4 : Processus itératifs
5 : Variables indicées
6 : Sous-programmes