Diskuze: Najdi chybu!

C++ C a C++ Najdi chybu!

Avatar
Зайчик
Člen
Avatar
Зайчик:

Zdravím, to forum tady je docela hrůza, takže jsem si pro příznivce C připravil menší hru ;) jmenuje se "Najdi chybu v kódu". Tak nebuďte líný a pěkně si kód projeďte kdo zjistí fatální chybu (nemyslím globální proměnné nebo špatný výpočet) dostane zlatého bludišťáka a pusu.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void romenastrany(void);
void pravyuhel(void);
void vysky(void);
void obsah(void);
void uhly(void);

double a,b,c,odmocnina;
int main()
{
    printf("Zadejte velikosti stran A B C:\n");
    if(scanf("%lf %lf %lf", &a,&b,&c) != 3)
        return 0;

    romenastrany();
    printf("\nObvod: %.4f!", a+b+c);
    obsah();
    vysky();
    uhly();
    system("pause");
    return 0;
}
void romenastrany(void)
{
    if(a == b || b == c || c == a)
    {
        if(a == b && b == c )
            printf("Rovnostrany!");

        else
            printf("Rovnorameny!");
    }
    else
        printf("Trojuhelnik neni rovnostranny ani rovnoramenny!");

}

void vysky(void)
{
    double va,vb,vc,vysledek_vysky_a,deleni_vysky_a,vysledek_vysky_b,deleni_vysky_b,vysledek_vysky_c,deleni_vysky_c;
    va = (a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c);
    vysledek_vysky_a = sqrt(va);
    deleni_vysky_a = 2*a;
    vysledek_vysky_a = vysledek_vysky_a/deleni_vysky_a;

    vb = (a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c);
    vysledek_vysky_b = sqrt(vb);
    deleni_vysky_b = 2*b;
    vysledek_vysky_b = vysledek_vysky_b/deleni_vysky_b;

    vc = (a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c);
    vysledek_vysky_c = sqrt(vc);
    deleni_vysky_c = 2*c;
    vysledek_vysky_c = vysledek_vysky_c/deleni_vysky_c;



    printf("vyska a : %.4f!\n",vysledek_vysky_a);
    printf("vyska b : %.4f!\n",vysledek_vysky_b);
    printf("vyska c : %.4f!\n",vysledek_vysky_c);
}
void obsah(void)
{
    double vzorec,obsah1,obsah2,obsah3;
    vzorec = a+b+c;
    vzorec = vzorec/2;
    obsah1 = vzorec-a;
    obsah1 = obsah1*vzorec;
    obsah2 = vzorec-b;
    obsah2 = obsah1*obsah2;
    obsah3 = vzorec-c;
    obsah3 = obsah2*obsah3;
    odmocnina = sqrt(obsah3);
    printf("\nObsah: %.4f!\n", odmocnina);
    /* kruznice vepsana */
    double prumer_kruznice_vepsane;
    prumer_kruznice_vepsane = odmocnina/vzorec;
    printf("Prumer kruznice vepsane = %.4f!\n", prumer_kruznice_vepsane);
}
void uhly(void)
{
    /* Uhel alfa */
    double uhela,uhela1,vysledek_uhela,uhela2,cislo;
    uhela2 = a*a;
    uhela = b*b+c*c;
    uhela1 = 2*b*c;
    vysledek_uhela = uhela-uhela2;
    vysledek_uhela = vysledek_uhela / uhela1;
    cislo = vysledek_uhela;
    vysledek_uhela = acos(vysledek_uhela);
    printf("Uhel alfa = %.4f rad!",vysledek_uhela);
    vysledek_uhela = vysledek_uhela*180/M_PI;
    printf(" %02d'",(int)vysledek_uhela); /* stupne */
    vysledek_uhela = (vysledek_uhela - floor(vysledek_uhela))*60;
    printf(" %02d'",(int)vysledek_uhela); /* minuty */
    vysledek_uhela = (vysledek_uhela - floor(vysledek_uhela))*60;
    printf(" %02d''\n",(int)vysledek_uhela); /* sekundy */

     /* Uhel beta */
    double uhelb,uhelb1,vysledek_uhelb,uhelb2,cislo1;
    uhelb2 = b*b;
    uhelb = c*c+a*a;
    uhelb1 = 2*c*a;
    vysledek_uhelb = uhelb-uhelb2;
    vysledek_uhelb = vysledek_uhelb / uhelb1;
    cislo1 = vysledek_uhelb;
    vysledek_uhelb = acos(vysledek_uhelb);
    printf("Uhel beta = %.4f rad!",vysledek_uhelb);
    vysledek_uhelb = vysledek_uhelb*180/M_PI;
    printf(" %02d'",(int)vysledek_uhelb); /* stupne */
    vysledek_uhelb = (vysledek_uhelb - floor(vysledek_uhelb))*60;
    printf(" %02d'",(int)vysledek_uhelb); /* minuty */
    vysledek_uhelb = (vysledek_uhelb - floor(vysledek_uhelb))*60;
    printf(" %02d''\n",(int)vysledek_uhelb); /* sekundy */

    /* Uhel gama */
    double uhelc,uhelc1,vysledek_uhelc,uhelc2,cislo2;
    uhelc2 = c*c;
    uhelc = a*a+b*b;
    uhelc1 = 2*a*b;
    vysledek_uhelc = uhelc-uhelc2;
    vysledek_uhelc = vysledek_uhelc / uhelc1;
    cislo2 = vysledek_uhelc;
    vysledek_uhelc = acos(vysledek_uhelc);
    printf("Uhel gama = %.4f rad!",vysledek_uhelc) ;
    vysledek_uhelc = vysledek_uhelc*180/M_PI;
    printf(" %02d'",(int)vysledek_uhelc); /* stupne */
    vysledek_uhelc = (vysledek_uhelc - floor(vysledek_uhelc))*60;
    printf(" %02d'",(int)vysledek_uhelc); /* minuty */
    vysledek_uhelc = (vysledek_uhelc - floor(vysledek_uhelc))*60;
    printf(" %02d''\n",(int)vysledek_uhelc); /* sekundy */

    if(cislo == 0 || cislo1 == 0 || cislo2 == 0)
    {
        printf("Trojuhelnik je pravouhly!\n");
    }
    else if(cislo > 0 || cislo1 > 0 || cislo2 > 0)
    {
        printf("Trojuhelnik je ostrouhly!\n");
    }
    else if(cislo < 0 || cislo1 < 0 || cislo2 < 0)
    {
        printf("Trojuhelnik je tupouhly!\n");
    }


    double polomer_kruznice_opsane;

    polomer_kruznice_opsane = sin(vysledek_uhela);
    polomer_kruznice_opsane = polomer_kruznice_opsane * 2;
    polomer_kruznice_opsane = a/polomer_kruznice_opsane;
    printf("Polomer kruznice opsane = %.4f!\n",polomer_kruznice_opsane);

}
Odpovědět 11.8.2012 20:56
Коммунизм для нашего будущего!
Avatar
Fugiczek
Redaktor
Avatar
Fugiczek:

Sice v tomhle jazyce nedělam, ale proč se cpe void do parametrů metody? To bude ta chyba :D

 
Nahoru Odpovědět 11.8.2012 21:00
Avatar
Зайчик
Člen
Avatar
Зайчик:

škoda že tu není (facepalm) :D ve struktuře nebo v názvu funcí to neni btw

void neco(void);
void neco(void)
{...}

je "gramaticky" správněji než třeba
void neco(void);
neco()
{...}

Nahoru Odpovědět 11.8.2012 21:02
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Зайчик:

a prosím nehádejte ať tu nespammuju "ne v tom to není" chyba musí být hned vidět a buďte si aspoň na 80% jistí než sem něco plácnete (v)

Nahoru Odpovědět 11.8.2012 21:05
Коммунизм для нашего будущего!
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na Зайчик
Fugiczek:

tak to potom je céčko divný :D proč psát 2x void? úplně zbytečný :D tímhle jsem ztratil totálně zájem o další jazyk, prostě java je pro mě nejlepší :D

 
Nahoru Odpovědět 11.8.2012 21:06
Avatar
Зайчик
Člen
Avatar
Odpovídá na Fugiczek
Зайчик:

není divný jen nevíš co to znamená

void je takovej bezparametrovej typ takže pokud je void neco(void);
tak je to bez_typu neco(zatim bez typu); a takhle je to "gramaticky" správně samozřejmě můžeš to psát i void neco(); ale 100% správně je ta první verze ale dál ti to tu vyprávět nebudu čti tutoriály nejlépe ty moje :D

Nahoru Odpovědět 11.8.2012 21:10
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Kit:

Hlavně je ten příklad mizerně napsán. Špagetový kód se už dávno nepoužívá. Také pojmenování proměnných ztěžuje orientaci. Takový program bych autorovi omlátil o hlavu.

Chybně je tam funkce
system("pause");
Ta nemá v programech co pohledávat.

Chybně je tam označení stupňů a vteřin.

Chybně je používání proměnných k jinému účelu, než ke kterému byly původně deklarovány.

polomer_kruzni­ce_opsane = sin(vysledek_u­hela);
je blbost. Poloměr se nerovná sinu nějakého úhlu.

Prostě ten program se nedá číst. Jdu se vyzvracet.

Nahoru Odpovědět  +5 11.8.2012 21:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:

měl jsem ti chuť něco napsat ale jelikož vidím že jsi idiot a trefil si jen tu chybku v kružnici tak vyhráváš zlatýho bludištáka i když v tom ta chyba nebyla a kdyby jsi nebyl hlupak a nechoval se jak dement tak viš že pravá chyba je v doublu

Nahoru Odpovědět 11.8.2012 21:45
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět 11.8.2012 21:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ale no tak, přeci se budeme bavit trochu na úrovni. DontCryMyLittleBoy to myslel dobře a vážíme si jeho aktivity. Sice to neměl dokonalé, ale mohli bychom si zvracení nechat na diskuze na idnes a stejně i ty idioty, nemyslíte? :)

Nahoru Odpovědět 11.8.2012 21:51
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Зайчик:

já vás nechápu mě daj -2 za pravdu že jsem řekl chyba je v nevyrovnanym doublu a tobě daj +3 za to ze jsi sem hodil par blbosti co z 98% nebyla pravda to je úroveň ^^

Nahoru Odpovědět 11.8.2012 21:54
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Je fakt, že ten program mohl být poloviční a přehlednější, ale přiznávám, že jsem to s tím zvracením přehnal. Jen bych byl velmi nerad, kdyby se takový programovací styl snažil někdo napodobovat.

Nahoru Odpovědět 11.8.2012 21:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

btw štábní kulturu používám z klasickýho C a taky je to v něm napsané, system("pause") se v systomovym C normálně používá takže si nech zvracení na nějakej sharp ani nevíš co říkáš ^^

Nahoru Odpovědět 11.8.2012 21:57
Коммунизм для нашего будущего!
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na Зайчик
Fugiczek:

Tady nejde o pravdu či lež, tady jde o způsob jakým jsi oslovil Kita :) Nemyslím že by bylo v pořádku dávat inkrementace za nadávky :)

 
Nahoru Odpovědět 11.8.2012 21:58
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

To víš, dnes je taková doba, že vítězí bulvární texty nad beletrií. Zkus ty příklady příště psát lépe a já budu (nezávisle na tom) slušnější. Řekněme, že větu "Jdu se vyzvracet" beru zpět, ale na tom zbytku trvám.

Nahoru Odpovědět  +1 11.8.2012 22:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

system("pause") se používá jen v učebnicích. Jinde není třeba. Se sharpem nedělám.

Nahoru Odpovědět 11.8.2012 22:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

podle mě by měla vítězit pravda teď nemam chuť sem ani chodit to že děláš nějakou javu , c# nebo co nemění na tom že můj kód je napsaný správně možná né podle nějaký nový štábní kultury ale podle Cčkový základní je zcela správně pokud vím, nebudeš slušnější kritizuješ vše co není dle tvýho gusta a to se mě zas s prominutím z takových lidi zvracet já vám chci udělat zábavu pro Cčkaře a nějakej ňouma mi sem přijde a začne kritizovat každý písmeno a pritom ani z 5% nevěděl kde ta chyba opravdu je ;) to samé jsem udělal na portalu s normálními lidmi (programujte.com) a lidi hledali chybyčku bez keců bavili se u toho , hádali a nakonec jí našli ale ty jsi mi zkazil náladu hned po 5ti minutách facepalm a na nějaký hry pro takový šašky vám seru xD

Nahoru Odpovědět 11.8.2012 22:10
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ve Windows to bohužel funguje tak, že se ty konzolové programy jinak zavírají. Jak jinak bys to vyřešil?

Nahoru Odpovědět 11.8.2012 22:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Mám takovou nejasnou vzpomínku, že v těch vývojových prostředích se dalo nastavit, aby se to terminálové okno po skončení aplikace nezavíralo. Stačilo jen zaškrtnout.

Nahoru Odpovědět 11.8.2012 22:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

tak to jsi asi jen spal

Nahoru Odpovědět 11.8.2012 22:17
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Chceš mi naznačit, že vývojová prostředí pro Windows stále tuto trivialitu nemají vyřešenu a musí se kvůli tomu prznit aplikace?

Mně funkce system("pause"); vyhazuje chybovou hlášku
pause: příkaz nenalezen

Nahoru Odpovědět 11.8.2012 22:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:

pac jedes na nejakem linuxu a nebo mac porid si okna a pojede ti to ;)

Nahoru Odpovědět 11.8.2012 22:27
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Зайчик:

dalo by se to vyresit getchem ale to pak linuxaci placou ze to nejde zkompilovat ^^

Nahoru Odpovědět 11.8.2012 22:29
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

To si raději ten příkaz "pause" naprogramuji. Vlastně k tomu nemám důvod, protože nechci, aby se mi programy zastavovaly před ukončením. Mně se to okno po ukončení aplikace nezavře.

Máš pravdu, nemám okna. Ještě by se mi sama zavírala a to bych byl nerad.

Nahoru Odpovědět 11.8.2012 22:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:

btw nevim co ti na tom prijde divnyho... mas program a na konci je return 0; tudiz se ukonci ;) vse probehne jak ma kdyz ho nekde nezastavis "system("pause"); a uz pst pripada mi to ze uz meles mimo misu

Nahoru Odpovědět 11.8.2012 22:31
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Jenže ty funkce getch() či getchar() potřebují nějaký vstup. Když v tom vstupu mám data určená ke zpracování, tak z něj nemohu číst klávesnici. Uživatelé Windows tedy za účelem umožnění funkce getch() odříznou možnost vstupu dat do aplikace tímto kanálem. To není zrovna ideální řešení.

Nahoru Odpovědět 11.8.2012 22:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

ja jsem rekl ze se to da ne ze je to super tak porad neplakej pod na nestabilni okna a nemusis resit blbosti

Nahoru Odpovědět 11.8.2012 22:39
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Na konci nemusí být jen return 0; běžně tam dávám i jiná čísla do 255, která se v navazující aplikaci dají využít.

Když se program ukončí, tak to ještě neznamená, že se zavře okno terminálu. To dělají pokud vím jen Windows a to jen ve chvíli, kdy se program spouští kliknutím. Pokud se spustí z terminálu, tak to nedělá.

Nahoru Odpovědět 11.8.2012 22:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Zkusil jsem dělat s Windows, ale moc mi to nejde. Připadá mi to takové neohrabané. Není tam ani pořádný instalátor aplikací a pořád se musí odklikávat nějaká hlášení. Skoro jako kdyby v každé aplikaci bylo system("pause");

Nahoru Odpovědět 11.8.2012 22:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

stale nevidim kde mas problem... nejakej system("pause"); kod nezkazi hlavne kdyz to dodelas a nepotrebujes si to zapauzovat aby si videl vysledky az to je hotovy tak to muzes dat pryc

Nahoru Odpovědět 11.8.2012 22:47
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

tak jasny neni to pro kazdyho ale nemusis resit veci jako je tohle... "zbytecnosti"

Nahoru Odpovědět 11.8.2012 22:49
Коммунизм для нашего будущего!
Avatar
Pleto
Redaktor
Avatar
Pleto:

Nedá mi sa nezapojiť do tejto už offtopic diskusie :) Mám Windows 7, robím v CodeBlocks s kompilátorom GCC a po ukončení c-programu sa mi okno samo nezavrie. Keď som skúšal VisualStudio (síce neviem aký presne, ale GCC kompilátor nie) okno sa zatvorilo samo. Pravdepodobne je toto zatváranie okien závislé na kompilátore, alebo jeho verzii...

 
Nahoru Odpovědět 11.8.2012 22:51
Avatar
Зайчик
Člen
Avatar
Odpovídá na Pleto
Зайчик:

taky pouzivam codeblocks diky te pauze ale samotny .exe se zavre hned po ukonceni

Nahoru Odpovědět 11.8.2012 22:52
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Myslím, že toto se moc nepovedlo a tak bych toto vlákno uzavřel. Docela mě to zkazilo náladu, i když některé Kitovy připomínky byly pravdivé, nevidím důvod pro takové odsouzení dobrého úmyslu. Doufám, že se DontCryMyLittleBoy nenechá odradit.

Ještě by mě zajímalo, jak by Kit řešil nešpagetovost v neobjektovém jazyce, pokud vím, tak buď použiješ globální proměnné nebo máš u funkcí nespočet parametrů.

Tu pauzu podle mne nemá smysl řešit, přijdeš o multiplatformnost kódu, ale než začátečníkům motat hlavu s nějakou složitou náhražkou, tak bych ji tam klidně přežil.

Nahoru Odpovědět 11.8.2012 22:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:

ja nerikam ze nema pravdu v necem urcite jo ale z pulky to byly kraviny doslova mi to prislo az rypani a to ja nemam rad ;)

Nahoru Odpovědět 11.8.2012 22:54
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Výsledky vidím i bez zapauzování, proto system("pause") nepoužívám.

Problém by mohl nastat například v tom, že pokud se tam takové zastavení zapomene, tak se neuzavřou datové soubory. Zbytečně se spouští další proces "pause", to však problém není. Také takový proces zůstane trčet v paměti i ve správci procesů, takže pokud by se spouštěl periodicky v plánovači úloh, zaplní se časem RAM i swap.

Prostě to zastavování před koncem nemám rád.

Nahoru Odpovědět 11.8.2012 22:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

ale ty to beres jako kdybych delal projekt manhattan xD tohle sou kraviny na ukazku tady nejaky malinky "vytizeni" pameti nevadi v tomhle pripade ani getch() pac ta zatez bufferu je uplne minimalni xDD

Nahoru Odpovědět 11.8.2012 22:59
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Nešpagetovost v neobjektovém jazyce řeším tak, že mám u funkcí nespočet parametrů. Ono jich nebývá moc, nemívám víc než 4, ale obvykle stačí 1-2.

Globálním proměnným se vyhýbám globálním obloukem.

Nahoru Odpovědět 11.8.2012 23:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:

to ti nemam za zle ;) vim ze globalni jsou sracky :D ale psal jsem to hodne rychle globalni promenny jeste nejsou duvod k "zvraceni" preci

Nahoru Odpovědět 11.8.2012 23:07
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Tady nejde o vytížení paměti, ale o to, že se ta aplikace pak chová jinak, než od ní očekávám. Zřejmě máme každý jiné očekávání a u toho bychom mohli klidně zůstat.

Mým úmyslem není do tebe rýpat. Nenadával jsem ti do idiotů a dementů. Pouze jsem ten program označil jako chybně napsaný, neudržovatelný a nepřehledný. A také jsem k tomu dodal argumenty, aby se začátečníci podle toho neučili.

Nahoru Odpovědět 11.8.2012 23:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Když nad tím přemýšlím, tak se glob. proměnným asi dá vyhnout, ale co jsem se učil Pascal, tak jsem snad neviděl program, který by je neměl (plus nás to učili), v těchto jazycích se prostě takto programovalo a tak byly i navrženy. Nebo se mýlím?

Nahoru Odpovědět 11.8.2012 23:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Зайчик:

ja to pro zacatecniky nepsal :) rekni mi jaky zacatecnik by poznal chybu ze nevyrovnavam double o 0.000000000000001 :D to bylo pro chytry kluky jinak tvejch vyhrad si vazim ale priste to podej trochu normalne a ne ze to vypada jako " ja jsem buh vy vsichni ste idioti a takhle to proste je a tecka" :D kazdej mame asi jiny zajmy a predstavy ;)) a tim bych i tenhle topic ukoncil zacina se to tu rozvijet od ty hry az proc je linux lepsi nez windows :D

Nahoru Odpovědět 11.8.2012 23:13
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

"Zvracení" jsem už vzal zpět.

O globálních proměnných víme oba své. Dobrý sluha, ale zlý pán. Ve vícevláknových aplikacích to s nimi není jednoduché.

Nahoru Odpovědět 11.8.2012 23:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Tak fajn, já to tu zavřu :)

Nahoru Odpovědět 11.8.2012 23:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Зайчик:

jop za ty globalni promenne se omlouvam ale zacal jsem to psat a pak uz jsem to nedomyslel tak jsem pokradoval dal ;) priste uz to fixnu hned na zacatku no nic priste az neco vymyslim spis se zamer na ukol nez na hledani zbytecnych veci jako je treba pause a podobne :)

Nahoru Odpovědět 11.8.2012 23:16
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Globálním proměnným se dá vyhnout. Pascal jsem se také učil a odrazovali nás od nich. Dokonce nás odrazovali i od parametrů předávaných odkazem. Naučili nás i používání goto a také že bychom se mu měli vyhnout. Na to, že v původním Pascalu není break ani continue, to bylo někdy docela zábavné.

Těch zásad se stále držím a dokonce i testovací a jednoúčelové programy píšu podle nich. Raději předám vše přes parametry, než bych měl použít jen jednu globální proměnnou. Kdysi jsem to nějakou dobu v PHP používal a blbě se hledaly chyby. Dokonce ani funkce define() mi nevoní, protože to omezuje znovupoužitelnost bloků, které je potřebují.

Nahoru Odpovědět 11.8.2012 23:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Tato diskuze byla označena moderátorem jako nekonstruktivní a myslíme si, že nemá pro veřejnost příliš vysokou hodnotu. Členy můžete samozřejmě stále oslovit soukromě a to formou zpráv nebo chatu.

Zobrazeno 46 zpráv z 46.