Architecture Travaux Pratiques
Mini projet : calculatrice basique
1 Projet
Le but de ce miniprojet est de creer une calculatrice basique. Vous trouverez sur Moodle un certain nombre de fichiers pour vous aider a demarrer.
1.1 Presentation
Cette calculatrice se comporte de maniere tres simple : chaque operation est immediatement calculee. Chaque operande ou operation est fournie sur une ligne separee et le resultat est affiche sur une ligne. Par exemple, pour calculer 10 10 :
1 2 3 4
UFR de mathematique et dinformatique
Universite de Strasbourg
10
10 20
Au demarrage, votre calculatrice doit lire un premier nombre. Ensuite, elle devra boucler pour lire une operation et un second operande sauf cas particuliers ou une operation ne necessite pas de second operande. Le premier operande est le resultat precedent ou le premier nombre lu, au demarrage. Ainsi, pour calculer 2 3 5, il faudra entrer, ligne par ligne : 2, , 3, et 5. A letape de lecture dune operation, le programme sarrete si lutilisateur entre une ligne vide ou un operateur inconnu.
1.2 Modes entier et flottant
On souhaite pouvoir utiliser la calculatrice en mode entier ou bien en mode flottant simple precision. Ce choix est fait au demarrage du programme via les arguments de la ligne de commande. Pour ce faire, on vous fournit dans le code mis a disposition la fonction handlecliargs quil faudra completer.
1.3
Le mode par defaut est le mode entier.
Operations attendues
Voici la liste des operations quil faut implementer, a minima :
1.4
Utilisation en ligne de commande et tests
Il est possible dutiliser le simulateur MARS en ligne de commande :
: addition
: soustraction
: multiplication : division
: valeur absolue : minimum
: maximum
: puissance
abs
min
max
pow
1
java jar Mars45.jar nc calculatrice.s
En ligne de commande, il est aussi possible de fournir des arguments au programme. Ceuxci doivent imperativement se trouver en fin de ligne de commande apres largument pa :
1
1 2
1
Par ailleurs, des jeux de tests vous sont fournis et peuvent etre utilises depuis la ligne de commande :
java jar Mars45.jar nc calculatrice.s pa integer teststest001.txt
Architecture Travaux Pratiques
UFR de mathematique et dinformatique
Universite de Strasbourg
java jar Mars45.jar nc calculatrice.s pa integer
java jar Mars45.jar nc calculatrice.s pa float
Note : les fichiers de tests doivent se terminer par une ligne vide. 2 Fonctionnalites supplementaires
Les plus temeraires peuvent ajouter des fonctionnalites a la calculatrice, lorsque le comportement de base fonctionne correctement.
Voici les operations additionnelles a implementer en priorite :
printbinary : afficher un entier en binaire en le decomposant manuellement. Cette fonctionnalite ne sera pas evaluee si vous vous contentez dutiliser le syscall fourni par le simulateur MARS. Il ne faut pas fournir doperande supplementaire.
printhexa:afficherunentierenhexadecimalenledecomposantmanuellement.Cettefonctionnaliteneserapas evaluee si vous vous contentez dutiliser le syscall fourni par le simulateur MARS. Il ne faut pas fournir doperande supplementaire.
: afficher la mantisse significand en anglais dun nombre flottant : afficher lexposant dun nombre flottant
printsignificand
printexponent
Et
Toute autre idee est la bienvenue a condition de detailler et expliquer la nature de vos propositions dans le rapport.
3 Evaluation
Votre travail doit etre accompagne dun court rapport au format pdf et rendu sous la forme dune archive tar. Vous devrez presenter votre travail lors la derniere seance de TP.
Le rapport doit contenir une breve introduction et une breve conclusion. Il doit egalement detailler : lesdifficultesrencontrees.
lesfonctionnalitessupplementaires:
Levaluation de votre travail comporte 3 sousparties :
levaluationdesfonctionnalitesdebasedevotrecalculatriceetducode:
lapossibilitedeffectuerdesadditions,soustractions,multiplicationsetdivisionsdentiers.
limplementation des operations et poow pour les entiers.
limplementationdusupportdesflottants.
leleganceducodeetplusparticulierement,ledecoupagefonctionneletlabonneecrituredesfonctionsconven
tions dappels, sauvegarde des registres, etc.
levaluationdurapport.
levaluationdesfonctionnalitessupplementaires,silyena.
Les fichiers de tests vous sont fournis a titre indicatif. Le fait que votre calculatrice donne les resultats attendus pour les tests qui vous sont fournis ne vous garantit pas une bonne note. Le correcteur est susceptible dutiliser dautres tests lors de levaluation de votre calculatrice. En revanche, si votre calculatrice ne fournit pas les resultats attendus pour les tests fournis, la note correspondante sera tres basse.
Un code qui ne peut pas etre assemble pourra etre note 0. Il vaut mieux rendre une calculatrice pauvre en fonctionnalites mais correcte plutot que de tenter dimplementer un trop grand nombre de fonctionnalites de maniere bancale.
: passer du mode entier au mode flottant ou vice versa. voici quelques exemples de fonctionnalites bonus :
switchmodes
operationopposite:opposedunnombre. operationinv:inversedunnombre. modeflottantdoubleprecision.
abs ,
min ,
max
2