Merge remote-tracking branch 'origin/6.1'
[scilab.git] / scilab / modules / core / help / ru_RU / 2_control_flow / for.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) - 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="ru" xml:id="for">
21     <refnamediv>
22         <refname>for</refname>
23         <refpurpose>ключевое слово для циклов</refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>Синтаксис</title>
27         <synopsis>
28             for variable=expression
29             instruction;
30             instruction;
31             ...
32             instruction;
33             end
34
35
36             for variable=expression do
37             instruction;
38             instruction;
39             ...
40             instruction;
41             end
42         </synopsis>
43     </refsynopsisdiv>
44     <refsection>
45         <title>Аргументы</title>
46         <variablelist>
47             <varlistentry>
48                 <term>variable</term>
49                 <listitem>
50                     <para>
51                         переменная, по которой ведётся цикл;
52                     </para>
53                 </listitem>
54             </varlistentry>
55             <varlistentry>
56                 <term>expression</term>
57                 <listitem>
58                     <para>
59                         выражение, описывающее закон изменения переменной <literal>variable</literal>
60                         в заданных пределах; может быть вектором, матрицей, списком;
61                     </para>
62                 </listitem>
63             </varlistentry>
64             <varlistentry>
65                 <term>instruction</term>
66                 <listitem>
67                     <para>
68                         любые корректные инструкции Scilab.
69                     </para>
70                 </listitem>
71             </varlistentry>
72             <varlistentry>
73                 <term>do</term>
74                 <listitem>
75                     <para>
76                         ключевое слово, отделяющее блок определения переменной цикла <literal>variable</literal>
77                         от блока инструкций <literal>instruction</literal>
78                     </para>
79                 </listitem>
80             </varlistentry>
81         </variablelist>
82     </refsection>
83     <refsection>
84         <title>Описание</title>
85         <para>
86             Используется для организации циклов по заданной переменной <literal>variable</literal>.
87             Изменение переменной цикла <literal>variable</literal> описывается выражением <literal>expression</literal>,
88             однако, в качестве <literal>expression</literal> может выступать вектор или матрица. В этом случае переменная
89             <literal>variable</literal> последовательно от итерации к итерации принимает значения элементов
90             вектора/матрицы от первого до последнего, столбец за столбцом.
91         </para>
92         <para>
93             Оператор двоеточие <link linkend="colon">colon</link> используется для создания вектор-столбцов с регулярным
94             шагом между элементами и похож на традиционные циклы <literal>for</literal>:
95             <programlisting>
96                 for variable=n1:step:n2
97                 instruction;
98                 ...
99                 instruction;
100                 end
101             </programlisting>
102         </para>
103         <para>
104             Если <literal>expression</literal> является списком, то <literal>variable</literal>
105             принимает значения списка одно за другим.
106         </para>
107         <para>
108             В соответствии с договорённостями по написанию кода  в Scilab рекомендуется:
109         </para>
110         <itemizedlist>
111             <listitem>
112                 <para>
113                     начинать новую инструкцию на новой строке;
114                 </para>
115             </listitem>
116             <listitem>
117                 <para>
118                     писать не более одной простой инструкции на одной строке;
119                 </para>
120             </listitem>
121             <listitem>
122                 <para>
123                     разбивать составные инструкции на множество строк.
124                 </para>
125             </listitem>
126         </itemizedlist>
127         <para>
128             Например, используйте:
129         </para>
130         <screen><![CDATA[
131 for i = 1:5
132     disp(i);
133 end
134 ]]></screen>
135         а не
136         <screen><![CDATA[
137 for i = 1:5, disp(i); end
138 ]]></screen>
139         <warning>
140             Предупреждение: число символов, используемых для определения тела любой инструкции условия
141             (<literal>if while for</literal> или <literal>select/case</literal>) должно быть ограничено
142             16К.
143         </warning>
144     </refsection>
145     <refsection>
146         <title>Примеры</title>
147         <para>"традиционный" для циклов :</para>
148         <programlisting role="example"><![CDATA[
149 n=5;
150 for i = 1:n
151     for j = 1:n
152         a(i,j) = 1/(i+j-1);
153     end;
154 end
155 for j = 2:n-1
156     a(j,j) = j;
157 end;
158 a
159  ]]></programlisting>
160         <para>циклы с уменьшающейся переменной цикла :</para>
161         <programlisting role="example"><![CDATA[
162 for j = 4:-1:1
163     j
164 end
165  ]]></programlisting>
166         <para>цикл по столбцам матрицы :</para>
167         <programlisting role="example"><![CDATA[
168 M = [1 2 ; 3 4 ; 5 6]'
169 for  c = M, c, end
170  ]]></programlisting>
171     <screen><![CDATA[
172 -> M = [1 2 ; 3 4 ; 5 6]'
173  M  =
174    1.   3.   5.
175    2.   4.   6.
176
177 --> for  c = M, c, end
178  c  =
179    1.
180    2.
181
182  c  =
183    3.
184    4.
185
186  c  =
187    5.
188    6.
189 ]]></screen>
190         <programlisting role="example"><![CDATA[
191 for v = a, write(%io(2),v), end
192 for j = 1:n, v = a(:,j), write(%io(2),v), end
193  ]]></programlisting>
194         <para>цикл по элементам списка :</para>
195         <programlisting role="example"><![CDATA[
196 for l = list([1 2;3 4], (1+%z)^3, 'example', [%F %T]); l, end
197  ]]></programlisting>
198     <screen><![CDATA[
199 --> for l = list([1 2;3 4], (1+%z)^3, 'example', [%F %T]); l, end
200  l  =
201    1.   2.
202    3.   4.
203
204  l  =
205             2   3
206    1 +3z +3z  +z
207
208  l  =
209  example
210
211  l  =
212   F T
213 ]]></screen>
214     </refsection>
215     <refsection role="see also">
216         <title>Смотрите также</title>
217         <simplelist type="inline">
218             <member>
219                 <link linkend="while">while</link>
220             </member>
221             <member>
222                 <link linkend="end">end</link>
223             </member>
224             <member>
225                 <link linkend="do">do</link>
226             </member>
227         </simplelist>
228     </refsection>
229     <refsection role="history">
230         <title>История</title>
231         <revhistory>
232             <revision>
233                 <revnumber>6.0.0</revnumber>
234                 <revdescription>
235                     Теперь for <literal>expression</literal> может быть вектором указателей на графические окна.
236                     <literal>for</literal> is now protected:
237                     Assignments like <literal>for=1</literal> are no longer possible.
238                 </revdescription>
239             </revision>
240         </revhistory>
241     </refsection>
242 </refentry>