<?xml version="1.0"?>
<flowgorithm fileversion="2.11">
    <attributes>
        <attribute name="name" value=""/>
        <attribute name="authors" value="fox"/>
        <attribute name="about" value=""/>
        <attribute name="saved" value="2020-04-13 01:27:57 dop."/>
        <attribute name="created" value="Zm94O0RFU0tUT1AtQTRBVE1MRjsyMDIwLTA0LTA5OzEwOjA0OjA0IGRvcC47Mjg4Nw=="/>
        <attribute name="edited" value="Zm94O0RFU0tUT1AtQTRBVE1MRjsyMDIwLTA0LTEzOzAxOjI3OjU3IGRvcC47MTQ7MzA1NQ=="/>
    </attributes>
    <function name="Main" type="None" variable="">
        <parameters/>
        <body>
            <comment text="Deklarace: 'n' ... &#269;&#237;slo z des&#237;tkov&#233; soustavy, kter&#233; m&#225; b&#253;t p&#345;evedeno"/>
            <declare name="n" type="Integer" array="False" size=""/>
            <output expression="&quot;P&#345;evod &#269;&#237;sla do soustavy&quot;" newline="True"/>
            <comment text="V&#253;zva k zad&#225;n&#237; &#269;&#237;sla"/>
            <output expression="&quot;Zadejte &#269;&#237;slo, kter&#233; m&#225; b&#253;t p&#345;evedeno: &quot;" newline="False"/>
            <comment text="Na&#269;ten&#237; konvertovan&#233;ho &#269;&#237;sla"/>
            <input variable="n"/>
            <comment text="V&#253;pis konvertovan&#233;ho &#269;&#237;sla do po&#382;adovan&#233; soustavy"/>
            <output expression="&quot;V&#253;sledek: &quot; &amp; Prevod(n)" newline="True"/>
        </body>
    </function>
    <function name="Prevod" type="String" variable="s">
        <parameters>
            <parameter name="n" type="Integer" array="False"/>
        </parameters>
        <body>
            <comment text="Parametr: 'n' ... &#269;&#237;slo z dest&#237;kov&#233; soustavy, kter&#233; m&#225; b&#253;t p&#345;evedeno; Deklarace: 'p' ... po&#269;et bit&#367;; 'c' ... zbytek po celo&#269;&#237;seln&#233;m d&#283;len&#237;; 'd' ... d&#283;litel (z&#225;klad soustavy); 'i' ... pozice bitu ve v&#253;stupn&#237;m textu; 's' ... v&#253;stupn&#237; text (p&#345;eveden&#233; &#269;&#237;slo); 'soustava' ... index vybran&#233; soustavy"/>
            <declare name="p, c, d, i, soustava" type="Integer" array="False" size=""/>
            <declare name="s" type="String" array="False" size=""/>
            <comment text="Inicilizace - v&#253;stupn&#237; text je nastaven na pr&#225;zdnou hodnotu"/>
            <assign variable="s" expression="&quot;&quot;"/>
            <comment text="Validace indexu zvolen&#233;ho typu soustavy"/>
            <do expression="(soustava&lt;0) || (soustava&gt;1)">
                <comment text="V&#253;zva k v&#253;b&#283;ru typu soustavy"/>
                <output expression="&quot;Zadejte index soustavy (0 ... dvojkov&#225;, 1 ... &#353;estn&#225;ctkov&#225;): &quot;" newline="False"/>
                <comment text="Na&#269;ten&#237; indexu zvolen&#233;ho typu soustavy"/>
                <input variable="soustava"/>
            </do>
            <comment text="Validace zvolen&#233;ho po&#269;tu byt&#367;"/>
            <do expression="(p != 1) &amp;&amp; (p != 2) &amp;&amp; (p != 4) &amp;&amp; (p != 8)">
                <comment text="V&#253;zva k zad&#225;n&#237; po&#269;tu byt&#367; (po&#269;et pozic ve v&#253;sledn&#233;m &#345;et&#283;zci)"/>
                <output expression="&quot;Zadejte po&#269;et byt&#367; (1, 2, 4, 8): &quot;" newline="False"/>
                <comment text="Na&#269;ten&#237; po&#269;tu byt&#367; - n&#225;sledn&#283; bude p&#345;eveden na bity"/>
                <input variable="p"/>
            </do>
            <comment text="Test, zda byla vybr&#225;na dvojkov&#225; soustava"/>
            <if expression="soustava == 0">
                <then>
                    <comment text="Byla vybr&#225;na dvojkov&#225; (bin&#225;rn&#237;) soustava"/>
                    <comment text="Nastaven&#237; hodnoty po&#269;tu bit&#367; v z&#225;vislosti na po&#269;tech byt&#367; (1 byte = 8 bit&#367; v bin&#225;rn&#237; soustav&#283;)"/>
                    <assign variable="p" expression="p * 8"/>
                    <comment text="Nastaven&#237; d&#283;litele na hodnotu 2"/>
                    <assign variable="d" expression="2"/>
                </then>
                <else>
                    <comment text="Byla vybr&#225;na &#353;estn&#225;ctkov&#225; (hexadecim&#225;ln&#237;) soustava"/>
                    <comment text="Nastaven&#237; hodnoty po&#269;tu bit&#367; v z&#225;vislosti na po&#269;tech byt&#367; (1 byte lze zobrazit na 2 pozice v &#353;estn&#225;ctkov&#233; soustav&#283;)"/>
                    <assign variable="p" expression="p * 2"/>
                    <comment text="Nastaven&#237; d&#283;litele na hodnotu 2"/>
                    <assign variable="d" expression="16"/>
                </else>
            </if>
            <comment text="Cyklus s krokem &#8211; pro v&#353;echny bity (po&#269;et bit&#367; ulo&#382;en v prom&#283;nn&#233; 'p')"/>
            <for variable="i" start="1" end="p" direction="inc" step="1">
                <comment text="Nastaven&#237; zbytku = hodnota po celo&#269;&#237;seln&#233;m d&#283;len&#237; konvertovan&#233;ho &#269;&#237;sla d&#283;litelem"/>
                <assign variable="c" expression="n % d"/>
                <comment text="Test, zda se jedn&#225; o dvojkovou, nebo &#353;estn&#225;ctkovou soustavu na z&#225;klad&#283; zbytku (hodnoty v 'c')"/>
                <if expression="c &lt; 10">
                    <then>
                        <comment text="Pokud je zbytek men&#353;&#237; ne&#382; 10 - konverze celo&#269;&#237;seln&#233; hodnoty ulo&#382;en&#233; ve zbytku na &#269;&#237;slici"/>
                        <comment text="V&#253;stupn&#237; text = vlo&#382;en&#237; znaku p&#345;ed st&#225;vaj&#237;c&#237; text (znak je v ASCII na pozici, kter&#225; je rovna hodnot&#283; zbytku + ordin&#225;ln&#237; hodnota znaku '0')"/>
                        <assign variable="s" expression="ToChar(c + ToCode(&quot;0&quot;)) &amp; s"/>
                    </then>
                    <else>
                        <comment text="Pokud je zbytek v&#283;t&#353;&#237; nebo roven 10 - konverze celo&#269;&#237;seln&#233; hodnoty ulo&#382;en&#233; ve zbytku na p&#237;smeno"/>
                        <comment text="V&#253;stupn&#237; text = vlo&#382;en&#237; znaku p&#345;ed st&#225;vaj&#237;c&#237; text (znak je v ASCII na pozici, kter&#225; je rovna hodnot&#283; zbytku - 10 + ordin&#225;ln&#237; hodnota znaku 'A')"/>
                        <assign variable="s" expression="ToChar(c - 10 + ToCode(&quot;A&quot;)) &amp; s"/>
                    </else>
                </if>
                <comment text="Pokud je bit na n&#225;sobkem &#269;tvrt&#233; pozice ..."/>
                <if expression="i % 4 == 0">
                    <then>
                        <comment text="Vlo&#382;en&#237; mezery do v&#253;stupn&#237;ho textu p&#345;ed st&#225;vaj&#237;c&#237; text"/>
                        <assign variable="s" expression="&quot; &quot; &amp; s"/>
                    </then>
                    <else/>
                </if>
                <comment text="Vstupn&#237; &#269;&#237;slo = celo&#269;&#237;seln&#233; d&#283;len&#237; st&#225;vaj&#237;c&#237;ho konvertovan&#233;ho &#269;&#237;sla d&#283;litelem"/>
                <assign variable="n" expression="n / d"/>
            </for>
            <comment text="Pokud je konvertovan&#233; &#269;&#237;slo v&#283;t&#353;&#237; ne&#382; nula ..."/>
            <if expression="n &gt; 0">
                <then>
                    <comment text="V&#253;stupn&#237; text = st&#225;vaj&#237;c&#237; v&#253;stupn&#237; text + &quot;p&#345;ete&#269;en&#237;&quot;"/>
                    <assign variable="s" expression="s &amp; &quot; p&#345;ete&#269;en&#237;&quot;"/>
                </then>
                <else/>
            </if>
            <comment text="V&#253;stupn&#237; text je n&#225;vratem funkce"/>
        </body>
    </function>
</flowgorithm>
