LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> 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: ( ~44 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: ( ~44 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ů

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

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ář

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

> Poslední diskuze

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:04 / Jan Ober
Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:00 / Jan Ober
Re: Gimp

Více ...

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