PROGRAMMATION EN FORTRAN

Documents pareils
Cours Informatique Master STEP

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1. Structure d'un programme FORTRAN 95

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Quelques algorithmes simples dont l analyse n est pas si simple

Examen Médian - 1 heure 30

Application 1- VBA : Test de comportements d'investissements

1 Recherche en table par balayage

Corrigé des TD 1 à 5

Organigramme / Algorigramme Dossier élève 1 SI

= constante et cette constante est a.

Chapitre 5 : Flot maximal dans un graphe

L exclusion mutuelle distribuée

Architecture des Systèmes d Information Architecture des Systèmes d Information

Algorithmique et Programmation, IMA

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Algorithmique et programmation : les bases (VBA) Corrigé

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

L ALGORITHMIQUE. Algorithme

Introduction à l étude des Corps Finis

Polynômes à plusieurs variables. Résultant

Définitions. Numéro à préciser. (Durée : )

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Cours d Informatique

Licence Sciences et Technologies Examen janvier 2010

Plan du cours Cours théoriques. 29 septembre 2014


Les arbres binaires de recherche

Propagation sur réseau statique et dynamique

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithmes et programmation en Pascal. Cours

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Cours d analyse numérique SMI-S4

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

OCL - Object Constraint Language

Probabilités sur un univers fini

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Exercices - Polynômes : corrigé. Opérations sur les polynômes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Exercices sur les interfaces

Langage Fortran (Base)

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Algorithmique & programmation

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Langage Fortran. Support de cours

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Résolution de systèmes linéaires par des méthodes directes

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

ALGORITHMIQUE ET PROGRAMMATION En C

Probabilités sur un univers fini

Correction TD algorithmique

PEUT-ON «VOIR» DANS L ESPACE À N DIMENSIONS?

ASR1 TD7 : Un microprocesseur RISC 16 bits

Recherche dans un tableau

PVM 1 PVM. Parallel Virtual Machine

Algorithmique et Programmation

Programmation linéaire

Jean-Philippe Préaux

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

ARBRES BINAIRES DE RECHERCHE

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Quelques Algorithmes simples

Algorithmes sur les mots (séquences)

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

TRIGONOMETRIE Algorithme : mesure principale

Cours d initiation à la programmation en C++ Johann Cuenin

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Correction du baccalauréat STMG Polynésie 17 juin 2014

Chapitre VI - Méthodes de factorisation

C f tracée ci- contre est la représentation graphique d une

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Enseignement secondaire technique

de calibration Master 2: Calibration de modèles: présentation et simulation d

Feuille TD n 1 Exercices d algorithmique éléments de correction

Initiation à la programmation en Python

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation Objet - Cours II

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

1 Modélisation d être mauvais payeur

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Algorithmes pour la planification de mouvements en robotique non-holonome

Cours de Programmation 2

Transcription:

Exercices PROGRAMMATION EN FORTRAN Exercices Hacène Ouzia Polytech Paris UPMC Sciences de la Terre (3 ème année) Université Pierre et Marie Curie Séance 4 2016 Hacène Ouzia Programmation en Fortran 2016 1 / 26

AGENDA Exercices 1 Exercices Choix et conditions Sommes et produits Algorithmes itératifs Tableaux Hacène Ouzia Programmation en Fortran 2016 2 / 26

1 Exercices Choix et conditions Sommes et produits Algorithmes itératifs Tableaux Hacène Ouzia Programmation en Fortran 2016 3 / 26

Alternatives ENONCÉ Soit n un entier naturel. On souhaite calculer la foncion : 8 "Lundi", si n 2 7N, >< "Mardi", si n 2 7N + 1, J (n) =... >: "Dimanche", si n 2 7N + 6. QUESTIONS + Donner le pseudo-code d un programme calculant J. + Analyser sa complexité. + Implémenter votre pseudo-code en Fortran. Hacène Ouzia Programmation en Fortran 2016 4 / 26

Alternatives Algorithme 1 : Jours de la semaine Entrée : n :: entier naturel Sortie : J :: chaîne de caractères 1 Début 2 Valeur mod(n, 7) 3 Suivant Valeur Faire 4 Cas Valeur vaut 0 Faire 5 J Lundi 6 Fin cas 7 Cas Valeur vaut 1 Faire 8 J Mardi 9 Fin cas 10 Cas Valeur vaut 2 Faire 11 J Mercredi 12 Fin cas 13 Cas Valeur vaut 3 Faire 14 J Jeudi 15 Fin cas 16 Cas Valeur vaut 4 Faire 17 J Vendredi 18 Fin cas 19 Cas Valeur vaut 5 Faire 20 J Samedi 21 Fin cas 22 Cas Valeur vaut 6 Faire 23 J Dimanche 24 Fin cas 25 Fin suivant 26 Fin COMPLEXITÉ O (1) Hacène Ouzia Programmation en Fortran 2016 5 / 26

Alternatives IMPLÉMENTATION ALTERNATIVES 1 program choix_multiples 2 implicit none 3 integer :: N 4 integer :: k 5 6 call system("clear") 7 8 write(*,"(/, Veuillez entrer un entier : )",advance= no ) 9 read *, N; 10 11 write(*,"(. Le jour de la semaine correspondant est : )", advance= no ) 12 k = mod(n,7)! Mod(N,D) = reste de la division de N par D 13!... Hacène Ouzia Programmation en Fortran 2016 6 / 26

Alternatives IMPLÉMENTATION ALTERNATIVES 13!... 14 select case (k) 15 case (0) 16 write(*,"( Lundi )") 17 case (1) 18 write(*,"( Mardi )") 19 case (2) 20 write(*,"( Mercredi )") 21 case (3) 22 write(*,"( Jeudi )") 23 case (4) 24 write(*,"( Vendredi )") 25 case (5) 26 write(*,"( Samedi )") 27 case (6) 28 write(*,"( Dimanche )") 29 end select 30 write(*,*) 31 stop "Fin choix multiples" 32 end program choix_multiples Hacène Ouzia Programmation en Fortran 2016 7 / 26

Somme ENONCÉ soit n un entier naturel donné. On souhaite calculer la valeur suivante : nx S (n) = k 7 k=1 QUESTIONS + Donner le pseudo-code d un programme calculant S. + Analyser sa complexité. + Implémenter votre pseudo-code en Fortran. Hacène Ouzia Programmation en Fortran 2016 8 / 26

Somme PSEUDO-CODE Algorithme 2 : Calculer une somme Entrée : n :: entier naturel non nul Sortie : :: réel! Contiendra la somme 1 Début 2 0! Important 3 Pour k = 1 à n faire 4 + k 7 5 Fin pour 6 Fin COMPLEXITÉ O (n) Hacène Ouzia Programmation en Fortran 2016 9 / 26

Somme IMPLÉMENTATION SOMME 1 program calculer_sommme 2!<><><>< DEBUT DECLARATION 3 implicit none 4 integer :: N, k, Somme 5!<><><>< FIN DECLARATION 6 call system("clear") 7!<><><>< Lire la valeur N 8 write(*,"(/, Nombre de termes de la somme: )", advance= no ) 9 read *, N 10!<><><>< Calculer la somme 11 Somme = 0 12 do k=1, N, 1 13 Somme = Somme + k**7 14 end do 15!<><><>< Afficher la somme 16 write(*,"(. La somme des,i4, premier(s) terme(s) vaut,6x, :,i10)") N, Somme 17 write(*,*) 18!<><><>< Terminer le programme 19 stop "Fin programme somme" 20 end program calculer_sommme Hacène Ouzia Programmation en Fortran 2016 10 / 26

Produit ENONCÉ soit n un entier naturel donné. On souhaite calculer la valeur suivante : ny P (n) = 1 + k 2 k=1 QUESTIONS + Donner le pseudo-code d un algorithme calculant P + Analyser sa complexité. + Implémenter votre algorithme en Fortran. Hacène Ouzia Programmation en Fortran 2016 11 / 26

Produit PSEUDO-CODE Algorithme 3 : Valeur de P(n) Entrée : n :: Entier naturel non nul Sortie : :: Réel! Contiendra le produit 1 Début 2 1! Ne pas mettre 0 3 Pour k = 1 à n faire 4 (1 + k 2 ) 5 Fin pour 6 Fin COMPLEXITÉ O (n) Hacène Ouzia Programmation en Fortran 2016 12 / 26

Produit PSEUDO-CODE Algorithme 4 : Valeur de P(n) Entrée : n :: Entier naturel non nul Sortie : :: Réel! Contiendra le produit 1 Début 2 1! Ne pas mettre 0 3 Pour k = 1 à n faire 4 (1 + k 2 ) 5 Fin pour 6 Fin COMPLEXITÉ O (n) Hacène Ouzia Programmation en Fortran 2016 12 / 26

Somme IMPLÉMENTATION PRODUIT 1 program Calculer_produit 2!<><><>< DEBUT DECLARATION 3 implicit none 4 integer :: N, k, produit 5!<><><>< FIN DECLARATION 6 call system("clear") 7!<><><>< Lire la valeur N 8 write(*,"(/,2x, Nombre de termes : )", advance= no ) 9 read *, N 10!<><><>< Calculer le produit 11 Produit = 1 12 do k=1, N 13 Produit = Produit*(1+ k**2) 14 end do 15!<><><>< Afficher le produit 16 write(*,"(. Le produit des,i4, terme(s) vaut,6x, :,i10)") N, Produit 17 write(*,*) 18!<><><>< Terminer le programme 19 stop "Fin programme somme" 20 end program Calculer_produit Hacène Ouzia Programmation en Fortran 2016 13 / 26

Somme et produit ENONCÉ soient n et m deux entiers donnés. On souhaite calculer valeur suivante : 8 0, m = 0 et n 2 N, m, n 2 0 = 0 et m 1 2 N, >< U (m, n) = mx 1 B i=1 @ ny C 1+ i A, sinon >: k+i k=1 QUESTIONS + Donner le pseudo-code d un algorithme calculant U + Analyser sa complexité. + Implémenter votre algorithme en Fortran. Hacène Ouzia Programmation en Fortran 2016 14 / 26

Somme et produit PSEUDO-CODE Algorithme 5 : Valeur de U(m, n) Entrées : m, n :: Entiers naturels Sortie : µ :: Réel! Contiendra la valeur de U(m, n) 1 µ 0 2 Début 3 Pour i = 1 à m faire 4 1 5 Pour k = 1 à n faire 6 i i+k 7 Fin pour 8 µ µ + 1 1+ 9 Fin pour 10 Fin COMPLEXITÉ O (nm) Hacène Ouzia Programmation en Fortran 2016 15 / 26

Somme et produit IMPLÉMENTATION VALEUR DE LA FONCTION U 1 program Calculer_Umn 2 implicit none 3 integer :: N, M, i, k 4 real :: pi, Umn 5 call system("clear") 6 write(*,"(/,2x, Le nombre M : )", advance= no );read *, M 7 write(*,"(2x, Le nombre N : )", advance= no );read *,N 8 Umn = 0 9 if( N.NE. 0)then 10 do i=1, M 11 pi = 1 12 do k=1, N 13 pi = pi*i*(1./(i+k)) 14 end do 15 Umn = Umn + 1./(1+pi) 16 end do 17 end if 18 write(*,"(/,2x, La valeur de U(,i4,,,i4, ) est :, f7.2,/)") M,N,Umn 19 stop "Fin programme somme" 20 end program Calculer_Umn Hacène Ouzia Programmation en Fortran 2016 16 / 26

Racine carrée ENONCÉ soit " une précision donnée. On souhaite calculer une approximation de p à " près à l aide de la méthode de Héron : ( u n+1 = u 1 2 n + un, n 2 N u 0 = QUESTIONS + Donner le pseudo-code d un algorithme calculant p + Implémenter votre algorithme en Fortran. Hacène Ouzia Programmation en Fortran 2016 17 / 26

Racine carrée PSEUDO-CODE Algorithme 6 : Valeur approchée de p Entrée : :: réel non nul Sortie : :: réel! Contiendra la valeur approchée 1 Début 2 1 3 ( + ) 2 4 5 Tant que faire 6 1 7 ( + ) 2 8! Modifie la condition d arrêt 9 Fin tant que 10 Fin + Montrer le code appro-racine-2.f90 Hacène Ouzia Programmation en Fortran 2016 18 / 26

Racine carrée PSEUDO-CODE Algorithme 7 : Valeur approchée de p Entrée : :: réel non nul Sortie : :: réel! Contiendra la valeur approchée 1 Début 2 1 3 ( + ) 2 4 5 Tant que faire 6 1 7 ( + ) 2 8! Modifie la condition d arrêt 9 Fin tant que 10 Fin + Montrer le code appro-racine-2.f90 Hacène Ouzia Programmation en Fortran 2016 18 / 26

Tri par insertion ENONCÉ soit n un entier naturel donné. On considère T (n) un tableau à n éléments. Le principe d un algorithme de tri par insertion est le suivant : à une itération k 2 {1,...,n 1} donnée, tous les éléments de la section T (1 : k) du tableau T sont triés (par exemple, dans un ordre croissant). A l itération suivante, i.e. k + 1, l algorithme considère l élément T (k + 1) et le place dans la section T (1 : k) de telle sorte que la section T (1 : k + 1) reste triée. QUESTIONS + Donner le pseudo-code d un algorithme triant par insertion le tableau T + Analyser sa complexité. + Implémenter votre algorithme en Fortran. Hacène Ouzia Programmation en Fortran 2016 19 / 26

Tri par insertion PSEUDO-CODE Algorithme 8 : Tri par insertion Entrées : N :: un entier naturel non nul, T :: Tableau à N éléments Sortie : T :: Tableau à N éléments 1 Début 2 Pour j = 2 à N faire 3 copieelementcourant T (j) 4 Pour i = j 1 à 1, pas = 1 faire 5 Si T (i) > copieelementcourant alors 6 T (i + 1) T (i) 7 T (i) copieelementcourant 8 Fin si 9 Fin pour 10 Fin pour 11 Fin COMPLEXITÉ O N 2 Hacène Ouzia Programmation en Fortran 2016 20 / 26

Tri par insertion PSEUDO-CODE Algorithme 9 : Tri par insertion (version optimisée) Entrées : N :: un entier naturel non nul, T :: Tableau à N éléments Sortie : T :: Tableau à N éléments 1 Début 2 Pour j = 2 à N faire 3 Pour i = j 1 à 1, pas = 1 faire 4 Si T (i) > T (j) alors 5 T (i + 1) T (i) 6 T (i) T (j) 7 Fin si 8 Fin pour 9 Fin pour 10 Fin Hacène Ouzia Programmation en Fortran 2016 21 / 26

k-ème plus grand élément ENONCÉ Soient n un entier donné et T un tableau d entiers de taille n. Le but de cet exercice est de déterminer le k-ème plus grand élément de T (l élément maximum est le premier plus grand élément) sans trier au préalable les éléments de T. Par exemple, pour le tableau suivant T =[4, 5, 7, 1]l élément 4 est le 3-ème plus grand élément et 5 le deuxième plus grand élément. QUESTIONS + Donner le pseudo-code d un algorithme calculant le k-ème plus grand élément de T + Analyser sa complexité. + Implémenter votre algorithme en Fortran. Hacène Ouzia Programmation en Fortran 2016 22 / 26

k-ème plus grand élément PSEUDO-CODE Algorithme 10 : k-ème plus grand élément Entrées : k, N :: entiers naturel non nul T :: Tableau de N réels tous distincts Sortie : Resultat : réel 1 Début 2 Chercher oui 3 j 1 4 Tant que Chercher et j apple N faire 5 Compteur 0 6 ElementCourant T (j) 7 Pour i = 1 à N faire 8 Si i 6= j et ElementCourant < T (i) alors 9 Compteur Compteur + 1 10 Fin si 11 Fin pour 12 Si Compteur = k 1 alors 13 Chercher non 14 Resultat ElementCourant ; 15 Fin si 16 j j + 1; 17 Fin tant que 18 Fin COMPLEXITÉ O N 2 Hacène Ouzia Programmation en Fortran 2016 23 / 26

Matrices ENONCÉ soit une permutation de {1,...,n}. Soit M une matrice appartenant à M m n (R). Soit M la matrice obtenue en permutant les lignes de la matrice M suivant la permutation. QUESTIONS + Donner le pseudo-code d un programme calculant M + Analyser sa complexité. + Implémenter votre pseudo-code en Fortran. Hacène Ouzia Programmation en Fortran 2016 24 / 26

Matrice IMPLÉMENTATION PERMUTER LES LIGNES D UNE MATRICE 1 program Permuter_lignes_matrice 2 implicit none 3 integer, parameter :: NbrLignes =3, nbrcolonnes = 5 4 integer, parameter, dimension(nbrlignes) :: Permutation = (/3,1,2/) 5 real, dimension(nbrlignes, NbrColonnes) :: matrice 6 integer :: i,j 7 do i=1, NbrLignes 8 matrice(i,:) = i*10! Notez les sections 9 end do 10 write(*,"(/2x, La matrice en entree :,/)") 11 do i=1, NbrLignes 12 write(*,"(3x)", advance= no ) 13 do j=1, NbrColonnes 14 write(*,"(f5.2, 3x)", advance= no ) matrice(i,j) 15 end do 16 write(*,*) 17 end do 18! Permuter la matrice M 19 matrice(:,:) = matrice(permutation,:) 20!... Hacène Ouzia Programmation en Fortran 2016 25 / 26

Matrice suite... IMPLÉMENTATION PERMUTER LES LIGNES D UNE MATRICE 20!... 21 write(*,"(//2x, La matrice permutee :,/)") 22 do i=1, NbrLignes 23 write(*,"(3x)", advance= no ) 24 do j=1, NbrColonnes 25 write(*,"(f5.2, 3x)", advance= no ) matrice(i,j) 26 end do 27 write(*,*) 28 end do 29 write(*,*) 30 stop "Fin permutee matrice" 31 end program Permuter_lignes_matrice Hacène Ouzia Programmation en Fortran 2016 26 / 26