Diskuze: Kalkulačka
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Aha chapem, tu to nie je int čiže if ((vyber < 1) || (vyber > 4))
{
Console.WriteLine("Zadajte platnú operáciu");
toto mi nebude fungovat
S charem se pracuje jinak, musíš ho psát do apostrofů ''. Rozsah výběru můžeš buď kontrolovat 4mi podmínkami nebo by to mělo jít např. pomocí contains na poli s prvky '1', '2', '3', '4'
No mal som iný plán ale keď si mi pripomenul Contains tak sa to
zjednoduší
Nedá sa nejako napísať keď mám 5 podmienok a keď sa nestane ani jedna zo 4 tak sa vykoná 5? Robím tento príklad cez podmienky a vedel by som to spraviť keby že tam pridám ešte jednu premenú, ktorá to bude kontorlovať..... ale nie je nejaká ľahšia možnosť, niečo ako píšem v prvom riadku tohoto komentu?
Jestli se to týká tohoto příkladu, tak na to jsem ti již přeci odpovídal.
char[] moznosti = {'1', '2', '3', '4'};
if (moznosti.contains(vyber))
...
else
...
Já bych to asi řešil nullovatelným typem.
Diky ale asi som prebiehal, ten char vidím takto poprvý krát
2× kontrolovat stejnou podmínku je značně nekonzistentní. Použij switch a default, případně else if.
Ještě lepší by bylo použití výjimky.
Však switch v článku je, koukni na poslední zdroják. Raiper chtěl použít podmínky, ty jsou tam někde v předchozím dílu, aby to bylo jednodušší.
Když na to tak koukám, úplně nejjednodušší je si udělat proměnnou a v posledním else té elseif sekvence ji nastavit na false a je to, to mě včera nenapadlo.
Výjimky jsou od tohoto dílu ještě hodně vzdálené Dalo by se to také dobře řešit
nullovatelným typem výsledku.
Toho switche jsem si samozřejmě všiml. Právě proto mi nebylo jasné, proč tam Raiper cpe if.
Konstrukce if a switch jsou sice většinou zaměnitelné, ale Raiper spíš ukázal, jak to nedělat.
Výsledek nemusí být nastaven na null. Stačí ho nenastavit a pak jen detekovat existenci výsledku.
Nenastavení výsledku je spíše styl interpretovaných jazyků, v C# to nevnímám jako čisté řešení a muselo by se to dělat přes reflexi, což je overkill.
Možná by to kompiler ani nezkompiloval, je dost citlivý na neinicializované proměnné.
Sám bych to tak také nedělal. Jen jsem uvažoval nad tím, čím by se dalo nahradit použití výjimky. Čistě asi nijak.
Konstrukce
string pokracovat = "ano";
while (pokracovat == "ano")
...
mi také moc čistě nepřipadne, ale pokud chceš zůstat na levelu pro začátečníky, tak moc dalších možností není.
Zobrazeno 16 zpráv z 16.