• Aucun résultat trouvé

TP 1

N/A
N/A
Protected

Academic year: 2022

Partager "TP 1"

Copied!
4
0
0

Texte intégral

(1)

TP 1

Judicaël Courant Le 5 février 2018

1 Prise en main des outils

1.1 Clavier

Combien de temps allez-vous passer dans votre vie à taper sur un clavier ? Suivant votre métier et vos occupations, on peut sans doute dire que votre travail et vos loisirs vont vous demander disons une heure par jour, 365 jours par an, pendant une soixantaine d’années à taper sur un clavier si vous savez taper correctement.

Q1 Supposons que ne sachiez pas taper correctement sur un clavier et que vous alliez mettiez environ 50% de temps en plus qu’une personne sachant taper correctement (c’est optimiste). Supposons également que vous n’appreniez jamais à utiliser correctement un clavier. Combien de temps allez vous perdre à taper sur un clavier au cours de votre vie, en équivalent année de travail à temps plein ? (une année de travail à temps plein est constituée de 47 semaines de travail de 35 heures chacune)

Q2 Si vous ne savez pas utiliser correctement un clavier, apprenez la dactylographie. Vous pouvez déjà avoir fait de gros progrès en moins d’une semaine avec un minimum d’efforts. Pour cela il y a deux points essentiels :

1. Savoir quelle position adopter pour les doigts.

2. Faire quelques minutes d’exercices chaque jour les premiers temps.

L’excellent logiciel libre multiplateforme klavaro peut vous permettre d’apprendre la dactylographie et de vous entraîner. Installez-le sur votre ordinateur personnel si ce n’est déjà fait.

1.2 Emacs

GNU Emacs est un éditeur de texte extensible. Tellement extensible qu’il permet par exemple de lancer un interpréteur OCaml, de lui envoyer des commandes et d’en récupérer les résultats.1 C’est lui que nous allons utiliser pour travailler avec OCaml.

Q3 Lancez emacs. (Cela peut se faire en tapantemacs &dans un terminal, ou à partir du sous-menu programmation ou développement du menu des applications, ou par le raccourci clavierAlt+F2suivi deemacs).

Quelques points essentiels à connaître avec Emacs :

1. Ce n’est là qu’un petit aperçu des possibilités de cet éditeur, qui permet aussi de lire son courriel, de surfer sur le web et plus encore...

1

(2)

Option informatique MPSI La Martinière Monplaisir 2016-2017

— Le mode Tuareg d’Emacs (que nous allons utiliser pour utiliser OCaml avec Emacs) comporte quelques bugs. Il arrive notamment parfois qu’Emacs ne réponde plus. Dans ce cas, vous pouvez arrêter la commande en cours en tapantC-g (i.e. appuyer sur la touche Ctrl et, sans relâcher cette touche contrôle, appuyer sur g). C’est utile également si vous avez lancé par erreur une commande et que celle-ci ne s’est pas encore complètement exécutée.

— Sauvegarder le fichier en cours d’édition au moins une fois toutes les cinq minutes est indispen- sable pour ne pas perdre votre travail en cas de catastrophe (coupure électrique, «plantage» de votre ordi). Vous ne le ferez pas si vous avez besoin d’utiliser la souris. C’est pourquoi il est indispensable d’utiliser et de retenir le raccourci clavier C-x C-s (i.e. C-x, relâcher, C-s), qui permet de sauver le fichier en cours d’édition.

Q4 (À faire pour la prochaine séance, pas maintenant) De manière générale, il est préférable de prendre quelques instants pour se familiariser avec le fonctionnement d’Emacs. Pour cela, allez faire un tour dans le menu Help→ Emacs Tutoriald’ici la prochaine séance de TP.

1.3 Tuareg : l’interface Emacs/OCaml

Q5 Créez un fichiertp01.ml(sous Emacs, trouver ou créer un fichier se fait de la même façon. On utiliseC-x C-f pour cela). Emacs repère que le nom de votre fichier se termine par.ml et ouvre un nouveau tampon d’édition dans le mode d’édition des programmes OCaml, appelé «Tuareg» (comme l’indique, en bas de votre fenêtre, la ligne de mode). Vous pouvez obtenir la documentation complète du mode tuareg avecC-h m mais l’essentiel de ce qui peut vous intéresser est dans le menuTuareg→ Interactive Mode.

Q6 Vérifiez que ce que vous tapez s’affiche à l’écran dans le tampon d’édition de votre fichier tp01.ml. Si vous pensez maîtriser la frappe au clavier, fermez les yeux et, sans les rouvrir, tapez la phrase «Portez ce vieux whisky au juge blond qui fume». Ouvrez alors les yeux pour vérifier si vous avez réussi à écrire la phrase en intégralité sans vous tromper. Si vous vous êtes trompé ou n’avez pas osé relever le défi, prenez soin de noter d’apprendre la dactylographie dans votre cahier de texte et commencez dès que possible (cinq minutes par jour à partir d’aujourd’hui valent mieux qu’une journée complète dans trois semaines).

Q7 TapezC-c C-s(ou dans le menuTuareg→Interactive Mode, cliquer sur «Run Caml Toplevel»).

Emacs vous demande quel «toplevel» Caml lancer. Vérifier qu’il s’agit bien de l’interprète OCaml, appeléocaml. Si ce n’est pas le cas, corriger. Taper ensuite Entrée pour valider. Emacs sépare alors sa fenêtre en deux. Celle du dessous est dans le mode «Tuareg-Interactive» et vous montrera le résultat de vos commandes.

Q8 Vous pouvez interagir directement avec l’interprète OCaml en vous positionnant dans le tampon du bas et en tapant des commandes. Essayez par exemple de taper

2+3;;

Q9 Que se passe t-il si vous oubliez les deux points-virgules ?

Attention: ce que vous tapez dans ce tampon ne sera pas sauvegardé.

Il est donc préférable de travailler dans le tampon correspondant à votre fichier. Revenez-y, tapez

«6*7 ; ;» puisC-x C-e (ou dans le menuTuareg → Interactive Mode, cliquez surEvaluate Phrase). Ce que vous avez tapé est transmis à OCaml qui l’exécute et vous affiche le résultat.

2

(3)

TP 1

Q10 (À tenter sans relire ce qui précède) Quels sont les raccourcis claviers permettant de sauver votre programme ? D’arrêter une commande en cours d’exécution dans Emacs ? D’envoyer une phrase OCaml à l’interprète OCaml ?

2 Quelques fonctions

Q11 Écrire une fonction ht_de_ttc prenant en argument un prix TTC et rendant en résultat un prix HT (pour simplifier on considérera que la TVA applicable sur un article est de 19,6% du prix hors-taxe).

Q12 Écrire une fonctionpuiss : float -> int -> floattelle quepuiss x ycalculexy (on s’in- terdit d’utiliser l’opérateur**).

Q13 Montrez que votre fonction termine.

Q14 Donner la complexité du calcul de puiss x n, en nombre de multiplications effectuées, en fonction den.

Q15 Si votre implantation depuissdemande plus de10multiplications pour calculer3.242alors il y a certainement une meilleure façon de faire. Récrivez votre fonction pour cela ! Indication : remarquez que lorsquenest pair,xn= xn/22

(ou, si l’on préfère x2n/2

).

Q16 Quelle est la complexité, en nombre de multiplications effectuées, du calcul de puiss x n?

Q17 Quelle est la complexité en espace de pile de l’exécution depuiss x n?

Q18 Écrire une fonction pgcd : int -> int -> int qui calcule le pgcd de ses deux arguments.

Prenez soin de justifier (dans les commentaires) la terminaison de votre programme. Attention à ce qui peut se passer pour des arguments négatifs.

Q19 Implanter la fonction factorielle. Que vaut21!?

Q20 Écrire une fonction deriv qui prend en argument une fonction f de type float -> float supposée dérivable et retourne la fonctionf0. Pour calculerf0 numériquement, on utilisera le fait que pour toutx,f0(x)≈ f(x+)−f(x) , oùest suffisamment petit (en pratique, vous prendrez = 10−6).

Q21 Quel est le type inféré par Caml pour la fonction deriv?

3 La suite de Fibonacci

Le but de cette partie est d’implanter une fonction fib : int -> inttelle que, pour n∈N,fib ncalcule le termeFn de la suite de Fibonacci définie par

F0 = 0 F1 = 1 ∀n∈N Fn+2=Fn+1+Fn

Q22 Implanter une fonction fib1 : int -> intcalculant cette suite de façon naïve.

Q23 Calculer la complexité temporelle du calcul defib1 nen fonction den.

3

(4)

Option informatique MPSI La Martinière Monplaisir 2016-2017

Q24 Calculer la complexité spatiale de ce même calcul.

Une autre façon de calculer la suite de Fibonacci est de s’intéresser à la suite (Un) à valeurs dans N2 définie par

∀n∈N Un=

Fn

Fn+1

Q25 Montrez qu’on a pour toutn∈N la relationUn+1 =AUn où A∈ M2(N) est une matrice ne dépendant pas den que vous préciserez.

Q26 Écrire une fonction fibaux : int -> int * int telle que fibaux n calcule Un en temps O(n). Vous justifierez la complexité de votre fonction.

Q27 En déduire une fonctionfib2 ncalculantFn en temps linéaire enn.

Q28 Quelle est la complexité spatiale de votre fonction fib2 n en fonction de n? Si elle n’est pas déjà constante, modifiez-là (ou modifiez une des fonctions qu’elle appelle) de façon à ce qu’elle s’exécute en espace constant.

Q29 En vous inspirant de ce que vous avez fait pourpuiss plus haut, écrire une fonction puiss2 : int * int * int * int -> int -> int * int * int * int prenant en argument une matrice a11 a12

a21 a22

représentée par le quadruple de ses quatre coefficients(a11, a12, a21, a22) et un entier n

et retournant le quadruplet (b11, b12, b21, b22) représentant la matrice

b11 b12

b21 b22

=

a11 a12

a21 a22

n

. Conseil : Vous avez intérêt à introduire préalablement deux fonctions permettant de calculer respec- tivement la somme et le produit de deux matrices carrées de taille2.

Q30 En déduire une fonction fib3 : int -> int telle que fib3 n calcule Fn en une complexité temporelle sous-linéaire que vous préciserez.

4 Manipulation des listes

1. Écrire une fonction moyenne : float list -> float calculant la moyenne des éléments de son argument.

2. Écrire une fonctionect : float list -> float en calculant l’écart-type.

3. Écrire une fonction nieme : ’a list -> int -> ’a telle que nieme l n retourne l’élément numéronde la listel. On numérotera les éléments de len commençant à 0, comme tout infor- maticien sensé devrait le faire.2 Cette fonction existe déjà en OCaml, elle s’appelle List.nth (mais l’utiliser est en général une mauvaise idée).

2. LireWhy numbering should start at zerod’E.W. Dijkstra (EWD 831) pour savoir pourquoi.

4

Références

Documents relatifs

(La description suivante a été rédigée à partir des politiques du DDSB relatives à la fermeture des écoles pendant les jours de tempête ainsi que d’une conversation avec

L’après-midi, Nina réussit à traverser toute seule le grand bassin de la piscine!. - C’est bien Nina, tu es devenue

Votre conseiller en France et votre facilitateur Brexit à Londres vous accompagnent quelles que soient les problématiques Brexit rencontrées.. DES EXPERTS SECTORIELS DÉDIÉS À

Grâce à votre visite, l’Aquarium La Rochelle finance de nombreux projets de recherche ainsi que son Centre d’Etudes et de Soins pour les Tortues Marines (C.E.S.T.M.). Pour en

- Le coût total éligible de votre opération est inférieur à 1M€ (cf. Article 3 de la décision juridique) => les recettes générées après l’achèvement de votre

Suivant votre métier et vos occupations, on peut sans doute dire que votre travail et vos loisirs vont vous demander disons une heure par jour, 365 jours par an, pendant une

Tonalité réglable et 2 positions (parole, musi- sique) prédéterminées par clavier. Contrôle automatique de gain. Anti• parasite image adap- table sur demande. Prise

Le spectacle commence par une grande parade : des taureaux, des pugilistes, des clowns, des gladiateurs et des lutteurs défilent dans l’arène.. Le public s’enthousiasme et hurle le