C# týden C# týden
Pořádné programy s pořádnou klávesnicí zdarma. Více zde
Pouze tento týden sleva až 80 % na C# .NET

Diskuze: Příliš mnoho podmínek v JavaScript

JavaScript JavaScript Příliš mnoho podmínek v JavaScript American English version English version

Aktivity (1)
Avatar
Josef Petrák:10.6.2018 17:35

Dobrý den,

chtěl bych se prosím zeptat, jaký je nejjednodušší způsob na
programování tohoto příkladu na webové stránky. Rád bych si to vytvořil
sám, ale připadá mi, že můj způsob je příliš složitý, protože by tam
bylo spousta podmínek. Šlo by o vypočítávání objemu, rozměrů a cen
nádrží, s využitím běžného vzorce pro objem kvádru.

Něco podobného, jako je
zde: https://www.calculatorsoup.com/…larprism.php
, ale chtěl bych to ještě vylepšit přinejmenším o to, že by mohli zadat
rozměry nádrže v libovolných jednotkách (mm, cm, m, atd.), přičemž
výsledek by se ukázal ve vícero jednotkách najednou (litry, m3, apod).
K tomu by byly ještě další varianty, kdy budou znát buď všechny strany
nádrže anebo třeba jen 2 strany + objem a dopočítá se výška atd. Variant
výpočtů k objemu, cen atd by byla celá řada.

Když to budu dělat přes podmínky (if), tak jich bude opravdu mnoho.
Potřeboval bych proto poradit, jestli to dělat přes podmínky, cykly,
anebo přes úplně něco jiného.

Velice děkuji za jakoukoliv radu, Petrák

Zkusil jsem: Zkoušel jsem to vytvořit přes podmínky.

Chci docílit: Zjednodušení kódu

 
Odpovědět 10.6.2018 17:35
Avatar
David Hynek
Redaktor
Avatar
David Hynek:10.6.2018 20:51

kdyz neuvedes svuj kod tak asi neporadime. Ale ja JS pouzivam i na mnohem slozitejsi vypocty a bez problemu. Nejak nerozumim pojmu "prilis mnoho podminek"

Editováno 10.6.2018 20:53
Nahoru Odpovědět 10.6.2018 20:51
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Josef Petrák:10.6.2018 21:36

To co jsem se snažil udělat nebylo funkční tak jak by mělo. Spíš mi jde
o to, že je hodně variant kombinací a já nevím jestli je správné na
každou z nich vytvářet podmínku. Obecný příklad: Kdyby rozměr bylo možné
dát v 10 libovolných jednotkách a výsledek by se měl zobrazit v jedné z
10 jednotek, znamená to, že se musí udělat 10x 10 = 100 podmínek anebo
se to dělá nějakým jednodušším a co do velikosti kódu kratším způsobem?
Děkuji

 
Nahoru Odpovědět 10.6.2018 21:36
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Josef Petrák
Petr Stastny:10.6.2018 22:20

Správně jsi přišel na to, že to jde udělat lépe. Nejjednodušší je to udělat tak, že vstup si vezmeš v nějaké jednotce, převedeš třeba na m (nebo na jinou základní jednotku) a potom to spočítáš a převedeš na koncovou jednotku, potom bys měl jenom 20 podmínek.

Ale jde to udělat ještě lépe: Naše jednotky jdou po desítkách: Udělej si třeba pole jednotek délky (mm, cm, dm, m, --, --, km) - každé políčko je *10 (proto jsou před kilometrem vynechaná políčka). Dokážeš přijít na to, jak tohle pole použít na to, abys mohl převádět jednotky (třeba m na km) jednoduše a elegatně? Když to uděláš dobře, půjde jeden kód použít na jednotky vzdálenosti, času, ... - jenom si pro kažý druh jednotek připravíš pole.

 
Nahoru Odpovědět 10.6.2018 22:20
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Josef Petrák
Marek Uhlik:10.6.2018 22:26

No a nestačilo by zadat to v nějaké jednotce , převést si to na základní jednotky,potom vypočítat a pak to převedeš zase na nějakou jednotku ?

 
Nahoru Odpovědět 10.6.2018 22:26
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Marek Uhlik
Petr Stastny:11.6.2018 6:24

Ano, takhle jsem myslel 1. cast sve odpovedi. Ta druhela cast je o tom, ze kdyz si udela tabulku prevodu, nebude muset do zblbnuti delat

if(x="km" && y="m") x *= (1/1000.0)

 
Nahoru Odpovědět 11.6.2018 6:24
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Petr Stastny
Marek Uhlik:11.6.2018 7:30

No jasný.Taky mi přijde tabulka převodů asi nejlepší řešení..Já tam předtím neviděl ,že už jsi tam něco napsal a když jsem to dopsal tak už bylo pozdě. :D

 
Nahoru Odpovědět 11.6.2018 7:30
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Josef Petrák
Peter Mlich:11.6.2018 7:45

'nebylo funkční'
A jak chces zjistit, kde mas v kodu chybu, kdyz si jej nechavas pro sebe?

Chyby funkcnosti se daji najit pres javascriptovou / webovou konzolu. Ve Firefox je to Nastroje - Vyvoj webu - webova konzola. Pak otevres tvou stranku nebo das F5, pokud ji uz mas, a vypise to funkcni chyby. Logicke chyby to neresi, to musis vedet ty, zda je to ok. Ale na ty se da prijit postupnym alertovanim promennych.

<script>
var a,b,c;
a = 2;
b = 3;
c = 4;
alert(['objem kvadru', a * b * c]);
</script>
 
Nahoru Odpovědět 11.6.2018 7:45
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Josef Petrák
Petr Stastny:11.6.2018 8:14

Debugovací okno otevřeš F12. Doporučuju to nedělat, jako říkal Petr Milch - normálně v debugovacím okně můžeš prohlížet proměnné, krokovat kód... Najdi si video, jak se to používá. A kdybys chtěl vypsat nějakou proměnnou, nepoužívej alert, ale console.log

a=10;
console.log(a);

Tohle vypisuje věci (můžeš tomu dát cokoliv: proměnnou, text, číslo, objekt, ...) přímo do konzole, kde se ti to hezky zobrazí, můžeš tím scrollovat...

Ten alert jenom zobrazí vyskakovací okno a jakmile ho zavřeš, zmizí, ale v consoli bude to, co jsi napsal pomocí console.log pořád a můžeš se tím jednoduše probírat.

Editováno 11.6.2018 8:15
 
Nahoru Odpovědět 11.6.2018 8:14
Avatar
Odpovídá na Josef Petrák
Vladislav Ladicky:11.6.2018 12:06

Ja len, že v tom príklade čo si uviedol na priloženom linku nemusí byť použitý ani jeden "if".

 
Nahoru Odpovědět  +2 11.6.2018 12:06
Avatar
Josef Petrák:11.6.2018 20:57

Zatím díky všem, zkusím to tím způsobem: převod do základní jednotky, potom výpočet a na závěr převod do požadované jednotky.

 
Nahoru Odpovědět 11.6.2018 20:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.