Re: Problem with multiple function calling from a novice...

*To*: mathgroup at smc.vnet.net*Subject*: [mg58589] Re: Problem with multiple function calling from a novice...*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>*Date*: Sat, 9 Jul 2005 04:07:50 -0400 (EDT)*Organization*: The Open University, Milton Keynes, England*References*: <dal1tq$ibc$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

sami wrote: > Hi all. I have a small problem, and I would like some help. > > Suppose I define a few functions, say a,b,c etc. > > Question 1: How can I call them from inside a program, so that they > ALL > show what they evaluate in turn? (Not just the last one, but each > one.) > > Question 2: How can I modify an If...Then clause of the form: > > If[ <Condition> , a;b;c;...etc.] > > or a While loop: > > While[ <Condition> , a;b;c;...etc.] > > so that, again, they ALL show what they evaluate in turn? (Again, not > just > the > last one like in this case). > > Thank you > > Sami > Hi Sami, At least to methods come up in my mind. First, you can write your functions as usual and wrap them within a list in the body of the main function. In[1]:= Clear[f, g, h] In[2]:= f[x_] := x^2 + 2 In[3]:= g[x_] := Sin[x] In[4]:= h[x_] := Module[{}, {f[x], g[x], g[f[x]]}] In[5]:= h[Pi] Out[5]= {2 + Pi^2, 0, Sin[2 + Pi^2]} Second, to get more control on what the functions are displaying and to use them within a *If* or *While* loop, it is better to use some *Print* command within each function whenever you want to display some intermediate results. In[6]:= Clear[f, g, h] In[7]:= f[x_] := Module[{y}, y = x^2 + 2; Print[StringJoin["f(", ToString[x], ")=", ToString[y]]]; y] In[8]:= g[x_] := Module[{y}, y = Sin[x]; Print[StringJoin["g(", ToString[x], ")=", ToString[y]]]; y] In[9]:= h[x_] := Module[{}, f[x]; g[x]; g[f[x]]] In[10]:= h[2] From In[10]:= "f(2)=6" From In[10]:= "g(2)=Sin[2]" From In[10]:= "f(2)=6" From In[10]:= "g(6)=Sin[6]" Out[10]= Sin[6] In[11]:= main[x_] := Module[{i}, i = 2; While[i > 0, f[x]; g[x]; g[f[x]]; i--; ]] In[12]:= main[3] From In[12]:= "f(3)=11" From In[12]:= "g(3)=Sin[3]" From In[12]:= "f(3)=11" From In[12]:= "g(11)=Sin[11]" From In[12]:= "f(3)=11" From In[12]:= "g(3)=Sin[3]" From In[12]:= "f(3)=11" From In[12]:= "g(11)=Sin[11]" Best regards, /J.M.