<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
          xml:lang="fr" xml:id="colon">
    <refnamediv>
        <refname>colon (:)</refname>
        <refpurpose>Générateur de séries. Adresse tous les éléments d'une liste ou d'un tableau</refpurpose>
    </refnamediv>
    <refsection>
        <title>Description</title>
        <para>
            Le symbole <literal>:</literal> peut être utilisé pour former des vecteurs
            (voir aussi <link linkend="linspace">linspace</link>,  <link linkend="logspace">logspace</link>) :
        </para>
        <variablelist>
            <varlistentry>
                <term>j:k</term>
                <listitem>
                    <para>
                        est le vecteur <literal>[j, j+1,...,k]</literal>
                        (ou la matrice vide si <literal>j&gt;k</literal>);
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>j:d:k</term>
                <listitem>
                    <para>
                        est le vecteur <literal>[j, j+d, ..., j+m*d]  </literal>.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>Cet opérateur peut aussi être utilisé pour sélectionner des lignes
            ou des colonnes d'un tableau, ou bien des sous-tableaux (voir aussi
            <link linkend="extraction">extraction</link>,  <link linkend="insertion">insertion</link>) :
        </para>
        <variablelist>
            <varlistentry>
                <term>A(:)</term>
                <listitem>
                    <para>
                        est le vecteur de tous les éléments du tableau <literal>A</literal>,
                        considéré comme un vecteur colonne (les colonnes sont mises bout à
                        bout);
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(:,j)</term>
                <listitem>
                    <para>
                        est la <literal>j</literal>-ème colonne de <literal>A</literal>;
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(i,:)</term>
                <listitem>
                    <para>
                        est la <literal>i</literal>-ème ligne de <literal>A</literal>;
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(j:k)</term>
                <listitem>
                    <para>
                        est égal à <literal>[A(j),A(j+1),...,A(k)]</literal>;
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(:,j:k)</term>
                <listitem>
                    <para>
                        est égal à
                        <programlisting><![CDATA[
              [A(1,j)  A(1,j+1)  ... A(1,k)
              A(2,j)  A(2,j+1)  ... A(2,k)
              . . . . . . . . . . .
              A(M,j)  A(M,j+1)  ... A(M,k)]
             ]]></programlisting>
                        si <literal>A</literal> est de taille <literal>M</literal>-par-<literal>N</literal>;
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(j:k,:)</term>
                <listitem>
                    <para>est égal à
                        <programlisting><![CDATA[
              [A(j,1)    A(j,2)   ... A(j,N)
              A(j+1,1)  A(j+1,2) ... A(j+1,N)
              . . . . . . . . . . .
              A(k,1)    A(k,2)   ... A(k,N)]
             ]]></programlisting>
                        si <literal>A</literal> est de taille <literal>M</literal>-par-<literal>N</literal>;
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>A(:)=w</term>
                <listitem>
                    <para>
                        remplit le tableau <literal>A</literal> avec les composantes de
                        <literal>w</literal> (prises colonne par colonne si <literal>w</literal> est
                        un tableau 2D). <literal>A</literal> et <literal>w</literal> doivent avoir
                        le même nombre d'éléments.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>
            Merci de noter que même si <literal>i</literal>, <literal>j</literal>,
            <literal>k</literal> ou <literal>d</literal> ont une partie décimale, seule la partie entière sera utilisée.
        </para>
       <note>
          <literal>type(:)</literal> est 129.
          <literal>typeof(:)</literal> est <literal>"implicitlist"</literal>.
       </note>
    </refsection>
    <refsection>
        <title>Exemples</title>
        <programlisting><![CDATA[
a = 1:5
b = 1:3:12
A = matrix(1:42,7,6);
// Vecteur contenant tous les élements de A
A(:)

// La j-ème colonne de A
A(:,j)

//  La i-ème ligne de A
A(i,:)

// Eléments des colonnes j à k et toutes les lignes
A(:,j:k)

// Eléments de toutes les colonnes et les lignes j à k
A(j:k,:)

w = matrix(101:142,7,6);
A(:) = w

// Si les indices ne sont pas des valeurs entières
i = 1:0.4:10; // Indices
A(i)
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Voir aussi</title>
        <simplelist type="inline">
            <member>
                <link linkend="dollar">dollar</link>
            </member>
            <member>
                <link linkend="extraction">extraction</link>
            </member>
            <member>
                <link linkend="matrix">matrix</link>
            </member>
            <member>
                <link linkend="linspace">linspace</link>
            </member>
            <member>
                <link linkend="logspace">logspace</link>
            </member>
        </simplelist>
    </refsection>
    <refsection role="history">
        <title>Historique</title>
        <revhistory>
            <revision>
                <revnumber>6.0</revnumber>
                <revdescription>
                  <itemizedlist>
                    <listitem>
                        <literal>type(:)</literal> vaut 129 (comme pour <literal>1:$</literal>)
                        au lieu de 1. <literal>size(:)</literal> est indéfinie
                        (au lieu de <literal>[-1,-1]</literal>).
                    </listitem>
                    <listitem>
                        <literal>typeof(:)</literal> est désormais <literal>"implicitlist"</literal>,
                        comme pour <literal>1:$</literal>.
                    </listitem>
                    <listitem>
                        <literal>%i:10</literal>  produit désormais une erreur.
                    </listitem>
                  </itemizedlist>
                </revdescription>
            </revision>
        </revhistory>
    </refsection>
</refentry>
