Stránka 8 z 10

Re: Dotazy začátečníka 2

Napsal: 18 čer 2020, 19:50
od gilhad
Jednak AND ma prednost pred OR
https://en.wikipedia.org/wiki/Operators ... precedence
ale zavorky maji jeste vyssi a delaji tu podminku prehlednejsi.

Ja bych to zapsal jako

Kód: Vybrat vše

if ( ( 1 == 0 ) && ( (2 == 4) || (2 == 6) || (2==7) ) ) { // tak udelej cosi
   x=x;
   };
ale spis jeste (zvlast s dlouhyma promennyma ) takto

Kód: Vybrat vše

if ( 
     ( 1 == 0 ) &&   // pokud plati toto a libovolne z nasledujicich:
     ( 
        (2 == 4) || 
        (2 == 6) || 
        (2 == 7) 
     )
   ) { 
       // tak udelej cosi
       x=x;
   };

ale samozrejme to jde zapsat i jako

if(1 == 0&&2 == 4||1 == 0&&2 == 6||1 == 0&&2==7){x=x;};

jen te pak nebude mit rad nikdo, kdo to bude po tobe cist, tebe nevyjimaje.

Re: Dotazy začátečníka 2

Napsal: 18 čer 2020, 19:56
od Pivrnec78
Pivrnec78 píše: 18 čer 2020, 13:38 Zdravím,
potřebuju napsat podmínku pro více podmínek, ale kombinace And a Or ... jak to mám napsat - jak je to správně?

If něco1 = 0 and něco2 = 4 or
If něco1 = 0 and něco2 = 6 or
if něco1 = 0 and něco2 = 7 then ...
endif

nebo

If něco1 = 0 and něco2 = 4 or něco2 = 6 or něco2 = 7 then ...
endif
Omlouvám se, blbě jsem se vyjádřil ... upravuji původní text

Re: Dotazy začátečníka 2

Napsal: 18 čer 2020, 20:10
od gilhad
To jsem pochopil, porovnavat takto cisla neni vetsinou sikovne :) Ale bral jsem to jako zkratku ...
Samozrejme to plati i pro promenne, takze

Kód: Vybrat vše

neco == 0
1 == neco
neco == cosi
( a + b ) == (c + d - e )
...

Re: Dotazy začátečníka 2

Napsal: 18 čer 2020, 21:29
od Pivrnec78
Můžu napsat pro každou podmínku zvlášť stejný úkol. Ale to je si myslím zbytečné. Proto bych chtěl vyřešit ten zápis, jak to napsat. Mě nezajímá výsledek, ale tento konkrétní zápis, protože úkol té podmínky je asi na 15 řádcích ...

Re: Dotazy začátečníka 2

Napsal: 18 čer 2020, 22:27
od gilhad
Tak ty moje priklady by mely jit pouzit a rozvinout dal - a zavorky jsou prima i pokud nejsou vylozene nutne, protoze to zprehledni - stejne jako zapis na vic radku se spravnym odsazenim.

Na druhou stranu, pokud je ta podminka nejaka komplikovana, (a treba jeste na nekolika mistech) muze byt lepsi zabalit ji do funkce, pokud potrebujes porovnavat mraky hodnot, muze byt sikovne (a prehledne) je drzet v poli a projit to cyklem, pokud spolu nejak souvisi, muze byt vyhodne je nahradit vyrazem (kazdou sudou hodinu = misto porovnavani s cisly 2,4,6,... vezmu zbytek po deleni dvema)

Kód: Vybrat vše


bool podminka(int a, int b) {
  if ( a !=0 ) return false;  // prvni parametr musi byt nulovy, jinak podminka nejplati
  if (b==4 || b==6 || b==7) return true; // tyhle hodnoty  beru
  // ...
  return false; // kdyz jsme dosli az sem a nic nevyhovelo, vratime false
}

#define DELKA 3
int hodnoty[DELKA] = { 4,6,7 };

bool podminka2(int a, int b) {
  if ( a !=0 ) return false;  // prvni parametr musi byt nulovy, jinak podminka nejplati
  for (int i=0; i<DELKA; i++) { 
       if (b == hodnoty[i]  ) return true;
  };
  // ...
  return false; // kdyz jsme dosli az sem a nic nevyhovelo, vratime false
}

// ...

if ( podminka(neco1,neco2) ) { // sada if
   x=x;
};

if ( podminka2(neco1,neco2) ) { // pruchod polem
   x=x;
};


Re: Dotazy začátečníka 2

Napsal: 19 čer 2020, 07:44
od Pivrnec78
gilhad píše: 18 čer 2020, 22:27 Tak ty moje priklady by mely jit pouzit a rozvinout dal - a zavorky jsou prima i pokud nejsou vylozene nutne, protoze to zprehledni - stejne jako zapis na vic radku se spravnym odsazenim.

Na druhou stranu, pokud je ta podminka nejaka komplikovana, (a treba jeste na nekolika mistech) muze byt lepsi zabalit ji do funkce, pokud potrebujes porovnavat mraky hodnot, muze byt sikovne (a prehledne) je drzet v poli a projit to cyklem, pokud spolu nejak souvisi, muze byt vyhodne je nahradit vyrazem (kazdou sudou hodinu = misto porovnavani s cisly 2,4,6,... vezmu zbytek po deleni dvema)

Kód: Vybrat vše


bool podminka(int a, int b) {
  if ( a !=0 ) return false;  // prvni parametr musi byt nulovy, jinak podminka nejplati
  if (b==4 || b==6 || b==7) return true; // tyhle hodnoty  beru
  // ...
  return false; // kdyz jsme dosli az sem a nic nevyhovelo, vratime false
}

#define DELKA 3
int hodnoty[DELKA] = { 4,6,7 };

bool podminka2(int a, int b) {
  if ( a !=0 ) return false;  // prvni parametr musi byt nulovy, jinak podminka nejplati
  for (int i=0; i<DELKA; i++) { 
       if (b == hodnoty[i]  ) return true;
  };
  // ...
  return false; // kdyz jsme dosli az sem a nic nevyhovelo, vratime false
}

// ...

if ( podminka(neco1,neco2) ) { // sada if
   x=x;
};

if ( podminka2(neco1,neco2) ) { // pruchod polem
   x=x;
};

Dík za pomoc, tady se ale ztrácím, to je na mě moc složité :-/ V tom bych se potom sám nevyznal.

Re: Dotazy začátečníka 2

Napsal: 19 čer 2020, 09:10
od DavidO
Pivrnec78 píše: 18 čer 2020, 13:38 Zdravím,
potřebuju napsat podmínku pro více podmínek, ale kombinace And a Or ... jak to mám napsat - jak je to správně?

If 1 = 0 and 2 = 4 or
If 1 = 0 and 2 = 6 or
if 1 = 0 and 2 = 7 then ...
endif

nebo

If 1 = 0 and 2 = 4 or 2 = 6 or 2 = 7 then ...
endif
V Picaxe na kombinace různých logických operátorů ZAPOMEŇ!!! (viz dokumentace konstrukce if v Picaxe a obecněji také můj příspěvek tady na fóru)

Re: Dotazy začátečníka 2

Napsal: 19 čer 2020, 09:21
od DavidO
gilhad píše: 18 čer 2020, 19:50 Jednak AND ma prednost pred OR
https://en.wikipedia.org/wiki/Operators ... precedence
ale zavorky maji jeste vyssi a delaji tu podminku prehlednejsi.
Tos moh napsat i holandsky, protože Picaxe je uplně jinej jazyk a navíc vyhodnocování výrazů a podmínek tam je udělané chybně.

Re: Dotazy začátečníka 2

Napsal: 21 čer 2020, 11:31
od gilhad
Auu, neprecetl jsem si, ze jde o picaxe forum, jako bych nic nerekl ....

PWM pro rozběh motoru

Napsal: 02 říj 2020, 09:19
od Pivrnec78
Zdravím odborníky,
nemám zkušenost s PWM, ale chtěl bych pomocí tohoto příkazu řešit plynulý rozjezd motorku na modelové železnici.
Asi bude malý problém v tom, že každý výrobce, každý vlak má jiný motor a jiné převody a tudíž se rozjezd bude chovat pokaždé jinak, ale ...
Chtěl bych prokonzultovat jaké hodnoty pro parametry "period" a "duty" jsou reálné, protože věřím, že obecný motor by se mohl chovat podobně.
Až dorazí objednávka, budu to moct zkoušet také reálně ...