Corrigé des exercices de révision

Documents pareils
Corrigé des exercices sur les références

Corrigés des premiers exercices sur les classes

Premiers Pas en Programmation Objet : les Classes et les Objets

Programme Compte bancaire (code)

Utilisation d objets : String et ArrayList

Package Java.util Classe générique

Projet de programmation (IK3) : TP n 1 Correction

Corrigé des exercices avancés sur les structures récursives

ACTIVITÉ DE PROGRAMMATION

Java Licence Professionnelle CISII,

Programmer en JAVA. par Tama

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

Langage Java. Classe de première SI

TP, première séquence d exercices.

Synchro et Threads Java TM

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TD/TP PAC - Programmation n 3

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

Remote Method Invocation Les classes implémentant Serializable

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

INF 321 : mémento de la syntaxe de Java

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

Un ordonnanceur stupide

Calcul Parallèle. Cours 5 - JAVA RMI

Programmation avec des objets : Cours 7. Menu du jour

Java 1.5 : principales nouveautés

Auto-évaluation Programmation en Java

Solutions du chapitre 4

Le prototype de la fonction main()

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

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

TD/TP PAC - Programmation n 3

Programmation par les Objets en Java

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

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

Dis papa, c est quoi un bus logiciel réparti?

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Langage à objets : JAVA (1)

RMI le langage Java XII-1 JMF

PROGRAMMATION PAR OBJETS

as Architecture des Systèmes d Information

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

Programmation Par Objets

Programmation Objet Java Correction

Cours 1: Java et les objets

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

Exercices sur les interfaces

Classe Interne, Anonyme & Enumération

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

7 Développement d une application de MapReduce

Notes de cours Practical BigData

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

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

LOG4430 : Architecture logicielle et conception avancée

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


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

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Remote Method Invocation (RMI)

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 )

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

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

Programmation Réseau SSH et TLS (aka SSL)

Gestion distribuée (par sockets) de banque en Java

Lier Erlang avec d autres langages de programmation

Desktop Intégration. Rémi Forax

1. Langage de programmation Java

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

Threads. Threads. USTL routier 1

Introduction : les processus. Introduction : les threads. Plan

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

Derrière toi Une machine virtuelle!

Développement Logiciel

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

INITIATION AU LANGAGE JAVA

Cours de Programmation Impérative: Zones de mémoires et pointeurs

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

Notions fondamentales du langage C# Version 1.0

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

Recherche dans un tableau

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

Introduction au langage C

TP1 : Initiation à Java et Eclipse

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

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Introduction au langage Java

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

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

Programmation en C/C++

Principes des langages de programmation INF 321. Eric Goubault

Transcription:

Corrigé des exercices de révision Exercice 1.1.1 prix des billets d autocar Question 1 1. écrivez une méthode permettant de retrouver l indice d une ville dont on donne le nom en paramètre (c est à dire sa position dans le premier tableau). 2. écrivez une méthode qui calcule le prix d un trajet étant donnés les noms des villes de départ et d arrivée. class Erreur extends Exception{ class Exo12_2{ static int indice(string[] lesvilles,string ville) throws Erreur{ for (int i=0; i<lesvilles.length; i++){ if (ville.equals(lesvilles[i])){ return i; throw new Erreur(); static double prixtrajet(string[] lesvilles, double[] prixtroncon, String ville1, String ville2) throws Erreur{ int v1, v2, debut, fin; double prix = 0; v1 = indice(lesvilles,ville1); v2 = indice(lesvilles,ville2); if (v1<v2){ debut = v1; fin = v2; else{ debut = v2; fin = v1; for (int i=debut; i<fin; i++){ prix = prix + prixtroncon[i]; return prix; public static void main(string[] args) throws Erreur{ String[] villes = {"Vierzon", "Salbris", "Nouans", "Lamotte-Beuvron", "La Ferte Saint-Aubin", "Orleans"; double[] troncons = {3.2,1.8,2.3,4.2,5.0; 1

"Orleans","Salbris")); "Salbris","Lamotte-Beuvron")); "Salbris","Salbris")); Dans ce programme, la boucle for de la méthode indice ne s exécute pas complètement : dès qu on a trouvé une case de tableau ayant le bon nom de ville, l instruction return renvoie le numéro de cette case, ce qui provoque la fin de l exécution de la méthode et donc du for. Il y ainterruption du parcours du tableau quand on a trouvé le résultat recherché. En revanche, si on sort de la boucle autrement que par ce return, cela signifie qu on n a pas trouvé la ville. C est alors que l exception Erreur est levée. Notez que les deux méthodes indice et prixtrajet sont deux pures fonctions : elles obtiennent les données utiles par des paramètres (nombreux ici) et renvoient leur résultat par return. Question 2 On veut instaurer des tarifs dégressifs selon le nombre de tronçons parcourus : le premier tronçon est payé à plein tarif, le second avec 10% de réduction, le second avec 20%, etc. Ecrivez une méthode qui réalise le calcul du prix d un trajet selon ce principe. class Erreur extends Exception{ class Exo12_2_2{ static int indice(string[] lesvilles,string ville) throws Erreur{ for (int i=0; i<lesvilles.length; i++){ if (ville.equals(lesvilles[i])){ return i; throw new Erreur(); static double prixtrajet(string[] lesvilles, double[] prixtroncon, String ville1, String ville2) throws Erreur{ int v1, v2, debut, fin; double prix = 0; double facteur = 1; v1 = indice(lesvilles,ville1); v2 = indice(lesvilles,ville2); if (v1<v2){ debut = v1; fin = v2; else{ debut = v2; fin = v1; for (int i=debut; i<fin; i++){ prix = prix + (prixtroncon[i] *facteur); if (facteur > 0){ facteur = facteur -0.1; 2 NFA032 c CNAM 2012

return prix; public static void main(string[] args) throws Erreur{ String[] villes = {"Vierzon", "Salbris", "Nouans", "Lamotte-Beuvron", "La Ferte Saint-Aubin", "Orleans"; double[] troncons = {3.2,1.8,2.3,4.2,5.0; "Orleans","Salbris")); "Salbris","Lamotte-Beuvron")); "Salbris","Salbris")); Question 3 On veut généraliser le système pour un ensemble de lignes de bus : que faut-il changer dans le programme? Vous écrirez un programme avec deux lignes de bus et un seul programme qui calcule les prix des trajets. Les billets sont pour un trajet sur une ligne donnée, on ne fait pas de billet avec correspondance. Tel qu on l a écrit, notre programme fonctionne déjà pour un nombre quelconque de lignes de bus. La seule contrainte est qu il faut passer en paramètre à prixtrajet deux tableaux différents qui décrivent une seule et même ligne de bus. Le premier donne les noms des arrêts desservis et le second, le prix de chaque tronçon. Exercice 1.1.2 crible d Erathostène Question 1 version simple du crible Ecrivez une fonction qui prend en paramètre le nombre n en entrée et qui renvoie le tableau du crible sous la forme d un tableau de booléens où le booléen note si l entier correspondant à un indice donné est rayé ou non. Question 2 test de primalité Ecrivez une fonction qui teste si un nombre est premier. Pour cela, utilisez un crible d Erathostène et voyez si ce nombre est rayé ou non dans le tableau. Question 3 crible, version sophistiquée Ecrivez une fonction qui calcule tous les nombres premiers inférieurs à un certain paramètre n. Le résultat sera donné sous la forme d un tableau d entiers dont tous les éléments sont ledits nombres premiers. Le calcul est identique à celui de la question 1, mais la forme du résultat est différente. class Exo12_1{ static boolean[] criblesimple(int n){ NFA032 c CNAM 2012 3

if (n<1){ return new boolean[0]; boolean[] res = new boolean[n+1]; // initialisation du tableau res[0]=false; res[1]=false; for (int i=2; i<=n; i++){ res[i]=true; // calcul for (int i=2; i<=math.sqrt(n); i++){ if (res[i]){ for (int j=2; j*i<=n; j++){ res[i*j]=false; return res; static boolean estpremier(int n){ return criblesimple(n)[n]; static int[] criblesoph(int n){ boolean[] tab = criblesimple(n); int[] prov = new int[n-1]; int nb = 0; for (int i=2; i<=n; i++){ if (tab[i]){ prov[nb]=i; nb++; int[] res = new int[nb]; for (int i=0;i<nb;i++){ res[i]=prov[i]; return res; public static void main(string[] argv){ boolean[] test = criblesimple(100); for (int i=0; i<=100; i++){ if (test[i]){ Terminal.ecrireString(i+" "); Terminal.sautDeLigne(); int[] retest = criblesoph(100); for (int i=0; i<retest.length; i++){ Terminal.ecrireString(retest[i]+" "); Terminal.sautDeLigne(); Terminal.ecrireStringln("15 est-il premier? " + estpremier(15)); 4 NFA032 c CNAM 2012

Terminal.ecrireStringln("17 est-il premier? " + estpremier(17)); NFA032 c CNAM 2012 5