Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Quel tutoriel pour débuter ?

202 réponses
Avatar
Migrec
Bonjour,

Je cherche un tutoriel imprimable sur le web pour apprendre le C avant
d'acheter un bouquin "de référence".
Je suis débutant en programmation mais je connais les scripts shell
(linux), le HTML ou encore un peu de PHP.

Quel tutoriel imprimable me conseillez-vous pour débuter ? Les 560 pages
de celui du site du zéro
(http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c.html)
découragent un peu mon imprimante, même avec le recto-verso
automatique... Mais le style me plaît ! Existe-t-il quelque chose dans
le même esprit mais en plus condensé ?

--
Migrec

10 réponses

Avatar
candide
Marc Boyer a écrit :
On 2008-08-27, onyxs wrote:
Le livre de Delannoy auquel j'avais pensé pour une première introduction était
:

Programmer en langage C, Cours et exercices corrigés de Claude Delannoy

qui me semble très très accessible, et non celui que tu as lu qui porte sur le
C++ !!



"accessible", c'est en effet une qualité générale des bouquins
de C Delannoy. Le pb, c'est qu'ils sont souvent pleins d'erreurs.



Il ne faut pas inférer de la qualité des livres de Delannoy sur le C à
partir de ses livres sur le C++ (ou sur Java ou Fortran), il est bien
connu que les langages C et C++ sont deux langages différents ...

A moins que tu n'aies des extraits précis et exacts à nous soumettre, tu
es en train de propager une rumeur concernant la qualité du contenu des
(trois) ouvrages de Delannoy portant sur le langage C, comme le font
d'autres intervenants de fclc (par exemple, Emmanuel Delahaye qui
reconnait d'ailleurs ne pas avoir lu ses livres ...).
Avatar
candide
LMC a écrit :

Je suis très surpris quant à considérer les débutants. En effet, à part
dénigrer les différents auteurs, il n'est fourni, à ma connaissance, aucun
livre valable, sauf un ouvrage qui est à destination des experts.



Marc Boyer a recommandé l'ouvrage de K.N. King qui est une référence
disons acceptable mais en tout cas la moins mauvaise que je connaisse, à
la fois pour une initiation et un approfondissement.

Je ne sais pas à quel ouvrage d'experts tu fais allusion.

Personnellement, je me débrouille avec le tutoriel du Site du Zéro que j'ai
imprimé



Oui, il est très bien pour se lancer. Après il faut étendre et
approfondir (-> K&R on n'a pas trop le choix).

et avec un livre ' Le langage C' édition 1998 que j'ai acheté en
1999.



A priori ce ne serait pas Delannoy qui est de 1997.

Je ne cite pas celui-ci, car vous pourriez également le dénigrer.



Pas forcément.
Avatar
onyxs
Marc Boyer a écrit le 27/08/2008 à 13h53 :
On 2008-08-27, onyxs wrote:
Le livre de Delannoy auquel j'avais pensé pour une première
introduction était
:

Programmer en langage C, Cours et exercices corrigés de Claude Delannoy

qui me semble très très accessible, et non celui que tu as lu
qui porte sur le
C++ !!




"accessible", c'est en effet une qualité
générale des bouquins
de C Delannoy. Le pb, c'est qu'ils sont souvent pleins d'erreurs.

Si tu simplifies le C, en effet, c'est plus simple.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)


Le livre en question de Delannoy (Programmer en langage C) est accessible en ce qu'il constitue un premier marche-pied vers le C, je n'avais pas été frappé d'un excès de simplification artificielle là-dedans...
As-tu réellement trouvé des erreurs dans ce livre ou dans l'autre que j'avais cité : "Le langage C" du même auteur, qui est un ouvrage visant à être une sorte de livre de référence, (904 pages) et qui ne pêche en rien par un excès de simplification, rentrant au contraire dans toute sorte de détails ??
Avatar
Marc Boyer
On 2008-08-27, candide wrote:
Marc Boyer a écrit :
On 2008-08-27, onyxs wrote:
Le livre de Delannoy auquel j'avais pensé pour une première introduction était
:

Programmer en langage C, Cours et exercices corrigés de Claude Delannoy

qui me semble très très accessible, et non celui que tu as lu qui porte sur le
C++ !!



"accessible", c'est en effet une qualité générale des bouquins
de C Delannoy. Le pb, c'est qu'ils sont souvent pleins d'erreurs.



Il ne faut pas inférer de la qualité des livres de Delannoy sur le C à
partir de ses livres sur le C++ (ou sur Java ou Fortran), il est bien
connu que les langages C et C++ sont deux langages différents ...



Tout à fait. On peut s'étonner du nombre de langages que M. Delannoy
enseigne, en plus de son emploi d'ingénieur au CNRS. Mais de cet
étonnement ne doit pas venir automatiquement une critique.
Ceci dit, je concède que je n'achette pas les bouquins qui ne
me plaisent pas, donc, je n'ai pas d'exemplaire dans ma bibliothèque.

A moins que tu n'aies des extraits précis et exacts à nous soumettre, tu
es en train de propager une rumeur concernant la qualité du contenu des
(trois) ouvrages de Delannoy portant sur le langage C, comme le font
d'autres intervenants de fclc (par exemple, Emmanuel Delahaye qui
reconnait d'ailleurs ne pas avoir lu ses livres ...).



Mais bon, par chance, j'ai des collègues moins regardant ;-)
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...

Je passe sur l'indentation étrange de l'exemple du §1.9

if (op == '+') printf("leur somme est : %d", n1+n2) ;
else printf("leur produit est : %d", n1+n2) ;

Sautons aux exercices corrigés, Exercice 11.1, une
liste chainée. Déjà, pas de type liste, on manipule
directement les chainons. Mais surtout, dans tous les
exos corrigés, on a un seul malloc (solution de l'exo 11.1)
qui fait un cast (transtypage) de la valeur de retour,
et pas de test de la valeur de retour de malloc.
La page avant, pas de test de valeur de retour de fopen...
Pas un seul free, pas un seul realloc dans les exemples...

Aller, un autre bouquin: "Le livre du C premier langage"
dont des pages sont dispos en ligne. Le choix de présenter
le "switch" comme un complément en fin de livre et non
avec les structures de controle de base me semble discutable.
Sur la page 3 du chapitre sur les fonctions [1], encore
un main qui ne retourne rien... Et sur la page 4, la déclaration
de la fonction cube dans le main (plutôt vieux jeu comme façon
de coder).

Sur la page 2 du chapitre sur les variables, il pourrait quand même
mentionner les identifiants valides mais réservés (ou faire une note
de bas de page disant que çaa existe). Page 15, il explique que
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." (ce qui
en 2008 me laisse pantois) et puis 3 paragraphes plus loin,
il utilise un c avec cédille 'ç'... Quand aux "conversions
non dégradantes" entre int et float, là aussi, ça m'amuserait
de voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;

Si quelqu'un veut m'envoyer un bouquin récent complet, on
peut continuer à jouer...

Marc Boyer
[1] http://www.editions-eyrolles.com/Chapitres/9782212110524/chap08.pdf
[2] http://www.editions-eyrolles.com/Chapitres/9782212110524/chap02.pdf
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Avatar
Marc Boyer
On 2008-08-27, onyxs wrote:
Marc Boyer a écrit le 27/08/2008 à 13h53 :
On 2008-08-27, onyxs wrote:
Le livre de Delannoy auquel j'avais pensé pour une première
introduction était
:

Programmer en langage C, Cours et exercices corrigés de Claude Delannoy

qui me semble très très accessible, et non celui que tu as lu
qui porte sur le
C++ !!




"accessible", c'est en effet une qualité
générale des bouquins
de C Delannoy. Le pb, c'est qu'ils sont souvent pleins d'erreurs.

Si tu simplifies le C, en effet, c'est plus simple.

Marc Boyer



Le livre en question de Delannoy (Programmer en langage C) est accessible en ce
qu'il constitue un premier marche-pied vers le C, je n'avais pas été frappé d'un
excès de simplification artificielle là-dedans...



Je n'ai qu'une version de 97 sous la main, mais j'ai déjà relevé
quelques trucs en y passant quelques minutes (cf ma réponse à candide).

As-tu réellement trouvé des erreurs dans ce livre ou dans l'autre que j'avais
cité : "Le langage C" du même auteur, qui est un ouvrage visant à être une
sorte de livre de référence, (904 pages) et qui ne pêche en rien par un excès de
simplification, rentrant au contraire dans toute sorte de détails ??



Je ne l'ai pas sous la main. Je ne peux pas répondre.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Avatar
candide
onyxs a écrit :
As-tu réellement trouvé des erreurs dans ce livre ou dans l'autre que j'avais
cité : "Le langage C" du même auteur, qui est un ouvrage visant à être une
sorte de livre de référence, (904 pages) et qui ne pêche en rien par un excès de
simplification, rentrant au contraire dans toute sorte de détails ??



Absolument. Je n'ai jamais vu un livre entrant autant dans les détails.
Je guette les erreurs et je n'en ai trouvé pratiquement aucune. Ce qui
ne veut pas dire que j'aime ce livre, bien au contraire.
Avatar
LMC
Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et de
plus en anglais.
Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude avec
les 2 et jusqu'à ce jour, cela fonctionne bien. Je suis aux saisies
formatées de nombres octaux et hexadécimaux. A suivre ... lol

--
@++
LMC
"candide" a écrit dans le message de news:
48b559bf$0$10756$
LMC a écrit :

Je suis très surpris quant à considérer les débutants. En effet, à part
dénigrer les différents auteurs, il n'est fourni, à ma connaissance,
aucun livre valable, sauf un ouvrage qui est à destination des experts.



Marc Boyer a recommandé l'ouvrage de K.N. King qui est une référence
disons acceptable mais en tout cas la moins mauvaise que je connaisse, à
la fois pour une initiation et un approfondissement.

Je ne sais pas à quel ouvrage d'experts tu fais allusion.

Personnellement, je me débrouille avec le tutoriel du Site du Zéro que
j'ai imprimé



Oui, il est très bien pour se lancer. Après il faut étendre et approfondir
(-> K&R on n'a pas trop le choix).

et avec un livre ' Le langage C' édition 1998 que j'ai acheté en 1999.



A priori ce ne serait pas Delannoy qui est de 1997.

Je ne cite pas celui-ci, car vous pourriez également le dénigrer.



Pas forcément.



Avatar
candide
BOn, je préviens tout de suite que les les deux livres de Delannoy dont
tu parles, à savoir :

(i) Programmer en Langage C, Eyrolles (1997),
(ii) Le livre du C premier langage, Eyrolles (1994 & 2002),

sont pour moi de mauvais livres d'un point de vue de la qualité
pédagogique et je ne les connais que très mal. Pareil pour ses
"Exercices en Langage C". Moi, le livre de Delannoy auquel je me réfère
est le suivant

(iii) Claude Delannoy, "Langage C", Eyrolles (1999 & 2002), 920 pages.


Marc Boyer a écrit :

Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...




Oui, pour moi c'est inexcusable en effet. Dans son livre "Langage C", on
trouve aussi de tels exemples d'emploi de main() à de nombreuses
reprises. C'est d'autant plus étonnant que l'auteur dit lui-même, pages
820-821 :

"[L'en-tête de la fonction main()] ne peut toutefois s'écrire que sous
l'une des deux formes suivantes, la seconde étant indispensable
lorsqu'on souhaite récupérer les informations fournies par l'environnement :

int main(void) /* forme usuelle */
int main(int nbarg, char *argv[]);"


Et il ajoute, ce qui est contestable :

"on rencontre souvent des formes différentes, théoriquement hors norme :

main() /* théoriquement hors norme mais généralement accepté */
int main() /* théoriquement hors norme mais généralement accepté */

ces en-têtes sont cependant acceptés par toutes les implémentations,
quitte à provoquer un message d'avertissement (warning)."

Néanmoins, pour me faire l'avocat du diable, voici le /hello word/ de K&R2 :

------------------------------ 8<-----------------------------------
In C, the program to print ``hello, world'' is
#include <stdio.h>
main()
{
printf("hello, worldn");
}
------------------------------ >8 -----------------------------------




Je passe sur l'indentation étrange de l'exemple du §1.9

if (op == '+') printf("leur somme est : %d", n1+n2) ;
else printf("leur produit est : %d", n1+n2) ;



Bon OK, mais ça c'est une question de style, le tout est d'être constant
dans ces choix (je n'ai pas vérifié en l'espèce).


Sautons aux exercices corrigés, Exercice 11.1, une




Bon les exos corrigés ont des énoncés assez nuls alors les solutions ...


liste chainée. Déjà, pas de type liste, on manipule
directement les chainons. Mais surtout, dans tous les
exos corrigés, on a un seul malloc (solution de l'exo 11.1)
qui fait un cast (transtypage) de la valeur de retour,
et pas de test de la valeur de retour de malloc.
La page avant, pas de test de valeur de retour de fopen...
Pas un seul free, pas un seul realloc dans les exemples...




Oui, pas terrible en effet. Je vérifie dans son bouquin (iii) cité
ci-dessus où il y a un chapitre complet là-dessus : il teste bien
malloc() dans ses exemples, il libère, il donne un exemple de realloc.
Au passage, j'ai noté que dans ce même chapitre, son traitement des
listes chaînées est beaucoup trop succint. Dans ses "Exercices corrigés
en langage C", il teste le retour de fopen().



Aller, un autre bouquin: "Le livre du C premier langage"



Bon,je répète ce bouquin est particulièrement indigent.

dont des pages sont dispos en ligne. Le choix de présenter
le "switch" comme un complément en fin de livre et non
avec les structures de controle de base me semble discutable.



Bon, ça c'est un partie pris pédagogique qui me semble en effet
discutable mais bon, c'est le libre arbitre de l'enseignant.


(...) Et sur la page 4, la déclaration
de la fonction cube dans le main (plutôt vieux jeu comme façon
de coder).




OK et dans son livre (iii) il utilise occasionnelement ce genre de
déclarations. T'as pas un autre argument que "vieux jeu" ?

Sur la page 2 du chapitre sur les variables, il pourrait quand même
mentionner les identifiants valides mais réservés (ou faire une note
de bas de page disant que çaa existe).



OK mais c'est censé être un livre (je te cite le sous-titre) "pour les
vrais débutants en programmation". Le débutant il va jamais penser à écrire

int __toto;

donc ça c'est pas très grave, dans un premier temps.

Page 15, il explique que
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." (ce qui
en 2008 me laisse pantois)



Tu penses à quoi ? UTF-8 ? Bon, un texte ascii qui passe en UTF-8, ça ne
se voit pas, non ? Et puis au moins, il parle du jeu de caractères, tu
as plein de livres qui laissent penser que le seul jeu de caractères est
l'ascii sans même le citer. Par ailleurs, l'affirmation de Delannoy est
reprise par exemple dans le livre de King (§ 7.3 Character Types) :

"Todays' most popular character set is ASCII."

Tous les exemples dans K&R sont en ascii, même si les auteurs précisent
bien que c'est propre à ce jeu de caractères.

Les jeux de caractères européens contiennent l'ascii, difficile
d'échapper à l'ascii-centrisme.

Donc je ne suis pas du tout choqué par cela dans une première approche.



et puis 3 paragraphes plus loin,
il utilise un c avec cédille 'ç'...



Exact.

Quand aux "conversions
non dégradantes" entre int et float, là aussi, ça m'amuserait
de voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;



Effectivement, ça manque de précautions de contexte mais quand on
s'adresse à des débutants, il faut passer outre ce genre de détail,
simplement l'auteur doit concéder qu'il procède par approximation.
Concernant la même question, elle me semble traitée avec rigueur dans
son ouvrage (iii) ci-dessus où il reprend et détail ce que dit la Norme
C90 au §6.2.1.3.
Avatar
candide
LMC a écrit :
Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.



OK, je ne connais pas.

Voilà, je vais vous laisser sur cette situation. Je continue mon étude avec
les 2 et jusqu'à ce jour, cela fonctionne bien. Je suis aux saisies
formatées de nombres octaux et hexadécimaux.



Les nombres ne sont ni octaux ni hexadécimaux, c'est leur représentation
mathématique qui l'est. Bon sinon, les saisies formatées en octal et en
hexa !!! mais le débutant s'en fout et ça lui sert à rien pour apprendre
le C, c'est que de la prise de tête, ça oblige en plus à connaître pas
mal de choses alors qu'on peut faire plein de choses amusantes et
intéressantes sans connaître ça.
Avatar
Mickaël Wolff
candide a écrit :

Bon sinon, les saisies formatées en octal et en
hexa !!! mais le débutant s'en fout et ça lui sert à rien pour apprendre
le C, c'est que de la prise de tête, ça oblige en plus à connaître pas
mal de choses alors qu'on peut faire plein de choses amusantes et
intéressantes sans connaître ça.



C'est nécessaire, rien que pour comprendre les problèmes d'arrondis,
comprendre les droits POSIX, etc. Et puis, franchement, c'est tellement
simple que ce serait dommage de passer à côté. C'est bien plus difficile
de comprendre qu'on affiche une représentation sous forme de caractères
et non un nombre ;)

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org