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.
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
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_kruznice_opsane = sin(vysledek_uhela);
je blbost. Poloměr se nerovná sinu nějakého úhlu.
Prostě ten program se nedá číst. Jdu se vyzvracet.
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
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?
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ň ^^
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.
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áš ^^
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.
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
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.
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.
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
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í.
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á.
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");
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
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...
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.
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.
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
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.
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?
ja to pro zacatecniky nepsal rekni mi jaky zacatecnik by poznal chybu ze nevyrovnavam double o
0.000000000000001 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" 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
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
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í.
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.