Dotazy začátečníka 2

Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

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

Příspěvek 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.
Pivrnec78
Příspěvky: 73
Registrován: 30 dub 2017, 15:25

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

Příspěvek 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
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

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

Příspěvek 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 )
...
Pivrnec78
Příspěvky: 73
Registrován: 30 dub 2017, 15:25

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

Příspěvek 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 ...
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

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

Příspěvek 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;
};

Pivrnec78
Příspěvky: 73
Registrován: 30 dub 2017, 15:25

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

Příspěvek 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.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

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

Příspěvek 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)
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

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

Příspěvek 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ě.
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

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

Příspěvek od gilhad »

Auu, neprecetl jsem si, ze jde o picaxe forum, jako bych nic nerekl ....
Pivrnec78
Příspěvky: 73
Registrován: 30 dub 2017, 15:25

PWM pro rozběh motoru

Příspěvek 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ě ...
Odpovědět