• Aucun résultat trouvé

11 Corrigés chapitre 1 1.1 Exercice 1.1 1) 4 bits : 15, 8 bits : 255, 16 bits : 65535, 32 bits : 4294967295, N bits : 2

N/A
N/A
Protected

Academic year: 2022

Partager "11 Corrigés chapitre 1 1.1 Exercice 1.1 1) 4 bits : 15, 8 bits : 255, 16 bits : 65535, 32 bits : 4294967295, N bits : 2"

Copied!
14
0
0

Texte intégral

(1)

1 Corrigés chapitre 1 1.1 Exercice 1.1

1) 4 bits : 15, 8 bits : 255, 16 bits : 65535, 32 bits : 4294967295, N bits : 2N-1.

2) 1101101 = 109.

3) 19 = 10011, 45 = 101101, 63 = 111111.

4) CA57.

5) 10A4 = 1000010100100 = 4260, CF8E = 1100111110001110 = 53134, 9742 = 1001011101000010 = 38722.

1.2 Exercice 1.2

man : /usr/local/man, man ou ./man Yves : /home/Yves, ../../home/Yves etc : /etc, ../../etc

1.3 Exercice 1.3

essai.txt : fichier, appartient à l’utilisateur dut et au groupe dut, taille 18 octets, droit (prop : rw, group : r, others : r), dernière modification (ou création) 9 octobre de l’année en cours à 9h26.

toto : fichier exécutable (voir *), appartient à l’utilisateur dut et au groupe dut, taille 0 octets, droit (prop : rwx, group : r, others : r), dernière modification (ou création) 9 octobre de l’année en cours à 13h53.

tmp : répertoire, appartient à l’utilisateur dut et au groupe dut, taille 4096 octets (sans grande signification pour vous), droit (prop : rwx, group : -, others : -), création 9 octobre de l’année en cours à 9h48.

1.4 Exercice 1.4 1)

c↵

o↵

u↵ c↵

o↵ u↵

2) 43 0D 0A 4F 0D 0A 55 0D 0A 43 0D 0A 4F 0D 0A 55 0D 0A

(2)
(3)

2 Corrigés chapitre 2 2.1 Exercice 2.1

Trouver la solution à la main sans se poser de question « informatique ».

1 + 2 + 3 + 4 ...

+ N

= somme

On calcule des sommes intermédiaires (SI). 1→SI, puis SI+2 = 3→SI, puis SI+3=6→SI, puis SI+4=10→SI, puis... donc :

⇒ on prend le premier nombre et on le mémorise,

⇒ on lui ajoute le nombre suivant (accumulation) et on mémorise le résultat,

⇒ on recommence cette opération jusqu’à ce que le nombre à additionner atteigne N.

Mettons nous à la place de l’ordinateur (qui est stupide). Pour mémoriser chaque valeur, il faut une variable associée.

Détermination des variables nécessaires. Il va falloir une variable pour stocker N, une variable pour stocker la somme, une variable pour stocker un compteur (qui compte 1, 2, 3, ..., N).

ATTENTION à l’initialisation (somme = 0, compteur = 1, N = N).

Détection des répétitions conditionnelles. Tant que le compteur n’a pas atteint N, il faut calculer les affectations :

⇒ Nouvelle valeur de la somme = ancienne valeur de la somme + compteur

⇒ Nouvelle valeur du compteur = ancien valeur du compteur + 1

(4)

Détection des tests conditionnels dans les boucles ou en dehors des boucles. Ici, il n’y en a pas.

Exprimer l’algorithme :

• en utilisant un langage algorithmique plus ou moins précis.

Entier compteur, somme, N

Début

N = LireEntier()

compteur = 1 somme = 0

Tant que compteur <= N

somme = somme + compteur compteur = compteur + 1

afficher somme

fin

Expliquer l’indentation (les instructions décalées à droite appartiennent au temps que). Les tableaux sont inconnus, il faut rentrer une note à chaque tour. Evolution des variables à chaque tour (N = 5) :

somme compteur test compteur <= 5 avant la boucle 0 1 vrai => exec tour 1

fin tour 1 1 2 vrai => exec tour 2

fin tour 2 3 3 vrai => exec tour 3

fin tour 3 6 4 vrai => exec tour 4

fin tour 4 10 5 vrai => exec tour 5

fin tour 5 15 6 faux => sortie

(5)

• En utilisant un ordinogramme.

oui

non compteur=1

somme=0

somme = somme + i

compteur = compteur + 1

Afficher somme début

fin Déclaration nombre entier :

compteur, somme, N

N = LireEntier ()

compteur<=N

2.2 Exercice 2.2

Trouver la solution à la main sans se poser de question « informatique ».

Note1 + Note2 + Note3 + ...

+ NoteN

= somme Puis moyenne = somme / N.

(6)

On calcule des sommes intermédiaires (SI). Note1→SI, puis SI+ Note2→SI, puis SI+

Note3→SI, puis SI+Note4→SI, puis... donc :

⇒ on prend la première note et on la mémorise,

⇒ on lui ajoute la note suivante (accumulation) et on mémorise le résultat,

⇒ on recommence cette opération jusqu’à ce que le nombre de notes à additionner atteigne N.

Mettons nous à la place de l’ordinateur (qui est stupide). Pour mémoriser chaque valeur, il faut une variable associée (et un type).

Détermination des variables nécessaires et de leur type. Il va falloir une variable entière pour stocker N, une variable entière pour stocker la somme, une variable entière pour stocker un compteur (qui compte 1, 2, 3, ..., N), une variable entière pour stocker la note qui vient d’être saisie. Il va falloir une variable réelle pour stocker la moyenne. ATTENTION à l’initialisation (somme = 0, compteur = 1, N = N).

Détection des répétitions conditionnelles. Tant que le compteur n’a pas atteint N, il faut calculer les affectations :

⇒ nouvelle valeur de la somme = ancienne valeur de la somme + note

⇒ nouvelle valeur du compteur = ancien valeur du compteur + 1

Détection des tests conditionnels dans les boucles ou en dehors des boucles. Ici, il n’y en a pas.

Exprimer l’algorithme :

• en utilisant un langage algorithmique plus ou moins précis.

Entier i, somme, note, N Réel moyenne

Début

N = LireEntier()

i=0 somme=0

(7)

Tant que i < N

Note = LireEntier() somme = somme + note i = i + 1

si N > 0

moyenne = somme / N sinon

moyenne = 0

afficher moyenne

fin

En gras, pour corriger le cas où N = 0 (division par 0).

• En utilisant un ordinogramme.

oui

non i=0

somme=0

i<N

note = LireEntier()

somme = somme + note

i = i +1

moyenne = somme / N Afficher moyenne début

fin Déclaration nombre entier :

i, somme, N, note Déclaration nombre réel :

moyenne

N = LireEntier()

(8)
(9)

3 Corrigés chapitre 3 3.1 Exercice 3.1

instructions a b commentaire

déclaration - -

a = 5 ; 5 -

b = a + 4; 5 9 a = a + 1; 6 9 b = a - 4; 6 2

instructions n1 n2 commentaire

déclaration - -

n1 = 5 ; 5 - n2 = 7 ; 5 7

n1 = n2; 7 7

n2 = n1; 7 7

instructions n1 n2 commentaire

déclaration - -

n1 = 5 ; 5 - n2 = 7 ; 5 7

n2 = n1; 5 5

n1 = n2; 5 5

3.2 Exercice 3.2

main() {

int a = 1, b = 2, c = 3, tmp;

(10)

tmp = c;

c = b;

b = a;

a = tmp;

printf("a = %d, b = %d, c = %d\n ", a, b, c);

}

3.3 Exercice 3.3 resultat = 8

resultat = 10 resultat = 2 resultat = 21 resultat = 11 resultat = 11 resultat = 22 resultat = 1

3.4 Exercice 3.4 flottant : 5.5 flottant : 3.5 flottant : 1.78571 flottant : 50.0 entier : 1 flottant : 1.1

3.5 Exercice 3.5 resultat = 3.000000 resultat = 3.750000 resultat = 3.000000

3.6 Exercice 3.6 main()

{

char a = 'A', b = 'B', c = 'C', tmp;

tmp = c;

c = b;

(11)

b = a;

a = tmp;

printf("a = %c, b = %c, c = %c\n ", a, b, c);

}

3.7 Exercice 3.7

printf("%d articles %c, de la catégorie %c", qte, art, cat);

on obtient : 50 articles

, de la catégorie B

3.8 Exercice 3.8 main()

{

int nb_art = 15;

float prix_unitaire_HT = 10.51;

float prix_total_TTC;

prix_total_TTC = prix_unitaire_HT * nb_art * 1.196;

printf("nombre d\'articles : %d\n", nb_art);

printf("prix unitaire HT : %6.2f\n", prix_unitaire_HT);

printf("prix total TTC : %5.2f\n", prix_total_TTC);

}

3.9 Exercice 3.9 main()

{

int nb_art;

float prix_unitaire_HT;

float prix_total_TTC;

printf("Donnez le nombre d\'articles ainsi et leur prix unitaire HT\n");

scanf("%d%f", &nb_art, &prix_unitaire_HT);

prix_total_TTC = prix_unitaire_HT * nb_art * 1.196;

printf("nombre d\'articles : %d\n", nb_art);

printf("prix unitaire HT : %6.2f\n", prix_unitaire_HT);

printf("prix total TTC : %5.2f\n", prix_total_TTC);

}

(12)

3.10 Exercice 3.10 main()

{

int qte=50;

char cat='B';

char art='S';

printf("Article : ");

scanf("%c", &art);

printf("Categorie : ");

/* attention au blanc avant le

%c à cause du return précédent */

scanf(" %c", &cat);

printf("Quantité : ");

scanf("%d", &qte);

printf("%d articles %c, de la catégorie %c", qte, art, cat);

}

3.11 Exercice 3.11 main()

{

float x, y;

char rep;

printf("donnez deux nombres : ");

scanf("%f%f", &x, &y);

printf("ordre croissant (O/N) ? ");

fflush(stdin);

scanf("%c", &rep);

if (rep == 'O') if (x < y)

printf("%f %f\n", x, y);

else

printf("%f %f\n", y, x);

else

if (x > y)

printf("%f %f\n", x, y);

else

printf("%f %f\n", y, x);

}

ATTENTION AUX TESTS

(13)

3.12 Exercice 3.12

if (rep == 'O' || rep == 'o')

3.13 Exercice 3.13 main()

{

float prix_brut;

printf("donnez le prix brut : ");

scanf("%f", &prix_brut);

if (prix_brut < 1000.0)

printf("prix net = %f", prix_brut);

else if (prix_brut < 5000.0)

printf("prix net = %f", prix_brut*0.9);

else

printf("prix net = %f", prix_brut*0.8);

}

3.14 Exercice 3.14

Donnez un nombre entier : 0 nul

un

au revoir

3.15 Exercice 3.15 main()

{

int i, stop;

printf("Donnez le nombre de tours : ");

scanf("%d", &stop);

for (i = 0; i < stop; i++) {

printf("Voici un nombre entier : %d\n", i);

printf("Voici son carré : %d\n", i*i);

}

printf("Fin du programme\n ");

}

i-- ; le programme boucle infiniment sur la première itération.

3.16 Exercice 3.16

(14)

{

int i, debut, nb;

printf("donnez la valeur de départ et le nombre d\'entiers : ");

scanf("%d%d", &debut, &nb);

for (i = debut; i < debut + nb; i++) { printf("%d\n", i);

}

printf("Fin du programme\n ");

}

Références

Documents relatifs

Pour généraliser cette structure afin de décrire la soustraction de nombres de taille supérieure à 1, il faut introduire une variable supplémentaire

Ne pas regarder ces éléments de réponses avant de réviser la séance 7 de cours et de résoudre l’exercice.. Donner le schéma bloc et décrire le fonctionnement de

Bien que ces tailles de clés soient jugées accepta- bles à l’heure actuelle, l’analyse a permis d’arriver à la conclusion que 14 bits supplémentaires dans la longueur de

• Effort nécessaire à réaliser les attaques: 2 57 opérations pour établir les deux listes + 2 56 blocs de 64 bits de stockage pour mémoriser les résultats

(pour l’anglais SHift Left) d´ecale tous les bits d’une position vers la gauche et place un z´ero comme bit le plus ` a droite. Lorsqu’il y a d´ebordement, l’indicateur

(pour l’anglais SHift Left) d´ecale tous les bits d’un registre ou d’une case m´emoire d’une position vers la gauche et place un z´ero comme bit le plus ` a droite, ce

Calculer les intégrales, ou déterminer les primitives demandées, à l’aide d’une intégration par parties.. 5) A l'aide d'une intégration par parties et de la valeur de J,

sections rectangulaires horizontales, de cote y, de largeur 2r (voir figure, en pointillés), de lon- gueur L et d’épaisseur infinitésimale dy. Ecrire le volume élémentaire dV