[Linux-bruxelles] Petite aide en C

Gildas COTOMALE gildas.cotomale at gmail.com
Dim 13 Nov 19:37:58 CET 2005


2005/11/13, Lambeau Louis <louislambeau at gmail.com>:
> > >>Certains compilateurs sont peut-être plus tolérants que d'autres et
> > >>permettent le char*
>
> J'ai remplacé tous les char* que j'ai trouvé (et ils étaient nombreux ces salopiauds : vive les expressions régulieres...) par des char *nomDeMonChar...
>
> Et ca compile et ça s'éxécute comme avant... Donc ca devait etre gcc qui est tres laxiste....
>
Par forcément.. :)) Quand tu deviendras expert C ou que tu te
frotteras à la norme (et aux diverses habitudes de développeur), tu
verras que c'est la norme ANSI qui est assez peu stricte (même si elle
est bien faite par ailleurs) ou admet tros de variétés et de racourcis
(ça me fait penser au SQL ça)
Nicolas G. précise en effet que l'espace autour de l'astérisque
importe peu puisque les 3 syntaxes passent bien (gcc fait donc bien
son boulôt...) :
 char* pToto;
 char * pToto;
 char *pToto;

> > >Qu'appelles tu "partie déclarative" ?
> > >
La zone (au début de ton programme pour les globales, ou au début de
ta fonction pour les locales [caricature]) où l'on déclare ses
outils...
> > >
> > Il y a un endroit, dans le C, où l'on déclare les variables globale,
> > avant le main { }, mais il est vrai que l'on peut déclarer des variables
> > un peu partout, même dans un appel de fonction.
>
C'est la convention de la programmation structurée en langage
déclaratif (impératif aussi). Pour être strict, il faut :
- indiquer le matériel (certains COBOListes le font souvent...)
- indiquer les fichiers annexes à utiliser (include...)
- poser les constantes (équivalent des axiomes mathématiques)
- déclarer les variables (afin de pouvoir leur allouer de la place, et
dans les langages dit typés, il faut préciser l'iterprétation exacte
qui doit être faite des données à cet endroit... )
[ceci n'empêche pas qu'il ne faut pas oublier d'initialiser les
variables avant usage ; ça se fait juste après ou au même moment.. ]
- déclarer les fonctions (même refrain à ce niveau...)
- déclarer les procédures ou sous-routines (en C, il n'y a pas de
différence d'avec la fonction ; la distinction se fait par le retour
de type void() et/ou la présence de lecture/affichage...)
- enfin, on a le corps du programme :)

L'idée est qu'on ne peut pas utiliser un outils s'il n'existe pas encore...
Aussi, cet ordre très stict n'est pas toujours repecté (sauf en Pascal
ANSI..?) Il y a juste l'obligation de déclarer avant d'utiliser... Et
on dit bien déclarer puisque dans le cas tordu de deux fonctions A et
B qui s'appellent mutuellement (une autre forme de récursivité), le C
n'oblige permet de juste "prototiper" l'une pour pouvoir l'appeler
dans l'écriture de la suivante avant de l'écrire... (belle façon de
résoudre l'éternel problème de la poule et de l'oeuf...)

> Ah ok... Non c'était souvent dans les parametres de fonction...
>
> > Les vicissitudes de la vie m'ont amené programmer une petite application
> > en C il y a un an. J'espère que c'était la dernière.
> >
En effet, on adore ou on déteste le C :)
>
> Je peux comprendre... Mais qu'est ce que ca doit etre cool de maitriser C.... Mais ce sera pas pour moi non plus je crois...
>
> Merci beaucoup tt le monde.
>
> Louis
>


--
look how the main function is short after all,
that just means your programm is higherly procedural.




Plus d'informations sur la liste de diffusion Linux-bruxelles