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,

loading...
Předmět Autor Datum
A co nevies do programu napisat znamienko +, alebo jaky mas konkretne problem? Znamienko + je na kla…
MM.. 08.06.2010 15:53
MM..
jak to osetrit bych potreboval vedet
silverrrr 08.06.2010 21:27
silverrrr
A co mas ako vstup? String? Jak to prevadzas na cislo? Napriklad mozes pouzit navratovu hodnotu fcie…
MM.. 08.06.2010 21:55
MM..
double R1 = Convert.ToDouble(txtR1.Text); int R2 = Convert.ToInt32(txtR2.Text); //převrácený hodnota…
silverrrr 09.06.2010 17:18
silverrrr
Jezisi kriste zmiluj sa nad nami ked takto bude programovat nasledujuca generacia vyvojarov. CPU vie…
MM.. 10.06.2010 01:38
MM..
a naco by to malo hlasit chybu? proste prekonvertuj zakazdym tu zadanu hodnotu do absolutnej hodnoty…
Michal2 08.06.2010 15:55
Michal2
To si fajny expert, az budes delit nulou tak ten tvoj program bude krasne koncit ako "program proved…
MM.. 08.06.2010 15:57
MM..
Nepracuješ v Mrkvosoftu ? :-D
CoWayger 08.06.2010 16:08
CoWayger
Já to nechápu....:-) To máš mít dva soubory? V jednom bude hodnota R1 a ve druhém R2? Tam snad někd…
MaSo 08.06.2010 22:03
MaSo
Použit cyklus s podmínkou na konci, zda má program skončit. na skoro vše už jsem přišel, jen toto...…
silverrrr 08.06.2010 22:04
silverrrr
Cyklus s podmínkou na konci se dělá: do { tělo cyklu } while (podmínka); Co na tom nejde?
MaSo 08.06.2010 22:06
MaSo
jak bys napsal přímo cyklus s podmínkou na konci, zda má program skončit
silverrrr 09.06.2010 17:16
silverrrr
Nechápu jaký cyklus, když tam máš GUI. Ukaž celý zdroják...
MaSo 09.06.2010 17:26
MaSo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin…
silverrrr 09.06.2010 17:33
silverrrr
To není všechno...
MaSo 09.06.2010 17:34
MaSo
je, tohleto když napíšu hodnoty do txt tak mi to vypočítá správně celkový odpor
silverrrr 09.06.2010 17:45
silverrrr
Neni, jestě chybí část té třídy (partial class demence).
MaSo 09.06.2010 17:48
MaSo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin…
silverrrr 09.06.2010 19:35
silverrrr
Zacni programom "hello world" Je to zvycajne na zaciatku kazdeho tutorialu. Od konca sa uci dost blb…
MM.. 10.06.2010 01:43
MM..
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
Experiment, který se nevydařil? Na to si přišel jak? Doteď se spousta lidí včetně mnoha respektovaný…
siberian 15.06.2010 07:32
siberian
Ak by sa ten experiment vydaril, tak by bol aj v C#. Ako si prišiel na to, že si v C# nechali rezerv…
los 15.06.2010 21:38
los
Takhle to nejde odvodit. To by znamenalo, že při návrhu C# přebrali z Javy jen to nejlepší a z toho…
siberian 16.06.2010 07:44
siberian
Samozrejme že pri návrhu C# prebrali z Javy len to najlepšie a z toho ostatného sa ponaučili - veď b…
los 16.06.2010 09:50
los
Můžeš uvézt nějaké příklady, z čeho se poučili? Co jsem jednou srovnával tyto dvě technologie, nevzp…
siberian 16.06.2010 10:34
siberian
Pozri si napr. toto porovnanie, ktoré je napísané viac-menej nestranne.
los 16.06.2010 23:53
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
Vynimka sa vyhodit musi ked funkcia nemoze dalej pokracovat (t.j. ked nieco je zle). Druha moznost (…
MM.. 14.06.2010 19:09
MM..

A co mas ako vstup? String? Jak to prevadzas na cislo? Napriklad mozes pouzit navratovu hodnotu fcie ktorou ten string prevadzas na cislo (resp. chytat jej exception, v sekcii Try - Catch), a budes vediet ze ci to cislo bolo alebo nie. Alebo milion inych sposobov (prejst si v cykle kazdy znak, alebo si zadat do google.com slova: C# string test numeric)... Idealne ked pouzijes to co chce od teba ucitel = co ste sa naposledy ucili, ak to je domaca uloha.

P.S: Konkretne mozes pouzit napr. double.TryParse
Podrobne info o parametroch je napr. na msdn.microsoft.com

P.S.2. a na prevod na double sa da pouzit double.Parse, co je logicke ked sa to da testovat pomocou TryParse

P.S.3. a zaporne cislo samozrejme otestujes normalne pomocou if(neco < 0.0), po tom prevode na double. A testoval by som radsej aj 0.0 ptz to je specialny pripad ked vysledok bude vzdy nula, ale mozno to ani netreba testovat ked pouzivas double (tam je definovane aj nekonecno co vznikne asi po deleni nulou u double) treba skusit ci bude spravny vysledok (0.0) ak bude niektory R=0.0.
.. alebo v parametroch toho Parse (a TryParse) nepovolis vobec znamienko -, to tusim tiez ide.

double R1 = Convert.ToDouble(txtR1.Text);
            int R2 = Convert.ToInt32(txtR2.Text);
            //převrácený hodnota(mocnina na -1)
            Double vypocet = Math.Pow(R1, -1) + Math.Pow(R2, -1);
            //výsledek  zaokrouhlený na 3 desetinná místa
            Double vysledek = Math.Round(Math.Pow(vypocet, -1), 3);
            txtvysledek.Text =  vysledek + " Ω";

tak jsem to napsal

Jezisi kriste zmiluj sa nad nami ked takto bude programovat nasledujuca generacia vyvojarov.
CPU vie aj delit, znamienko /

double r1=neco; // SCHVALNE je to double aby aj ciastkove delenia prebiehali v double
double r2=neco;
double vysledok = 1/((1/r1)+(1/r2));

Pocitat mocninu namiesto delenia je sposob ala MS = nevadi ze Windows bootuju pol hodinu ked by mohli bootovat 5 sekund. Mocnina sa rata nekonecnym radom.

A nechapem preco vstup prevadzas na integer, to sa u vas neda zadat do vstupu desatinne cislo napr. 3,2 ohmu? To co je za program? Pre zakl.skolu 1.rocnik?

Já to nechápu....:-)
To máš mít dva soubory? V jednom bude hodnota R1 a ve druhém R2?

Tam snad někde voláš double.Parse(string r1), tak prostuduj msdn, protože to určitě vyhazuje vyjímku, když se to nezparsuje dobře.

OT: V dementním C# totiž vyhazuje vyjímku každá pičovina, tak se v MS rozhodli, že se nebudou muset zachytávat. Moje nervy...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WFA_zavěrečná_ráce
{
    public partial class frmodpor : Form
    {
        public frmodpor()
        {
            InitializeComponent();
        }

        private void panel_Paint(object sender, PaintEventArgs e)
        {
            Graphics kresliciPlocha = e.Graphics;
            kresliciPlocha.DrawLine(Pens.Black, 110, 50, 200, 50);
            kresliciPlocha.DrawLine(Pens.Black, 110, 100, 200, 100);
            kresliciPlocha.DrawLine(Pens.Black, 110, 100, 110, 50);          
            kresliciPlocha.DrawLine(Pens.Black, 110, 75, 80, 75);
            kresliciPlocha.DrawLine(Pens.Black, 200, 65, 200, 35);
            kresliciPlocha.DrawLine(Pens.Black, 200, 65, 250,65);
            kresliciPlocha.DrawLine(Pens.Black, 200, 35,250,35);
            kresliciPlocha.DrawLine(Pens.Black, 250, 65, 250, 35);
            kresliciPlocha.DrawLine(Pens.Black, 200, 85, 200, 115);
            kresliciPlocha.DrawLine(Pens.Black, 200, 85, 250, 85);
            kresliciPlocha.DrawLine(Pens.Black, 200, 115, 250, 115);
            kresliciPlocha.DrawLine(Pens.Black, 250, 50, 350, 50);
            kresliciPlocha.DrawLine(Pens.Black, 250, 100, 350, 100);
            kresliciPlocha.DrawLine(Pens.Black,  350, 100,350,50);
            kresliciPlocha.DrawLine(Pens.Black, 350, 75, 400, 75);
            kresliciPlocha.DrawLine(Pens.Black, 250, 85, 250, 115);
            kresliciPlocha.FillEllipse(Brushes.Black, 106, 72, 6, 6);
            kresliciPlocha.FillEllipse(Brushes.Black, 347, 72, 6, 6);



        }

        private void txtvysledek_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnpocitej_Click(object sender, EventArgs e)
        {
            double R1 = Convert.ToDouble(txtR1.Text);
            int R2 = Convert.ToInt32(txtR2.Text);
            //převrácený hodnota(mocnina na -1)
            Double vypocet = Math.Pow(R1, -1) + Math.Pow(R2, -1);
            //výsledek  zaokrouhlený na 3 desetinná místa
            Double vysledek = Math.Round(Math.Pow(vypocet, -1), 3);
            txtvysledek.Text =  vysledek + " Ω";


            

        }

        private void btninfo_Click(object sender, EventArgs e)
        {
            
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WFA_zavěrečná_ráce
{
    public partial class frmodpor : Form
    {
        public frmodpor()
        {
            InitializeComponent();
        }

        private void panel_Paint(object sender, PaintEventArgs e)
        {
            Graphics kresliciPlocha = e.Graphics;
            kresliciPlocha.DrawLine(Pens.Black, 110, 50, 200, 50);
            kresliciPlocha.DrawLine(Pens.Black, 110, 100, 200, 100);
            kresliciPlocha.DrawLine(Pens.Black, 110, 100, 110, 50);          
            kresliciPlocha.DrawLine(Pens.Black, 110, 75, 80, 75);
            kresliciPlocha.DrawLine(Pens.Black, 200, 65, 200, 35);
            kresliciPlocha.DrawLine(Pens.Black, 200, 65, 250,65);
            kresliciPlocha.DrawLine(Pens.Black, 200, 35,250,35);
            kresliciPlocha.DrawLine(Pens.Black, 250, 65, 250, 35);
            kresliciPlocha.DrawLine(Pens.Black, 200, 85, 200, 115);
            kresliciPlocha.DrawLine(Pens.Black, 200, 85, 250, 85);
            kresliciPlocha.DrawLine(Pens.Black, 200, 115, 250, 115);
            kresliciPlocha.DrawLine(Pens.Black, 250, 50, 350, 50);
            kresliciPlocha.DrawLine(Pens.Black, 250, 100, 350, 100);
            kresliciPlocha.DrawLine(Pens.Black,  350, 100,350,50);
            kresliciPlocha.DrawLine(Pens.Black, 350, 75, 400, 75);
            kresliciPlocha.DrawLine(Pens.Black, 250, 85, 250, 115);
            kresliciPlocha.FillEllipse(Brushes.Black, 106, 72, 6, 6);
            kresliciPlocha.FillEllipse(Brushes.Black, 347, 72, 6, 6);



        }

        private void txtvysledek_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnpocitej_Click(object sender, EventArgs e)
        {


            int R1text;
            if (!int.TryParse(txtR1.Text, out R1text)) 
            {
                MessageBox.Show("Zadaný odpor R1 musí být celé číslo");
                return;
            }

            int R2text;
            {
                if (!int.TryParse(txtR2.Text, out R2text)) 
                MessageBox.Show("Zadaný odpor R2 musí být celé číslo");
                return;
            }


            double R1 = Convert.ToDouble(txtR1.Text);
            int R2 = Convert.ToInt32(txtR2.Text);
            //převrácený hodnota(mocnina na -1)
            Double vypocet = Math.Pow(R1, -1) + Math.Pow(R2, -1);
            //výsledek  zaokrouhlený na 3 desetinná místa
            Double vysledek = Math.Round(Math.Pow(vypocet, -1), 3);
            txtvysledek.Text = vysledek + " Ω";



            

        }

        private void btninfo_Click(object sender, EventArgs e)
        {
            
        }
    }
}

skusil jsem tu chybu ošetřit, když napišu do txt nejaky pismeno tk mi to vyhodi tu hlašku takže dobrý, ale když tam zadam zapornou hodnotu tak jí to tam nechá, jak to mam vyřešit, a hlavne mi nefunguje ikdyž do obou hodnot zadam čísla, tak se nic nestane. moc prosim poradte jak to mam napsat

Zacni programom "hello world" Je to zvycajne na zaciatku kazdeho tutorialu. Od konca sa uci dost blbo.

ked pouzivas TryParse, tak na prevod je dobre pouzit Parse aby nevznikali excepsny pri blbych vstupoch apod. Som ti to pisal. Je to aj logicke.

P.S. a pisal som ti uz predvcerom aj to, ze ako sa da osetrit zaporna hodnota. TO SU ABSOLUTNE ZAKLADY.

P.S.2. a nepouzivaj na take vypocty integery. Aby si nezistil s hrozou ze 1/2=0 (ptz tak funguje datovy typ int). Realne cislo je datovy typ double.

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

Experiment, který se nevydařil? Na to si přišel jak? Doteď se spousta lidí včetně mnoha respektovaných nemůže shodnout, jestli to byl správný tah nebo ne, asi i proto si nechali v C# rezervu pro jejich pozdější snadné zavedení. Problém je v tom, že spousta programátorů je vyhazuje tam, kde by měly být použité spíš běhové. To je ale problém neschopných programátorů a ne jazyka. Je spousta případů, kde byly použity ve správných případech a kde jsou přínosem. Mně se ten koncept líbí a jsem rád, že v Javě jsou.

Takhle to nejde odvodit. To by znamenalo, že při návrhu C# přebrali z Javy jen to nejlepší a z toho špatného se ponaučili. Kdyby to tak bylo, tak by asi těžko v C# mohl každý objekt figurovat v roli monitoru jako v Javě, když se zjistilo, jak ne moc moudrý návrh tohle byl apod. O té rezervě jsem to četl v nějakém článku na netu, nevzpomínám si ale, kde to bylo.

Můžeš uvézt nějaké příklady, z čeho se poučili? Co jsem jednou srovnával tyto dvě technologie, nevzpomínám si na něco, co by u C# a .NET oproti Javě nějak hodně vychytali. Do podrobna jsem to ale neřešil a podle toho, co píšeš, se ve srovnání Javy a C# více orientuješ, tak bych se rád možná dozvěděl něco nového. Díky.

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.

Vynimka sa vyhodit musi ked funkcia nemoze dalej pokracovat (t.j. ked nieco je zle). Druha moznost (bez pouzitia vynimky) by bola ze by fcia vratila navratovu hodnotu ze error, to je ale prave historicky postup ktory robi programatorom problem (musi pri kazdom volani fcii furt testovat navrat.hodnotu a potom mas tam 150 vnorenych if, a ani svaty nevie v ktorom if prave som, co je pracne a kazdy na to sere a potom je aplikacia uplne nahovno). Cim viac vynimiek to hadze tym lepsie ptz tym lepsie si mozes osetrit rozne problemy roznymi sposobmi, a pekne oddelene od hlavnej rutiny.
Ked to nechces, tak to mozes robit tak jak programuje microsoft, ze asi jeden try-catch cez cely program a v catch duchaplna hlaska "stala sa neznama chyba". Milujem tieto MS hlasky, fakt prinosne :-D Tak to je ked je len jedna exception na vsetky chyby.

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

loading...