update CHANGES and help pages after c1dbf528
[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 <code>0</code> si la fonction a été appelée sans argument de sortie.
41                 </para>
42                 </listitem>
43             </varlistentry>
44             <varlistentry>
45                 <term>rhs</term>
46                 <listitem>
47                 <para>
48                     Nombre d'arguments passés en entrée de la fonction Scilab considérée.
49                 </para>
50                 </listitem>
51             </varlistentry>
52         </variablelist>
53     </refsection>
54     <refsection>
55         <title>Description</title>
56         <para>
57             Cette fonction est utilisée à l'intérieur d'une définition de fonction.
58             Elle donne le nombre effectif (au moment de l'appel) d'arguments d'entrée <varname>rhs</varname>
59             et de sortie <varname>lhs</varname>. Elle permet d'utiliser des arguments optionnels.
60         </para>
61         <warning>
62             L'existence d'un argument d'entrée nommé (hors de la portée d'un éventuel varargin)
63             peut être testée avec <literal>isdef(..,"l")</literal> de manière plus robuste
64             qu'en utilisant <literal>argn()</literal>. Un exemple figure ci-après.
65         </warning>
66     </refsection>
67     <refsection>
68         <title>Exemples</title>
69         <para>Exemples élémentaires :</para>
70         <programlisting role="example"><![CDATA[
71 function [res, res2] = test(a, b)
72   [lhs, rhs] = argn()
73   [res, res2] = ("abc", %pi);
74   disp([lhs rhs])  // <<<<<<<<<<<
75 endfunction
76
77 test();
78 test(4.321);
79 test(3, -1);
80 test(3, -1, a=0);
81 test(3, -1, c=8);
82
83 out1 = test();
84 [o1, o2] = test(%pi);
85  ]]></programlisting>
86     <para/>
87     <para>Avec varargin ou/et varargout:</para>
88         <programlisting role="example"><![CDATA[
89 function [varargout] = disp_argn(varargin)
90   varargout = list("abc",%i);
91   [lhs, rhs] = argn()
92   disp([lhs rhs])  // <<<<<<<<<<<
93 endfunction
94
95 function [res, varargout] = disp_argn_with_args(a, varargin)
96   res = "abc";
97   varargout = list(%i);
98   [lhs, rhs] = argn()
99   disp([lhs rhs])  // <<<<<<<<<<<
100 endfunction
101
102 // varargin
103 disp_argn(1);
104 disp_argn_with_args(1);
105 disp_argn(1, 2);
106 disp_argn_with_args(1, 2);
107 disp_argn(1, 2, 3);
108 disp_argn_with_args(1, 2, 3);
109
110 // varargout
111 out1 = disp_argn();
112 out1 = disp_argn_with_args();
113 [o1, o2] = disp_argn();
114 [o1, o2] = disp_argn_with_args();
115 [o1, o2, o3] = disp_argn();
116 [o1, o2, o3] = disp_argn_with_args();
117  ]]></programlisting>
118     <para/>
119     <para>Test robuste de l'existence d'un argument d'entrée:</para>
120         <programlisting role="example"><![CDATA[
121 function res = test(a, b, varargin)
122     res = ""
123     if isdef("a","l")
124         res = "a passed."
125     end
126     if isdef("b","l")
127         res = res + " b passed."
128     end
129     if isdef("c","l")
130         res = res + " c passed."
131     end
132 endfunction
133 clc
134 test()
135 test(4.321)
136 test(4.321, %z)
137 test(b=3)
138 test(c=3)
139 test(-1, c=3)
140 test(-1, a=2, c=3)
141 test(b=-1, a=2, c=3)
142  ]]></programlisting>
143     <para/>
144     <para>Autre usage fréquent:</para>
145         <programlisting role="example"><![CDATA[
146 function concat = maFonction(nom,option)
147   [lhs, rhs] = argn()
148   if rhs <= 1 then
149      option = "mon argument optionnel";
150   end
151   if rhs == 0 then
152      error("Au moins un argument attendu");
153   end
154   concat = nom+" "+option;
155 endfunction
156  ]]></programlisting>
157     </refsection>
158     <refsection role="see also">
159         <title>Voir aussi</title>
160         <simplelist type="inline">
161             <member>
162                 <link linkend="isdef">isdef</link>
163             </member>
164             <member>
165                 <link linkend="varargin">varargin</link>
166             </member>
167             <member>
168                 <link linkend="varargout">varargout</link>
169             </member>
170             <member>
171                 <link linkend="macrovar">macrovar</link>
172             </member>
173             <member>
174                 <link linkend="function">function</link>
175             </member>
176         </simplelist>
177     </refsection>
178     <refsection>
179             <title>History</title>
180             <revhistory><revision><revnumber>6.1.0</revnumber><revremark>L'argument <code>lhs</code> est assigné à zero si appelé sans argument de sortie.</revremark></revision></revhistory>
181     </refsection>
182 </refentry>