• Aucun résultat trouvé

Université de Nice-Sophia Antipolis POLYTECH

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Nice-Sophia Antipolis POLYTECH"

Copied!
2
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis POLYTECH

PEIP2 2016–2017

Examen de Programmation Java

Durée : 0h45 Aucun document autorisé

Mobiles interdits Nom : Prénom :

I1. Expliquez ce qu’il faut faire sous Linux pour exécuter un programme écrit en Java.

Question sur 1 pt : Il faut d’abord compiler le programme Java en Java Byte Code à l’aide de la commandejavac, puis on exécute le.classqui contient la méthodemainà l’aide de l’interprète, commandejava.

. . . .

I2. Quelle est la différence entre langage procédural et langage à objets ? Citez au moins un langage de chaque.

Question sur 2 pts : Le langage C est un langage procédural, c’est-à-dire qu’un programme écrit dans ce langage est structuré autour des actions représentées par des procédures (ou des fonctions). Le langage Java est un langage à objets c’est-à-dire qu’un programme écrit dans ce langage est structuré autour des objets, représentés par des classes.

. . . .

I3. Expliquez comment on peut garantir la validité (la justesse) d’un programme.

Question sur 2 pts : La validité d’un programme ne peut se faire qu’analytique- ment. L’axiomatique de Hoare, habituellement utilisée, est celle des affirmations, antécédent et conséquent, qui décrivent l’état du programme. L’antécédent et le conséquent doivent être vrais avant et après l’exécution d’un énoncé. Pour chaque énoncé d’un langage de programmation, il existe une règle de déduction qui permet de passer systématiquement de son antécédent à son conséquent (et réciproquement). L’application des règles à l’ensemble des énoncés du pro- gramme permet de vérifier la validité du programme.

On rappelle que tester l’exécution d’un programme ne peut que mettre en évidence des erreurs et jamais garantir la justesse à 100 % du programme.

1

. . . .

I 4. Sur 8 bits, donnez les représentations binaires de65,127,−1,128et−128.

Les nombres négatifs seront représentés en complément à 2.

Question sur 2 pts :

65 = 26+ 20= 0 1 0 0 0 0 0 1 127 = 28−1 = 0 1 1 1 1 1 1 1

−1 = 1 1 1 1 1 1 1 1

−128 = 1 0 0 0 0 0 0 0

sur 8 bits,128n’a pas de représentation, puisque l’intervalle de valeurs en complément à 2 est[−281; +281−1], c’est-à-dire[−128; +127].

. . . . I 5. Dans le fragment de code Java suivant, sous quelles conditions l’énoncé E3

est-il exécuté ?

i f (x ==1 && y ==2) E1 ; e l s e

i f (x ==2 || z !=4) E2 ; e l s e E3 ;

Question sur 1 pt : (x6=1ouy6=2)et(x6=2etz==4)

. . . .

I 6. Ajoutez à l’algorithme suivant les affirmations qui prouvent sa validité, et expliquez à quoi correspond la valeurdcalculée.

v a r i a b l e s a , b , c , d : entiers ; lire (a ,b ,c)

{ ... } s i a <b a l o r s

s i b6c a l o r s

{ ... }

d ← b

s i n o n

{ ... } s i c >a a l o r s

{ ... }

d ← c

s i n o n

{ ... } 2

(2)

d ← a f i n s i f i n s i s i n o n

{ ... } s i c >a a l o r s

{ ... }

d ← a

s i n o n

{ ... } s i c >b a l o r s

{ ... }

d ← c

s i n o n

{ ... }

d ← b

f i n s i f i n s i f i n s i

{ ... } écrire (d)

Question sur 4 pts :

v a r i a b l e s a , b , c , d : entiers ; lire (a ,b ,c)

{ les variables a , b et c désignent 3 entiers quelconques } s i a <b a l o r s

s i b6c a l o r s { a < b6c }

d ← b

s i n o n

{ a < b et c < b } s i c >a a l o r s

{ a < c < b }

d ← c

s i n o n

{ c6 a < b }

d ← a

f i n s i f i n s i s i n o n

{ a> b } s i c >a a l o r s

{ b6 a < c }

d ← a

s i n o n

{ a> b et c6a } s i c >b a l o r s

{ b < c6a }

d ← c

3

s i n o n

{ c6 b 6a }

d ← b

f i n s i f i n s i f i n s i

{ d désigne la valeur médiane de a , b et c } écrire (d)

Cet algorithme permet de calculer la médiane des 3 entiers a, b et c.

. . . .

4

Références

Documents relatifs

Écrivez de façon itérative la fonction itos qui renvoie la conversion d’un entier positif ou nul passé en paramètre, en sa représentation sous forme d’une chaîne de

Écrivez un programme qui lit sur l’entrée standard une opération arithmétique formée de 2 entiers et d’un caractère ( ’+’ , ’-’ , ’*’ ou ’/’ ) et qui écrit sur

Écrivez la fonction creerFichDates qui lit un fichier de texte contenant la suites d’entiers, et qui crée un fichier de dates valides (de type Date ).. Sans l’écrire, vous

Lors d’un appel de fonction ou de procédure, la transmission par valeur consiste à affecter, après évaluation, la valeur du pa- ramètre effectif à son paramètre formel

Au lieu de retirer, à chaque itération, 1 diviseur au dividende et d’incrémenter de 1 le quotient, le diviseur est multiplié successivement par 2 pour trouver son plus grand

qui prend en paramètre une chaîne de caractères, et qui remplace chaque chiffre par le caractère ’_’ dans celle-ci.. La fonction renvoie un pointeur sur le 1er caractère de

Il est nécessaire d’écrire un destructeur pour libérer explicitement la mémoire occupée par le tableau et les 3 points du triangle

En utilisant, la classe std::ifstream et ses méthodes is_open , get , eof et close , écrivez la classe FileInputStream qui permet de lire un fichier d’octets (et uniquement