Autor Zpráva
pavelt
Profil *
Prosím o pomoc s převodem 2 vývojových diagramůdo php.
                    |
            podminka 1 -
            |               |
 podminka 2 ----->
    |                       |
vykonej A         vykonej B
    |                       |
     ------------------
                |


1. diagram upravený pro PHP, ale nešikovný, má "vykonej B" 2x:
                    |
           podminka 1 -----
            |                       |
 podminka 2                 |
    |               |               |
vykonej A  vykonej B vykonej B
    |               |               |
     -------------------------
                    |


puvodní 2. diagram:
                    |
              podminka 1 --------
            |                               |
        podminka 2-><--------podminka 3
    |                       |               |
vykonej A      vykonej B     vykonej C
    |                       |               |
     -------------------------------
                    |


2. diagram upravený pro PHP, ale nešikovný, má také "vykonej B" 2x:
                    |
                podminka 1 -------
            |                               |
    podminka 2              podminka 3
    |               |               |               |
vykonej A  vykonej B  vykonej B  vykonej C
    |               |               |               |
     --------------------------------------
                    |


Kdyby bylo možné použít něco jako Go To .., bylo by to jednoduché.Napadlo mne "vykonej B" includovat 2x z externího souboru, ale to není moc pěkné řešení, rád bych jediný kompaktní php kód.
Díky
Pavel

Moderátor Chamurappi: Na zachování mezer a neproporciální písmo tu máme značky [pre] a [/pre] (stačí kliknout na ).
Moderátor Chamurappi: Hm, tak to moc nepomohlo, smůla :-)
pavelt
Profil *
Hm, tak mnoho mezer za sebou bylo nahrazeno jedinou a vývoják teď vypadá "móc hezky". Omlouvám se, jdu mezery nahradit pevnými, co to provede. Pavel
tiso
Profil
pavelt - chcelo by to obrázok!
pavelt
Profil *
                    |
            podminka 1 -
            |               |
 podminka 2 ----->
    |                       |
vykonej A         vykonej B
    |                       |
     ------------------
                |

                
1. diagram upravený pro PHP, ale nešikovný, má "vykonej B" 2x:
                    |
           podminka 1 -----
            |                       |
 podminka 2                 |
    |               |               |
vykonej A  vykonej B vykonej B
    |               |               |
     -------------------------
                    |
                
                
puvodní 2. diagram:
                    |
              podminka 1 --------
            |                               |
        podminka 2-><--------podminka 3
    |                       |               |
vykonej A      vykonej B     vykonej C
    |                       |               |
     -------------------------------
                    |
                    

2. diagram upravený pro PHP, ale nešikovný, má také "vykonej B" 2x:
                    |
                podminka 1 -------
            |                               |
    podminka 2              podminka 3
    |               |               |               |
vykonej A  vykonej B  vykonej B  vykonej C
    |               |               |               |
     --------------------------------------
                    |

Moderátor Chamurappi: Zkusil jsem nahradit &nbsp; za skutečné tvrdé mezery.
pavelt
Profil *
Ajaj, tak to nepůjde.
rohl
Profil
Asi sem tupej, ale totálně ten tvůj popis (ještě stěma mezerama) nechápu.
DJ Miky
Profil
<br>                    |
<br>            podminka 1 -
<br>            |               |
<br> podminka 2 ----->
<br>    |                       |
<br>vykonej A         vykonej B
<br>    |                       |
<br>     ------------------
<br>                |
<br>
<br>                
<br>1. diagram upravenę pro PHP, ale nečikovnę, má "vykonej B" 2x:
<br>                    |
<br>           podminka 1 -----
<br>            |                       |
<br> podminka 2                 |
<br>    |               |               |
<br>vykonej A  vykonej B vykonej B
<br>    |               |               |
<br>     -------------------------
<br>                    |
<br>                
<br>                
<br>puvodní 2. diagram:
<br>                    |
<br>              podminka 1 --------
<br>            |                               |
<br>        podminka 2-><--------podminka 3
<br>    |                       |               |
<br>vykonej A      vykonej B     vykonej C
<br>    |                       |               |
<br>     -------------------------------
<br>                    |
<br>                    
<br>
<br>2. diagram upravenę pro PHP, ale nečikovnę, má také "vykonej B" 2x:
<br>                    |
<br>                podminka 1 -------
<br>            |                               |
<br>    podminka 2              podminka 3
<br>    |               |               |               |
<br>vykonej A  vykonej B  vykonej B  vykonej C
<br>    |               |               |               |
<br>     --------------------------------------
<br>                    |

EDIT: Tak to se taky moc nepovedlo...
pavelt
Profil *
Vytvářím simulaci MIDI analýzy a používám tenhle konkrétní vývojový diagram:
http://www.geocities.com/JDPetkov/documents/midi/mdec64fc.pdf
Potíž mám se skokem od podmínky
<INBYTE is REALTIME STATUS>-No
k vykonání příkazu MIDISTATUS = INBYTE
a podobně se skokem od
RECBYTES = 1
k podmínce
<RECBYTES = PACKSIZE?>

Snažil jsem se udělat podobný miniaturní vývojáček se skoky do jiné větve pomocí textu, ale nepodařilo se. Tak se omlouvám, třeba, když se budeme bavit o konkrétním případu, to půjde lépe.
Díky moc. Pavel
Chamurappi
Profil
Příspěvek [#4] už vypadá snesitelně.
Alphard
Profil
pavelt:
Goto mi ani tak nechybí, říkávalo se, že kdo se nebojí goto, nebojí se ničeho. :-)
Než začnu zkoumat ty diagramy, zkusím obecnou radu. Nešlo by použít funkce? Je to typické řešení opakujícího se kódu. Jednou ji vytvoříte a pak ji zavoláte, kolikrát budete chtít.
pavelt
Profil *
Chamurappi: Díky za "polidštění " toho mého výtvoru do snad pochopitelnější garfické formy.
Jde mi o to, že systém využívá v několika různých částech logické struktury shodnou část kódu. Ve vývojáku se jim to dělá, když namíří čáru s šipkou prostě jinam, ale jak to v kódu bez skoků naprogramovat. Samozřejmě lze shodnou část kódu zkopírovat na to druhé místo, vzniká ale nebezpečí chyby při editaci této části (v jedné na něco zapomenu a je potíž). Pak, jak jsem se zmínil lze společnou část kódu napsat do externího .php souboru a ten do dvou různých míst includovat. To je řešení, ale moc se mi nelíbí. Možná lze i vývojový diagram přepsat bez ztráty funkčnosti do jiné podoby. Do toho jsem se zatím nepustil, zhledám možnosti php.
Pavel
pavelt
Profil *
Alphard: I funkce by šla, podobně jako include. Pravděpodobně se něčemu podobnému nevyhnu. Ale není to problém, vadit mi to nebude, jen jsem chtěl zkusit mít celý kód pohromadě. Díky
Jan Tvrdík
Profil
pavelt:
Funkce jsou o hodně lepší a rychlejší než include.
tiso
Profil
pavelt - prvý diagram:
if(podminka1 AND podminka2){
    //vykonej A
}
else{
    //vykonej B
}
tiso
Profil
pavelt druhý:
if(podminka1 AND podminka2){
    //vykonej A
}
elseif(!podminka1 AND podminka3){
    //vykonej C
}
else{
    //vykonej B
}

Ak som sa netrafil s + a - tak sa treba pohrať s negáciami pri jednotlivých podmienkach...
Alphard
Profil
pavelt:
Ale není to problém, vadit mi to nebude, jen jsem chtěl zkusit mít celý kód pohromadě.
Řekl bych, že tendence je přesně opačná. Především s objekty a MVC(P) architekturou. Složitější problém se necpe do jednoho nepřehledného bloku kódu, ale rozděluje se na jednodušší logické celky, ty se řeší samostatně a pak se to poskládá dohromady.

Jestli to chcete držet pohromadě, bude nejlepší vytvořit si zapouzdřující třídu, jednotlivé bloky kódu rozdělit do metod a s jejich pomocí je zpracovat.

Způsoben, který ukazuje tiso může samozřejmě vyřešit i ten druhý diagram
if (podminka1 && podminka2) vykonej A;
elseif (!podminka1 && !podminka3) vykonej C;
else vykonej B;
pavelt
Profil *
Jan Tvrdík, Alphard:
Tahleta aplikace je v podstatě jednoúčelová. Na ní ověřím přes web funkčnost selekce MIDI příkazů a pak bude kód přepsán do C pro 8 bitový mikrokontroler. I u mikrokontroléru lze použít funkce, ale už ne třídy a metody. Funkce zatěžují mikrokontroler více, než vícenásobné vložení jiné části kódu podobně jako u include v PHP.
PHP zde používám proto, protože se mi o mnoho rychleji programuje a daleko jednodušeji testuje, výhoda kódu PHP napsaného "na jednom listu" je docela veliká podobnost s C kódem mikrokontroleru. Přepsat PHP do C pak bude triviální. Navíc na testování na PHP nepotřebuji zvláštní hardwarová rozhraní a test může provádět kdokoliv on-line.
tiso
Profil
paveltFunkce zatěžují mikrokontroler více, než vícenásobné vložení jiné části kódu podobně jako u include v PHP.
Tu pletieš 2 rozdielne veci dokopy...
1. vykonanie user funkcie bude vždy pomalšie ako vykonanie vstavaných inštrukcií/funkcií jazyka, je jedno či je to C, asembler alebo PHP
2. include je pomalšie preto, lebo sa musí načítať ďalší súbor z disku.
pavelt
Profil *
Pojďme se vrátit k vývojovému diagramu a php. Rád bych kód bez funkcí. Zkusil jsem diagram rozpracovat s includovanými částmi kódu a funguje to myslím dobře. Ještě se pustím do překreslení diagramu podle předchozích rad a úpravy php.
Pavel
tiso
Profil
pavelt - čítal si vôbec [#14] a [#15]?
pavelt
Profil *
Četl, díky. „Ještě se pustím do překreslení diagramu podle předchozích rad a úpravy php.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: