NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Зайчик
Člen
Avatar
Зайчик:11.8.2012 20:56

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
Tvůrce
Avatar
Fugiczek:11.8.2012 21:00

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
Зайчик:11.8.2012 21:02

š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
Зайчик:11.8.2012 21:05

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
Tvůrce
Avatar
Odpovídá na Зайчик
Fugiczek:11.8.2012 21:06

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
Зайчик:11.8.2012 21:10

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
Tvůrce
Avatar
Kit:11.8.2012 21:36

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
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
Зайчик:11.8.2012 21:45

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 21:50

Ale pusu si nech.

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 Hartinger
Vlastník
Avatar
David Hartinger:11.8.2012 21:51

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
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Зайчик:11.8.2012 21:54

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
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2012 21:56

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
Зайчик:11.8.2012 21:57

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
Tvůrce
Avatar
Odpovídá na Зайчик
Fugiczek:11.8.2012 21:58

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:04

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
11.8.2012 22:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:08

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
Зайчик:11.8.2012 22:10

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:11.8.2012 22:10

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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2012 22:17

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
Зайчик:11.8.2012 22:17

tak to jsi asi jen spal

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

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
Зайчик:11.8.2012 22:27

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
Зайчик:11.8.2012 22:29

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:31

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
Зайчик:11.8.2012 22:31

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:36

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
Зайчик:11.8.2012 22:39

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:42

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:45

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
Зайчик:11.8.2012 22:47

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
Зайчик:11.8.2012 22:49

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

Nahoru Odpovědět
11.8.2012 22:49
Коммунизм для нашего будущего!
Avatar
Neaktivní uživatel:11.8.2012 22:51

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
Neaktivní uživatelský účet
Avatar
Зайчик
Člen
Avatar
Odpovídá na Neaktivní uživatel
Зайчик:11.8.2012 22:52

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 Hartinger
Vlastník
Avatar
David Hartinger:11.8.2012 22:52

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
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Hartinger
Зайчик:11.8.2012 22:54

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 22:57

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
Зайчик:11.8.2012 22:59

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
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2012 23:03

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
Зайчик:11.8.2012 23:07

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 23:10

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:11.8.2012 23:13

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
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Зайчик:11.8.2012 23:13

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
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:11.8.2012 23:14

"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 Hartinger
Vlastník
Avatar
David Hartinger:11.8.2012 23:15

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

Nahoru Odpovědět
11.8.2012 23:15
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Зайчик:11.8.2012 23:16

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
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:11.8.2012 23:27

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.