Outils pour utilisateurs

Outils du site


framabookc20hcorrections

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

framabookc20hcorrections [2015/05/07 13:49] (Version actuelle)
Ligne 1: Ligne 1:
 +===== Corrections pour Le C en 20 heures =====
 +
 +   * **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. 6 du PDF "​(l’extension .h est mis pour le mot anglais header" ​ -> est mise
 +   * **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. 9 du PDF ** "​Déclaration des fichiers d’entêtes " > en-têtes
 +   * **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.92 du pdf/p.86 du livre** - Corrigé de l’exercice n°8.3 (Mon beau sapin) — Intervertir les lignes printf(" ​  ​*"​);​ et printf("​ "); dans la fonction ramure : le début des lignes est rempli avec le motif de la ramure du sapin, la ramure n’apparaît pas.
 +   * **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) ;"
 +
 +
 +----
 +==== V2 - mai 2013 ====
 +
 +   * **p. 2 du PDF ** – sous Ubuntu, faites Applications / Accessoires / Terminal ; > c'est sous Gnome classique, pas spécifiquement Ubuntu (et depuis Unity ce n'est plus valable)
 +   * **p. 3 du PDF ** peut être disposez-vous > peut-être
 +   * **p. 4 du PDF ** comme tout à l’heure lancez un terminal > l’heure, lancez
 +   * **p. 4 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 4 du PDF ** ) La commande entrée > ). La
 +   * **p. 4 du PDF ** cd <nom repertoire>​ > pas d'​espace dans un nom de dossier, et les « <> » portent à confusion avec les #include <​stdio.h>​
 +   * **p. 4 du PDF ** STOP AVEC LES POINTS DE SUSPENSION ! C'est indigeste...
 +   * **p. 6 du PDF ** sont incluses par défaut ce qui permet > défaut, ce
 +   * **p. 6 du PDF ** 3. stdio vient de STanDard Input Output. > 3. stdio.h vient de Standard Input/​Output Header.
 +   * **p. 9 du PDF ** entêtes > en-têtes
 +   * **p. 14 du PDF ** Essayer d’utiliser une variable à laquelle nous n’avons encore affecté aucune valeur peut donner n’importe quel résultat (si on affiche le contenu d’une variable non initialisée par exemple, on pourra obtenir n’importe quelle valeur à l’écran). > si l'​adresse mémoire de la variable == n'​importe quel résultat...
 +   * **p. 17 du PDF ** En oubliant les quotes (guillemets simples). ’. . . ’ nous aurions > ), `\ldots'​
 +   * **p. 17 du PDF ** ’E’ > la première quote n'est pas correcte
 +   * **p. 17 du PDF ** %d, %x, %c. . . > %c, \ldots
 +   * **p. 17 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 17 du PDF ** – le %d est remplacé par la valeur numérique de i c’est à dire 65. > > pas de . mais ~;
 +   * **p. 36 du PDF ** printf ("​Entrez 2eme valeur : "); > 2e
 +   * **p. 40 du PDF ** si (err != 0) /   * si er différent de 0    */ > err ou er ?
 +if (err != 0) { /   * si er différent de 0    */ > err ou er ? 
 +préférez if (err !=0) à if (er) ! ! ! > err ou er ?
 +   * **p. 50 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 54 du PDF ** soi même > soi-même
 +   * **p. 66 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 76 du PDF ** c’est à dire
 +   * **p. 78 du PDF ** c’est à dire
 +   * **p. 87 du PDF ** c’est à dire
 +   * **p. 102 du PDF ** veuillez entrer votre chaine: > chaine~:
 +   * **p. 104 du PDF ** vous verrez peut être > peut-être
 +   * **p. 105 du PDF ** return 0; > il manque une tabulation dans la 2e portion de code
 +   * **p. 106 du PDF ** Nous reviendrons longuement, par la suite, sur cette quasi-équivalence
 +pointeurs/​tableaux. . . ne vous inquiétez pas si vous ne comprenez pas tout pour l’instant. . . > retirer ces points de suspension qui ne servent à rien
 +   * **p. 113 du PDF ** différrencier > différencier
 +   * **p. 114 du PDF ** Affichez une chaine de caractères > chaîne
 +   * **p. 114 du PDF ** Ajout du 0 de fin de chaine ​  */ > chaîne
 +   * **p. 114 du PDF ** printf("​Caractère numero > numéro
 +   * **p. 115 du PDF ** Veuillez entrer votre chaine de caractères > chaîne (rechercher/​remplacer déconseillé à cause des variables, faut tous les vérifier :-))
 +   * **p. 120 du PDF ** "​Veuillez entrer le nom de la personne:"​ > personne :
 +   * **p. 120 du PDF ** printf("​prenom= > prénom
 +   * **p. 120 du PDF ** printf("​age= > âge
 +   * **p. 130 du PDF ** /   * 1 er mouchard ​   */ > 1er
 +   * **p. 130 du PDF ** /   * 2 eme mouchard ​   */ > 2e
 +   * **p. 133 du PDF ** « 1°) Je suis ici » s’affiche et pas le message « 2°) Je suis ici » > 1-) et 2-)
 +   * **p. 144 du PDF ** La fonction malloc, déclarée dans stdlib.h permet > stdlib.h, permet
 +   * **p. 144 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 144 du PDF ** c’est à dire
 +   * **p. 155 du PDF ** Pour n==1 on obtiendra donc Vous avez 1 carte. > Vous avez 1 carte . avec une espace avant le point vu qu'on insère une espace si n == 1 --> correction : printf("​Vous avez %i carte%c. \n", n, (n==1) ? '​\0'​ : '​s'​);​
 +   * **p. 157 du PDF ** On apprend beaucoup de choses en lisant des programmes finis ;-) > ;-).
 +   * **p. 159 du PDF ** /   ​*compte le nombre de nombre impairs ​   */ > de nombres impairs
 +   * **p. 160 du PDF ** il faut décaler 10,​20,​30,​...,​90 d'une espace vers la droite pour qu'ils soient alignés avec 100
 +   * **p. 160 du PDF ** en paramètre à la fonction max_Tableau > max_Tableau.
 +   * **p. 162 du PDF ** Ainsi, si au départ si nous avions > si au départ nous avions
 +   * **p. 163 du PDF ** /   * Echange de t[i] et t[j]    */ > Échange
 +   * **p. 163 du PDF ** printf("​Tableau résultat:​\n"​);​ > résultat :
 +   * **p. 165 du PDF ** printf("​Elément %d : ", i+1); > Élément
 +   * **p. 171 du PDF ** int matrice_densite[TAILLE_SOUS_MATRICE][ TAILLE_SOUS_MATRICE];​ > espace en trop > [TAILLE_SOUS_MATRICE]
 +   * **p. 177 du PDF ** #include <​maths.h>​ > math.h, pas de '​s'​
 +   * **p. 178 du PDF ** Veuillez entrer le nom de la personne:"​) > personne :
 +   * **p. 178 du PDF ** prénom de la personne:"​ personne :
 +   * **p. 179 du PDF ** A, B, . . . jusqu’à R > \ldots{}
 +   * **p. 179 du PDF ** c’est à dire > c'​est-à-dire
 +   * **p. 180 du PDF ** c’est à dire
 +   * **p. 180 du PDF ** c’est à dire sans \0
 +   * **p. 180 du PDF ** dans le tableau, les guillemets ouvrants sont des guillemets fermants
 +   * **p. 186 du PDF ** l’abscence > l'​absence
 +   * **p. 188 du PDF ** "​aout"​ > "​août"​
 +   * **p. 189 du PDF ** image > "​août"​
 +   * **p. 192 du PDF ** à la fonction sqrt par exemple) 1 > par exemple)\footnote{...}.
 +   * **p. 192 du PDF ** Entrez une valeur:"​) > valeur :
 +   * **p. 192 du PDF ** fonction mystère:
 +   * **p. 192 du PDF ** a Voyons ce qui se produit si nous omettons le prototype : > a ?
 +   * **p. 193 du PDF ** une valeur: > valeur :
 +   * **p. 193 du PDF ** fonction mystere: > mystère :
 +   * **p. 201 du PDF ** le caractère ’O’ > guillemet fermant qui ouvre
 +   * **p. 202 du PDF ** IMPLEMENTATION DES FONCTIONS > IMPLÉMENTATION
 +   * **p. 203 du PDF ** usleep(500000) ; > en incluant la bibliothèque #include <​unistd.h>​ ça fonctionne mieux
 +   * **p. 207 du PDF ** //on affiche le mot cache > caché
 +   * **p. 210 du PDF ** usleep(500000) ; > en incluant la bibliothèque #include <​unistd.h>​ ça fonctionne mieux
 +   * **p. 210 du PDF ** par coeur > cœur
 +
 ++ corriger les tableaux des pages 8, 24, 43, 46, 47, 48, 50, 77, 84, 91, 103, 108, 113, 121, 122, 127, 134,144, 147, 148, 154, 158, 162, 167, 187, 198, 199 et 201 du PDF > point-virgule à la fin d'un item de liste, sauf le dernier où il faut un point
 +
 +
 +'''​18 Août 2013'''​
 +
 +J'ai pris en compte l'​ensemble des corrections. Une nouvelle version électronique devrait donc voir le jour.
 +
 +
 +Une précision cependant :
 +
 +- ''​**p. 165 du PDF ** printf("​Elément %d : ", i+1); > Élément''​
 +
 +n'est pas ou difficilement possible, nous sommes dans le code donc oui pour les accents mais pas pour les majuscules accentuées.
 +
 +
 +Pourriez vous préciser la demande :
 +''​+ corriger les tableaux des pages 8, 24, 43, 46, 47, 48, 50, 77, 84, 91, 103, 108, 113, 121, 122, 127, 134,144, 147, 148, 154, 158, 162, 167, 187, 198, 199 et 201 du PDF > point-virgule à la fin d'un item de liste, sauf le dernier où il faut un point''​
 +
 +
 +Merci pour votre participation
 +
 +
 +Eric
 +
 +----
  
framabookc20hcorrections.txt · Dernière modification: 2015/05/07 13:49 (modification externe)