• 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

ELEC3 2016–2017

Examen de Langage C

Durée : 1h

Aucun document autorisé

Mobiles interdits Documents non autorisés

Note : la qualité des commentaires, avec notamment la présence d’affirmations significatives et d’invariant, ainsi que les noms donnés aux variables, et la bonne indentation rentreront pour une part importante dans l’appréciation du travail.

I1. Expliquez ce qu’est un « paramètre formel ».

Question sur 2 pts : Un paramètre formel est un nom qui désigne une entité abstraite, qui représente une donnée ou un résultat, sur laquelle une fonction ou une procédure procède un calcul.

. . . . I2. Combien de mode(s) transmission des paramètres existe(nt) en C ? Expliquez de façon synthétique ce ou ces mécanisme(s) de transmission des paramètres.

Question sur 2 pts : En C, il n’exsite qu’un seul mode de transmission des para- mètres, la transmission par valeur. 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 correspondant. Ce mode de transmission est utilisé pour les paramètres données.

. . . . I3. Écrivez en C la fonction bissextile qui teste si une année passée en paramètre

est bissextile ou pas.

Question sur 1 pt :

/* Rôle : vérifie si l ’ année est bissextile ou pas */

i n t bissextile (i n t annee ) {

r e t u r n annee %4==0 && annee %100!=0 || annee %400==0;

}

. . . . I4.À l’exclusion de toute autre fonction, écrivez en C la fonctionsommequi renvoie la somme du plus petit et du plus grand nombre parmi 3 nombres entiers passés en paramètre.

Question sur 4 pts : /*

* Antécédent : a ,b et c 3 entiers quelconques

* Rôle : retourne la somme du min et du max de a , b et c

1

*/

i n t somme (i n t a , i n t b , i n t c) { i f (a <b)

i f (b <= c) /* a < b <= c */

r e t u r n a + c;

e l s e

/* a < b et c < b */

i f (c >a) /* a < c < b */

r e t u r n a + b;

e l s e

/* c <= a < b */

r e t u r n c + b;

e l s e /* a >= b */

i f (c >a) /* b <= a < c */

r e t u r n b + c;

e l s e

/* a >= b et c <= a */

i f (c >b) /* b < c <= a */

r e t u r n b + a;

e l s e

/* c <= b <= a */

r e t u r n c + a;

}

. . . . I 5. Déclarez le type énuméréCouleursavec 4 couleurs de votre choix, plus les 3 couleurs BLEU, BLANC et ROUGE,puisdéclarez la variablecde ce type initialisée àROUGE.

Question sur pt :

enum Couleurs { VERT , JAUNE , BLEU , ORANGE , BLANC , ROUGE , VIOLET };

enum Couleurs c = ROUGE ;

. . . . I 6. Déclarez le typebooleen, ensemble à deux valeursFAUXetVRAI.

Question sur 1 pt :

enum booleen { FAUX , VRAI };

. . . . I 7. En utilisant un énoncéswitch, écrivez la fonctiondansDrapeauqui renvoieVRAI si la couleur passée en paramètre est l’une des 3 couleurs du drapeau français etFAUXsinon. Vous traiterez aussi le cas d’erreur.

Question sur 3 pts :

#i n c l u d e < stdio .h >

2

(2)

enum Couleurs { VERT , JAUNE , BLEU , ORANGE , BLANC , ROUGE , VIOLET };

/*

* Rôle : retourne VRAI si c est égal à BLEU , BLANC ou ROUGE

* et FAUX sinon

enum*/ booleen dansDrapeau (enum Couleurs c) { s w i t c h (c) {

c a s e BLEU : c a s e BLANC :

c a s e ROUGE : r e t u r n VRAI ; c a s e VERT :

c a s e JAUNE : c a s e ORANGE :

c a s e VIOLET : r e t u r n FAUX ;

d e f a u l t : fprintf ( stderr , " Couleur inconnue \n");

} }

. . . . I8. On désire calculer la racine carrée d’un nombre réelxpar la méthode de Héron l’Ancien1. Pour cela, on calcule la suitern= (rn−1+x/rn−1)/2jusqu’à obtenir une approximationrn=√

xtelle quern−x/rnest inférieur à un

ε

donné (e.g.10−15). Vous pourrez choisirr0= 1. À l’aide de l’énoncédo-while, écrivez la fonctionrac2qui renvoie la racine carrée de son paramètre (undouble) selon la méthode deHéron l’Ancien.

Question sur 5 pts :

// algorithme trouvé par Héron d’Alexandrie au Ie siècle avant JC //f(x) = 1/2(x+a/x)

//u0=α >0, un+1=f(un), un>a //vn=a/un

//en=unvnet06unp (a)6en

double rac2 (double a) { c o n s t double epsilon = 1e -15;

double r = 1;

do

r = (r + a/r )/2;

// Invariant :06unp (a)6en

w h i l e (r -a/r > epsilon );

r e t u r n r;

}

. . . .

1.Héron l’Ancien, mathématicien et mécanicien grec duIersiècle.

3

Références

Documents relatifs

Avec la notation de pointeur, écrivez en C la fonction somme qui prend en paramètre une chaîne de caractères qui représente un entier naturel et qui renvoie la somme de ses

É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

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