ARDUINO mega - opakovani funkce - VYŘEŠENO

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#31 Příspěvek od jiri255 »

ten kod s tim return; je dobry :-)
musel jsem s toho vyhodit to if error to mi zase hlasilo ze neni deklarovan error, ale kdyz jsem to tam doplnil takto, tak se to vraci a provadi to opetovne kontrolu toho if v tom loop což je super muzu pozadat o objasneni co presne to "do" dela a to while(0) znamena co presne?


Kód: Vybrat vše

void loop() { 

      //hlavni funkce ke ktere se potrebuju vracet
      if (teplomer1() >=50) {
        Serial.print("nebezi");
       getZkouska();
        } else {
        Serial.print("bezi");
       getTest();
        }
     }

 void getTest() { 
       //a tady muzou byt dalsi podminky
        //else if a podobne     
       
          do {
            return;
            }while(0);
       }

 void getZkouska() { 
       //a tady muzou byt dalsi podminky
        //else if a podobne   
       
          do {
            return;
            }while(0);
       }

Naposledy upravil(a) jiri255 dne 07 říj 2015, 21:36, celkem upraveno 1 x.
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#32 Příspěvek od Cowley »

Ta se mohla ztratit při kopírování sem na diskusi...

Je přece jasné, že to není celý program, ale jen část, co ho trápí...
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#33 Příspěvek od jiri255 »

jj zavorka se ztratila pri kopirovani za to se omlouvam ten kod byl spis pro predstavu
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#34 Příspěvek od Cowley »

jiri255 píše:... pozadat o objasneni co presne to "do" dela a to while(0) znamena co presne?



Význam jednotlivých funkcí máš v návodu v překladači v HTML souborech...
Naposledy upravil(a) Cowley dne 07 říj 2015, 21:34, celkem upraveno 1 x.
Uživatelský avatar
lesana87
Příspěvky: 4399
Registrován: 20 zář 2014, 00:00

#35 Příspěvek od lesana87 »

Dyť ti tam chybějí zase, v obou funkcích, tak jaké ztrácení při kopírování?
Nejdřív se ti ty funkce nevracely, protože neměly konec, teď se vracejí, protože v nich nic není.
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#36 Příspěvek od jiri255 »

ten kod je jen pro predstavu nejsou tam v tech void getneco ani zadne funkce, tak prosim neresme zavorky....
snazim se sem vlozit co nejjednodussi kod, aby jsme nalezli reseni a nemuseli se zabyvat nejakym cvakanim relatek a blikanim led coz by uz tak neprehledny kod jeste vic zkomplikovalo.
Naposledy upravil(a) jiri255 dne 07 říj 2015, 21:40, celkem upraveno 1 x.
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#37 Příspěvek od mtajovsky »

neni deklarovan error - Jéje, to byl tzv. pseudokód, návod jak to konstrovat, ne konkrétní kód. Ten error je obecně naznačená nejaká detekovaná chyba, která ukončuje běh kódu uzavřeného do do-while.

while(0) se nikdy nevyhodnotí jako pravda, takže cyklus proběhne jen jednou, jako kdyby tam vůbec nebyl.

jiri255 píše:ten kod je jen pro predstavu nejsou tam v tech void getneco ani zadne funkce, tak prosim neresme zavorky....
Tak to máte smůlu, v céčku závorky musíte řešit vždycky. Jsou na struktuře programu téměř to nedůležitější. Jestli vám překladač pro arduino neřekl, že tam závorka chybí a neodmítnul udělat binárku, tak kdoví co jste do MCU vlastně naládoval.
Naposledy upravil(a) mtajovsky dne 07 říj 2015, 21:41, celkem upraveno 1 x.
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#38 Příspěvek od ZdenekHQ »

Taky mám problém s náznaky náznaků kódu a chápu je úplně jinak. A podobně odpovídám a výsledek je chaos. Někde je chyba. Return/Break
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#39 Příspěvek od mtajovsky »

Tak jak jsem měl trochu obecně popsat variantu k ukončování pomoci goto? :?
Uživatelský avatar
lesana87
Příspěvky: 4399
Registrován: 20 zář 2014, 00:00

#40 Příspěvek od lesana87 »

jiri255 píše:ten kod je jen pro predstavu nejsou tam v tech void getneco ani zadne funkce, tak prosim neresme zavorky....
snazim se sem vlozit co nejjednodussi kod, aby jsme nalezli reseni a nemuseli se zabyvat nejakym cvakanim relatek a blikanim led coz by uz tak neprehledny kod jeste vic zkomplikovalo.

Když sem dáš prázdnou funkci a tvrdíš o ní, že se nevrací a že na závorkách nezáleží, tak pak není co řešit. :?
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#41 Příspěvek od ZdenekHQ »

mtajovsky píše:Tak to máte smůlu, v céčku závorky musíte řešit vždycky.


Nejenom v céčku. Občas se závorek nemůžu dopočítat a překladač pořád nadává. Metoda "odsazování" TAB-em je mě dobře známá, jen některé editory to poněkud ignorují a celý to rozhodí.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#42 Příspěvek od jiri255 »

ano je to neco jako pseudokod :-) ...,takze jestli to spravne s toho textu chapu, tak to while(0) tam byt nemusi?

tedy jen

Kód: Vybrat vše

          do { 
            return;
            }
Naposledy upravil(a) jiri255 dne 07 říj 2015, 21:47, celkem upraveno 1 x.
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#43 Příspěvek od ZdenekHQ »

mtajovsky píše:Tak jak jsem měl trochu obecně popsat variantu k ukončování pomoci goto? :?


To se týkalo dotazu, nikoliv Tebe.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#44 Příspěvek od mtajovsky »

jiri255 << Ten pseudokód se netýká tvého programu, to jsem jen replikoval uživateli zmije, který sem dal kousek Linuxu jako přiklad použití goto.

while tam být musí, je to syntaxe pro jeden ze standardních strukturovaných bloků (a sice pro cyklus) v céčku. Ale while(0) nikdy nevrátí řízení zpět na začátek cyklu, a tak proběhne jen jedenkrát, tudíž jako by tam nebyl. Jeho význam je v umožnení použití break jako náhrady za goto.
Uživatelský avatar
jiri255
Příspěvky: 168
Registrován: 18 dub 2013, 00:00

#45 Příspěvek od jiri255 »

aha koukam ted na to "do" a "while" a to by melo byt tedy spravne asi takto,
ze:

Kód: Vybrat vše

void loop() { 

      //hlavni funkce ke ktere se potrebuju vracet
      if (teplomer1() >=50) {
        Serial.print("nebezi");
       getZkouska();
        } else {
        Serial.print("bezi");
       getTest();
        }
     }

 void getTest() {     
        do {
    //ty podminky se vepisuji sem treba
    digitalWrite(2,LOW);
    //a potom to return vraci zpet do loop
            return;
            }while(0); //a to while je tedy konec tohoto podprogramu
       }

 void getZkouska() {   
       
          do {
   digitalWrite(8,HIGH);   
            return;
            }while(0);
       }


a jeste, kdyz dam do while(2) tak to znamena opakuj 2x a pak se vrat do loop?
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“