Langage de programmation Fortran Mr S. BOUHEND
Langage de programmation Un langage de programmation est une notation utilisée pour exprimer des algorithmes et écrire des programmes. Un algorithme est un procédé pour obtenir un résultat par une succession de calculs, décrits sous forme de pictogrammes et de termes simples dans une langue naturelle.
Historique Années 50: Création des langages de haut niveau (plus proches de l'homme). Années 60: Foisonnement de langages spécialisés. Forth. Simula I. Lisp, Cobol. Années 70: Duel entre programmation structurée avec Pascal et l'efficacité du langage C (cela dure encore en 2000). Années 80: Expérimentation d'autres voies et notamment des objets. ML. Smalltalk. Sur les microordinateurs, utilise maintenant C, Pascal, Basic compilé.
Historique Années 90: Généralisation de la programmation objet grâce aux performances des microordinateurs. Java, Perl, Python s'ajoutent aux langages micros. Années 2000: Programmation Internet (et les innovations à venir, voir en fin de texte). Années 2010: Concurrence et asynchronisme. Les langages JavaScript, Go, Julia entre autre aident à créer des applications en ligne fluides.
Quelque langages de programmation
Programme informatique? Un programme informatique est un ensemble d'opérations destinées à être exécutées par un ordinateur. Un programme source est un code écrit par un informaticien dans un langage de programmation. Il peut être compilé vers une forme binaire, ou directement interprété. Un programme binaire décrit les instructions à exécuter par un microprocesseur sous forme numérique. Ces instructions définissent un langage machine.c
Programme informatique?
Programme informatique? Le langage machine.
Le langage FORTRAN Fortran est un langage de programmation, développé par IBM vers 1955, et destiné a fournir aux scientifiques un moyen simple pour passer de leurs formules mathématiques jusqu'a un programme effectif (son nom est une abréviation de FORmula TRANslator). Il est très efficace dans le domaine du calcul numérique, et ore de nombreuses bibliothèques de programmes d'analyse numérique.
Le langage FORTRAN Fortran a fait l'objet de plusieurs normalisations : fortran 77, fortran 90 et 95, et plus recemment fortran 2003. Le present document s'interesse aux versions 90/95 (peu dierentes l'une de l'autre).
Le langage FORTRAN Fortran a fait l'objet de plusieurs normalisations : fortran 77, fortran 90 et 95, et plus recemment fortran 2003. Le present document s'interesse aux versions 90/95 (peu dierentes l'une de l'autre).
Le langage FORTRAN Structure de programme Un programme source Fortran est composé de parties indépendantes appelées unités de programme (scoping unit) : le programme principal les sous-programmes : de type subroutine de type function les modules les block data
Le langage FORTRAN Structure de programme program nom_du_programme « déclaration des variables » « instructions » end program nom_du_programme
Le langage FORTRAN Structure de programme Un programme source Fortran est composé de parties indépendantes appelées unités de programme (scoping unit) : le programme principal les sous-programmes : de type subroutine de type function les modules les block data
Le langage FORTRAN Structure de programme
Le langage FORTRAN Structure de programme Deux format d’écriture : Format Fixe (anciennes version) Format Libre (à partir de la version 90)
Le langage FORTRAN Structure de programme Dans le mode < format libre > les lignes peuvent être de longueur quelconque a concurrence de 132 caracteres. Il est également possible de coder plusieurs instructions sur une même ligne en les séparant avec le caractère ; . Le caractère « ! » indique que ce qui suit est un commentaire Exemple : print *, ' Entrez une valeur :’ ; read *,n
Le langage FORTRAN Structure de programme Une instruction peut être codée sur plusieurs lignes : on utilisera alors le caractére < & >. Exemple print *, 'Montant HT :', montant_ht, & ' TVA :', tva , & 'Montant TTC :', montant_ttc
Le langage FORTRAN Déclarations & variables Identificateurs Donne un nom à : une variable une constante une procédure
Le langage FORTRAN Déclarations & variables Identificateurs Règles à suivre : suite de caractères alphanumériques (lettres non accentuées, chiffres, underscore“_“) une lettre en premier caractère longueur limitée à 31 caractères pas de distinction majuscule/minuscule (case insensitive)
Le langage FORTRAN Déclarations & variables Identificateurs Exemples : A test1 AbCdE ze_E
Le langage FORTRAN Déclarations & variables Identificateurs Exemples (incorrects): 1var test 1 AbCdE ze-E program
Le langage FORTRAN Déclarations & variables Types de données Le type d’une variable détermine : le nombre d’octets à réserver en mémoire un mode de représentation interne l’ensemble des valeurs admissibles l’ensemble des opérateurs qui peuvent lui être appliqués
Le langage FORTRAN Déclarations & variables Types de données Le type d’une variable détermine : le nombre d’octets à réserver en mémoire un mode de représentation interne l’ensemble des valeurs admissibles l’ensemble des opérateurs qui peuvent lui être appliqués
Le langage FORTRAN Déclarations & variables Types de données INTEGER entier CHARACTER caractère LOGICAL deux valeurs, .TRUE. ou .FALSE. REAL réel simple précision DOUBLE PRECISION réel double précision COMPLEX complexe simple précision
Le langage FORTRAN Déclarations & variables Exemples de déclaration Les «::» ne sont pas obligatoires INTEGER :: A REAL :: D LOGICAL logi CHARACTER Char !un seul caractère CHARACTER(len=4) chaine !une chaine de 4 caractère COMPLEX z
Le langage FORTRAN Déclarations & variables Initialisation et modification Une initialisation pourra s’effectuer à l’aide du symbole « = » Fortran permet d’initialiser une variable lors de sa déclaration Dans ce cas, les caractères :: sont obligatoires
Le langage FORTRAN Déclarations & variables Initialisation et modification Exemples: INTEGER :: A=5 REAL D LOGICAL :: logi= .TRUE. CHARACTER Char !un seul caractère CHARACTER(len=4) chaine !une chaine de 4 caractère D=4.5 chaine = ‘abcd’
Le langage FORTRAN Déclarations & variables Le type INTEGER (entier): INTEGER :: a,b,c a=-5 c=+10;b=22
Le langage FORTRAN Déclarations & variables Le type REAL (Réel): Les constantes de type réel s’écrivent indifféremment suivant l’une des deux notations: Décimale (doit comporter obligatoirement un .) 12.43 -0.38 .38 4. -.27 Exponentielle (utilisation de la lettre e, le . peut être absent) 4.25E4 4.25e+4 425e2 0.54e-2 5.4e-3 48e13 48.e13 48.0e13
Le langage FORTRAN Déclarations & variables Le type REAL (Réel): En double précision, les constantes s’écrivent obligatoirement sous forme exponentielle en utilisant la lettre d à la place de e. 4.25D4 4.25d+4 425d2
Le langage FORTRAN Déclarations & variables Le type COMPLEX (complexe): Pour Fortran, un nombre complexe est un couple de nombres réels. variable = cmplx(variable_r,variable_i) Exemple : complex :: z real :: x,y …… z = cmplx(x,y)
Le langage FORTRAN Déclarations & variables Le type COMPLEX (complexe): Pour Fortran, un nombre complexe est un couple de nombres réels. variable = cmplx(variable_r,variable_i) Exemple : complex :: z real :: x,y …… z = cmplx(x,y)
Le langage FORTRAN Déclarations & variables Le type CHARACTER (chaine de caractère): Pour déclarer une chaîne de caractères on précise sa longueur. Si elle n’est pas indiquée elle est égale à 1. character[(len=<longueur>)] [,<attribut(s)>] [::] <variable> [=<value>] Longueur: Expression entière ou * (déduction par le compilateur de la longueur)
Le langage FORTRAN Déclarations & variables Le type CHARACTER (chaine de caractère): character(len=10) :: nom character :: oui_ou_non character(len=10) :: ville=’sidi bel abbes’ !Tronqué character(len=8) :: payé=’Algérie' !complété à gauche character(len=8) :: capitale='Algérie' character(len=*),parameter :: lang='F90' !auto-détecté
Le langage FORTRAN Déclarations & variables Les expressions constantes permet de définir une « constante symbolique », un symbole auquel on attribue une valeur qui ne pourra être modifiée par le programme. <type>, parameter :: <variable(s)> = <value> Ici les :: sont obligatoires. Exemple : interger, parameter :: n1=50, n2=120 REAL, parameter:: PI=3.14
Le langage FORTRAN Déclarations & variables Les types implicites Fortran 90 ne rend pas obligatoire les déclarations des types des variables. Fortran attribue implicitement un type à une variables non définies Exemple : integer :: nbre = 5, k …… k = nbr + 1
Le langage FORTRAN Déclarations & variables Les types implicites Solution : Supprimer les types implicites On ajoutant l’ instruction IMPLICIT NONE avant la déclaration des variables.
ReAl :: x CHARACTER :: name CHARACTER(LEN=10) :: name REAL :: var-1 INTEGER :: 1a BOOLEAN :: loji DOUBLE :: X CHARACTER(LEN=5) :: town = "Glasgow" CHARACTER(LEN=*) :: town = "Glasgow" CHARACTER(LEN=*), PARAMETER :: city = "Glasgow" INTEGER :: pi = +22/7 LOGICAL :: wibble = .TRUE. CHARACTER(LEN=*), PARAMETER :: "Bognor" REAL, PARAMETER :: pye = 22.0/7.0 REAL :: two_pie = pye*2 REAL :: a = 1., b = 2 LOGICAL(LEN=12) :: frisnet CHARACTER(LEN=6) :: you_know = ’y’know" CHARACTER(LEN=6) :: you_know = "y’know" INTEGER :: ia ib ic id DOUBLE PRECISION :: pattie = +1.0D0 DOUBLE PRECISION :: pattie = -1.0E-0 REAL :: poie = 4.*atan(1.)
ReAl :: x ok CHARACTER :: name ok CHARACTER(LEN=10) :: name ok REAL :: var-1 on ne peut pas avoir « -1 » dans un identificateur INTEGER :: 1a un iden. ne peut pas commencer par un nombre BOOLEAN :: loji type « boolean » n’existe pas : utiliser « logical » DOUBLE :: X le type correct est « double precision » CHARACTER(LEN=5) :: town = "Glasgow” OK, town=« Glasg » CHARACTER(LEN=*) :: town = "Glasgow” on ne peut pas avoir « len(*) » pour un non-PARAMETER CHARACTER(LEN=*), PARAMETER :: city = "Glasgow” ok INTEGER :: pi = +22/7 OK, la valeur de pi sera 3 car c’est un entier LOGICAL :: wibble = .TRUE. ok CHARACTER(LEN=*), PARAMETER :: "Bognor" Non, pas de nom de variable REAL, PARAMETER :: pye = 22.0/7.0 ok REAL :: two_pie = pye*2 OK si pye est un PARAMETER REAL :: a = 1., b = 2 OK, la valeur de b est 2.0 LOGICAL(LEN=12) :: frisnet Non, pas de LEN dans LOGICAL CHARACTER(LEN=6) :: you_know = ’y’know” problème des délimiteurs CHARACTER(LEN=6) :: you_know = "y’know” ok INTEGER :: ia ib ic id enlever les espaces ou mettre des virgules DOUBLE PRECISION :: pattie = +1.0D0 OK, les « : : » sont obligatoires DOUBLE PRECISION :: pattie = -1.0E-0 ok REAL :: poie = 4.*cos(0.3) utilisation interdite de fonctions (cos)
Le langage FORTRAN Les expressions et l’instruction d’affectation L’instruction d’affectation se présente sous la forme: <variable> = <expression>
Le langage FORTRAN Les expressions et l’instruction d’affectation Expressions arithmétiques: Addition : + Soustraction : - Multiplication : * Division : / (Pas de division par zéro!) Exponentiation :** (ab a**b)
Le langage FORTRAN Les expressions et l’instruction d’affectation Expression peut faire intervenir des opérateurs comme la division entière, l’exponentiation,… plusieurs opérateurs et, donc, des problèmes de priorité des variables de types différents, ce qui engendre des conversions implicites une variable ayant un type différent du résultat fourni par l’expression engendre des conversions forcées
Le langage FORTRAN Les expressions et l’instruction d’affectation Exemples 99/100 ! vaut 0 , INTEGER 99. /100 ! vaut 0.99 , REAL
Le langage FORTRAN Les expressions et l’instruction d’affectation Ordre des opérations Exponentiation Multiplication et division (gauche à droite) Addition et soustraction En cas de doute, utiliser les parenthèses! Exemple: 4+ 8/2 vaut 6 ou 8 ?
Le langage FORTRAN Les expressions et l’instruction d’affectation Expressions logiques : les comparaisons
Le langage FORTRAN Les expressions et l’instruction d’affectation Expressions logiques : opérateurs logiques Le langage FORTRAN Les expressions et l’instruction d’affectation
Le langage FORTRAN Les opérations de lecture et d’écriture Les ordres d’entrée/sortie permettent de transférer des informations entre la mémoire centrale et les unités périphériques (terminal, clavier, disque, imprimante,…)
Le langage FORTRAN Les opérations de lecture et d’écriture print *,a
Le langage FORTRAN Les opérations de lecture et d’écriture Sortie Entrée write(périphérique, format [,options]) liste print format , liste read(périphérique, format [,options]) liste read format , liste
Le langage FORTRAN Les opérations de lecture et d’écriture Sortie : Sortie Standard(Ecran) Le * est associé au format de sortie. Le 1ier * est associé au sortie standard(Ecran). Le 2ier * est associé au format de sortie. print *, ‘Je suis un texte à afficher’ write(*,*) ‘Je suis un texte à afficher’
Le langage FORTRAN Les opérations de lecture et d’écriture Sortie : Sortie Standard(Ecran) Affichage de la valeur dune variable: ou real :: var var = 2.5 write (* ,*) var write (* ,*) 'La variable var vaut : ' , var
Le langage FORTRAN Les opérations de lecture et d’écriture Entrée : Entrée Standard(Clavier) integer age character(len=20) nom character(len=20) prenom read *, nom read *, prenom read *, age read *, nom, prenom, age
Le langage FORTRAN Les opérations de lecture et d’écriture Entrée : Entrée Standard(Clavier) D’une manière interactive integer age character(len=20) nom character(len=20) prenom print * , ’Entrez votre nom : ’; read *, nom print * , ’Entrez votre prenom : ’; read *, prenom print * , ’Entrez votre age : ’; read *, age