Corrigés des exercices sur les exceptions

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Utilisation d objets : String et ArrayList

Corrigés des premiers exercices sur les classes

Programme Compte bancaire (code)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Programmer en JAVA. par Tama

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Package Java.util Classe générique

Java Licence Professionnelle CISII,

Le langage C. Séance n 4

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation avec des objets : Cours 7. Menu du jour

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

Projet de programmation (IK3) : TP n 1 Correction

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

Langage Java. Classe de première SI

ACTIVITÉ DE PROGRAMMATION

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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

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

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

TP : Gestion d une image au format PGM

Notions fondamentales du langage C# Version 1.0

Synchro et Threads Java TM

Programmation Par Objets

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

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

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

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

as Architecture des Systèmes d Information

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

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

TP, première séquence d exercices.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

I. Introduction aux fonctions : les fonctions standards

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Solutions du chapitre 4

TP1 : Initiation à Java et Eclipse


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)

Un ordonnanceur stupide

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

Exercices sur les interfaces

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

Programmation Orientée Objet Java

2. Comprendre les définitions de classes

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

Auto-évaluation Programmation en Java

INF 321 : mémento de la syntaxe de Java

Examen Médian - 1 heure 30

Cours Informatique Master STEP

TD/TP PAC - Programmation n 3

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

Programmation par les Objets en Java

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Java 1.5 : principales nouveautés

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

Bases Java - Eclipse / Netbeans

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

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

Remote Method Invocation (RMI)

Lier Erlang avec d autres langages de programmation

Recherche dans un tableau

1.6- Génération de nombres aléatoires

Threads. Threads. USTL routier 1

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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

Les structures de données. Rajae El Ouazzani

Développement Logiciel

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

INITIATION AU LANGAGE JAVA

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Programmation en Java IUT GEII (MC-II1) 1

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Chap III : Les tableaux

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

PROGRAMMATION PAR OBJETS

TD2 Programmation concurrentielle

Cours de Systèmes d Exploitation

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

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

Algorithmique et Programmation, IMA

Interfaces graphiques avec l API Swing

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

Desktop Intégration. Rémi Forax

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

Introduction au langage C

TD/TP PAC - Programmation n 3

Transcription:

Corrigés des exercices sur les exceptions Exercice 4.1.1 exceptions prédéfinies Complétez le programme suivant pour que les erreurs susceptibles de se produire soient gérées jusqu à ce qu un calcul soit effectivement mené à bout. class Exo15_1{ static int[] tableau = {17, 12, 15, 38, 29, 157, 89, -22, 0, 5; static int division(int indice, int diviseur){ return tableau[indice]/diviseur; int x, y; Terminal.ecrireString("Entrez l indice de l entier à diviser: "); x = Terminal.lireInt(); Terminal.ecrireString("Entrez le diviseur: "); y = Terminal.lireInt(); Terminal.ecrireString("Le résultat de la division est: "); Terminal.ecrireIntln(division(x,y)); Corrigé : class Exo15_1_1{ static int[] tableau = {17, 12, 15, 38, 29, 157, 89, -22, 0, 5; static int division(int indice, int diviseur){ return tableau[indice]/diviseur; int x, y; boolean ok = true; do{ Terminal.ecrireString("Entrez l indice de l entier a diviser: "); x = Terminal.lireInt(); Terminal.ecrireString("Entrez le diviseur: "); y = Terminal.lireInt(); Terminal.ecrireStringln("Le resultat de la division est: "); Terminal.ecrireIntln(division(x,y)); catch(arithmeticexception e){ Terminal.ecrireStringln("Le diviseur ne doit pas etre nul."); 1

catch(arrayindexoutofboundsexception e){ Terminal.ecrireString("L indice doit etre compris entre 0 "); Terminal.ecrireStringln("et " + (tableau.length -1) + "."); catch(terminalexception e){ Terminal.ecrireStringln("Vous devez entrer un nombre entier."); while(!ok); Exercice 4.1.2 exercice de lecture L exécution du programme donne l affichage suivant : Entrez un nombre: 3 Milieu d execution de methode1 Fin d execution de methode1 Fin d execution de methode2 Fin d execution de methode3 Entrez un nombre: 0 Exception in thread "main" Exc1 at Exo15_2.methode1(Exo15_2.java:5) at Exo15_2.methode2(Exo15_2.java:19) at Exo15_2.methode3(Exo15_2.java:25) at Exo15_2.main(Exo15_2.java:33) Entrez un nombre: 1 Milieu d execution de methode1 Fin d execution de methode3 2 NFA031 c CNAM 2012

Entrez un nombre: 2 Exception in thread "main" Exc3 at Exo15_2.methode2(Exo15_2.java:16) at Exo15_2.methode3(Exo15_2.java:25) at Exo15_2.main(Exo15_2.java:33) Exercice 4.1.3 menu Il s agit de faire une saisie de choix pour un menu sécurisé. Question 1 levée d exception Nous allons faire une méthode saisirchoix qui prendra en paramètre un entier n et renverra une valeur comprise entre 1 et n, tapée au clavier par l utilisateur. Les différentes erreurs qui pourront se produire seront : n est inférieur ou égal à 1 l utilisateur a entré un nombre qui n est pas compris entre 1 et n l utilisateur n a pas entré un nombre Chaque erreur devra être détectée par le programme et être signalée par une exception spécifique. Il faut donc créer trois classes différentes d exception. Pour simplifier, vous pouvez vous limiter à n<10, ce qui permet de ne saisir qu un caractère au moyen de Terminal.lireChar. Question 2 affichage du menu Ecrire une méthode qui prend en paramètre un tableau de chaînes de caractères. Chaque chaîne de caractère décrit un choix du menu. La méthode doit afficher ces différents choix. Question 3 question et réponse Ecrire une méthode qui utilise les deux méthodes déjà écrites pour afficher un menu et saisir le choix de l utilisateur. Cette méthode devra gérer les trois exceptions définies à la question 1. Elle prendra en entrée un tableau d options (string) et en sortie le choix effectué (sous la forme d un entier). Question 4 classe Ecrivez une classe Menu qui possède un constructeur pour initialiser un tableau de chaînes représentant différents choix. Cette classe permettra de réaliser une saisie d un des choix au moyen d un entier, en utilisant les exception nécessaires. Cette classe reprendra les fonctionnalités développées aux question précédentes, mais adaptées à la structure de classe. Ecrivez un programme qui utilise cette classe Menu avec trois menus différents qui seront trois objets différents. Ce programme capturera les exceptions susceptibles d être levées. NFA031 c CNAM 2012 3

class Exo_15_3{ String[] st1 = {"Partir loin", "Rester au lit", "Se lever"; String[] st2 = {"Rouge", "Vert", "Bleu", "Jaune", "Violet"; String[] st3 = {"Canard", "Poule", "Pintade", "Oie", "Dinde", "Pleiad"; Menu[] mt = new Menu[3]; boolean saisieok; mt[0] = new Menu("Que voulez-vous faire? ", st1); mt[1] = new Menu("Quelle est votre couleur préférée?", st2); mt[2] = new Menu("Trouvez l intrus.", st3); catch(npasbon ex){ for (int i=0; i<5; i++){ do{ saisieok = true; mt[i % 3].executerMenu(); catch(horsintervalle ex){ Terminal.ecrireString("Vous devez entrer un"); Terminal.ecrireStringln(" des choix proposés."); saisieok = false; catch(pasnombre ex){ Terminal.ecrireStringln("Vous devez entrer un nombre."); saisieok = false; while(!saisieok); class NPasBon extends Exception{ class PasNombre extends Exception{ class HorsIntervalle extends Exception{ class Menu{ String[] tabchoix; String question; Menu(String q, String[] t) throws NPasBon{ if (t.length > 9){ throw new NPasBon(); tabchoix = t; question = q; void affiche(){ Terminal.ecrireStringln(question); for(int i=0; i<tabchoix.length; i++){ Terminal.ecrireStringln(tabChoix[i] + ": tapez " + (i+1)); Terminal.ecrireString("Entrez votre choix: "); int chartoint(char c) throws PasNombre{ 4 NFA031 c CNAM 2012

if (c == 1 ){ return 1; else if(c == 2 ){ return 2; else if(c == 3 ){ return 3; else if(c == 4 ){ return 4; else if(c == 5 ){ return 5; else if(c == 6 ){ return 6; else if(c == 7 ){ return 7; else if(c == 8 ){ return 8; else if(c == 9 ){ return 9; else if(c == 0 ){ return 0; throw new PasNombre(); int saisir() throws PasNombre, HorsIntervalle{ char rep = Terminal.lireChar(); int repint; repint = chartoint(rep); if ((repint ==0) (repint > tabchoix.length)){ throw new HorsIntervalle(); return repint; int executermenu() throws PasNombre, HorsIntervalle{ affiche(); return saisir(); NFA031 c CNAM 2012 5