OVH Cloud OVH Cloud

(je suis débutant en c) je ne vois d'instruction pour boucler

156 réponses
Avatar
bpascal123
Bjr,sr,
Voici une fonction tr=E8s simple qui r=E9agit comme s'il y avait une
boucle alors qu'en apparence il n'y en a pas :

#include <stdio.h>

void f2(int b);
void f1(int a);

int main(void)
{
f1(30);

return 0;
}

void f1(int a)
{
if( a )
f2( a - 1 );
printf("%d ", a);
}

void f2(int b)
{
printf(" . ");
if(b)
f1( b - 1 );
}

http://www.java2s.com/Code/C/Function/Functioncalleachother.htm

Merci,
Pascal

10 réponses

Avatar
espie
In article <4b1423c6$0$21599$,
Francois wrote:
Bonjour,

Richard Delorme a écrit :

Les ouvrages de Knuth sont certes plus
mathématiques. Mais, à la rigueur, ils sont très abordables à un
mathématicien non informaticien.



Ont ils été un jour été traduits en français ?



Pas vraiment. Il y a eu des projets non aboutis par ITP, defunte maison
d'edition.
Avatar
espie
In article <4b141b32$0$19088$,
candide wrote:
Richard Delorme a écrit :

Je pensait au stade suivant, quand on est plus débutant, mais pas encore
un expert.




Sont en progression géométrique les marches avec toi ;) Sinon AMHA
Knuth, c'est peu comme Proust, souvent cité mais peu lu.
(attention ce n'est pas une attaque personnelle ;) )



Il y a des bouts de Knuth qui se lisent tres bien, et d'autres qui sont plus
a considerer comme ouvrage de reference. Lire tout Knuth prend une vie,
particulierement si on regarde les exercices...

(et puis il y a des bouts de Knuth, comme MIX, qui l'amusent beaucoup, mais
qui sont un peu superflus... pas assez pour pouvoir s'en passer, mais
suffisamment pour qu'on ait envie de zapper quelques paragraphes).

Il y aussi des bouts qui ont ete rattrapes depuis, quand meme. Il y a
d'excellentes publis sur les limites d'IEEE 754 qui completent tres
agreablement le "semi-numerical algorithms".

Dans les petits Knuth a recommander sans discernement, il y a
"mathematical writing", qui ne traite pas de programmatino, mais qui est
un excellent bouquin de style pour ouvrages techniques.
Avatar
Francois
Marc Espie a écrit :

Les ouvrages de Knuth sont certes plus
mathématiques. Mais, à la rigueur, ils sont très abordables à un
mathématicien non informaticien.


Ont ils été un jour été traduits en français ?



Pas vraiment. Il y a eu des projets non aboutis par ITP, defunte maison
d'edition.



Ah, dommage. Merci pour la réponse.


--
François Lafont
Avatar
espie
In article ,
-ed- wrote:
On 29 nov, 17:42, Samuel Devulder
wrote:
Un truc a savoir, c'est que si l'optimiseur vire une récursivité, ton
prog devient nettement moins débuggable par perte du contexte courant
("stack frame"). En théorie on s'en fiche, mais à l'usage c'est chiant
et il vaut mieux que le compilo garde la structure asm assez proche du
code d'origine.



Non. Le "truc à savoir", c'est qu'on ne débogue pas en mode
optimisé...



Et tu fais comment quand tu tombes sur un bug qui ne se produit pas en
mode non-optimise.

J'en profite pour vouer les programmeurs de gcc aux gemonies. Quelle idee
foncierement debile d'initialiser les variables locales a 0 quand on n'est
pas en mode optimise !
Avatar
Pierre Maurette
Marc Espie, le 30/11/2009 a écrit :

[...]

Il y a des bouts de Knuth qui se lisent tres bien, et d'autres qui sont plus
a considerer comme ouvrage de reference. Lire tout Knuth prend une vie,



Ah, oui.

C'est un peu comme Proust, non ?

--
Pierre Maurette
Avatar
espie
In article ,
Pierre Maurette wrote:
Marc Espie, le 30/11/2009 a écrit :

[...]

Il y a des bouts de Knuth qui se lisent tres bien, et d'autres qui sont plus
a considerer comme ouvrage de reference. Lire tout Knuth prend une vie,



Ah, oui.

C'est un peu comme Proust, non ?



Je sais pas, j'ai jamais lu de Proust, et de ce qu'on m'en a dit, ca fait
pas envie ;-)
Avatar
Antoine Leca
Thierry Schollier a écrit :
Antoine Leca nous disait ici-même:

Comment paramétrer Tbird (ou quelle extension) pour avoir un retour
visuel qui permette de savoir si le message lu (ou mieux, celui auquel
on répond) est en UTF-8 plutôt qu'en iso-8859-machin ?



[Éditeur de configuration]
Commenter la clé "mailnews.headers.extraExpandedHeaders" pour y mettre la
valeur "Content-Type"



C'est bien cela, merci beaucoup.


Antoine
Avatar
Lucas Levrel
Le 30 novembre 2009, Marc Espie a écrit :
J'en profite pour vouer les programmeurs de gcc aux gemonies. Quelle idee
foncierement debile d'initialiser les variables locales a 0 quand on n'est
pas en mode optimise !



Il me semblait qu'il y avait un warning, alors j'ai lu le man et le
warning existe, et seulement en mode optimisé. Mais (bizarrement par
rapport à ce que tu dis) en mode non-optimisé les variables locales ne
sont pas initialisées à 0. (gcc 4.2.1 i586-suse-linux)

coulomb:~> cat toto.c
#include <stdio.h>

int main(void){
int i;
printf(" %i n", i ) ;
return 0;
}

coulomb:~> gcc toto.c
coulomb:~> a.out
-1208656032


--
LL
Avatar
Antoine Leca
-ed- a écrit :
Non. Le "truc à savoir", c'est qu'on ne débogue pas en mode
optimisé...



C'est un truc qu'on a appris à l'usage parce que cela facilitait la
tâche, mais ce n'est surtout pas une solution à tous les problèmes.

De fait, le truc le plus intéressant que j'ai trouvé à GCC, c'était de
fournir les informations de débogage (-g) MÊME si on utilisait
l'optimisation (-O) : à l'époque, la plupart des autres compilos que
j'utilisais n'admettaient pas cette combinaison, donc le « truc » était
forcé !

Évidemment, la réalité c'est surtout que fournir les infos de débogage
n'est pas facile quand il y a une passe d'optimisation supplémentaire
(car cela signifie que le compilo doit transporter plus d'informations
de contexte au travers de l'optimisation). Donc un certain nombre de
compilateurs ont pris le chemin le plus court, et depuis que les
programmeurs de GCC ont établit le standard à un niveau plus élevé, les
autres ont été obligés de s'aligner. Donc maintenant, on peut souvent
avoir fromage ET dessert.


Antoine
Avatar
candide
Lucas Levrel a écrit :

coulomb:~> cat toto.c
#include <stdio.h>

int main(void){
int i;
printf(" %i n", i ) ;
return 0;
}




Même si tu donnes ça pour l'exemple, ce code est interdit :

Thus, an automatic variable can be initialized to a trap representation
without causing undefined behavior, but the value of the variable cannot
be used until a proper value is stored in it.