<?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-01-03 09:45:21 odp."/>
        <attribute name="created" value="Zm94O1VLMzE4UFI7MjAyMC0wMS0wMzswMTo0MDowOCBvZHAuOzIyODg="/>
        <attribute name="edited" value="Zm94O1VLMzE4UFI7MjAyMC0wMS0wMzswOTo0NToyMSBvZHAuOzU7MjQwOA=="/>
    </attributes>
    <function name="Main" type="None" variable="">
        <parameters/>
        <body>
            <comment text="Deklarace prom&#283;nn&#233;: 'binarniHodnota' ... celo&#269;&#237;seln&#225; hodnota vr&#225;cen&#225; z funkce Validace; 'decimalniHodnota' ... v&#253;sledn&#225; hodnota v des&#237;tkov&#233; soustav&#283;; 'posledniCislice' ... ulo&#382;en&#237; zbytku celo&#269;&#237;seln&#233;ho d&#283;len&#237; a koeficient z&#225;kladu; 'zaklad' ... z&#225;klad bin&#225;rn&#237; soustavy"/>
            <declare name="binarniHodnota" type="Integer" array="False" size=""/>
            <declare name="decimalniHodnota" type="Integer" array="False" size=""/>
            <declare name="posledniCislice" type="Integer" array="False" size=""/>
            <declare name="zaklad" type="Integer" array="False" size=""/>
            <comment text="V&#253;stup (hodnota) z funkce 'Validace' je ulo&#382;ena do prom&#283;nn&#233; 'binarniHodnota'"/>
            <assign variable="binarniHodnota" expression="Validace()"/>
            <comment text="Inicializace prom&#283;nn&#233; decimalniHodnota, tj. p&#345;i&#345;azen&#237; po&#269;&#225;te&#269;n&#237; hodnoty"/>
            <assign variable="decimalniHodnota" expression="0"/>
            <comment text="Inicializace prom&#283;nn&#233; zaklad, tj. inicializace mocniny, tzn. 2^0 = 1"/>
            <assign variable="zaklad" expression="1"/>
            <comment text="St&#225;le existuje zbytek, kter&#253; m&#367;&#382;eme d&#283;lit"/>
            <while expression="binarniHodnota &gt; 0">
                <comment text="Do prom&#283;nn&#233; 'posledniCislice' je ulo&#382;en zbytek celo&#269;&#237;seln&#233;m d&#283;len&#237; 10"/>
                <assign variable="posledniCislice" expression="binarniHodnota % 10"/>
                <comment text="Do prom&#283;nn&#233; 'binarniHodnota' je ulo&#382;ena hodnota po celo&#269;&#237;seln&#233;m d&#283;len&#237; 10"/>
                <assign variable="binarniHodnota" expression="binarniHodnota / 10"/>
                <comment text="Do prom&#283;nn&#233; 'decimalniHodnota' je ulo&#382;ena p&#345;edchoz&#237; jej&#237; hodnota a k n&#237; p&#345;i&#269;ten n&#225;sobek &#269;&#237;slice (0, nebo 1) * z&#225;klad (v prvn&#237; iteraci 2^0)  "/>
                <assign variable="decimalniHodnota" expression="decimalniHodnota + (posledniCislice * zaklad)"/>
                <comment text="Umocn&#283;n&#237; z&#225;kladu pro dal&#353;&#237; iteraci (v druh&#233; iteraci je to 2^1)"/>
                <assign variable="zaklad" expression="zaklad * 2"/>
            </while>
            <comment text="V&#253;pis textu a hodnoty konvertovan&#233;ho &#269;&#237;sla"/>
            <output expression="&quot;Konvertovan&#233; &#269;&#237;slo: &quot; &amp; decimalniHodnota" newline="True"/>
        </body>
    </function>
    <function name="Validace" type="Integer" variable="binarniHodnota">
        <parameters/>
        <body>
            <comment text="Deklarace prom&#283;nn&#253;ch: 'binarniHodnota' ... konvertovan&#225; celo&#269;&#237;seln&#225; bin&#225;rn&#237; hodnota zadan&#225; na 1 Byte;  'binarniHodnotaPom' ... pomocn&#225; prom&#283;nn&#225; pro proveden&#237; test&#367; validace; 'posledniCislice' ... prom&#283;nn&#225; pro ulo&#382;en&#237; zbytku po celo&#269;&#237;seln&#233;m d&#283;len&#237; bin&#225;rn&#237; hodnoty hodnotou 10; 'pocetChybnychBitu' ... po&#269;et zji&#353;t&#283;n&#253;ch chybn&#253;ch pozic (bit&#367;) v bin&#225;rn&#237; hodnot&#283;; 'pocetPlatnychBitu' ... po&#269;et zji&#353;t&#283;n&#253;ch platn&#253;ch pozic (bit&#367;) v bin&#225;rn&#237; hodnot&#283;;  'celkovyPocetBitu' ... celkov&#253; po&#269;et zadan&#253;ch bit&#367;; 'chyba' ... informace (Boolean) zda v zadan&#233; bin&#225;rn&#237; hodnot&#283; byla nalezena chyba "/>
            <declare name="binarniHodnota" type="Integer" array="False" size=""/>
            <declare name="binarniHodnotaPom" type="Integer" array="False" size=""/>
            <declare name="posledniCislice" type="Integer" array="False" size=""/>
            <declare name="pocetChybnychBitu" type="Integer" array="False" size=""/>
            <declare name="pocetPlatnychBitu" type="Integer" array="False" size=""/>
            <declare name="celkovyPocetBitu" type="Integer" array="False" size=""/>
            <declare name="chyba" type="Boolean" array="False" size=""/>
            <comment text="Cyklus pro zad&#225;v&#225;n&#237; bezchybn&#233; bin&#225;rn&#237; hodnoty"/>
            <do expression="chyba == True">
                <comment text="V&#253;pis pro zad&#225;n&#237; bin&#225;rn&#237; hodnoty"/>
                <output expression="&quot;Zadejte bin&#225;rni hodnotu ve velikosti 8 bit&#367;: &quot;" newline="True"/>
                <comment text="Na&#269;ten&#237; bin&#225;rn&#237; hodnoty do prom&#283;nn&#233; 'binarniHodnota'"/>
                <input variable="binarniHodnota"/>
                <comment text="Ulo&#382;en&#237; hodnoty v prom&#283;nn&#233; 'binarniHodnota' do pomocn&#233; prom&#283;nn&#233; 'binarniHodnotaPom'"/>
                <assign variable="binarniHodnotaPom" expression="binarniHodnota"/>
                <comment text="Inicializace po&#269;tu chybn&#253;ch pozic (bit&#367;)"/>
                <assign variable="pocetChybnychBitu" expression="0"/>
                <comment text="Inicializace po&#269;tu platn&#253;ch pozic (bit&#367;)"/>
                <assign variable="pocetPlatnychBitu" expression="0"/>
                <comment text="Inicializace celkov&#233;ho po&#269;tu pozic (bit&#367;)"/>
                <assign variable="celkovyPocetBitu" expression="0"/>
                <comment text="Pokud nedo&#353;lo na testov&#225;n&#237; posledn&#237;ho &#269;&#237;sla v bin&#225;rn&#237; hodnot&#283;"/>
                <while expression="binarniHodnotaPom != 0">
                    <comment text="Zbytek po celo&#269;&#237;seln&#233;m d&#283;len&#237; 10 (kv&#367;li testov&#225;n&#237; jednotek, des&#237;tek, stovek, atd.)"/>
                    <assign variable="posledniCislice" expression="binarniHodnotaPom % 10"/>
                    <comment text="Pokud zbytek po celo&#269;&#237;seln&#233;m d&#283;len&#237; je roven 1 nebo nule"/>
                    <if expression="(posledniCislice != 1) &amp;&amp; (posledniCislice != 0)">
                        <then>
                            <comment text="Zv&#253;&#353;en&#237; po&#269;tu chybn&#253;ch pozic o 1"/>
                            <assign variable="pocetChybnychBitu" expression="pocetChybnychBitu + 1"/>
                        </then>
                        <else>
                            <comment text="Zv&#253;&#353;en&#237; po&#269;tu platn&#253;ch pozic o 1"/>
                            <assign variable="pocetPlatnychBitu" expression="pocetPlatnychBitu + 1"/>
                        </else>
                    </if>
                    <comment text="Celo&#269;&#237;seln&#233; d&#283;len&#237; 10 (kv&#367;li testov&#225;n&#237; jednotek, des&#237;tek, stovek, atd.)"/>
                    <assign variable="binarniHodnotaPom" expression="binarniHodnotaPom / 10"/>
                </while>
                <comment text="Spo&#269;ten&#237; celkov&#233;ho po&#269;tu bit&#367;"/>
                <assign variable="celkovyPocetBitu" expression="pocetChybnychBitu + pocetPlatnychBitu"/>
                <comment text="Pokud po&#269;et chybn&#253;ch pozic je v&#283;t&#353;&#237; ne&#382; 0 nebo celkov&#253; po&#269;et bit&#367; je v&#283;t&#353;&#237; ne&#382; 8"/>
                <if expression="(pocetChybnychBitu &gt; 0) || (celkovyPocetBitu &gt; 8)">
                    <then>
                        <comment text="Pokud celkov&#253; po&#269;et pozic v&#283;t&#353;&#237; ne&#382; 8"/>
                        <if expression="celkovyPocetBitu &gt; 8">
                            <then>
                                <comment text="V&#253;pis o p&#345;esa&#382;en&#233;m celkov&#233;m po&#269;tu bit&#367;"/>
                                <output expression="&quot;Validace po&#269;tu bit&#367;: ne&#250;sp&#283;&#353;n&#225; - celkov&#253; po&#269;et bit&#367; : &quot; &amp; celkovyPocetBitu" newline="True"/>
                            </then>
                            <else/>
                        </if>
                        <comment text="Pokud je po&#269;et chybn&#253;ch bit&#367; v&#283;t&#353;&#237; 0"/>
                        <if expression="pocetChybnychBitu &gt; 0">
                            <then>
                                <comment text="V&#253;pis zji&#353;t&#283;n&#233;ho po&#269;tu chybn&#253;ch bit&#367;"/>
                                <output expression="&quot;Validace platn&#253;ch bit&#367;: ne&#250;sp&#283;&#353;n&#225; - po&#269;et chybn&#253;ch bit&#367;: &quot; &amp; pocetChybnychBitu" newline="True"/>
                            </then>
                            <else/>
                        </if>
                        <comment text="Byla zji&#353;t&#283;na chyba v bin&#225;rn&#237; hodnot&#283;"/>
                        <assign variable="chyba" expression="True"/>
                    </then>
                    <else>
                        <comment text="V&#253;pis o platnosti  bin&#225;rn&#237; hodnoty"/>
                        <output expression="&quot;Validace: &#250;sp&#283;&#353;n&#225;&quot;" newline="True"/>
                        <comment text="Informace, &#382;e neexistuje chyba v bin&#225;rn&#237; hodnot&#283; "/>
                        <assign variable="chyba" expression="False"/>
                    </else>
                </if>
                <comment text="Cyklus zad&#225;v&#225;n&#237; bude prob&#237;hat tak dlouho, dokud nebude zad&#225;na bezchybn&#225; bin&#225;rn&#237; hodnota"/>
            </do>
            <comment text="V&#253;stupem funkce je validn&#237; bin&#225;rn&#237; hodnota ve dvojkov&#233; soustav&#283;"/>
        </body>
    </function>
</flowgorithm>
