Table des matières. Types, expressions et fonctions. Un interprète est un logiciel capable d'évaluer des expressions et d'exécuter des programmes.

Dimension: px
Commencer à balayer dès la page:

Download "Table des matières. Types, expressions et fonctions. Un interprète est un logiciel capable d'évaluer des expressions et d'exécuter des programmes."

Transcription

1 Types, expressions et fonctions Environnement utilisé : The Objective Caml compiler, version 3.xx INRIA Un interprète est un logiciel capable d'évaluer des expressions et d'exécuter des programmes. L'objectif principal des exercices d'expérimentation proposés ici est de renforcer la compréhension des concepts et outils développés en cours et en TD. Les savoir et savoir-faire exigibles sont : Maîtriser les notations concernant les types de base, les types Texte et Chaîne et le produit de types, Exploiter les messages de l'interprète concernant les types. En particulier, identifier les erreurs typiques liées à des incohérences de types. Implanter en CAML notations mathématiques, concepts et outils des cours/td. Toute expression CAML soumise à évaluation doit être suivie de deux points-virgules (). L'interprète du langage attend la saisie d'une expression en affichant le symbole d'invite #. L'usager la fournit alors suivie d'un appui sur la touche Entrée. Deux réactions sont alors possibles : - Tout se passe bien : l'interprète répond en affichant un type et une valeur. - L'expression fournie ne respecte pas les contraintes de typage : l'interprète répond alors par un message d'erreur et la partie de l'expression qui pose problème est soulignée. Table des matières EP1.1 Évaluation d'une expression...1 EP1.2 Maximum de deux entiers...2 EP1.3 Moyenne de deux entiers...3 EP1.4 Moyenne olympique (suite DM distribué en cours)...5 EP1.5 Relations sur des intervalles d'entiers (suite exercice TD)...5 EP1.6 Expressions conditionnelles...7 EP1.7 Signe du produit (variation de l'exercice vu en TD)...7 EP1.8 Une date est-elle correcte? (suite exercice TD)...8 EP1.9 Numération en base EP1.10 Nommer une expression...8 EP1.11 Somme des chiffres d'un nombre (suite exercice TD)...9 EP1.12 Permutation ordonnée d'un couple d'entiers...9 EP1.13 Définition du type Durée et des opérations associées (énoncé : DM distribué en cours)...10 EP1.14 Codage des caractères...10 EP1.15 Texte représentant un entier en base Rappel définir = donner une définition ; définition = spécification + réalisation spécifier = donner une spécification ; spécification = profil + sémantique + examples réaliser = donner une réalisation ; réalisation = algorithme (langue naturelle) + implantation (CAML) implanter = donner une implantation Dans certains cas, certaines de ces rubriques peuvent être omises. EP1.1 Évaluation d'une expression À titre d'exemple, essayez de prédire le type de chacune des expressions suivantes (délimitées par ), puis les saisir une par une dans la fenêtre de l'interprète et observer sa réponse avant de saisir l'expression suivante : "3"+4 "3+4" "bonjour" "x" 'x' ['x'] x P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 1

2 EP1.2 Maximum de deux entiers (i) Spécification, réalisation d'une fonction De manière générale, la définition d'une fonction, appelée f, aura la forme suivante, présentée ici dans le cas d'une fonction ayant deux paramètres de types t1 et t2 et un résultat de type t3 (t1, t2, t3 dénotent des noms de types, en particulier de base). En CAML, un commentaire est délimité au début par (* et à la fin par *). (* titre S profil : f : t1 x t2 -> t3 P sémantique : description de ce que fait la fonction en langage naturel (le «quoi») É ex et prop : - exemples et/ou C - propriétés R algorithme : description du «comment» É tests : - traduction en CAML du paragraphe ex et prop A de la section SPÉC ci-dessus L implantation : *) (* /!\ conditions d'utilisation de f (x,y) : conditions sur x et y *) let (f : t1*t2 -> t3) = function (nom_param_formel_1,nom_param_formel_2) -> expr. algébrique implantant la fonction Par exemple, on peut définir une fonction max2 de calcul du maximum de deux entiers : (* MAXIMUM DE DEUX ENTIERS S profil : max2 : N x N -> N P sémantique : max2 (a,b) est la plus grand des nombres a et b É ex et prop : (a) max2 (3,4) = 4 C (b) max2 (4,3) = 4 (c) quelque soit a dans N, max2 (a,a) = a R algorithme : le max est à mi-distance à droite du milieu É tests : - ex (a) et (b) A - max2 (3,3) = 3 L implantation : *) (* /!\ conditions d'utilisation de max2 (a,b) : a, b >= 0 *) let (max2 : int * int -> int) = function (a,b) -> ((a+b)+abs(a-b)) / 2 Soumettre cette définition de fonction à l'interprète CAML, et observer la réponse du système : de manière générale, lors de la définition d'une fonction, CAML répond en donnant le profil de la fonction (c'est-à-dire : nom_de_la_fonction : types des paramètres -> type_du_résultat). Par contre l'implantation (c'est à dire le code qui définit la fonction) n'est pas réaffichée. La valeur absolue est une fonction prédéfinie. Observer la réaction de l'interprète après la saisie de l'expression abs. Donner la spécification de abs selon le modèle ci-dessus. Vérifier sur un jeu d'essai pertinent que cette fonction fait bien ce qui est écrit dans la section sémantique de la partie SPÉCIF. Modifier la réalisation précédente de la fonction max2 comme suit, et observer la réponse de l'interprète. let (max2 : int * int -> int) = function P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 2

3 (a b) -> ((a+b)+abs(a-b)) / 2 Conclure sur le rôle des virgules dans l'énoncé des paramètres formels. (ii) Utilisation d'une fonction L'utilisation d'une fonction dans une expression a la forme suivante (cas de deux paramètres) : nom_de_fonction (paramètre_effectif_1, paramètre_effectif_2) Pour connaître le profil d'une fonction il suffit de fournir l'expression nom_de_fonction à l'interprète comme vous venez de le faire pour abs. Appliquez la fonction max2 à quelques jeux d'essai et en particulier des jeux ne satisfaisant pas le profil de la fonction, par exemple, max2 ("def", "abc"). Pour calculer la somme de quatre valeurs on peut se ramener à la somme de deux valeurs, en écrivant par exemple a+(b+(c+d)). On veut définir de manière analogue une fonction max4 pour calculer le maximum d'un 4-uplet d'entiers (c'est à dire un vecteurs de 4 entiers). Donner la spécification puis une réalisation de cette fonction, en termes de la fonction max2. EP1.3 Moyenne de deux entiers (i) Types numériques : entiers (int) et réels (float) Observer le type des valeurs suivantes : 3.5 3,5 Observer le résultat (type et valeur) de l'évaluation de l'expression (4 + 3) / 2. Conclure en donnant la spécification des opérateurs + et /. Observer la réaction de l'interprète pour chacune des expressions suivantes : (4 + 3) /. 2 ( ) /. 2 ( ) /. 2 ( ) /. 2.0 Conclure en donnant la spécification des opérateurs +. et /. (ii) Fonctions de conversion Rappels : DÉFINITION DE TYPE : déf N = Z + Compléter l'implantation de N : IMPLANTATION DU TYPE : type nat =... (*... *) Observer la réaction de l'interprète après avoir saisi l'implantion de la fonction suivante : Profil moyenne : N N R Sémantique calcule la moyenne du couple d'entiers donné RÉALISATION INFORMATIQUE Algorithme : la moyenne est le milieu du segment [a,b] Implantation : let (moyenne : nat * nat -> float) = function (a,b) -> (a +. b) /. 2.0 Pour convertir un entier en réel, CAML offre la fonction float_of_int. Devinez le profil de cette fonction et vérifiez votre réponse en l'appliquant à un entier, puis à un réel. Donnez un spécification de float_of_int. Puis donner une spécification et une ou plusieurs réalisations correctes de la fonction moyenne. Les tester avec des jeux d'essai significatifs. P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 3

4 En s'inspirant du nom de la fonction float_of_int, deviner le nom de la fonction permettant de convertir un réel en un entier. En donner une spécification, puis la tester. (iii) Textes et Chaines En CAML, les guillemets (") servent à délimiter une valeur constante de type Chaine (chaîne de caractères, string en CAML) différent du type Texte qui correspond aux séquences de caractères (char list en CAML). Le typage du langage CAML est strict, il fait la distinction string char list. Rappels : DÉFINITION DE TYPE : déf Texte = Séq(Car) Implanter le type Texte en CAML. Le symbole dénotant l'opérateur de concaténation (mise bout à bout) de deux chaînes (^) n'est donc pas le même que l'opérateur qui sert à concaténer deux séquences (@). Rappels : Profil ^ : Chaîne Chaîne Chaîne Sémantique : ch 1 ^ ch 2 est la concaténation des chaînes ch 1 et ch 2 : Texte Texte Texte Sémantique : txt txt 2 est la concaténation des textes txt 1 et txt 2 Observer la différence entre le type Chaîne et N au travers des expressions suivantes : 358 "358" "32"+"45" "32"^"45" Observer la différence entre le type Chaîne, le type Texte et un identificateur au travers des expressions suivantes : "nom" ['n';'o';'m'] nom (['n';'o';'m'] : texte) ("nom":texte) Expliquez le rôle de l'opérateur (_:_) En s'inspirant du nom de la fonction float_of_int, deviner les noms des deux fonctions permettant la conversion (dans un sens ou dans l'autre) entre un nombre sous forme de chaine de caractères (string) et l'entier en base 10 (int) correspondant. Donner leur spécification, puis tester ces fonctions sur quelques exemples simples et expliciter d'éventuelles contraintes sur les données. Modifier leur spécification en conséquence. Donner des exemples d'expressions ne respectant pas ces contraintes et observer la réaction du système lors de leur évaluation. On appelle chiffre décimal les chiffres 0,, 9. DÉFINITION DE TYPE déf. EntierCh = {chaîne formée uniquement de chiffres décimaux} IMPLANTATION DU TYPE type entierch = string (* formée uniquement de chiffres décimaux *) Réaliser la fonction moyenne_de_chaine spécifiée ci-dessous, puis la tester : P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 4

5 Profil moyenne_de_chaine : EntierCh EntierCh R Sémantique : moyenne_de_chaine (ch1,ch2) est la moyenne des deux entiers correspondant au couple de chaînes (ch1,ch2). Exemple : moyenne_de_chaine ("35", "46") = 40.5 Indication : réutiliser la fonction moyenne déjà programmée. Spécifier et réaliser la fonction moyenne_détaillée qui prend les mêmes arguments mais rend un résultat de la forme "la moyenne de 35 et 46 est 40.5". Indication : quel est le type du résultat? EP1.4 Moyenne olympique (suite DM distribué en cours) (i) Composition de fonctions Implater la fonction moyol en termes des fonctions min2, max2, min4, max4. Les réalisations de ces fonctions ayant beaucoup de points communs et pour ne pas tout réécrire, utiliser les possibilités de copie et de collage de l'éditeur. Tester la fonction moyol avec des jeux d'essai significatifs. (ii) Trace de l'évaluation d'une fonction Pour que la fonction de nom moyol soit «tracée» chaque fois qu'elle est évaluée, il faut appliquer la directive #trace au nom de la fonction : #trace moyol Remarque : les directives CAML commencent toutes par # ; il faut taper un # en plus de celui qui correspond à l'invite de l'interprète. Inversement, pour ne plus tracer l'évaluation, il faut appliquer la commande #untrace : #untrace moyol. Ici encore, ne pas oublier le #. Tracer moyol ainsi que toutes les fonctions intermédiaires utilisées par moyol, puis appliquer moyol à un jeu d'essai. Indenter la trace fournie par l'interprète (en utilisant des marges adéquates) de manière à faire apparaître l'emboîtement des appels successifs. EP1.5 Relations sur des intervalles d'entiers (suite exercice TD) (i) Relation d'ordre sur les nombres, opérateurs logiques Rappels : en CAML, les opérateurs de comparaison des valeurs numériques sont notés =, <>, <, <=, >, >=. Par ailleurs, true et false dénotent les deux valeurs booléennes. Les opérateurs logiques sont notés && (et), (ou), not (non). Observer le résultat (type et valeur) des expressions suivantes : true false "false" vrai true and true true && true 2 < 3 2 >= 3 2 > = 3 2 <> 2 2<3<4 2<3 && 3<4 2=3=true 2=(3=true) not (4 <= 2) not 4 <= 2 Implanter les expressions booléennes suivantes en CAML, en parenthésant les opérations de diverses manières. En déduire les priorités des opérateurs logiques && (et), (ou), not (non). - non vrai et faux - vrai ou vrai et faux Mettre en évidence la règle d'évaluation des opérateurs && et : le deuxième terme est-il toujours évalué, ou au contraire n'est-il évalué que si nécessaire? Pour cela observer la réaction de l'interprète avec les expressions suivantes : 10 mod 0 10 mod 5 P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 5

6 let (essaiet1 : int * int -> bool) = function (a,b) -> b <> 0 && a mod b = 0 essaiet1 (10,5) essaiet1 (10,3) essaiet1 (10,0) let (monet : bool * bool -> bool) = function (x,y) -> x && y let (essaiet2 : int * int -> bool) = function (a,b) -> monet (b <> 0,a mod b = 0) essaiet2 (10,0) Que calculent les fonctions essaiet1 et essaiet2? (ii) n-uplets Rappels : un n-uplet de valeurs est un vecteur à n composantes, séparées par une virgule. Le type d'un n-uplet est le produit cartésien ( ) des types de chacune des composantes. Observez le résultat des expressions CAML suivantes : (10,20,30) ((10,20),30) "10", 20,30.0 (10+1,"2"^"1",string_of_float (30.0)) 4,0 /. 2,0 (4,0) /. (2,0) 4,0.0/. 2,0 4,0.0/. 2.0,0 Puisque les virgules sont utilisés pour écrire des vecteurs, il faut trouver un symbole différent de la virgule pour séparer la partie entière de la partie décimale d'un réel. Conclure sur les significations respectives des symboles point (.) et virgule (,) et sur le rôle des parenthèses. (iii) Nommer un type ou une valeur ; relations entre points et intervalles Relire l'exercice correspondant dans le polycopié de TD. Compléter l'implantation de l'ensemble Intervalle : type intervalle =... (* {(bi,bs)} tels que bi<=bs *) Donner un ensemble significatif de jeux d'essai permettant de tester les fonctions précède, dans et suit. Nommer les jeux d'essai en utilisant la construction let, par exemple : let (cst_i:intervalle) = (-30, 50) let x1= -40 Compléter l'implantation suivante de la fonction précède. let (précède :...) = function (x, (bi, bs)) ->... Remarquer comment la définition de l'ensemble Intervalle facilite la compréhension du profil de la fonction. Observer l'évaluation des expressions : précède (3,4,5) précède (3,(4,5)). Tester les trois fonctions avec les jeux d'essai définis plus haut. (iv)relations entre intervalles, couples d'intervalles Donner un ensemble significatif de jeux d'essai permettant de tester les fonctions côteàcôte et chevauche (cf exercice polycopié). Pour cela fixer la valeur d'un intervalle I 1, par exemple I 1 = (10,20) ; puis énumérer diverses valeurs significatives d'intervalles I 2, I 3, etc, en plaçant les segments correspondants par rapport au segment correspondant à I 1. Nommer chacun des jeux d'essai en utilisant la construction let (cst_i...) =... Implanter les deux fonctions et les tester. P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 6

7 EP1.6 Expressions conditionnelles Observer la réaction du système après la saisie des réalisations ci-dessous d'une fonction d'essai : Profil essaicond : N Chaîne Implantations : let (essaicond : nat -> string) = function a -> if a < 10 then "ajourné" else a let (essaicond : nat -> string) = function a -> if a < 10 then a else "reçu" let (essaicond : nat -> string) = function a -> if a < 10 then a let (essaicond : nat -> string) = function a -> if a < 10 then "ajourné" else "reçu" Une seule de ces implantations est correctement typée. Laquelle? NB : observez comment la construction if_then_else est indentée : c'est de cette façon qu'il est conseillé d'écrire les if_then_else. Déterminez la règle non respectée dans les autres implantations, puis vérifiez vos réponses en les donnant une par une à l'interprète CAML. EP1.7 Signe du produit (variation de l'exercice vu en TD) On reprend la fonction signprod de l'exercice vu en TD, en modifiant le format d'affichage, distinguant le cas d'un résultat nul. Profil signprodv2 :... Sémantique : signprodv2 (x,y) est le signe de x y. Exemple : a) signprodv2 (-2, -3) = "-2*-3 : strictement positif" b) x Z, signprodv2 (x, 0) = "x*0 : nul" c) signprodv2 (2, -3) = "2*-3 : strictement négatif" (i) Version 1 : analyse dirigée par le résultat Donner une liste de jeux d'essai significatifs pour tester la fonction signprodv2. Implanter une première version de signprodv2 en s'inspirant de l'algorithme 1 étudié en TD, puis utiliser les jeux d'essai pour la tester. (ii) Version 2 : analyse dirigée par les données Implanter une deuxième version de signprodv2 en s'inspirant de l'algorithme 2 étudié en E1.6, puis utiliser les jeux d'essai pour la tester. P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 7

8 Les jeux d'essai proposés pour la version 1 testent-ils tous les cas apparaissant dans cette deuxième version? Si des cas ne sont pas testés compléter les jeux d'essai. EP1.8 Une date est-elle correcte? (suite exercice TD) Définir en CAML une liste de jeux d'essai significatifs pour tester la fonction estjourdansmois. Implantez et testez la version 2. Que répond CAML à estjourdansmois_2 (18, 13), estjourdansmois_2 (0, 4)? Comment interprétez-vous ces résultats? Donner une troisième implantation basée sur l'algorithme suivant : Algorithme 3 : composition conditionnelle sous forme de filtrage. L'utilisation d'expressions conditionnelles est interdite. Vérifier que estjourdansmois_3 donne les mêmes résultats que estjourdansmois_2 sur les jeux d'essais définis plus haut, y compris pour (18, 13) et (0, 4). Donner une nouvelle implantation (n 4) du type Mois par énumération (voir cours). Modifier l'implantation de estjourdansmois_3 en conséquences. Vérifier que estjourdansmois_4 donne les mêmes résultats sur la même liste de jeux d'essais que estjourdansmois_2. Que répond CAML à estjourdansmois_4 (18, 13), estjourdansmois_4 (0, 4)? Quel jeu d'essai correspond au jour 0 du mois d'avril pour estjourdansmois_4? Tester estjourdansmois_4 sur ce jeu d'essai. Comment interprétez-vous les réponses de CAML? Modifier l'implantation de la fonction estdate vue en TD pour qu'elle puisse utiliser estjourdansmois_4 au lieu de estjourdansmois_2, puis tester. EP1.9 Numération en base 16 (i) Caractères Observer la différence entre le type Car, le type N et le type Chaîne au travers des expressions suivantes : 3 '3' "3" '32' '3'+45 '3'^"45" 'x' "x" x (ii) Valeur entière associée à un chiffre hexadécimal Les chiffres hexadécimaux sont les signes élémentaires utilisés pour noter les nombres dans la numération par position en base 16 : on utilise les chiffres décimaux (0, 1,, 9) et les 6 premières lettres de l'alphabet (A, B,, F). On définit les types Carhex et Base16 : DÉFINITION DE TYPE déf Carhex = Chiffre {'A',..., 'F'} déf Base16 = {0,...,15} On spécifie une fonction nommée carhexvbase16 de la manière suivante : Profil carhexvbase16 : Carhex Base16 Sémantique : carhexvbase16 (c) est l'entier associé au caractère hexadécimal c Donner une implantation des types Carhex et Base16 Donner une réalisation de cette fonction en veillant à ne pas réécrire du code déjà écrit. EP1.10 Nommer une expression Pour chacune des expressions suivantes, observer les réactions de l'interprète, et expliquer les résultats en explicitant les liaisons de noms. let x=3 and y=4 in x+y let (x,y)=(3,4) in x+y let x=3 and y=x+4 in x+y P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 8

9 let x=10 in let x=3 and y=x+4 in x+y let x=10 in (let x=3 and y=x+4 in x+y) + x let x=10 in let x=3 and y=x+4 in x+y + x x Observez comment la construction let est indentée : c'est de cette façon qu'il est conseillé d'écrire les let. EP1.11 Somme des chiffres d'un nombre (suite exercice TD) Relire l'exercice E1.3. Compléter la réalisation de la fonction div : RÉALISATION INFORMATIQUE Algorithme : utilisation des opérateurs / «division entière» et mod «reste», définis en CAML. Implantation : (* /!\ conditions d'utilisation de div(n,d) :... *) let (div :... ->...) = function... Impanter la fonction sc. Tracer les fonctions div et sc et observer les appels successifs de div lors de l'application de sc à un jeu d'essai. EP1.12 Permutation ordonnée d'un couple d'entiers (i) Permutation ordonnée d'un couple d'entiers On veut construire la permutation ordonnée d'un couple d'entiers donné : par exemple, (3, 4) est la permutation ordonnée de (4, 3). On introduit ainsi une fonction nommée pocouplee : Profil Sémantique : Exemple : a) pocouplee(3,4) =... b) pocouplee(4,3) =... pocouplee : Z Z Z Z Soit (x',y') = pocouplee(x,y). (x',y') est la permutation ordonnée de (x,y), définie comme suit : (x',y')= (x,y) si x y, = (y,x) sinon. Compléter puis tester la réalisation de cette fonction : RÉALISATION INFORMATIQUE Algorithme : expression... Implantation : let (pocouplee : int * int -> int * int) = function (x,y) ->... Observer la réaction de l'interprète lors de l'évaluation de l'expression suivante : pocouplee (33.3,14.5) (ii) Surcharge des opérateurs de comparaison P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 9

10 Observer le résultat (type et valeur) des expressions suivantes : 2 < < 3.0 Le même symbole < est utilisé pour dénoter deux opérations de comparaison différentes l'une portant sur des entiers, l'autre sur des réels, alors que pour les opérations arithmétiques l'addition par exemple deux symboles différents sont utilisés. On dit que le symbole < est surchargé. Les deux opérandes doivent avoir le même type et la signification précise du symbole en est déduite. Vérifier sur plusieurs exemples que tous les opérateurs de comparaison sont surchargés (égalité, relation d'ordre), la seule règle étant que les opérandes soient de même type. Réaliser la fonction pocoupler pour construire la permutation ordonnée d'un couple de réels. Pour cela, exploiter la surcharge des opérateurs de comparaison : par rapport à la fonction pocouplee, seuls le nom de la fonction et son profil doivent être changés. (iii) Fonctions génériques : paramètres dont le type est générique Observer la réaction du système pour la fonction suivante let (pocouple : 'Élém * 'Élém -> 'Elém * 'Elém) = function (x,y) -> if x <= y then (x,y) else (y,x) Dans le profil de la fonction, les types sont indiqués par des identificateurs (autres que ceux des types définis par ailleurs), précédés par un accent aigu ('). Ceci signifie que la spécification proposée ne dépend pas du type des paramètres : on parle de fonctions génériques ou de polymorphisme. On observe que la réponse du système utilise la même convention, les noms des types donnés initialement étant ignorés ('Élém * 'Élém dans l'exemple) et remplacés par des lettres ('a * 'a). Attention à ne pas confondre 'a (pour nommer un type polymorphe), a (pour nommer un paramètre) et 'a' (la constante de type caractère première lettre de l'alphabet en minuscule). Observer la réaction du système pour les expressions suivantes : pocouple (3,2) pocouple (33.3,14.5) pocouple (3, 14.5) Deviner le profil des opérateurs <,, >, et, puis vérifiez vos conjectures à l'aide de CAML. Appliquer la fonction pocouple à des couples de caractères. Observer que la relation d'ordre sur les caractères, définie par CAML, est celle sur les codes des caractères (voir EP1.14). Ceci est vrai pour tous les opérateurs de comparaison (<,, >, ). EP1.13 Définition du type Durée et des opérations associées (énoncé : DM distribué en cours) EP1.14 Codage des caractères (i) Le code ASCII d'un caractère La fonction int_of_char associe à tout caractère l'entier qui lui est associé dans le code ASCII qui sert à représenter le caractère en machine. En utilisant cette fonction, observez les codes des chiffres, des lettres majuscules et des lettres minuscules. CAML offre une fonction nommée char_of_int. L'appliquer sur des exemples simples : entier négatif, entier positif. Trouver le domaine de définition de la fonction, sachant que la borne supérieure est de la forme 2 k -1. (ii) Valeur entière associée à l écriture décimale d'un entier Observer l'évaluation des expressions suivantes : int_of_string ("8")int_of_string ('8') int_of_char ('8') int_of_char ('8') int_of_char ('0') Observer l'évaluation de l'expression char_of_int (8 + int_of_char ('0')) DÉFINITION DE TYPE P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 10

11 déf Chiffre = {'0',...,'9'} déf Base10 = {0,...,9} Profil chiffrevbase10: Chiffre Base10 base10vchiffre: Base10 Chiffre Sémantique : chiffrevbase10 (c) est l'entier associé au caractère décimal c, base10vchiffre (n) est le caractère décimal associé à l'entier n Déduire de la question précedente une manière de réaliser les fonctions chiffrevbase10 et base10vchiffre, sans utiliser d'expression conditionnelle. Implanter les types Chiffre et Base10, puis les fonctions chiffrevbase10 et base10vchiffre. EP1.15 Texte représentant un entier en base 16 DÉFINITION DE TYPE déf Hexa4 = {0,..., } Profil écriture_hex : Hexa4 Chaîne Sémantique : écriture_hex (n) est la chaîne de caractères représentant n en hexadécimal ; n est un entier dont la représentation hexadécimale comporte au plus quatre chiffres. Réaliser le type Hexa4 puis en se basant sur la structure générale de la fonction sc de l'exercice EP1.11, réaliser la fonction écriture_hex. Indications : Introduire une fonction base16vcarhex, inverse de la fonction carhexvbase16 étudiée en EP1.9). On prendra soin de ne pas réécrire du code déjà écrit. Pour construire une chaîne à partir d'un caractère, utiliser la fonction suivante : Profil carvchaîne : Car Chaîne Sémantique : carvchaîne(c) est la chaîne composée du seul caractère c. RÉALISATION INFORMATIQUE Implantation : let (carvchaîne : char -> string) = function c -> String.make 1 c P.-C. Scholl, F. Puitg, M. Périn janvier 2009 page 11

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2 1 Univ. Lille1 - Licence info 3ème année 2013-2014 Expression Logique et Fonctionnelle... Évidemment Cours n o 1 : Introduction à la programmation fonctionnelle 1 Introduction La programmation fonctionnelle

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

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/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/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Structurer ses données : les tableaux. Introduction à la programmation

Structurer ses données : les tableaux. Introduction à la programmation Structurer ses données : les tableaux Introduction à la programmation Plan du document Introduction Introduire la notion de type Types primitifs Types composés Tableaux de type primitif Page 2 Notion de

Plus en détail

Cours d Informatique

Cours d Informatique Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Premiers pas avec Mathematica

Premiers pas avec Mathematica Premiers pas avec Mathematica LP206 : Mathématiques pour physiciens I Année 2010/2011 1 Introduction Mathematica est un logiciel de calcul formel qui permet de manipuler des expressions mathématiques symboliques.

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

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

Sub CalculAnnuite() Const TITRE As String = Calcul d'annuité de remboursement d'un emprunt TD1 : traduction en Visual BASIC des exemples du cours sur les structures de contrôle de l'exécution page 1 'TRADUCTION EN VBA DES EXEMPLES ALGORITHMIQUES SUR LES STRUCTURES 'DE CONTROLE DE L'EXECUTION

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Logiciel de Base. I. Représentation des nombres

Logiciel de Base. I. Représentation des nombres Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr I. Représentation des nombres Codage et représentation de l'information Information externe formats

Plus en détail

1. Structure d'un programme FORTRAN 95

1. Structure d'un programme FORTRAN 95 FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)

Plus en détail

TP 1 : 1 Calculs en binaire, octal et hexadécimal

TP 1 : 1 Calculs en binaire, octal et hexadécimal Univ. Lille 1 - Licence Informatique 2ème année 2013-14 Objectifs du TP Ce TP a pour but Codage de l'information TP 1 : 1. de découvrir quelques opérations logiques sur les nombres 2. et quelques formats

Plus en détail

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

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

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

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

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Rappels Entrées -Sorties

Rappels Entrées -Sorties Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk

Plus en détail

2 Comment fonctionne un ordinateur, dans les grandes lignes

2 Comment fonctionne un ordinateur, dans les grandes lignes Programmation 1 Cours n 1 GB3, 2 nd semestre 2014-2015 Cours de Python Gilles Bernot Les notes de cours et les feuilles de TD sont disponibles (avec un peu de retard par rapport au déroulement du cours)

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Algorithmique avec Algobox

Algorithmique avec Algobox Algorithmique avec Algobox 1. Algorithme: Un algorithme est une suite d instructions qui, une fois exécutée correctement, conduit à un résultat donné Un algorithme doit contenir uniquement des instructions

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Raisonnement par récurrence Suites numériques

Raisonnement par récurrence Suites numériques Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

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

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

Initiation à la programmation OEF pour Wims (exercices).

Initiation à la programmation OEF pour Wims (exercices). page 1 sur 9 Initiation à la programmation OEF pour Wims (exercices). Les titres des différentes parties de ce document, en grisé, sont donnés en référence au document Wims «DocAide Exercices OEF» rédigé

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-

Plus en détail

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

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Glossaire des nombres

Glossaire des nombres Glossaire des nombres Numérisation et sens du nombre (4-6) Imprimeur de la Reine pour l'ontario, 008 Nombre : Objet mathématique qui représente une valeur numérique. Le chiffre est le symbole utilisé pour

Plus en détail

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Application 1- VBA : Test de comportements d'investissements

Application 1- VBA : Test de comportements d'investissements Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps

Plus en détail

Maple: premiers calculs et premières applications

Maple: premiers calculs et premières applications TP Maple: premiers calculs et premières applications Maple: un logiciel de calcul formel Le logiciel Maple est un système de calcul formel. Alors que la plupart des logiciels de mathématiques utilisent

Plus en détail

6. Les différents types de démonstrations

6. Les différents types de démonstrations LES DIFFÉRENTS TYPES DE DÉMONSTRATIONS 33 6. Les différents types de démonstrations 6.1. Un peu de logique En mathématiques, une démonstration est un raisonnement qui permet, à partir de certains axiomes,

Plus en détail

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

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources 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,

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

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

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel) Algorithmes et Programmes Introduction à l informatiquel! Vie d'un programme! Algorithme! Programmation : le langage! Exécution et test des programmes Chapitre : Algorithmes et Programmes 2 Cycle de vie

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Les différents types de données et leurs opérations de base

Les différents types de données et leurs opérations de base Séquence 2 Les différents types de données et leurs opérations de base Contenu Présentation générale... 21 Partie 1 Les 3 familles de données et l'opération d'affectation... 22 1. Les trois familles de

Plus en détail

Algorithmique avec Algobox

Algorithmique avec Algobox Algorithmique avec Algobox Fiche 2 Cette fiche est la suite directe de la première. 1. Instructions conditionnelles : 1.1. Reprise de la fiche 1 : Lecture d'un algorithme : ORDINATEUR INTERDIT : Après

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES IMPRTATIN, CRÉATIN, MANIPULATIN, EXPRTATIN DE DNNÉES STATISTIQUES Bernard Dupont Bernard.Dupont@univ-lille1.fr ahm.bahah@yahoo.fr Bien que l'analyse et le traitement des données ne soient pas sa vocation

Plus en détail

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

Codage d information. Codage d information : -Définition- Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale

Plus en détail

Découverte du tableur CellSheet

Découverte du tableur CellSheet Découverte du tableur CellSheet l application pour TI-83 Plus et TI-84 Plus. Réalisé par Guy Juge Professeur de mathématiques et formateur IUFM de l académie de Caen Pour l équipe des formateurs T 3 Teachers

Plus en détail

Peut-on tout programmer?

Peut-on tout programmer? Chapitre 8 Peut-on tout programmer? 8.1 Que peut-on programmer? Vous voici au terme de votre initiation à la programmation. Vous avez vu comment représenter des données de plus en plus structurées à partir

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Cours d Analyse. Fonctions de plusieurs variables

Cours d Analyse. Fonctions de plusieurs variables Cours d Analyse Fonctions de plusieurs variables Licence 1ère année 2007/2008 Nicolas Prioux Université de Marne-la-Vallée Table des matières 1 Notions de géométrie dans l espace et fonctions à deux variables........

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

Représentation géométrique d un nombre complexe

Représentation géométrique d un nombre complexe CHAPITRE 1 NOMBRES COMPLEXES 1 Représentation géométrique d un nombre complexe 1. Ensemble des nombres complexes Soit i le nombre tel que i = 1 L ensemble des nombres complexes est l ensemble des nombres

Plus en détail

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

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 Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail