Devoir 1 Solutions

De
Publié par

  • mémoire - matière potentielle : travail double
1ITI 1520 Lab _3 – La traduction des algorithmes vers Java Romelia Plesa, Alan Williams, Sylvia Boyd Daniel Amyot Diana Inkpen , , , Gilbert Arbez, Mohamad Eid Devoir 1 Solutions
  • fenêtre mémoire de travail double
  • iti1520
  • algorithme de résolution de problème
  • algorithme de résolution des problèmes
  • doubles
  • double
  • n2
  • moyenne
  • ligne
  • lignes
  • méthode
  • méthodes
  • programme
  • programmes
Publié le : mardi 27 mars 2012
Lecture(s) : 81
Source : site.uottawa.ca
Nombre de pages : 14
Voir plus Voir moins

ITI 1520
Lab #3 – La traduction des algorithmes
vers Java
Romelia Plesa, Alan Williams, Sylvia
Boyd, Daniel AmyotDaniel Amyot, Diana Inkpen,
Gilbert Arbez, Mohamad Eid
Devoir 1 Solutions
1Objectif de ce laboratoire
• écrire plus des programmes Java pour:
– Lire quelques re quelques valeurs du aleurs du cla clavieer r
– Faire quelques calculs simples
– Afficher les résultats
• savoir comment coder quelques expressions
mathématiques en Java
• traduire des programs de deux algorithmes
(principall et résolution de problème) à ) à un
programme Java ayant une classe
contenant 2 méthodes.
Types de données numériques
• Vous devez déclarer chaque variable
utilisée
– Nombres entiers: int
– Nombres réels: double
• Pourquoi “double”? Les nombres réels sont
représentés dans l’ordinateur en “virgule
flottante” (floating point). Il y a d’ailleurs un
type appelé float.
• Le type float est cependant limité car il ne
conserve pas assez de chiffres significatifs
(décimales) pour plusieurs applications. Une
version amélioré, appelée double précision, a
donc été introduite: double
2Intervalles des types de données
•Entiers
–byte, 1 octet, -128 à 127
–short, 2 octets, -32768 à 32767
–int, 4 octets,
• -2 147 483 648 à -2 147 483 647
18 18–long, 8 octets, -9x10 à 9*10
• Réels
-45 38–float, 4 octets, +/- 10 à 10
-324 308–double, 8 +/- 10 à 10
Opérateurs mathématiques
• Il existe une version de chaque opérateur pour les
types int et double, avec une exception:
• Addition: +
•Soustraction: - (aussi utilisé pour
représenter les valeurs négatives)
• Multiplication: *
• Division: /
• Modulo: % (reste de la division, on,
pour entiers seulement)
• ATTENTION: soyez prudents quand vous mélangez
valeurs entières et réelles dans une même
instruction.
3Division entière
• Quand un dénominateur n’est pas un multiple du
numérateur, l’opérateur de division / laisse
ttbomber la ffracttiion rélésulttant, dproduisant t aiiinsi un
autre nombre entier.
• L’opérateur de modulo % retourne le reste (entier)
5 / 3 //divise, abandonne la fraction, et retourne 1
7 % 3 // 7 divisé par 3 = 2 reste 1
8 % 3 // 8 divisé par 3 = 2 reste 2
• Comment utiliseriez-vous le modulo pour
déterminer si un nombre est pair ou impair?
Erreurs fréquentes dans les
expressions arithmétiques
• Priorité des opérateurs: * avant +
6 + 3 * 2 Résultat: 12
– Équivalent à 6 + (3 * 2)
– Utilisez les parenthèses pour changer l’ordre d’évaluation
(6 + 3) * 2 Résultat: 18
• Division entière et division de nombres réels
5/45 / 4 Résultat: 1
5.0 / 4.0 Résultat: 1.25
4
Préparation à la programmation…..
•Copiez Gabarit.java dans votre répertoire de travail
(C:\work)
• CCiopiez ITI1520.javad tdans votre répertoire dde ttravaiill
• Démarrez Dr. Java.
• Cliquez “open” et ajoutez Gabarit.java et
ITI1520.java
• Commencez un nouveau fichier (“new”)
• Copiez et collez le contenu de Gabarit.java dans
vott re nouveau fifichhiier sans nom.
• Fermez (“close”) le fichiez
La structure du programme Java
(pour maintenant)
1. Comprend un classe avec 2 méthodes
• La méthode « main »est utilisé pour interagir avec
l’utilisateur
• L’autre méthode est l’implémentation d’un algorithme
pour résoudre un problème.
2. Traduisez l’algorithme principal à la méthode « main »
pour
• Configurer l’entrée du clavier (si vous utiliser la classe Scanner)
• Demander à l’utilisateur les valeurs de DONNÉES pour
l’algorithme de algorithme de résolution de problème
• Imprimés les résultats retournés par l’algorithme de résolution
de problème
3. Traduisez l’algorithme de résolution de problème à la
ième2 méthode
• Les résultats doivent être retournés dans la méthode.
10
5
Lecture du Clavier
• Rappelez-vous des 2 façon de lire les données du clavier:
• La classe Scanner
nextInt( ): Retourne un entier du type int.
nextDouble( ): Retourne un nombre réel du type double
nextBoolean( ):Retourne la valeur true ou false comme
valeur du type boolean
nextLine( ): Retourne un String contenant une ligne complète.
• La classe ITI1520
ITI1520.readInt( ) : Retourne un entier de type int
ITI1520.readDouble( ) : Retourne un réel de type double
ITI1520.readChar( ) : Retourne un caractère dde type char
ITI1520.readBoolean( ) : Retourne une valeur de type boolean
ITI1520.readDoubleLine( ) : Retourne un tableau de double
ITI1520.readIntLine( )int
ITI1520.readCharLine( )char
ITI1520.readString( ) : Retourne une chaîne de type String
Exercice 1
• Traduisez l’algorithme principal à la méthode main
DONNÉES: (aucune)
RÉSULTATS:
INTERMÉDIAIRES:
n1, n2 ,n3 (trois nombres réelles)
moyenne (la moyenne de n2, n2, n3)
EN-TÊTE: principal()
MODULE:
(Obtenir les nombres de l’utilisateur)
AfficheLigne(“S.V.P. tapez trois nombres réels”)
n1 ← LireRéel()
n2 ←
n3 ← LireRéel()
(Appel à l’algorithme de résolution de problème)
moyenne ← calculeMoy(n1, n2, n3)
(Affiche les résultats)
12
AfficheLigne(“La moyenne est “, moyenne);
6Exercice 1
• Traduisez l’algorithme à une méthode de résolution
de problème.
DONNÉES: A, B, C (trois nombres)
RÉSULTATS: Moy (la moyenne de A, B et C)
INTERMÉDIAIRES:
Somme (la somme de A, B et C)
EN-TÊTE: ( Moy ) ← calculeMoyenne( A, B, C )
MODULE:
Somme ← A + B + C
Moy ← Somme / 3
Exercice 2
• Modèle de programmation
– Réviser le modèle de programmation de la
prochaine diapositive (notez qu’il concerne le il concerne le
programme de l’exercice 1).
– Complétez-le pour une exécution du programme
étant donnée que l’utilisateur tape les trois
valeurs 2.3, 4.6, 7.8 lorsque demandé.
• Montrez les changements de valeurs dans le variables
• Montrez avec des flèches comment les valeurs
(données/résultats) sont échangées entre méthodes.
• Montrez lle dialogue avec l’utilisateur à à l’él’écran.

Exercice 2
Sortie à l’écran/fenêtreMémoire de programme
/* Labo 2, Exercise 2. */
class Moyenne // nom de l'algorithme, et donc de la classe
{
public static void main (String args[])
{
// DÉCLARATIONS DES VARIABLES
double n1,,;, n2, n3; // INTERMÉDIAIRES: trois nombres réels Mémoire de travail
double moyenne; // INIAIRES: la moyenne
n1// LECTURE DES VALEURS DONNÉES
System.out.println("Entrez 3 valeurs réelles: ");
n1 = ITI1520.readDouble(); n2
n2 = ITI1520.ree();
n3 = ITI1520.readDouble(); n3
// APPEL À L'ALGORITHME DE RÉSOLUTION DE PROBLÈME
moyenne = calculeMoyenne(n1, n2, n3);
moyenne// AFFICHAGE DES RÉSULTATS ET MODIFIÉES À L'ÉCRAN
System.out.println("La moyenne est " + moyenne);
}
public static double calculeMoyenne(double a, double b, double c)
{
a// DÉCLARATIONS DES VARIABLES
double moy; // RÉSULTATS: la moyennesomme; // INTERMÉDIAIRES: la somme b
// MODULE
somme = a + b + c;
cmoy = somme / 3;
// RETOURNE RÉSULTAT
sommereturn(moy);
}
} moy
Utilisation du débogueur
• En utilisant Dr. Java en mode débogage
(“Debugger Debug Mode”), vous pouvez faire
l’équivalentt d’ d’une trace d’algoriiththme, mais pour un
programme Java!
– Vous pouvez exécuter une instruction à la fois
– Vous pouvez stopper le programme à un point d’arrêt
(break point) de votre choix
– Vous pouvez observer le contenu des variables.
• Essayez-le avec votre programme de moyenne
développé dans l’exercice 1.
• Utilisez le model de programmation pour suivre
l’exécution du programme.
8Points d’arrêt
• Sélectionnez une ligne dans votre programme.
Dans le menu “Debugger”, sélectionnez “Toggle
Breakpoint on Current Line”.
– La première instruction System.out.println est un
bon candidat
– La ligne sélectionnée comme point d’arrêt sera affichée
en rouge.
• Vous pouvez aussi cliquer avec le bouton de droite
et sélectionner “Toggle Breakpoint”.
– Plusieurs lignes peuvent être (dé-)sélectionnées ainsi
• LL dors de l l’’exécution du programme, ce dernier
s’arrêtera juste avant une ligne de point d’arrêt.
• Dans la fenêtre d’interactions, le débogueur vous
indiquera où est rendu le programme, et la ligne
courante sera affichée en bleu clair.
Observations (“Watches”)
• Pour suivre l’évolution des variables
lorsqu’elles sont modifiées, utilisez une
entétrée “watch” (h” (observateur)
– Double-cliquez sur une ligne vide de la colonne
“name”, écrivez le nom de la variable, puis
appuyez sur ‘enter’.
– Si la variable a déjà une valeur, elle sera
affichée. Sinon, vous verrez “<not found>”
(l’équivalent de notre ? dans les traces
dad’algorithmes)lgorithmes).
• Essayez pour toutes les variables de
l’exemple 1.
• À chaque arrêt du programme, les valeurs
affichées sont mises à jour.
9Contrôle de l’exécution
Avec ce débogueur, il y a quatre façons de faire
progresser le programme:
1. Resume
– Le programme continue jusqu’au prochain point d’arrêt ou
jusqu’à la fin de l’exécution.
2. Step into
– À utiliser pour un débogage très détaillé.
– Le programme ne va exécuter que prochaine instruction,
même si celle-ci se trouve dans une autre méthode Java.
– Les méthodes fournies par l’environnement Java (print) ne
seront pas visitées, mais celles de la classe ITI1520 le
seront!
Contrôle de l’exécution
3. Step over
– Utilisée le plus fréquemment
– Passe à la prochaine instruction dans la méthode courante.
– Si la ligne courante contient plusieurs invocations de
méthodes, alors elles seront toutes invoquées d’un coup.
4. Step out
– Va jusqu’à la fin de la méthode courante.
– Pratique si nous visitons une méthode détaillée et voulons
revenir à la méthode invocatrice.
Exécutez votre programme en utilisant Step over
Utilisez Step into lorsque vous arrivez à l’appel de la
méthode de résolution de problème (calculeMoyenne)
10

Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.