Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# cykly a výpočet

Dobrý den, potřeboval bych pomoci, potřebuju, aby po kliknutí na button vypočítal program odpot z txtR1 a txtR2 podle vzorce: [http://upload.wikimedia.org/math/8/6/d/86dfb7e66c7  89125d1f1263d61de7149.png]
R1= txtR1 a R2=txtR2 aby byly ošetřené proti chybé kdbyy někdo do textového souboru napsal záporné číslo, nebo pismena, aby to vyhodilo hlášku špatně zadaná hodnota,musí být Použit cyklus s podmínkou na konci, zda má program skončit. celý rpogram už mám jen toto mi chybí, děkuji mnoho krát za rady,

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ak máš len R1 a R2, tak žiaden cyklus nepotrebuješ. To, či je číslo zadané správne, skontroluješ po…
los 12.06.2010 21:29
los
A copak je na výjimkách v Javě dementního? :-) Partial class je prostě hovadina, nevidím v tom žádn…
MaSo 14.06.2010 12:25
MaSo
To sa naozaj pýtaš, čo je dementného na výnimkách v Jave? Výnimky v Jave bol experiment, ktorý sa je…
los 14.06.2010 18:20
los
To sa naozaj pýtaš, čo je dementného na výnimkách v Jave? Výnimky v Jave bol experiment, ktorý sa je…
MaSo 15.06.2010 07:33
MaSo
Jasné, a "Ja jsem jednoznačně pro checked exceptions" nie je kec, ale konkrétny argument. ;-) Nevie…
los 15.06.2010 21:38
los
Hovadina jako Dictionary<int, int> v javě ani nejde :-) Možná tak HashMap<Integer, String> - do has…
MaSo 16.06.2010 07:21
MaSo
Že Dictionary<int, int> v Jave ani nejde, nie je chyba na strane C#. Že 5.ToString() sa ti zdá byť š…
los 16.06.2010 22:54
los
C# neovládam ani z poloviny, tak jako Javu. To přiznávám. To ale jestě neznamená, že se mi musí všec…
MaSo 17.06.2010 09:20
MaSo
Za tvojimi výhradami je skôr osobná averzia než nejaké objektívne príčiny - a to vo všetkých bodoch,…
los 17.06.2010 18:15
los
To není osobní averze (kromě bodu 1), ale jsou to fakta... poslední
MaSo 18.06.2010 07:31
MaSo

Ak máš len R1 a R2, tak žiaden cyklus nepotrebuješ.

To, či je číslo zadané správne, skontroluješ pomocou metódy double.TryParse, ktoré ti v prípade úspechu uloží rozpoznanú hodnotu do výstupnej premennej, takže nepotrebuješ potom volať double.Parse.

To, či je číslo kladné, skontroluješ pomocou porovnania s 0.

Vzorec pre výpočet výsledného odporu (a vlastne aj všetko ostatné) ti už napísal MM.

Výsledok by mohol vyzerať takto:

static bool TryParseResistanceValue(string text, out double result)
{
	// hodnota nemá formát čísla
	if (!double.TryParse(text, out result))
		return false;
	
	// hodnota nie je kladná
	if (result <= 0)
		return false;
	
	// všetko je o.k.
	return true;
}

void btnpocitej_Click(object sender, EventArgs e)
{    
	double r1, r2;

	if (!TryParseResistanceValue(txtR1.Text, out r1))
	{
		MessageBox.Show("Zadaný odpor R1 musí byť kladné číslo.");
		return;
	}

	if (!TryParseResistanceValue(txtR2.Text, out r2))
	{
		MessageBox.Show("Zadaný odpor R2 musí byť kladné číslo.");
		return;
	}
	
	double result = 1 / ((1 / r1) + (1 / r2));
	
	txtvysledek.Text = string.Format("{0} Ω", result);
}

OT k nemiestnym komentárom k C#: :-)
Lepšie ako v dementnej Jave s dementne riešenými výnimkami, ktorá navyše nepozná ani partial class. :-p

A copak je na výjimkách v Javě dementního? :-)

Partial class je prostě hovadina, nevidím v tom žádný přínos. Naopak to dělá bordel v kódu.

O tom, co všechno v C# vyhazuje vyjímku už se raději zmiňovat nebudu, abych si ušetril nervy. Např. dementněji napsanou HashMapu jsem jestě neviděl.

To sa naozaj pýtaš, čo je dementného na výnimkách v Jave? Výnimky v Jave bol experiment, ktorý sa jednoducho nevydaril. Checked exceptions sa pri malých veciach môže zdať ako dobrý nápad, ale tam to končí.

To, že v partial class práve ty nevidíš žiaden prínos, neznamená, že je to proste hovadina. Pekným príkladom použitia je práve ten vygenerovaný kód formulára, ktorý by inak práve vytváral ten tvoj bordel. :-)

Neviem, čo konkrétne sa ti nezdá na tom, že v C# je množstvo výnimiek, alebo čo je zlé na implementácii Dictionary, takže k tomu ti nič nenapíšem. :-p

To sa naozaj pýtaš, čo je dementného na výnimkách v Jave? Výnimky v Jave bol experiment, ktorý sa jednoducho nevydaril. Checked exceptions sa pri malých veciach môže zdať ako dobrý nápad, ale tam to končí.

Takový kec umí napsat každý, konkretně prosím. Proč by to mělo končit? Ty už jsi někdy naprogramoval v C# něco většího, něž kalkulačku dvou odporů? Asi ne, protože jinak bys tohle nemohl napsat...:-) Ja jsem jednoznačně pro checked exceptions.

To, že v partial class práve ty nevidíš žiaden prínos, neznamená, že je to proste hovadina. Pekným príkladom použitia je práve ten vygenerovaný kód formulára, ktorý by inak práve vytváral ten tvoj bordel. :-)

Mně by totiž nikdy nenapadlo mít View a Controller dohromady. To může udělat jedině cékřížkář. :-P

Neviem, čo konkrétne sa ti nezdá na tom, že v C# je množstvo výnimiek, alebo čo je zlé na implementácii Dictionary, takže k tomu ti nič nenapíšem. :-p

Vadí mi jen, že když něco vyhazuje vyjímku, tak se nemusí zachytit nic víc...:-) Když programuješ služby, které musí běžet 24/7, tak to nakonec skončí tak, jak píše MM.. a to trajblokově orientovaným kódem. :-)
Ještě jsem neviděl HashMapu, která vyhazuje vyjímku, když se snažíš vzít něco, co tam není. Logické bych viděl vrátit null. A vůbec celé "Collection API" je v C# super... obsahuje asi tři kolekce (v 3.5), ze kterých není pro konkurenčí vývoj dobrá ani jedna...

Jasné, a "Ja jsem jednoznačně pro checked exceptions" nie je kec, ale konkrétny argument. ;-)

Neviem, čo tu splietaš o View a Controller dohromady - veď to nemá s partial class nič spoločné. Tam ide hlavne o ten generovaný kód, ktorý môžeš vďaka partial class pekne oddeliť od svojho vlastného kódu, čo uľahčuje prácu nielen tebe, ale aj tomu, čo programuje samotný generátor kódu, a v konečnom dôsledku aj tomu, kto to bude po tebe opravovať.

Keď ti vadí, že výnimka sa nemusí zachytiť, tak ti asi vadia aj runtime výnimky - alebo na Javu máš iný meter? Takže vďaka checked exceptions by to podľa teba nekončilo "trajblokově orientovaným kódem", aha - to snáď nemyslíš vážne. No a ak pre teba znamená, že služba bežiaca 24/7 musí požierať všetky výnimky, tak by si mal začať programovať tie kalkulačky, ktoré si asi preskočil. ;-)

Takže podľa teba by Dictionary<int, int> mal logicky vrátiť null (alebo 0?), ak neobsahuje hľadaný záznam. Skrátka prípad, že slovník neobsahuje záznam považuješ za rovnaký, ako keby obsahoval null (alebo 0?). Hmmm, no neviem, čo na to povedať, normálne mi došli argumenty</sarkazmus>. :-D
Snáď len, že možno ti bude vyhovovať metóda TryGetValue. ;-)

BTW: Ešte môžeme prebrať, či používať tabelátory alebo medzery a či má byť zložená zátvorka na konci riadku alebo až na nasledujúcom, lebo mám pocit, že by sme si perfektne pokecali. :beer:

Hovadina jako Dictionary<int, int> v javě ani nejde :-)

Možná tak HashMap<Integer, String> - do hashmapy nejdou narvat primitivní datové typy, jen objekty. Takže ten null mi přijde celkem v pohodě.

To, že v C# jsou int poloviční objekty nebo co, pak vede k tomu, že kompiler pustí šílenosti jako 5.ToString() apod. Fakt super. :-D

No a ak pre teba znamená, že služba bežiaca 24/7 musí požierať všetky výnimky, tak by si mal začať programovať tie kalkulačky, ktoré si asi preskočil. ;-)

Netvrdím, že musí. Ale nesmí spadnout, kvůli nějaké dementní vyjimky, kterou jsem někde přehledl v dokumentaci. Raději ať zahodí jednu zprávu (tu, která tu vyjímku způsobila) a běží dále. To, že by se někdo nedovolal na záchranku je horší, než to, že mám celý kód v try - catch.

Neviem, čo tu splietaš o View a Controller dohromady - veď to nemá s partial class nič spoločné. Tam ide hlavne o ten generovaný kód, ktorý môžeš vďaka partial class pekne oddeliť od svojho vlastného kódu, čo uľahčuje prácu nielen tebe, ale aj tomu, čo programuje samotný generátor kódu, a v konečnom dôsledku aj tomu, kto to bude po tebe opravovať.

Možná to někomu pomáhá, ale mě jako člověka, kterému řekli ať najednou programuje v C# to maximálně zmátlo. Ani v po 3/4 roce vývoje v tom nevidím, žádný přínos. Prostě zvyklý mít třídu jen v jednom souboru.

PS: TryGetValue - jsem neznal, cékřížek nestuduji, jen v něm programuji, ale to se doufám brzy změní a zas budu veselý a šťastný.

Že Dictionary<int, int> v Jave ani nejde, nie je chyba na strane C#. Že 5.ToString() sa ti zdá byť šialenosť, tiež nie je chyba na strane C#. Že ťa partial zmiatlo a nevidíš v ňom prínos, tiež nie je chyba na strane C#.

Dosť si protirečíš - ak program nesmie spadnúť kvôli výnimke, ktorú si "přehledl v dokumentaci", tak potom predsa musí požierať všetky výnimky. Na čo ti je program, ktorý síce běží dále, ale běží blbo? Vieš si aspoň trochu predstaviť, ako ťažko sa vďaka takémuto pokémonovskému ošetrovaniu výnimiek môže dohľadávať skutočná príčina závažnejšej chyby, ktorá kvôli tomu potom niekde neskôr nastane?

Ak závisí to, či sa niekto dovolá na záchranku len od toho, či je kód v try-catch alebo nie, tak to sa stala chyba už niekde v návrhu celého systému a nejaký catch navyše to nezachráni.

cékřížek nestuduji, jen v něm programuji

Tak týmto si to totálne zabil. Ak tomu jazyku nerozumieš, tak si odpusť tie svoje poznámky, ktorými si ma naštartoval. A keď máš nejaký mentálny problém s triedou, ktorú nepoznáš ale používaš, tak si skús prečítať dokumentáciu alebo vyhľadať jej použitie na webe. Veď to je základ programovania v akomkoľvek jazyku.

C# neovládam ani z poloviny, tak jako Javu. To přiznávám. To ale jestě neznamená, že se mi musí všechno libit...:-)

C# mi nepřirostl k srdci a už asi ani nepřiroste, byl jsem násilim donucen v něm programovat, protože projekty v Javě u nás na firmě skončily.

Doufám, že se už brzy vrátim k Javě, a nebudu se muset C# více zabývat a vrátim se k jazyku, kde (který):
1. se dají metody volat jen na objekty (ne na čísla) :-)
2. existuje něco jako Maven (když chci nějakou knihovnu, tak jen napíšu její jméno a sama se mi stáhne z netu)
3. IDE nemá 8 GB a nepotřebuje pro svoji instalaci 3 restarty (navíc neumí ani polovinu toho, co 350ti megový Eclipse - myslím co se týče refaktoringu a práce se zdrojovým kódem)
4. IDE nepadá při jednoduchém refatoringu (např. přejmenování konstant v trochu rozsáhlejším solution)
5. mám daleko lepší podporu pro konkurenčí programování (nevím co je v .NET 4.0, předpokládám (doufám), že okopčený balíček java.util.concurrent)
6. většina knihoven je free a má daleko rychlejší vývoj
7. je platform independent

Díky bohu, za to, že ve VS2010 je aspoň funkce "generate from usage", bez které bylo třeba programovaní stylem TDD úplně nemožné.

PS: Je mí líto, že jsem tě nastartoval, ale doufám, že tuhle naši diskuzi nebereš nějak osobně. Jde v podstatě o hovno...:beer:

Za tvojimi výhradami je skôr osobná averzia než nejaké objektívne príčiny - a to vo všetkých bodoch, ktoré si napísal. Mne ani tak nevadí, že sa ti nepáči C#, ale že ho úplne odsudzuješ bez toho, aby si sa ho snažil pochopiť. Ale neberiem to osobne - len som chcel, aby si poznal aj názor z druhej strany.

Zpět do poradny Odpovědět na původní otázku Nahoru