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



Documents pareils
Cours Informatique Master STEP

1. Structure d'un programme FORTRAN 95

Corrigé des TD 1 à 5

Recherche dans un tableau

Propagation sur réseau statique et dynamique

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

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

STAGE IREM 0- Premiers pas en Python

Examen Médian - 1 heure 30

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Plan du cours Cours théoriques. 29 septembre 2014

TP 1. Prise en main du langage Python

Algorithmique et programmation : les bases (VBA) Corrigé

Programmer en JAVA. par Tama

Algorithmique et Programmation, IMA


Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

Utilisation d objets : String et ArrayList

Plan du cours. Historique du langage Nouveautés de Java 7

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation à la Programmation en Logique avec SISCtus Prolog

Cours de Systèmes d Exploitation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Langage Fortran (Base)

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Algorithme. Table des matières

Service d information pour remise de paiement de factures Scotia

Algorithmes et programmation en Pascal. Cours

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Langage Fortran. Support de cours

Chapitre 2 Devine mon nombre!

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Programmation avec Microsoft Visual Basic. NET. Réponses aux questions Solutions des exercices

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Introduction à MATLAB R

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Application 1- VBA : Test de comportements d'investissements

2. Comprendre les définitions de classes

Initiation à LabView : Les exemples d applications :

1 Lecture de fichiers

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

OCL - Object Constraint Language

Arbres binaires de recherche

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Programme Compte bancaire (code)

as Architecture des Systèmes d Information

Les processus légers : threads. Système L3, /31

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

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Algorithmique & programmation

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

Génie Logiciel avec Ada. 4 février 2013

Les commandes de base de LINUX

Conception de circuits numériques et architecture des ordinateurs

LES TYPES DE DONNÉES DU LANGAGE PASCAL

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

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

Les chaînes de caractères

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Document d aide au suivi scolaire

Organigramme / Algorigramme Dossier élève 1 SI

Programmation en Java IUT GEII (MC-II1) 1

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Enseignement secondaire technique

Algorithmique I. Algorithmique I p.1/??

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

TP : Gestion d une image au format PGM

.NET - Classe de Log

SUPPORT DE COURS. Langage C

L ALGORITHMIQUE. Algorithme

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

Zotero : petit guide d installation et d utilisation

Langage Java. Classe de première SI

UE Programmation Impérative Licence 2ème Année

1 Recherche en table par balayage

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

Algorithmique et structures de données I

TD3: tableaux avancées, première classe et chaînes

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

SYSTÈME DE GESTION DE FICHIERS

Préparation à l examen EFA en Macro

Codage d information. Codage d information : -Définition-

2 Comment fonctionne un ordinateur, dans les grandes lignes

Cours d Informatique

1. Utilisation du logiciel Keepass

Les opérations binaires

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Connexion de Votre Imprimante Multifonction à votre Réseau pour la Première Fois

Transcription:

SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : mathias.gauduchon@univ-amu.fr, melika.baklouti@univ-amu.fr, xavier.giraud@univ-amu.fr, nicolas.barrier@univ-amu.fr PROGRAM exo4 IMPLICIT NONE CHARACTER(len=500) :: filename CHARACTER(len=10000) :: phrase, phrase_code INTEGER :: i, decal, icarac, icarac_code! Ouverture du fichier contenant le message à coder WRITE (, ) "Entrez le nom du fichier qui contient le message a coder" READ (, ) filename OPEN(10,file=filename)! Ouverture du fichier de sauvegarde WRITE (, ) "Entrez le nom du fichier de sauvegarde du message code" READ (, ) filename OPEN(11,file=filename)! Parametre du codage WRITE (, ) "Entrez la valeur de decallage du code SVP : " READ (, ) decal! On renormalise la reponse pour obtenir une valeur entre 0 et 25 DO WHILE (decal<0) decal = decal + 26 DO WHILE (decal>25) decal = decal 26! Lecture de la premiere ligne du fichier contenant le message READ (10, (a) ) phrase CLOSE (10)! initialisation de la chaine de caracteres phrase_code :! on ne met rien dans la chaine (=""), mais cette affectation a pour effet de remplir automatiquement la chaine de caracteres espace

2 phrase_code = "" DO i=1,len(trim(phrase)) icarac = ICHAR(phrase(i:i))! code ascii du ieme caractere de phrase IF (( icarac >=ICHAR( A ).AND. icarac<=ichar( Z ) decal).or. (icarac>=ichar( a ). AND. icarac<=ichar( z ) decal)) THEN! phrase( i : i ) est une lettre minuscule ou majuscule qu on fait avancer de decal dans l alphabet icarac_code = icarac + decal ELSE IF (( icarac >=ICHAR( Z ) decal+1.and. icarac<=ichar( Z )).OR. (icarac>=ichar( z ) decal+1.and. icarac<=ichar( z ))) THEN! phrase( i : i ) est une lettre minuscule ou majuscule pour laquelle il faut repartir au debut de l alphabet icarac_code = icarac + decal 26 ELSE! phrase( i : i ) n est pas une lettre icarac_code = icarac phrase_code(i: i ) = CHAR(icarac_code) WRITE (, ) "Le message code avec le decallage ", decal, "est :" WRITE (, ) trim(phrase_code)! sauvegarde du message code dans le fichier WRITE (11, ) trim(phrase_code) CLOSE (11) END PROGRAM exo4

3 PROGRAM exo5! En applicant ce programme au fichier secret. txt, on trouve X avec 146 occurences! On en deduit que pour decoder ce fichier, il fait transformer X en E, qui est la lettre! statistiquement la plus utilisee, ce qui correspond a un decallage de 7.! On reutilise le programme exo4 avec cette valeur de decallage. IMPLICIT NONE CHARACTER(len=500) :: filename CHARACTER(len=10000) :: phrase INTEGER :: icarac, icarac_max, i, compt, compt_max! Ouverture du fichier contenant le message à coder WRITE (, ) "Entrez le nom du fichier qui contient le message" READ (, ) filename OPEN(10,file=filename)! Lecture de la premiere ligne du fichier contenant le message READ (10, (a) ) phrase CLOSE (10) compt_max = 1 DO icarac=ichar( A ),ICHAR( Z )! DEBUT : compter le nombre d occurence du caractere de code ASCII icarar dans phrase compt = 0 DO i=1,len(trim(phrase)) IF ( ICHAR(phrase(i:i))==icarac.OR. ICHAR(phrase(i:i))==icarac+ICHAR( a ) ICHAR( A ) ) THEN! phrase( i : i ) correspond a la lettre de code ASCII icarac ou a la version minuscule de cette lettre compt = compt + 1! FIN : compter le nombre d occurence du caractere de code ASCII icarar dans phrase! Mise a jour eventuelle de compt_max et icarac_max IF (compt>compt_max) THEN compt_max = compt icarac_max = icarac WRITE (, ) "La lettre la plus presente dans le texte est ", CHAR(icarac_max), " avec ",

4 compt_max," occurences." END PROGRAM exo5

5 PROGRAM exo6 IMPLICIT NONE CHARACTER(len=500) :: filename CHARACTER(len=10000) :: phrase CHARACTER(len=100) :: mot INTEGER :: i, j, lmot LOGICAL :: mot_coincide! Ouverture du fichier contenant le message à coder WRITE (, ) "Entrez le nom du fichier qui contient le message" READ (, ) filename OPEN(10,file=filename)! Lecture de la premiere ligne du fichier contenant le message READ (10, (a) ) phrase CLOSE (10)! Mot a chercher WRITE (, ) "Entrez le mot a chercher" READ (, ) mot lmot = LEN(TRIM(mot)) mot_coincide =.FALSE. i = 1 DO WHILE (i<=len(trim(phrase)) lmot + 1.AND..NOT. mot_coincide)! on presupose que le mot coincide avec la phrase a la position i mot_coincide =.TRUE. DO j=1,lmot IF (. NOT. ICHAR(mot(j:j))==ICHAR(phrase(i+j 1:i+j 1))) THEN! on a detecte une difference, le mot ne coincide plus mot_coincide =.FALSE. i = i + 1! on reboucle uniquement si mot_coincide est toujours faux ET si on n a pas depasse la fin de la phrase! cad on sort si on a trouve le mot OU si on atteint la fin de phrase IF (mot_coincide) THEN WRITE (, ) "Le mot ", TRIM(mot), " a été trouvé à la position", i 1 ELSE WRITE (, ) "Le mot n a pas ete trouve"

6 END PROGRAM exo6

7 PROGRAM exo7! Le programme liste les mots de la phrase et les compte.!! Pour chaque caractere de la phrase, le programme determine si le caractere est dans un mot ou non ( variable booleenne est_dans_mot).! On considere qu un caractere ne fait pas partie d un mot s il s agit d un separateur, c est a dire un des caracteres recense dans la chaine de caractere separateurs.! Sinon, le caractere est considere comme faisant partie d un mot.!! Le nombre de mots dans la phrase est determine en comptant le nombre de débuts de mot, c est a dire le nombre de transitions hors mot > dans mot IMPLICIT NONE CHARACTER(len=500) :: filename CHARACTER(len=10000) :: phrase CHARACTER(len=50) :: separateurs INTEGER :: i, ideb, j, compt, nseparateurs LOGICAL :: est_separateur, est_dans_mot separateurs =",;:!?./ "// " nseparateurs = LEN(TRIM(separateurs))! Ouverture du fichier contenant le message à coder WRITE (, ) "Entrez le nom du fichier qui contient le message" READ (, ) filename OPEN(10,file=filename)! Lecture de la premiere ligne du fichier contenant le message READ (10, (a) ) phrase CLOSE (10) write (, ) " Liste des mots :"! Initialisation du compteur de mot compt = 0! On est initialement "hors mot" est_dans_mot =.FALSE. DO i=1,len(trim(phrase))! le caractere phrase( i : i ) est il un separateur? est_separateur =.FALSE.! a priori non DO j=1,nseparateurs IF (ICHAR(phrase(i:i))==ICHAR(separateurs(j:j))) THEN est_separateur =.TRUE.! sauf s il correspond au moins une fois a un des caracteres de separateurs

8 IF (. NOT. est_separateur) THEN! phrase( i : i ) est un caractere dans un mot IF (. NOT. est_dans_mot) THEN! on etait en dehors d un mot, donc on a detecte une transition hors mot > dans mot ideb = i! on memorise cette position de debut de mot compt = compt + 1 est_dans_mot =.TRUE. ELSE! phrase( i : i ) est un caractere separateur, donc hors mot IF (est_dans_mot) THEN! on etait dans un mot, donc on detecte une fin de mot : on affiche ce mot est_dans_mot =.FALSE. WRITE (, ) phrase(ideb:i 1)! Si la phrase se termine par un caractere dans un mot, on affiche ce dernier mot if (est_dans_mot) then WRITE (, ) phrase(ideb:len(trim(phrase))) end if WRITE (, ) "La phrase comporte ",compt,"mots." END PROGRAM exo7

9 PROGRAM javanais! Le principe de ce programme est d ajouter "av" au milieu de chaque syllabe d un mot.! Pour reperer un milieu de syllabe, on detecte les transitions consomne > voyelle et on insere "av" avant la voyelle! Ce programme presuppose que l utilisateur a entre un vrai mot, sans caractères spéciaux ni lettres accentuees.! En effet, tout caractere qui ne correspond pas a une voyelle est considere comme etant une lettre consomne. IMPLICIT NONE CHARACTER(len=10) :: voyelles CHARACTER(len=100) :: mot, motjav INTEGER :: i, j, k, nvoyelles LOGICAL :: est_voyelle, etait_voyelle! definition des voyelles voyelles = "aeiouaeiou" nvoyelles = LEN(TRIM(voyelles)) WRITE (, ) "Entrez un mot SVP" READ (, ) mot motjav=""! cf exo4, permet d initialiser motjav en le remplissant d espaces k=1! position intiale dans la chaine motjav etait_voyelle =.TRUE.! a pour effet de ne pas ajouter "av" au debut d un mot qui commencerait par une voyelle DO i=1,len(trim(mot))! le caractere mot(i: i ) est il une voyelle? est_voyelle =.FALSE.! a priori non DO j=1,nvoyelles IF (ICHAR(mot(i:i))==ICHAR(voyelles(j:j))) THEN est_voyelle =.TRUE.! sauf s il correspond a au moins un des caracteres de la chaine voyelles IF (. NOT. etait_voyelle.and. est_voyelle) THEN! c est une voyelle derrière une consonne motjav(k:k+1)="av"! on insere "av" dans motjav avant la voyelle k=k+2! on met a jour l indice de position dans motjav

10 motjav(k:k)=mot(i:i)! dans tous les cas on recopie le caractere i de mot dans motjav k = k+1! on met a jour l indice de position dans motjav etait_voyelle = est_voyelle WRITE (, ) trim(mot), " en javanais se dit : ",trim(motjav) END PROGRAM javanais