FramabookC20HCorrections
De Framawiki.
- p.4 du pdf/p.1 du livre - 3ème et dernier paragraphe - 6ème ligne, il manque le mot "que" : "Plus de quatre-vingt-quinze pour cent de ce vous y trouverez" --> "Plus de quatre-vingt-quinze pour cent de ce que vous y trouverez"
- p.7 du pdf/p.4 du livre et chaque fois qu'on ouvre Scite. Régler l'encodage. Il faut régler l'encodage de Scite sur UTF-8. Cliquer sur le menu "File" puis sur "Encoding" puis choisissez UTF-8. Si l'encodage n'est pas le bon, le résultat de l'exercice 1.11 de la page 12 du pdf, 9 du livre, ne sera jamais satisfaisant. Le accents seront remplacés par du code.
- p.24 du pdf/p.21 du livre. Un résultat étonnant mais logique. On teste le programme de la somme, exercice 3.1, comme indiqué à la ligne 5 de "Initialiser les variables". Voici le résultat de mon test :
Valeur de a : 34567890213455
Valeur de b : 56543210987678
Valeur de a + b : -2
C'est normal, les entiers sont compris entre deux valeurs et ici le résultat dépasse le maximum. Une explication par un spécialiste serait la bienvenue, je pense.
---> Cela est dû à la représentation machine concernant le stockage en mémoire des entiers. Sur une architecture 32bits, la valeur maximale des (signed) int est par exemple pow(2,31)-1 (32-1 : bit de signe), soit 2147483647. pow(2,31) affiche alors -2147483648. En effet, le stockage des int est cyclique face à l'incrémentation, cf http://fr.wikibooks.org/wiki/Programmation_C/Types_de_base#Entiers et mon commentaire suivant).
- p.28 du pdf/p.25 du livre. Représenation machine (bis) - Dernier paragraphe.
"Remarque : Il aurait été possible d’utiliser %d du fait que l’arrondi est un nombre entier !"
Vraiment ? Tout comme au-dessus, je pense qu'il s'agit d'une erreur importante concernant la représentation machine des entiers et flottants, cela m'étonne qu'elle figure dans cet ouvrage et qu'elle n'ait été relevée par personne.
Les entiers sont stockés selon la règle "naturelle" en binaire, avec l'ajout du bit de signe, selon la norme et l'implémentation avec la régle du complément à 1, à 2 etc. Les flottants sont stockés selon la norme IEEE 754 le plus souvent, avec la notation mantisse/exposant (une fois de plus, cf http://fr.wikibooks.org/wiki/Programmation_C/Types_de_base).
De ce fait, afficher une variable définie et calculée comme float avec un format d'entier n'a aucun sens. Les notations de stockage mémoire n'étant pas les mêmes, les valeurs ne corresponderont en aucune manière (l'entier 12 et le flottant 12. n'ont pas du tout la même représentation machine).
Cela peut paraître puriste comme remarque, mais une mauvaise compréhension de cette représentation au sein d'un langage tel que C peut mener à beaucoup d'erreurs.
(De plus, je crois qu'il y a une erreur entre + et / .)
- p.40 du pdf/p.37 du livre - Corrigé de l'exercice 5.3 (Trouver un nombre)
Du point de vue technique, il n'y a rien à redire. Cependant, "votre nombre est plus grand" et "mon nombre est plus petit" étant logiquement équivalents, il est peu aisé de s'y retrouver à l'utilisation, les choix se faisant selon ces réponses.
- p.59 du pdf/p.56 du livre - Corrigé de l’exercice n°7.4 — Code Ascii : la ligne "int j;" est inutile (variable j non utilisée).
- p.100 du pdf/p.97 du livre - titre du chapitre : "Débogage dun programme" --> "Débogage d'un programme"
- p.102 du pdf/p.99 du livre - 11.4.1 deuxième encadré - dernière ligne de la boucle for : "2 eme mouchard" --> "2e mouchard"
- p.139 du pdf/p.136 du livre - premier paragraphe après encadré - dernière ligne, une petite erreur de conjugaison sur le verbe renvoyer : "la fonction renvoit un float" --> "la fonction renvoie un float"
- p.166 du pdf/p.163 du livre - Neuvième erreur courante du tableau - La correction, une erreur de nom de variable : "printf ("%s",c) ;" --> "printf ("%s",s) ;"
