0d22f2bbf35d00f538d0806ce756a510d1c102be
[scilab.git] / scilab / modules / functions / help / fr_FR / argn.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) ????-2008 - INRIA
5  * Copyright (C) 2018 - Samuel GOUGEON
6  *
7  * Copyright (C) 2012 - 2016 - Scilab Enterprises
8  *
9  * This file is hereby licensed under the terms of the GNU GPL v2.0,
10  * pursuant to article 5.3.4 of the CeCILL v.2.1.
11  * This file was originally licensed under the terms of the CeCILL v2.1,
12  * and continues to be available under such terms.
13  * For more information, see the COPYING file which you should have received
14  * along with this program.
15  *
16  -->
17 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
18         xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
19         xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
20         xml:lang="fr" xml:id="argn">
21     <refnamediv>
22         <refname>argn</refname>
23         <refpurpose>nombre effectif d'arguments d'entrée reçus / attendus en sortie d'une fonction</refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>Séquence d'appel</title>
27         <synopsis>
28            [lhs, rhs] = argn()
29             lhs = argn(1)
30             rhs = argn(2)
31         </synopsis>
32     </refsynopsisdiv>
33     <refsection role="arguments">
34         <title>Arguments</title>
35         <variablelist>
36             <varlistentry>
37                 <term>lhs</term>
38                 <listitem>
39                 <para>
40                     Nombre d'arguments de sortie attendus. Vaut 1 (au lieu de 0) si la fonction
41                     a été appelée sans argument de sortie.
42                 </para>
43                 </listitem>
44             </varlistentry>
45             <varlistentry>
46                 <term>rhs</term>
47                 <listitem>
48                 <para>
49                     Nombre d'arguments passés en entrée de la fonction Scilab considérée.
50                 </para>
51                 </listitem>
52             </varlistentry>
53         </variablelist>
54     </refsection>
55     <refsection>
56         <title>Description</title>
57         <para>
58             Cette fonction est utilisée à l'intérieur d'une définition de fonction.
59             Elle donne le nombre effectif (au moment de l'appel) d'arguments d'entrée <varname>rhs</varname>
60             et de sortie <varname>lhs</varname>. Elle permet d'utiliser des arguments optionnels.
61         </para>
62         <warning>
63             L'existence d'un argument d'entrée nommé (hors de la portée d'un éventuel varargin)
64             peut être testée avec <literal>isdef(..,"l")</literal> de manière plus robuste
65             qu'en utilisant <literal>argn()</literal>. Un exemple figure ci-après.
66         </warning>
67     </refsection>
68     <refsection>
69         <title>Exemples</title>
70         <para>Exemples élémentaires :</para>
71         <programlisting role="example"><![CDATA[
72 function [res, res2] = test(a, b)
73   [lhs, rhs] = argn()
74   [res, res2] = ("abc", %pi);
75   disp([lhs rhs])  // <<<<<<<<<<<
76 endfunction
77
78 test();
79 test(4.321);
80 test(3, -1);
81 test(3, -1, a=0);
82 test(3, -1, c=8);
83
84 out1 = test();
85 [o1, o2] = test(%pi);
86  ]]></programlisting>
87     <screen><![CDATA[
88 --> test();
89    1.   0.
90
91 --> test(4.321);
92    1.   1.
93
94 --> test(3, -1);
95    1.   2.
96
97 --> test(3, -1, a=0);
98 Wrong number of input arguments.
99
100 --> test(3, -1, c=8);
101 Wrong number of input arguments.
102
103 --> out1 = test();
104    1.   0.
105
106 --> [o1, o2] = test(%pi);
107    2.   1.
108 ]]></screen>
109     <para/>
110     <para>Avec varargin ou/et varargout:</para>
111         <programlisting role="example"><![CDATA[
112 function [res, varargout] = test(a, varargin)
113   res = "abc";
114   varargout = list(%i);
115   [lhs, rhs] = argn()
116   disp([lhs rhs])  // <<<<<<<<<<<
117 endfunction
118
119 test();
120 test(4.321);
121 test(3, -1);
122 test(3, -1, a=0);
123 test(3, -1, 8);
124
125 out1 = test();
126 [o1, o2] = test(%pi);
127 [o1, o2, o3] = test(%pi);
128  ]]></programlisting>
129     <screen><![CDATA[
130 --> test();
131    1.   0.
132
133 --> test(4.321);
134    1.   1.
135
136 --> test(3, -1);
137    1.   2.
138
139 --> test(3, -1, a=0);
140    1.   3.
141
142 --> test(3, -1, 8);
143    1.   3.
144
145 --> out1 = test();
146    1.   0.
147
148 --> [o1, o2] = test(%pi);
149    2.   1.
150
151 --> [o1, o2, o3] = test(%pi);
152    3.   1.
153 ]]></screen>
154     <para/>
155     <para>Test robuste de l'existence d'un argument d'entrée:</para>
156         <programlisting role="example"><![CDATA[
157 function res = test(a, b, varargin)
158     res = ""
159     if isdef("a","l")
160         res = "a passed."
161     end
162     if isdef("b","l")
163         res = res + " b passed."
164     end
165     if isdef("c","l")
166         res = res + " c passed."
167     end
168 endfunction
169 clc
170 test()
171 test(4.321)
172 test(4.321, %z)
173 test(b=3)
174 test(c=3)
175 test(-1, c=3)
176 test(-1, a=2, c=3)
177 test(b=-1, a=2, c=3)
178  ]]></programlisting>
179     <screen><![CDATA[
180 --> test()
181  ans  =
182
183 --> test(4.321)
184  ans  =
185  a passed.
186
187 --> test(4.321, %z)
188  ans  =
189  a passed. b passed.
190
191 --> test(b=3)
192  ans  =
193   b passed.
194
195 --> test(c=3)
196  ans  =
197   c passed.
198
199 --> test(-1, c=3)
200  ans  =
201  a passed. c passed.
202
203 --> test(-1, a=2, c=3) // Les arguments passés via varargin sont toujours anonymes
204  ans  =
205  a passed.
206
207 --> test(b=-1, a=2, c=3)
208  ans  =
209  a passed. b passed.
210 ]]></screen>
211     <para/>
212     <para>Autre usage fréquent:</para>
213         <programlisting role="example"><![CDATA[
214 function concat = maFonction(nom,option)
215   [lhs, rhs] = argn()
216   if rhs <= 1 then
217      option = "mon argument optionnel";
218   end
219   if rhs == 0 then
220      error("Au moins un argument attendu");
221   end
222   concat = nom+" "+option;
223 endfunction
224  ]]></programlisting>
225     </refsection>
226     <refsection role="see also">
227         <title>Voir aussi</title>
228         <simplelist type="inline">
229             <member>
230                 <link linkend="isdef">isdef</link>
231             </member>
232             <member>
233                 <link linkend="varargin">varargin</link>
234             </member>
235             <member>
236                 <link linkend="varargout">varargout</link>
237             </member>
238             <member>
239                 <link linkend="macrovar">macrovar</link>
240             </member>
241             <member>
242                 <link linkend="function">function</link>
243             </member>
244         </simplelist>
245     </refsection>
246 </refentry>