Forum » Programiranje » Poenostavitev if pogoja.
Poenostavitev if pogoja.
HotBurek ::
Dobro jutro.
Evo, tokrat me zanima, ali se da sledeča if pogoja kako poenostavit?
To je to.
Evo, tokrat me zanima, ali se da sledeča if pogoja kako poenostavit?
if pogoj_1 or pogoj_2 then: call procedura_1; end if; if pogoj_1 or pogoj_2 or pogoj_3 then: call procedura_2; end if;
To je to.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
- spremenilo: HotBurek ()
bemfa ::
pogoj_1_2 = pogoj_1 or pogoj_2 if pogoj_1_2 then: call procedura_1; end if; if pogoj_1_2 or pogoj_3 then: call procedura_2; end if;
prtenjam ::
Lahko pa zmanjšaš število preverjanj:
if pogoj_1 or pogoj_2 then: call procedura_1; call procedura_2; else: if pogoj_3 then: call procedura_2; end if; end if;
Matjaž Prtenjak
https://mnet.si
https://mnet.si
TheBlueOne ::
Morda je en if prevec
if pogoj_1 or pogoj_2 then:
call procedura_1;
call procedura_2;
else if pogoj_3 then:
call procedura_2;
end if;
if pogoj_1 or pogoj_2 then:
call procedura_1;
call procedura_2;
else if pogoj_3 then:
call procedura_2;
end if;
shm ::
if pogoj_1 or pogoj_2 then: call procedura_1; if pogoj_3 then: call procedura_2; end if; end if;
Wrop ::
Mimaš kaj za poenostavit. Imaš popolno konjuktivno normalno obliko.
Če je p3 resničen in p1 in p2 neresnična, bo pa kaj?
if pogoj_1 or pogoj_2 then:
call procedura_1;
if pogoj_3 then:
call procedura_2;
end if;
end if;
Če je p3 resničen in p1 in p2 neresnična, bo pa kaj?
Zgodovina sprememb…
- spremenil: Wrop ()
kajtimara ::
Mislim, da je že vprašanje narobe zastavljeno.
kaj če je izpolnjen prvi pogoj? se izvrši proc 1 ali 2 ? (najprej proc 1 in potem še proc 2)
kaj če je izpolnjen prvi pogoj? se izvrši proc 1 ali 2 ? (najprej proc 1 in potem še proc 2)
Zgodovina sprememb…
- spremenil: kajtimara ()
joze67 ::
Prvotno obliko boš razumel tudi čez mesec ali leto. Pri drugih se boš vedno ukvarjal z vprašanjem, kaj je hotel pesnik povedat in ali je to to.
HotBurek ::
Ok. Sem nakoncu postuil tako (sicer v malo drugačni obliki).
Če bi med vsemi tremi pogoji bil AND, bi se dalo gnezdit.
Za ta primer, kjer so vsi OR, pa nisem bil siguren.
Hvala za vse primere.
Če bi med vsemi tremi pogoji bil AND, bi se dalo gnezdit.
Za ta primer, kjer so vsi OR, pa nisem bil siguren.
Hvala za vse primere.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
kajtimara ::
obe
Ja saj to želim povedat. Vedno! se ti izpone druga procedura. Vedno!
S to sintakso NE ločuješ pogojev!
Zgodovina sprememb…
- spremenil: kajtimara ()
HotBurek ::
Takole nekak imam sedaj:
if pogoj_1 or pogoj_2 or pogoj_3 then: call procedura_2; if pogoj_1 or pogoj_2: call procedura_1; end if; end if;
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
JohnnyM ::
Tole v resnici ni enako prvemu delcku kode, vrstni red izvajanja procedur si obrnil. Ce to ni pomembno, potem je ok. Sicer pa je optimalna resitev se vedno v drugem odgovoru.
HotBurek ::
Ja, res je.
Popravek:
Popravek:
if pogoj_1 or pogoj_2 or pogoj_3 then: if pogoj_1 or pogoj_2: call procedura_1; end if; call procedura_2; end if;
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Jure14 ::
Pa uporabi kratkostični OR (||) namesto navadnega OR (|).
In pogoje razvrsti tako, da bo najprej "najpogostejši" pogoj. Da se naprej sploh ne izračunava izraz.
In pogoje razvrsti tako, da bo najprej "najpogostejši" pogoj. Da se naprej sploh ne izračunava izraz.
Utk ::
Odvisno od kompliciranosti pogoja 1 in 2, se morda ga bolj splača izračunat enkrat in rezultat shranit. Če že delamo doktorat iz tega.
HotBurek ::
Evo, konkretno imam primerjave takole:
Uporabljam string, ja ok, lahko (moral) bi True ali False.
if product_searchname_status == "diff" or product_autocomplete_made != "true" or product_price_changed == "true": if product_searchname_status == "diff" or product_autocomplete_made != "true": # do something # and do this as well
Uporabljam string, ja ok, lahko (moral) bi True ali False.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
HotBurek ::
Ker zgoraj ne morem popravit, dodaja dodatek, ki predstavlja celoto.
if product_searchname_status == "diff" or product_autocomplete_made != "true" or product_price_changed == "true": if product_searchname_status == "diff" or product_autocomplete_made != "true": # do something # and do this as well if product_autocomplete_made != "true": # and do this too
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
netopypy ::
če je možno, seveda shrani rezultate primerjav (nizov) v spremenljivko tipa boolean in uporabljaj tisto spremenjljivko naprej - je bolj učinkovito in manj možnosti za napake. sicer pa imaš, kakor hočeš, jaz pa si nalijem nov kelih, en sprufan in ugoden mojster je obljubil, da pride naslednji teden urejat.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | vba arrayOddelek: Programiranje | 944 (637) | Vazelin |
» | MySQL poizvedba iz dveh tabelOddelek: Programiranje | 1582 (875) | MrStein |
» | Calc/excel delo s tabeloOddelek: Programiranje | 1478 (1245) | salabajs |
» | pomoč pri poizvedbi MYSQL ..Oddelek: Izdelava spletišč | 1723 (1410) | Volk| |
» | [VB05] Pomoč za Do...Loop - začetnikOddelek: Programiranje | 1177 (1087) | gregor_83 |