1) Système et architecture. (1/4 heure, 2 points) 2) Programmation fonctionnelle. (1 heure, 9 points)

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

Java Licence Professionnelle CISII,

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Programmation par les Objets en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Projet de programmation (IK3) : TP n 1 Correction

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Programmer en JAVA. par Tama

Chapitre 10. Les interfaces Comparable et Comparator 1

Corrigé des exercices sur les références

Objets et Programmation. origine des langages orientés-objet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Généralités sur le Langage Java et éléments syntaxiques.

Package Java.util Classe générique

Corrigés des premiers exercices sur les classes

Exercices sur les interfaces

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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

Java 1.5 : principales nouveautés

Programmation Objet Java Correction

Cours 1: Java et les objets

ACTIVITÉ DE PROGRAMMATION

TP1 : Initiation à Java et Eclipse

Les arbres binaires de recherche

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java - la plateforme

as Architecture des Systèmes d Information

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

Un ordonnanceur stupide

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmique I. Algorithmique I p.1/??

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Programme Compte bancaire (code)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TD/TP PAC - Programmation n 3

Héritage presque multiple en Java (1/2)

Solutions du chapitre 4

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TD/TP PAC - Programmation n 3

Tp 1 correction. Structures de données (IF2)

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

TP, première séquence d exercices.

INF 321 : mémento de la syntaxe de Java

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Architecture des ordinateurs

Une introduction à Java

Recherche dans un tableau


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

Langage Java. Classe de première SI

Threads. Threads. USTL routier 1

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Auto-évaluation Programmation en Java

Bases Java - Eclipse / Netbeans

Chapitre VI- La validation de la composition.

Machines virtuelles fonctionnelles (suite) Compilation ML Java

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation Par Objets

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Programmation Orientée Objet application au langage Java Version Novembre 2007

Architecture de l ordinateur

Utilisation d objets : String et ArrayList

RMI le langage Java XII-1 JMF

Remote Method Invocation (RMI)

Flux de données Lecture/Ecriture Fichiers

PROGRAMMATION PAR OBJETS

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Remote Method Invocation Les classes implémentant Serializable

Programmation en Java IUT GEII (MC-II1) 1

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)

Synchro et Threads Java TM

INITIATION AU LANGAGE JAVA

Remote Method Invocation en Java (RMI)

Derrière toi Une machine virtuelle!

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

Programmation avec des objets : Cours 7. Menu du jour

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

Conventions d écriture et outils de mise au point

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Introduction au langage C

Machines Virtuelles. et bazard autour. Rémi Forax

Environnements de développement (intégrés)

Algorithmique, Structures de données et langage C

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

Cours 1 : La compilation

Transcription:

1) Système et architecture. (1/4 heure, 2 points) a) Codez les nombres suivants en binaire, sur 8 bits. Pour les nombres négatifs, utilisez le complément à 2. 12 128-5 b) Complétez la table de vérité suivante : a 0 0 1 1 b 0 1 0 1 a AND b a OR b a XOR b NOT a a NAND b c) Sur combien d octets sont codés les caractères dans le code ASCII? Dans le standard Unicode? d) Qu est ce qu un assembleur? 2) Programmation fonctionnelle. (1 heure, 9 points) 2.1) La fonction de Mc Carthy est définie par : a) Calculez : let rec f n = if n > 100 then n - 10 else f ( f (n + 11) ) ;; f(110);; f(100);; f(90);; f(80);; b) La fonction f termine-t-elle sur Z et dans ce cas, que vaut-elle? 2.2) La multiplication dans N est définie de la manière suivante : n Ν, n * 0 = 0 ( n, p) Ν * Ν, n * p = n + n * ( p 1) En suivant cette définition, écrivez, en Caml, la fonction Mult n p qui calcule n * p.

2.3) D après vous, quels sont les avantages comparés de la programmation «récursive» et «itérative»? De la programmation «fonctionnelle» et «orientée objet»? 3) Algorithmique. (3/4 heure, 4 points) Triez, en utilisant l algorithme du tri bulle, la suite de chiffres suivante : 3 1 4 1 5 9 2 6 5 3 a) Détaillez les premières étapes de ce tri. b) Quelle est la complexité dans le pire des cas de ce tri? c) Quelles variantes du tri bulle connaissez-vous? 4) Programmation Objet. (1 heure, 5 points) a) Quels sont les résultats produits par le programma Java suivant : 1 class Pain { 2 double prix; 3 String provenance = "Boulangerie"; 4 Pain() {prix = 0; provenance = provenance + " CNAM";}; 5 Pain(String s) {provenance = provenance + " "+ s;} 6 public String tostring() {return "Pain "+provenance+" Prix = "+prix;} 7 } 8 class Baguette extends Pain { 9 Baguette() { 10 super(); 11 prix = 4.50; 12 } 13 public String tostring() {return "Baguette "+provenance+" Prix = "+prix;} 14 } 15 class Epi extends Pain { 16 Epi() { 17 super(" CAMOS"); 18 prix = 5.20; 19 } 20 } 21 class Complet extends Pain { 22 Complet() { prix = 7.25;provenance = "Supermarché";} 23 public String tostring() {return "Complet "+provenance+" Prix = "+prix;} 24 } 25 public class Exercice { 26 public static void main(string[] args) { 27 Pain[] la_fournee = new Pain[5]; 28 la_fournee[0] = new Pain(); 29 la_fournee[1] = new Baguette(); 30 la_fournee[2] = new Epi(); 31 la_fournee[3] = new Complet(); 32 la_fournee[4] = la_fournee[0]; 33 la_fournee[0].prix = 5; 34 for (int i = 0;i<5;i++) System.out.println("Nr "+i+" : "+la_fournee[i]); 35 } 36 }

b) De quelle(s) classe(s) hérite (directement et indirectement) la classe Epi? c) Que signifie le mot-clé «extends»? Le mot-clé «static»? Le mot-clé «void»? d) Quelle est la portée (visibilité) de la variable i, définie ligne 34? e) Qu est ce que le polymorphisme? f) Java est-il un langage compilé? Interprété?

PROPOSITION DE CORRIGE. 1) Système et architecture. (1/4 heure, 2 points) a) Codage en binaire :. b) Table de vérité : 12 0 0 0 0 1 1 0 0 127 0 1 1 1 1 1 1 1-5 1 1 1 1 1 0 1 1 a 0 0 1 1 b 0 1 0 1 a AND b 0 0 0 1 a OR b 0 1 1 1 a XOR b 0 1 1 0 NOT a 1 1 0 0 a NAND b 1 1 1 0 c) Dans le code ASCII, les caractères sont codés sur 1 octet. Avec le standard unicode, les caractères sont codés sur 2 octets. 2) Programmation fonctionnelle. (1 heure, 9 points) 2.1) a) Fonction de Mc Carthy : f(110) -> 100 f(100) -> f(f(111)) -> f(101) -> 91 f(90) -> f(f(101)) -> f(91) -> f(f(102)) -> f(92) -> f(f(103)) -> f(93) -> f(f(104)) -> f(94) -> f(f(105)) -> f(95) -> f(f(106)) -> f(96) -> f(f(107)) -> f(97) -> f(f(108)) -> f(98) -> f(f(109)) -> f(99) -> f(f(110) -> f(101)->91 f(80) - f(f(80+11)) -> f(91) -> 91 b) On procède aux observations suivantes : Si x>100, f (x) termine bien et vaut x-10. C est un cas de base. Si 90 x 100 alors f(x) vaut f(f(x+11)). Comme 101 x + 11, on a f(x+11) = x+11-10 =x+1. Donc, dans cet intervalle, f(x) = f(x+1). Dans l intervalle [90,100], on a donc f(x) = f(101) = 91. Dans l intervalle [90,100], f(x) vaut donc 91.

Si x<90, alors f(x) conduit au calcul de f(f(x+11)). Comme 101 > x+11, par hypothèse d induction, f(x+11) termine et vaut 91. Donc f(x) termine et vaut f(f(x+11)) c est à dire f(91), soit 91. 2.2) On écrira simplement : let rec Mult n p if p = 0 then 0 else n + Mult n (p-1) ;; 3) Algorithmique. a) Le principe du tri bulle est de comparer deux à deux les éléments e 1 et e 2 consécutifs d'un tableau et d'effecteur une permutation si e 1 > e 2. On continue de trier jusqu'à ce qu'il n'y ait plus de permutation. Détail des premières étapes : Je compare 3 et 1. Puisque 3>1, je permute 3 et 1 1 3 4 1 5 9 2 6 5 3 Je compare 3 et 4. Puisque 3<4, je ne fais rien 1 3 4 1 5 9 2 6 5 3 Je compare 4 et 1. Puisque 4>1, je permute 4 et 1 1 3 1 4 5 9 2 6 5 3 Je compare 4 et 5. Puisque 4<5, je ne fais rien 1 3 1 4 5 9 2 6 5 3 Je continue à parcourir ainsi le tableau jusqu à la fin. Ensuite je recommence au début jusqu à ce que je puisse faire un parcours complet du tableau sans effectuer aucune permutation. b) Le tri bulle a une complexité dans le pire des cas en O(n 2 ). c) On peut citer le tri bulle «Boustrophedon» qui parcours le tableau de droite à gauche puis de gauche à droite, alternativement ; On peut également citer le tri "Shuttle" (navette en anglais) qui effectue un retour arrière dès qu'une permutation est détectée 4) Programmation Objet. a) Ce programme affiche : Nr 0 : Pain Boulangerie CNAM Prix = 5.0 Nr 1 : Baguette Boulangerie CNAM Prix = 4.5

Nr 2 : Pain Boulangerie CAMOS Prix = 5.2 Nr 3 : Complet Supermarché Prix = 7.25 Nr 4 : Pain Boulangerie CNAM Prix = 5.0 a) La classe «Epi» hérite de la classe «Pain» qui hérite elle-même de la classe «Object». b) Le mot-clé «extends» permet d étendre une classe (c est à dire hériter d une classe). Le mot-clé static permet de définir des classes, des attributs ou des méthodes qui n ont pas besoin d une instance de classe pour être utilisés. Ici, la classe Exercice, n a pas besoin d être instanciée avant l appel à «main». Le mot-clé «void» permet de définir des méthodes qui ne renvoie aucune valeur. c) La variable «i» est visible à l intérieur du bloc dans lequel elle a été définie. Ici, elle n est visible qu à l intérieur de la boucle «for». d) Le polymorphisme est un mécanisme qui permet d'adresser le même message à des objets de types différents qui l'interpréteront à leur manière. Le polymorphisme signifie que l'émetteur d'un stimulus n'a pas besoin de connaître la classe de l'instance réceptrice. Cette dernière peut appartenir à n'importe quelle classe. e) Le langage Java est un langage compilé mais son compilateur ne génère pas des instructions machine spécifiques mais un programme en byte-code, qui peut être décrit comme un langage machine pour un processeur virtuel qui n a pas d existence physique. Ce code objet compilé peut alors être exécuté par un interpréteur Java qui n est ni plus ni moins qu un émulateur de processeur virtuel : la Machine Virtuelle Java