Perl - cvičení 11

  1. Napište modul Matematika, který bude definovat funkce soucet a obsah_kruhu. Funkce soucet sečte všechny argumenty a vrátí tuto hodnotu. Funkce obsah_kruhu očekává jako svůj argument buď poloměr nebo průměr kruhu a vrátí obsah kruhu s tímto parametrem.

    Dále jsou zde definovány konstanty PI (vrací Ludolfovo číslo) a E (obsahuje Eulerovo číslo).

    Definujte rozhraní modulu tak, že implicitně se exportuje pouze konstanta PI. Na požádání je možné provést import libovolného jména nebo hromadně jména všech funkcí nebo všech konstant.

    Před začátkem zavádění modulu vypište "Matematika, verze <VERZE MODULU>". Po ukončení programu vypište "Konec použití modulu Matematika". Obě věty se samozřejmě vypíší pouze v případě, že jsme modul použili.

    Modul Matematika uložte do adresáře lib ve vašem domovském adresáři.

    Napište skript, který modul Matematika použije. Zkoušejte různé možnosti importu jmen a samozřejmě funkčnost vašich funkcí. Vyzkoušejte i použití modulu s požadouvanou verzí vyšší, než skutečně existuje.

    package Matematika;
    
    use Exporter;
    our @ISA = qw(Exporter);
    
    our @EXPORT = qw(PI);
    our %EXPORT_TAGS = (funkce => [qw(soucet obsah_kruhu)],
                        konstanty => [qw(PI E)]);
    Matematika->export_ok_tags('konstanty');
    Matematika->export_ok_tags('funkce');
    
    BEGIN {
            our $VERSION = '1.0';
            print "Matematika, verze $VERSION\n";
    }
    
    END {
            print "Konec použití modulu Matematika.\n";
    }
    
    sub PI () { 3.1415926535897932384626433832795 };
    sub E () { 2.718282 };
    
    sub soucet {
    
            my $soucet = 0;
    
            $soucet += $_ for @_;
    
            return $soucet;
    
            # nebo treba
            # return eval join '+', @_;
    }
    
    sub obsah_kruhu {
            # moznost predat
            #       -polomer => <polomer>
            #       -prumer => <prumer>
    
            my %argumenty = @_;
    
            die "Nezadany potrebne argumenty (prumer nebo polomer) ve funkci obsah_kruhu\n"
                    unless $argumenty{-polomer} or $argumenty{-prumer};
    
            # prednostne pocitame podle polomeru
            my $polomer = $argumenty{-polomer} || $argumenty{-prumer} / 2;
            return PI * $polomer**2;
    }
    
    # uspesne zavedeni modulu
    1;
    
  2. S využitím modulu Math::Combinatorics (dostupný na CPAN) vytvořte permutace čísel zadaných na každém řádku z klávesnice. Modul správně zaveďte a importujte potřebná jména.
© 2013, František Dařena

Valid XHTML 1.0! Valid CSS!