abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:33 | Nová verze

    Po více než roce vývoje od vydání verze 5.40 byla vydána nová stabilní verze 5.42 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 64 vývojářů. Změněno bylo přibližně 280 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 0
    dnes 01:33 | Nová verze

    Byla vydána nová stabilní verze 7.5 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 138. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | Zajímavý software

    Sniffnet je multiplatformní aplikace pro sledování internetového provozu. Ke stažení pro Windows, macOS i Linux. Jedná se o open source software. Zdrojové kódy v programovacím jazyce Rust jsou k dispozici na GitHubu. Vývoj je finančně podporován NLnet Foundation.

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | Nová verze

    Byl vydán Debian Installer Trixie RC 2, tj. druhá RC verze instalátoru Debianu 13 s kódovým názvem Trixie.

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).

    Ladislav Hagara | Komentářů: 0
    včera 02:33 | Nová verze

    Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | Komunita

    Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.

    Ladislav Hagara | Komentářů: 0
    2.7. 16:55 | Nová verze

    Svobodný nemocniční informační systém GNU Health Hospital Information System (HIS) (Wikipedie) byl vydán ve verzi 5.0 (Mastodon).

    Ladislav Hagara | Komentářů: 0
    2.7. 16:22 | Komunita

    Open source mapová a navigační aplikace OsmAnd (OpenStreetMap Automated Navigation Directions, Wikipedie, GitHub) oslavila 15 let.

    Ladislav Hagara | Komentářů: 1
    2.7. 11:55 | Zajímavý software

    Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.

    Ladislav Hagara | Komentářů: 38
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 349 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Trocha rekurze nemůže škodit

    10.11.2008 21:52 | Přečteno: 1783× | Ostatní | poslední úprava: 10.11.2008 21:54

    Jen tak, před nedávnem, z dlouhé chvíle vzniklo toliko kódu…

    #include "iostream"
    using namespace std;
    
    class CsSuccesor
    {
    public:
    	CsSuccesor();
    	CsSuccesor(CsSuccesor &that);
    	~CsSuccesor();
    	CsSuccesor& Succesor(CsSuccesor &that);
    	friend ostream& operator <<(ostream &stream, CsSuccesor succesor);
    	CsSuccesor& operator =(CsSuccesor &that);
    	CsSuccesor& operator +(CsSuccesor &that);
    	CsSuccesor& operator -(CsSuccesor &that);
    	unsigned long long int ToInteger();
    
    private:
    	CsSuccesor *m_pSucc;
    };
    
    CsSuccesor::CsSuccesor()
    {
    	m_pSucc = NULL;
    }
    
    CsSuccesor::CsSuccesor(CsSuccesor &that)
    {
    	m_pSucc = NULL;
    
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc = new CsSuccesor(*(that.m_pSucc));
    	}
    }
    
    CsSuccesor::~CsSuccesor()
    {
    	if (m_pSucc != NULL)
    	{
    		delete m_pSucc;
    		m_pSucc = NULL;
    	}
    }
    
    CsSuccesor& CsSuccesor::Succesor(CsSuccesor &that)
    {
    	m_pSucc = new CsSuccesor();
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc->Succesor(*(that.m_pSucc));
    	}
    	return *this;
    }
    
    ostream& operator <<(ostream &stream, CsSuccesor succesor)
    {
    	if (succesor.m_pSucc)
    	{
    		stream << "Succ(" << *(succesor.m_pSucc) << ")";
    	}
    	else
    	{
    		stream << "Zero";
    	}
    	return stream;
    }
    
    CsSuccesor& CsSuccesor::operator =(CsSuccesor &that)
    {
    	if (this != &that)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete m_pSucc;
    			m_pSucc = NULL;
    		}
    		if (that.m_pSucc)
    		{
    			m_pSucc = new CsSuccesor(*that.m_pSucc);
    		}
    	}
    	return *this;
    }
    
    CsSuccesor& CsSuccesor::operator +(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor();
    	if (m_pSucc != NULL)
    	{
    		out->m_pSucc = new CsSuccesor(*m_pSucc + that);
    	}
    	else
    	{
    		if (that.m_pSucc != NULL)
    		{
    			out = new CsSuccesor(that);
    		}
    	}
    	return *out;
    }
    
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    unsigned long long int CsSuccesor::ToInteger()
    {
    	return (m_pSucc != NULL ? m_pSucc->ToInteger() + 1 : 0);
    }
    
    int main()
    {
    	CsSuccesor succ1;
    	cout << succ1 << '\n' << succ1.ToInteger() << '\n';
    	CsSuccesor succ2(succ1);
    	cout << succ2 << '\n' << succ2.ToInteger() << '\n';
    	CsSuccesor succ3(succ1.Succesor(succ2));
    	cout << succ3 << '\n' << succ3.ToInteger() << '\n';
    	CsSuccesor succ4 = succ3;
    	cout << succ4 << '\n' << succ4.ToInteger() << '\n';
    	CsSuccesor succ5 = succ3 + succ4;
    	cout << succ5 << '\n' << succ5.ToInteger() << '\n';
    	CsSuccesor succ6 = succ5 - succ3;
    	cout << succ6 << '\n' << succ6.ToInteger() << '\n';
    
    	return 0;
    }
    
    

    …netvrdím, že ve všech rysech je to dokonalé, ale zábavné a hravé.

           

    Hodnocení: 25 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    10.11.2008 22:02 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    to se tak strasne bojis komentaru? to ti proboha udelali.. ;-)
    10.11.2008 22:03 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    *co
    vogo avatar 10.11.2008 22:07 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    tohle je tzv. „no comment code“ :)

    u vážně míněného kódu komentáře píšu
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    Heron avatar 10.11.2008 22:22 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tak tady jsou tak krátké metody (což je jedině dobře), že jejich fce je tak plně popsána jejich jménem (tak to má být).

    Pravda, mohlo být popsáno API, ale jako kód pro radost se mi to na první pohled líbí (chyby jsem nehledal).
    11.11.2008 10:14 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Proč? Navzdory neskutečně ukecanému a silně uhozenému programovacímu jazyku je to docela čitelné. BTW takhle se obvykle v teorii čísel formálně definují přirozená čísla- je to prostě nejjednodušší.
    Táto, ty de byl? V práci, já debil.
    vogo avatar 11.11.2008 16:39 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Přesně o to jde, je to rekurzívní datový typ celé číslo. Zřejmě kolega :).
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 21:05 Ignor
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    V teorii čísel asi ne, tam to je spíš nanic.

    Jestli jsem to dobře pochopil (za což fakt neručím), tak to připomíná ňákou takovouhle konstrukci třeba

    0 = {}; S(n) = {n}

    než tu běžnou z teorie množin

    0 = {}; S(n) = n u {n}
    11.11.2008 21:07 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Už nevim, kdo to řekl, ale:

    "Real Programmers don't use comments. If it was hard to write, it should be hard to read."
    11.11.2008 22:41 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    To už by to mohlo vypadat rovnou takhle:

    void do(int A[], int s) { int i, j, k, l; k = size / 2; while (k > 0) { for (i = k; i < s; i++) { j = i; l = A[i]; while ((j >= k) && (A[j-k] > l)) { A[j] = A[j - k]; j = j - k; } A[j] = l; } if (k == 2) k = 1; else k = (int) (k / 2.2); } }

    Eliminace poznámek a (tím blbým způsobem jsou i vhodné názvy proměnných formou poznámek a přesto znám programátory, kteří používají jména jako: xx, yy, xxx, yyy, xxxx, yyyy) substituce názvů proměnných jejich stručnějším ekvivalentem, zde imho naprosto znečitelnila tento (jinak profláklý) kus kódu.

    Ono to zcela jistě bylo myšleno jako ironie, ale někdo by se té citace mohl chytnout.

    (Přebráno s mírnou úpravou z wikipedie.)
    11.11.2008 22:47 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Omlouvám se, nějak jsem při náhledu ignoroval špatný tag:
    void do(int A[], int s) 
    { 
      int i, j, k, l; 
      k = size / 2; 
    
      while (k > 0) 
      { 
        for (i = k; i < s; i++) 
        { 
          j = i; 
          l = A[i]; 
          
          while ((j >= k) && (A[j-k] > l)) 
          { 
            A[j] = A[j - k]; 
            j = j - k; 
          } 
        
          A[j] = l; 
        } 
    
        if (k == 2) k = 1; else k = (int) (k / 2.2); 
      } 
    } 
    
    11.11.2008 22:57 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Já myslel, že to byl záměr… :-)
    11.11.2008 23:09 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Myslím, že odsazují i ti největší barbaři (kromě soutěží v zatemňování kódu). :-)
    11.11.2008 23:17 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A také kromě těch, kdo se s programovacím jazykem utkávají jen proto, že kvůli zápočtu/zkoušce musejí. Viděl jsem i jedince, kteří sice odsazovali (nejspíš proto, že jim řekli, že se to má), ale víceméně nahodile, bez vazby na strukturu zdrojáku.
    11.11.2008 23:09 xavier | skóre: 10 | blog: borkovo
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nebo tak.
    hikikomori82 avatar 10.11.2008 23:43 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A teraz verzia pre bash, asi 100x jednoduchsia
    #!/bin/bash
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    11.11.2008 07:41 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    nevidim rekurziu :-)
    hikikomori82 avatar 11.11.2008 08:17 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naco, na vypis piatich textov potrebujete rekurziu a 100 riadkov kodu?
    11.11.2008 13:19 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Třeba na to, aby titulek dával smysl. :-)
    11.11.2008 00:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    tak se mi udelalo nevolno a ted jdu uz radsi spat... jen tak na okraj - pan je Javista ??? :-)
    vogo avatar 11.11.2008 06:40 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    bývalý…

    mínus jsem chtěl předělat, ale pak jsem na to zapomněl :)
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 07:12 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Chtel jsem vas upozornit na zajimavy clanek:

    Trocha rekurze nemůže škodit
    11.11.2008 08:27 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je taky prima.
    11.11.2008 08:45 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Ja som niekde videl odkaz na dobry odkaz.
    mkoubik avatar 11.11.2008 13:52 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je lepší.
    Václav 11.11.2008 09:18 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Dík, mrknu se.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    11.11.2008 10:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    super, ale chybi ti tam podminka na ukonceni rekruze... :-D
    11.11.2008 13:04 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    11.11.2008 15:25 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    Alebo ujom z elektrarni :-D Elektrikari su naj hackeri :-D Vypnu a je to...
    11.11.2008 21:10 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naprosto nejlepší vysvětlení rekurze je tady.
    Michal Fecko avatar 11.11.2008 21:42 Michal Fecko | skóre: 31 | blog: Poznámkový blog
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Pamatam sa ako na strednej nas informatikarka ucila triedenie s pouzitim rekurzie a vzdy to komentovala takto: "Vnarame sa, vnarame sa, vnarame sa, HOP a už sa vynárame, a znova sa vynárame ... " :-D
    12.11.2008 21:18 rtfm
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    lisp? haskell? -> pleasure
    vogo avatar 13.11.2008 18:53 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    haskel
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.