Fortran

You might also like

Download as pdf
Download as pdf
You are on page 1of 7
EPAC SIL 2023-2024 TRAVAUX PRATIQUES N‘2 Exercice 1: Nombres de Amstrong Les nombres de Amstrong appelés parfois nombres cubes sont des nombres entiers qui ont la particularité d°étre égaux & la somme des cubes de leurs chiflres. Par exemple, 153 est un nombre de Amstrong car on a 153 = 13 + 53+ 3? ‘crire un programme fortran 90 qui affiche 4 I’éeran tous les nombres de Amstrong sachant qu’ils sont tous compris entie 100 et 499. Indication : Les nombres de Amstrong sont : 153, 370, 371 et 407. Exercice 2 : La table de multiplication Eerire un programme sous Fortran90 qui demande & l'utilisateur @entrer un nombre entier n compris entre 1 et 9, jusqu’a ce que utilisateur tape effectivement un nombre entier compris entre 1 et 9. (Voir exemple sur la figure | ci-dessous) Le programme lit Ventier n puis affiche les tables de d’addition et de multiplication par n, i-dessous. exaetement comme présentés sur la figure 1 ea ea ee Q Meese a re Entrer un nombre entier f compris entre 1 et 9 i DORM aC an seagate aC 1= 8 ana eeg 2 9 rC] 3= 10 ra caer Fa Ey A Ee 14 ce 1s 56 rT) CF] Cag iu Cae 7 mee) ca rs Fs + + + + Fr ry M + Figure 1 : Exemple de table de multiplication par 7 Exereice 3 : Affichage de la matrice A En utilisant des boucles do, écrire un programme Fortran90 qui affiche a I"éeran la matrice A ci- dessous, exactement selon le format présenté & la figure 2. 9 2 0 0 0 0 0 0 Exercice 4 : Affichage de la matrice B eccocouws cocoon wwe cocuecwn conwoewe CrLS LCE COL @ewsvwvvove Figure 2 : Affichage de la matrice A I’écran En utilisant des boucles do, écrire un programme Fortran90 qui affiche a I’écran la matrice B ci- dessous, exactement selon le format présenté a la figure 3 1 2 9 8 10 11 18 17 A= 19 20 27 26 28 29 36 35 37 38 3 7 12 16 a1 25, 30 34 39 4 6 13 15 22 24, 31 33 40 5 5 14 14 23 23 32 32 a1 6 4 15 13 24 22 33 31 42 7 8 2 17 1. 26 20 35 29 44 ure 3; Affichage de la matrice Ba I'écran 9 1 18 10 27 19 36 28 45 Fortran : Principales procédures intrinséques élémentaires ABS : retoumne la valeur absolue de son argument. Pour un complexe, retourne sa norme : Vx? + y? ABS(-1) = 1 7 ABS(-1.5) = 1.5 7 ABS((3.,4.)) = 5.0 7 * ACHAR : retourne le caractére de la table ASCII dont le rang est transmis en argument. ACHAR(88) = 'X'; ACHAR(42} = ‘+ ; * ACOS : retourne I'are cosinus en radians de son argument réel, ACOS(0.54030231) = 1.0; ADJUSTL : cadre a gauche la chaine pass¢e en argument : supprime les blancs en téte ; compléte & droite par des blancs. ADJUSTL(* Fortran’) = ‘Fortran ' # ADJUSTR : cadre A droite la chaine passée en argument : supprime les blanes en fin ; complete a gauche par des blanes. ADJUSTR('¥ortran ') = ' Fortran’ ; # AIMAG : retourne la partie imaginaire du complexe passé en argument. AIMAG((2.,3.)) = 3.0 7 # AINT : tronque le réel passé en argument. AINT(2.783) = 2.0 7 AINT(-2.783) = -2.0 7 © ANINT : retourne, sous forme d'un réel, l'entier le plus proche du réel transmis. ANINT(2.783) = 3.0 7 ANINT(=2.783) = -3.0 7 * ASIN : retourne lare sinus en radians de son argument réel, ASIN(0.84147098) = 1.0 @ ATAN : retourne are tangente en radians de son argument réel. ATAN(1.5574077) = 1.0 7 © BIT_SIZE ; retourne le nombre de ‘sentation de l'entier passé en. argument, B(1) = 327 ion du bit a © BEST : permet de tester la valeur d'un bit d'un entier : Nentier ainsi que ta posit {ester sont passés en argument, BTEST(8,3) = true. ; BTEST(10,2) = .false. 7 ‘© CEILING : retourne l'entier immédiatement supérieur au réel transmis en argument. LING(3,7) = 4, CEILING(-3.7) = -3; © CMPLX : retourne un complexe dont les parties réelle et imaginaire sont transmises en argument. CMPLX(-3.) =-3.0+0.i 7 CMPLK(2,4.) = 2,044.01 ; # consG : retourne le complexe conjugué de celui passé en argument. CONIG({-3.0,4.0)) = -3.0-4.0i # cos : retourne le cosinus de langle passé en argument (exprimé en radians), cos(1.0) = 0.54030231 ; © cos: retourne le cosinus hyperbolique COSH(1.0) = 1.5430806 : # DaLe : conventt en double précision largument transmis, © EXP : retourne l'exponentiel de l'argument transmis ; EXP(1.0) = 2.7182818 # FLook : retoume l'entier immédiatement inférieur au réel transmis en argument FLOOR(3.7) = 3, FLOOR(~3.7) ¢ TACHAR : retourne le rang dans la table ASCII du caractére transmis en argument, IACHAR('X") = 88 ; IACHAR('*') = 42 ; « IAND : retourne l'entier dont la représentation binaire est obtenue en combinant a l'aide d'un « et logique » les bits des deux entiers transmis en argument, TAND(1,3) = 1 7 IAND(10,10) = 10; © IBCLR : permet de forcer a zéro un bit d'un entier : l'entier ainsi que la position du bit 4 forcer sont passés en argument. TBCLR(14,1) = 12, IBCLR(/ 1,2,3,4), 31) = (/ 29.27.2315.) 5 « IBITS : permet l'extraction d'une séquence de bits d'un entier. L'entier suivi de la po ainsi que la longueur pour effectuer lextraction sont passés en argument, IBETS(14,1,3) = 75 ‘entier aii © IBSET : permet de foreer & 1 un bit d'un entier i que la position du bit a forcer sont passes en argument. IBSET(12,1) = 14, IBSET((/ 1,2/3,4 /), 0) = (/ 163,305 /) ¢ © IEOR : retourne l'entier dont la représentation binaire est obtenue en combinant a l'aide d'un « ou exclusif » les bits des deux entiers transmis en argument. TEOR(1,3) = 2 7 TEOR(10,10) = 0 7 © INDEX : retourne la position d'une sous-chaine dans une chaine. La chaine suivie de la sous- chaine et du sens de la recherche sont fournis en argument. INDEX (*FORTRAN', 'R') = 3, INDEX (‘FORTRAN', 'R',BACK=.true.) = 5 7 ‘© DN? : convertit en entier 'argument transmis. INT(=3.7) = -3 7 INT(9.1/4.0) = 2; © IOR : retourne I'entier dont la représentation binaire est obtenue en combinant a l'aide d'un « ou logique » les bits des deux entiers transmis en argument. TOR(1,3) = 3, TOR((/ 3,2 /),(/ 1,10 /)) = (/ 3,10 /) = * ISHFT : permet d'effectuer un décalage des bits de lentier passé en premier argument. Le deuxiéme argument indique le nombre de bits & décaler : son signe indique le sens du décalage (positif = gauche, négatif = droite). Les bits sortants sont perdus, les positions vacantes sont mises a zéro. ISHFT(3,1) = 6 ; ISHFT(3,-1) = 1 ; ¢ ISHPTC : idem ISHFT 4 la diffrence que le décalage est circulsire et s'effectue sur les n bits de droite de l'entier , n étant fourni en troisiéme argument (s'il est absent il est considéré égal au nombre de bits de l'entier), ISHET(3,2,3] = 5 7 ISHET(3,-2) = -1073741824 ; ven: retourne la longueur de la chaine de caractéres transmise en argument. CHARACTER (Len=10) CH ; LEN(CH) = 10 ; © LEN_TRIM : retourne la longueur de la chaine de caractéres transmise en argument sans considérer les blanes de fin. TRIM(* FORTRAN ') = 9 7 LEN TRIM(' ') = 0 7 ©: compare les deux chaines de caractéres transmises en argument : retourne . true. si lapremidre chaine est supérieure ou égale a la deuxiéme, . false. Sinon. E(*MANET', "MONET') = .false., LGE (‘MANET Edouard , "MAN ) = .true, * uct : compare les deux chaines de caractéres transmises en argument ; retourne . true. si la premigre chaine est supéricure strictement a la deuxiéme, . false. sinon, LGT("MANET', 'MANET') = . false. ¢ © LL : compare les deux chaines de caractéres transmises en argument : retourne . true. si la premiere chaine est inféricure ou égale a la deuxiéme, . false. Sinon. LLE(*MANET", "MONET" ) strue., LLE(*MANET', "MANET") steve. ‘© LLT: compare les deux chaines de caractéres transmises en argument : retoune . true. si la premiére chaine est inférieure strictement a la deuxiéme, . fase. sinon. LLT('MANET', 'MANET') = . false. © L0G : retourne le logarithme népérien de l'argument transmis. L0G (2. 7182818) © ; L0G(10.0) = 2.3025851 ; # 10610 : retoume le logarithme décimal de 'argument transmis. 10610 (10.0) = 1.0 ; £0610(10.£10) = 11.0 @ wax : retourne le maximum des nombres passés en argument. MAX(-9.0,7.0,2.0) = 7.0 ; © 1 : retourne le minimum des nombres passés en argument. Min 9.0,7.0,2.0) = -9.0 5 © mop : retourne le reste de la division effectuée 4 l'aide des deux arguments fournis. MoD(3.0,2.0) = 1.0 ; MOD(-8,5) = + NOT : retourne Mentier dont la représentation binai Fentier transmis en argument. obtenue en inversant les bits de Nor (10) = -11 7 © REAL : convertit en réel argument tre FAL(I) = 3.07 REPEAT: permet de concaténer n fois une chaine de caracteres. REPEAT(‘A',10) = 'AAAAAAAAAA' ; * SCAN : retourne la position du premier caractére d'une chaine figurant parmi un ensemble de caractéres donné. La recherche peut étre faite dans les deux sens. SCAN ('RENOIR', '0I') = 4, SCAN ('RENOTR', 'OI', BACK * srGw : retourne le nombre dont la valeur absolue est celle du premier argument et le signe celui du deuxiéme. SIGN(-3.0,2.0) = 3.0; © srw: retourne le sinus de 'angle passé en argument (exprimé en radians). SIN(1.0) = 0.84147098 ; «sina : retourne le sinus hyperbolique. SINH(1.0)= 1.175202 ; © sort : retoume la racine carrée de son argument, SQRT(5.0) = 2.236068010 ; é en argument (exprimé en radians). © Taw : retourne la tangente de langle pas TAN(1.0) = 1.557407 7 © Tani : retourne la tangente hyperbolique. TANH(1.0) = 0.76159416 ; © TRIM : retourne la chaine de caractéres transmise débarrassée de ses blanes de fin, TRIM('PICASSO ') = "PICASSO" ; * VERIFY : retourne la position du premier caractére d'une chaine ne figurant pas parmi un ensemble de caractéres donné. La recherche peut étre faite dans les deux sens. VERIFY (*RENOIR', 'O1') = 1, VERTPY('RENOTR', OI", BACK=.true.) = 6

You might also like