OVH Cloud OVH Cloud

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
Marc Boyer
On 2008-08-28, candide wrote:
Faut dire que je connais rien aux flottants en général (j'aime pas
l'approximation ;) ) va falloir que je m'y mette sérieusement un de ces
quatre !



Il y a une référence célèbre:
http://www.validlab.com/goldberg
qui peut servir de solide point d'entrée.

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
Antoine Leca
En news:, Marc Boyer va escriure:
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...



Eh oui, c'est C90, pas du C99 ; ce qui somme toute n'est pas trop surprenant
pour un livre publié en 1997 (et dont on peut penser que le §1.1 fut écrit
dans les premiers, donc plusieurs années avant).

Le fait d'interdire le type int implicite est l'une des plus grandes
incompatibilités (formelles) entre C90 et C99, mais a généré nettement moins
d'encre que le passage de long à intmax_t, probablement parce que le public
s'accorde à penser que ce mouvement va dans le bon sens (en plus d'être
rendu obligatoire par le fait que l'on peut mixer déclarations et
instructions).

Ce qui est rigolo à mon sens, c'est que « candide » a embrayé sur ta
remarque pour faire une diatribe sur... l'absence de prototype, qui est une
chose différente (et indépendante) du type de retour.


Aller, un autre bouquin: "Le livre du C premier langage"
[...] présent[e] "switch" comme un complément en fin de livre [...]
encore un main qui ne retourne rien... [...] déclaration
de la fonction cube dans le main (plutôt vieux jeu [...]
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." [...]
voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;



Bref, ce livre a été écrit pour PDP-11 (ou autre chose en 16 bits au tout
début des années 1980).

Non ?


Antoine

PS: switch est un ajout relativement tardif au langage, implémenté au début
avec un véritable appel de fonction.
Avatar
Antoine Leca
En news:48b5a0da$0$4297$, Mickaël Wolff va escriure:
[octal]
C'est nécessaire, rien que pour comprendre [...] les droits POSIX, etc.



<HORS-SUJET>
Mmm. Perversion que cette expression.
En fait, Posix à l'origine ne forçait pas à l'utilisation du modèle
rwxrwxrwx (ce qui fait que NT pouvait être conforme Posix, par exemple) ; et
même encore aujourd'hui l'utilisation d'un nombre octal avec chmod(2) est
une non-conformité, il /faut/ utiliser S_IRUSR et compagnie.

/Mais/, en ce qui concerne chmod(1) [la commande utilisateur], alors que
Posix-2:1993 décrétait que cet usage était « obsolète », la compatibilité
X/Open a fait que dans la version 2001 de la norme, il est obligatoire pour
la commande chmod(1) de comprendre un masque de droits spécifié en octal, et
se dé****er pour faire correspondre cela dans le système d'autorisation
sous-jacent. @(#[

</HORS-SUJET>

Antoine
Avatar
Antoine Leca
En news:, Thierry B. va escriure:
--{ candide a plopé ceci: }--
Les nombres ne sont ni octaux ni hexadécimaux, c'est leur
représentation mathématique qui l'est.



C'est plutôt leur représentation à destination des humains qui
peut être octale, décimale ou hexadécimale.



À destination des humains, aujourd'hui elle sera décimale à l'exclusion des
autres possibilités.

Il est possible de trouver d'autres cultures (beaucoup sont aujourd'hui
éteintes) qui préferaient d'autres représentations, par exemple vigésimales
ou sexagésimales, voire plus complexes comme le systèmes des Mayas, mais ce
n'est pas fréquent ; en général cela se limite à l'utilisation de certains
groupes adeptes d'une certaine esthétique, comme les astronomes (pour les
Mayas, ou les Babyloniens).
Ou les informaticiens.


Antoine
Avatar
Marc Boyer
On 2008-08-28, Antoine Leca wrote:
En news:, Marc Boyer va escriure:
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...



Eh oui, c'est C90, pas du C99 ; ce qui somme toute n'est pas trop surprenant
pour un livre publié en 1997 (et dont on peut penser que le §1.1 fut écrit
dans les premiers, donc plusieurs années avant).



Argh... C'est vrai que je suis nul sur les différentes versions du C.

Aller, un autre bouquin: "Le livre du C premier langage"
[...] présent[e] "switch" comme un complément en fin de livre [...]
encore un main qui ne retourne rien... [...] déclaration
de la fonction cube dans le main (plutôt vieux jeu [...]
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." [...]
voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;



Bref, ce livre a été écrit pour PDP-11 (ou autre chose en 16 bits au tout
début des années 1980).

Non ?



Il a surtout été écrit un peu vite je pense.

PS: switch est un ajout relativement tardif au langage, implémenté au début
avec un véritable appel de fonction.



OK. Mais quand on fait un bouquin où on utilise C pour comme support
à l'algorithmique impérative classique, le swich (selon en algo
français) fait AMHA partie des structures de controle de base
même si sa syntaxe et sa sémantique en C sont un peu différentes.

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
Marc Boyer a écrit :

Il y a une référence célèbre:
http://www.validlab.com/goldberg
qui peut servir de solide point d'entrée.



OK, merci.
Avatar
candide
Antoine Leca a écrit :
En news:, Marc Boyer va escriure:
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...



Eh oui, c'est C90, pas du C99 ;
[...]

Ce qui est rigolo à mon sens, c'est que « candide » a embrayé sur ta
remarque pour faire une diatribe sur... l'absence de prototype, qui est une
chose différente (et indépendante) du type de retour.



En effet, j'avais cru que Marc reprochait l'absence non pas de type de
retour dans l'en-tête de la fonction (ça je sais que c'est autorisé en
C90) mais l'absence de "return toto" dans le corps de la fonction.

Une instruction

return toto;

a deux fonctions me semble-t-il :

i) retourner toto à l'appelant
ii) interrompre l'exécution de la fonction qui "return".


Pour un main() sans return, l'accolade terminale du bloc de définition
de la fonction doit jouer le rôle d'un return sec mais quid de la valeur
de retour ?
Avatar
Marc Boyer
On 2008-08-28, candide wrote:
Antoine Leca a écrit :
En news:, Marc Boyer va escriure:
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...



Eh oui, c'est C90, pas du C99 ;
[...]

Ce qui est rigolo à mon sens, c'est que « candide » a embrayé sur ta
remarque pour faire une diatribe sur... l'absence de prototype, qui est une
chose différente (et indépendante) du type de retour.



En effet, j'avais cru que Marc reprochait l'absence non pas de type de
retour dans l'en-tête de la fonction (ça je sais que c'est autorisé en
C90) mais l'absence de "return toto" dans le corps de la fonction.



Non, c'était le "int" qui me manquait.
Quand au return associé au main, je me demande si en C99, on a
pas le droit de le laisser implicite... Mais de là à préciser ce genre
de choses aux débutants...

Une instruction

return toto;

a deux fonctions me semble-t-il :

i) retourner toto à l'appelant
ii) interrompre l'exécution de la fonction qui "return".



Voui.

Pour un main() sans return, l'accolade terminale du bloc de définition
de la fonction doit jouer le rôle d'un return sec mais quid de la valeur
de retour ?



De tête, ce doit être 0, la valeur de EXIT_SUCCESS. A confirmer.

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
LMC
RE,
Malgré tes Bacs +, tu finiras par découvrir que la vie n'est pas ce que tu
crois. Crois-moi et vu mon expérience, tu changeras souvent d'avis.
Quand tu parles de fondations, tu oublies qu'on commence par là. On ne
commence pas un dictionnaire par le Z, ni par le N, mais bien par le A,
alors à toi de découvrir la suite puisqu'avec tes Bacs, tu dois être super
malin.
Je poursuis mon chemin, car sinon ce fil n'aura jamais de fin, si ce n'est
de terminer en eau de boudin. ROTFL

--
@++
LMC

"Marc Boyer" a écrit dans le message
de news:
On 2008-08-28, LMC wrote:
Bonjour,
Dénigrer ne sert à rien.



Oui, mais critiquer est utile.
Est-ce dénigrer ou critiquer que dire qu'un bouquin
est plein d'erreurs ?

Le livre est inconnu dans ton bataillon, pourtant je l'ai bien devant
moi,
il n'est pas illusion !



Je n'ai jamais dit le contraire.

Ce que tu as appris à l'école, cela te sert-il encore ?



Tout, non (mais on s'en doutais), mais une bonne
partie oui. Et une grande majorité de ce que j'ai appris
entre mon BAC+3 - BAC+5.

Ce qui importe c'est le résultat : l'ouverture de l'esprit. Le reste
suivra.



Peut importe si la fusé explose à condition de savoir apprendre
de ses erreurs ? Ben non, ce genre de raisonnement est vrai à l'école,
peut-être vrai à titre individuel, mais dans le monde professionnel,
l'ouverture d'esprit ne suffit pas.

On ne met pas la charrue avant les boeufs ! La maison se construit
brique par
brique !



Oui, mais quand les fondations sont mauvaises, et qu'on s'en apperçoit
1 an après, c'est un peu génant...

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
espie
In article ,
Marc Boyer wrote:
On 2008-08-28, Antoine Leca wrote:
En news:, Marc Boyer va escriure:
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...



Eh oui, c'est C90, pas du C99 ; ce qui somme toute n'est pas trop surprenant
pour un livre publié en 1997 (et dont on peut penser que le §1.1 fut écrit
dans les premiers, donc plusieurs années avant).



Argh... C'est vrai que je suis nul sur les différentes versions du C.



Bah, c'est pas grave, ca ne presente sommes toutes que peu d'interet.
Je subodore que les gens qui se souviennent de cette subtilite sont
essentiellement ceux qui ont peste pendant quelques heures suite a ce
changement, devant corriger divers fichiers d'entetes et autres, ou ayant
eu moult soucis a compiler certains logiciels.

Moi, le coup de l'implicit int m'avait bien gonfle lorsque j'avais du
compiler des trucs sous un sunos qui n'avait que de vieux entetes X11
non encore corriges...