IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Richard Stallman annonce le manuel de référence du langage GNU C

Le , par Sandra Coret

169PARTAGES

16  0 
Voici le message d'annonce de Richard Stallman :

Citation Envoyé par Richard Stallman Voir le message
Ceci est pour annoncer la sortie du manuel d'introduction et de référence du langage GNU C.

Ce manuel est destiné à l'apprentissage du langage C, si vous savez programmer dans un autre langage. Il s'agit également d'un manuel de référence pour le langage C de GNU.

Dr Richard Stallman
Chief GNUisance of the GNU Project
Founder, Free Software Foundation
Voici des versions directement consultables : Manuel d'introduction et de référence du langage GNU C ( pdf ) , Dépot Github Markdown et PDF.

Source : Richard Stallman

Et vous ?

Qu'en pensez-vous ?

Lire aussi en Français :

Cours et tutoriels C
La FAQ C
Le forum d'entraide C

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 09/09/2022 à 13:16
Bonjour
Citation Envoyé par Sandra Coret Voir le message

Et vous ?

Qu'en pensez-vous ?
Premier exemple: fonction Fibonacci écrite sous sa forme récursive. Voilà, tu veux apprendre le C, hé bien mange !!!
Après ok l'exemple est expliqué en détail et la mayonnaise peut prendre. Donc bon ben un tuto de plus, écrit peut-être de façon peu orthodoxe mais ça reste un tuto donc ça ne peut pas faire de mal et peut-être en complément d'un cours plus classique ça peut faire une bonne combinaison...
3  0 
Avatar de Guesset
Expert confirmé https://www.developpez.com
Le 11/09/2022 à 9:55
Bonjour Sve,

Citation Envoyé par Sve@r  Voir le message
...Premier exemple: fonction Fibonacci écrite sous sa forme récursive...

Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot. Et ce qui est pire ici est d'utiliser une forme arborescente qui doit générer de l'ordre de 2n-2 appels. En travaillant avec la mémoire du fn-1 on relinéarise la chaîne d'appels soit de l'ordre de n (et une occupation en 2*n). Proposition de code non testé :
Code C : Sélectionner tout
1
2
3
4
5
6
int fib (int n, int *f1) { 
  if (n <= 2)  return 1; 
  int * f2; 
  *f1 = fib(n-1, f2) 
  return *f1 + *f2; 
}
A comparer avec :
Code C : Sélectionner tout
1
2
3
4
5
6
7
8
int fib(int n) { 
   int u = 1, v = 1 
   for(;n > 2; --n) { 
      u += v; 
      v = u - v; 
   } 
   return u; 
}
Les usages qui entraînent naturellement un arbre (binaire ou plus si affinité ) d'appels sont plus intéressants et sollicitent moins la pile (les tours de Hanoï par exemple).

L'excuse pédagogique ne devrait pas inciter à mésuser des possibilités d'un langage. Enfin, c'est mon avis et je le partage

Salut
2  0 
Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 11/09/2022 à 10:08
Citation Envoyé par Guesset Voir le message
Bonjour Sve,
Hey

Citation Envoyé par Guesset Voir le message
Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot.
Déjà ce n'est pas moi qui l'ai écrite et surtout ma remarque préalable était ironique. On ne balance pas une fonction récursive comme tout premier exemple d'un langage qu'on désire enseigner (en plus de la syntaxe il faut aussi appréhender la notion de récursivité). Surtout une fonction aussi mal foutue que Fibonacci (pour calculer f(10) elle calculera f(9), deux fois f(8), trois fois f(7), cinq fois f(6) et etc etc). D'ailleurs on ne balance pas non plus comme premier exemple un code non fonctionnel parce que sans main. Le K&R commence par afficher "Hello World".
Après le reste ce sont de vrais avis. Ok ça reste un tuto de plus donc ok dans le pire des cas ça ne peut pas faire de mal et oui si on le complète par d'autres enseignements il peut apporter des choses.
2  0 
Avatar de Guesset
Expert confirmé https://www.developpez.com
Le 12/09/2022 à 16:30
Bonjour,

Il n'a pas de chance avec cet exemple, même les explications sont fausses. Dans le §2.3, il écrit :
Code C : Sélectionner tout
if(n <= 2)					// If n is 1 or 2
Or n est un entier signé qui peut donc être négatif ou nul. Le retour sera à 1 dans tous ces cas, pas seulement pour 1 et 2. Et même si n avait été un unsigned cela aurait dû inclure 0.

Par ailleurs, on pourrait discuter sur la définition de récurrence qui peut prolonger les valeurs en positif comme en négatif (-13,8,-,5,-3,2,-1,1,0,1,1,2,3,5,8,13...), avec n >= 0, fib(-n) = fib(n) si n pair et -fib(n) si n impair.

Sinon, le document n'est pas mal, même sil la multiplication des tables de matières partielles est un peu fatigante.

Salutations
2  0 
Avatar de Guesset
Expert confirmé https://www.developpez.com
Le 11/09/2022 à 10:58
Rebonjour Sve,

Citation Envoyé par Sve@r Voir le message
...Déjà ce n'est pas moi qui l'ai écrite et surtout ma remarque préalable était ironique...
Je l'avais bien compris mais je craignais que ton coté pince-sans-rire puisse être interprété comme "il commence fort !" alors que c'est plutôt "Regardez tous, je fais ce qu'il ne faut pas faire et j'en suis fier !"

Salut
1  0 
Avatar de JPLAROCHE
Membre expérimenté https://www.developpez.com
Le 11/09/2022 à 11:50
Je le trouve facile à lire, simple.
Quant au premier exemple, c'est juste une présentation, l'exemple complet là uniquement pour le bon fonctionnement et l'inclusion du main() ....

Il y a des bonnes choses, cela a le mérite d'être gratuit et à la portée de tous.

Un PDF que je garderai.
1  0 
Avatar de Jitou
Membre confirmé https://www.developpez.com
Le 05/10/2022 à 16:10
Voilà 44 ans après le "Kernighan et Ritchie" le bouquin de mes années d'étudiant on sort un nième manuel sur le C ?
1  1 
Avatar de thamn
Membre averti https://www.developpez.com
Le 04/10/2022 à 23:12
Citation Envoyé par Guesset  Voir le message
Bonjour Sve,

Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot. Et ce qui est pire ici est d'utiliser une forme arborescente qui doit générer de l'ordre de 2n-2 appels. En travaillant avec la mémoire du fn-1 on relinéarise la chaîne d'appels soit de l'ordre de n (et une occupation en 2*n). Proposition de code non testé :
Code C : Sélectionner tout
1
2
3
4
5
6
int fib (int n, int *f1) { 
  if (n <= 2)  return 1; 
  int * f2; 
  *f1 = fib(n-1, f2) 
  return *f1 + *f2; 
}
A comparer avec :
Code C : Sélectionner tout
1
2
3
4
5
6
7
8
int fib(int n) { 
   int u = 1, v = 1 
   for(;n > 2; --n) { 
      u += v; 
      v = u - v; 
   } 
   return u; 
}
Les usages qui entraînent naturellement un arbre (binaire ou plus si affinité ) d'appels sont plus intéressants et sollicitent moins la pile (les tours de Hanoï par exemple).

L'excuse pédagogique ne devrait pas inciter à mésuser des possibilités d'un langage. Enfin, c'est mon avis et je le partage

Salut

Ça permet de poser la limitation de la pile je crois, juste après il en cause et présente la version itérative de l'algo. Je trouve que c'est pas si mal, parce que après l'implementation recursive, tu peux passer a l’implémentation non récursive pour aborder la boucle for, me semble qu'en terme de complexité ça se tient, c'est progressif et ça permet de construire du narratif par dessus ça et garder tous les élements liés entre eux, peut être pratique pour mémoriser. Ah je pensais aussi au visite d'arbre, plus amusant pour des exercices ou tu dois éviter la récursivité.
0  1