LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Diskuze: článek C/C++ (25) - Funkce s proměnným počtem parametrů

více výstupních bodů funkce
(link)
27.9.2005 10:58
camlost
... lze ve výukových textech považovat za chybu.
Re: více výstupních bodů funkce
(link)
27.9.2005 11:09
Jan Němec
Věk: ( ~41 let)

To jako to "if (!i) return 0;" ve funkci suma? No nevím, pokud mluvíme oba o tom samém, tak já to za chybu nepovažuju. Jsem zvědavý, co mi řeknete, až dojde na standardní knihovnu a funkce typu exit :-)

Re: více výstupních bodů funkce
(link)
27.9.2005 13:26
Aleš Hakl
Bydliště: Praha

Mate k tomu nejaky podpurny argument? Docela by me zajimalo, cim je vice vystupnich bodu funkce tak spatnych.

Re: více výstupních bodů funkce
(link)
1.11.2005 14:13
camlost

Ano, něco bych měl, jen nevím, jestli má smysl se bavit s kluky, jejichž jedinou reakcí je něco o středoškolském učiteli. Hmmm. :-/

No nic, omlouvám se, to nebylo na Vás.

Argument: Představte si, že nemáte k dispozici debugger. Program se chová podivně - např. jednoduchá funkce double bez_dph(double cena) { return(cena / 1.19); } vrací evidentně špatné hodnoty.

Jak budete hledat chybu? Pomocí ladících výpisů. Jakou chybu budete hledat? Nejspíš si někde přepisujete paměť. Jak jí najdete? No, postupoval jsem takhle:

V okolí prvního výskytu chyb jsem funkce vybavil ladícím výpisem ihned po vstupu (obsahoval hodnoty parametrů + nějaké další info) a těsně před opuštěním funkcí, tj. těsně před return (je zřejmé, že obsahoval návratovou hodnotu). Očekával jsem, že okolí chyby najdu podle podezřelých hodnot jednoho či druhého.

Pokud bych měl těch "výstupních bodů funkcí" několik, stala by se správa takového kódu zřejmě trošku nepříjemná.

PS: Tuhle humornou situaci jsem zažil při programování jedné mobilní krabičky. Chybu jsem po několika týdnech skutečně našel - chybná implementace mat. operací v plovoucí řádové čárce. Zdrojáky k systémovým knihovnám bohužel nebyly k dispozici.

Re: více výstupních bodů funkce
(link)
3.10.2005 17:39
Jakub Jochec
Vy jste stredoskolsky ucitel programovani ze ano? ;-D Kdyz jsme u tematu clanku jeden (tedy presneji jedna takova) mi tvrdila ze nejde v C vytvorit funkci s promennym poctem parametru asi tak Vam odpovim :-D.
Spis nez nejake flames by me osobne zajimalo toto...
(link)
3.10.2005 17:59
Jakub Jochec
Vzhledem k tomu ze nemam co delat tak sem se po precteni clanku pustil do takove "opicarny" ktera me napadla... Strucne receno melo by jit o program (presneji receno "opicarnu" ;-)) ) ktery bude nacitat predem neurceny pocet promenych (treba typu int), tento cyklus se ukonci zadanim predem urcene hodnoty a nasledne s nimi prostrednictvim externi funkce bude provadet nejakou zadanou akci (treba jako v clanku - sumu). Jiste kazdeho jiste jako prvni napadne proste pouzit jednoduchy do...while cyklus. Ovsem melo by se jednat o to ze pri behu programu dosadime funkci pocet argumentu, jejich pocet je ve skutecnosti znam az pri behu programu (jako napr pocet promennych v tomto programu). Jiz jsem se dostal k tomu ze za pomoci makra a operatoru ## vytvarim a nasledne mohu pristupovat k takto vytvorenym promenym (aspon v C nema pro konkretni pripad prilis velky smysl vytvaret pole, jeho realokace potom zbytecne zbidacuje vysledny program). Tusim ze by se dalo provest pomoci makra jehoz vystupem bude retezec dosazeny v podobe carkami oddelenych argumentu dosazenych primo do kodu (jak uz to tak u maker byva ;-) ).
Ovsem neustale nemohu prijit na to jak vyresit toto posledni makro... Ma nekdo napad?
Re: Spis nez nejake flames by me osobne zajimalo toto...
(link)
3.10.2005 18:17
Aleš Hakl
Bydliště: Praha

To posledni makro nelze vyresit nijak, C je kompilovany jazyk ^_^. Nicmene vyresit to lze pomoci jedne ze specialnich funkci gcc, konkretne __builtin_apply, viz kapitola "Constructing Function Calls" v manualu gcc. Nicmene reseni pomoci pole je vyrazne jednodussi.

Re: Spis nez nejake flames by me osobne zajimalo toto...
(link)
4.10.2005 08:08
Jan Němec
Věk: ( ~41 let)

Jak už tady zaznělo, C se překládá a makra se rozvíjejí při překladu. Pokud velikost dat zjistím až za běhu, navíc až ze speciální hodnoty poslední proměnné, tak je jediné rozumné řešení předat hodnoty do funkce v nějaké datové struktuře (pole, seznam, strom, halda ...). Realokace pole není tak hrozná, pokud ji neprovádím po každám načtení jedné nové proměnné, ale např. alokuji vždy na dvojnásobek stávající kapacity.

Jde to udělat líp ?
(link)
17.10.2005 19:08
Michal marwin

Jde nějak udělat fci s porměnným počtem parametrů, bez toho aby se zadával počet parametrů, nebo byl dohodnutý standardní poslední parametr?

Re: Jde to udělat líp ?
(link)
17.10.2005 23:49
Aleš Hakl
Bydliště: Praha

V C ne (alespoň ne rozumně přenositelně).

Re: Jde to udělat líp ?
(link)
1.11.2005 14:18
camlost
Na druhou stranu to zase tak často nepotřebujete. Můžete si třeba pomoci formátovacím řetězcem (jako to dělá printf), nebo můžete počet parametrů získat analýzou dat, která hodláte zpracovat. Záleží na tom, co přesně chcete udělat.

DISKUZE

více výstupních bodů funkce 27.9.2005 10:58 camlost
|- Re: více výstupních bodů funkce 27.9.2005 11:09 Jan Němec
|- Re: více výstupních bodů funkce 27.9.2005 13:26 Aleš Hakl
| L Re: více výstupních bodů funkce 1.11.2005 14:13 camlost
L Re: více výstupních bodů funkce 3.10.2005 17:39 Jakub Jochec
Spis nez nejake flames by me osobne zajimalo toto... 3.10.2005 17:59 Jakub Jochec
|- Re: Spis nez nejake flames by me osobne zajimalo toto... 3.10.2005 18:17 Aleš Hakl
L Re: Spis nez nejake flames by me osobne zajimalo toto... 4.10.2005 08:08 Jan Němec
Jde to udělat líp ? 17.10.2005 19:08 Michal marwin
  |- Re: Jde to udělat líp ? 17.10.2005 23:49 Aleš Hakl
  L Re: Jde to udělat líp ? 1.11.2005 14:18 camlost




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera

Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.


Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze