abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:55 | Zajímavý článek

    Příspěvek na blogu Codean Labs rozebírá zranitelnost CVE-2024-4367 v PDF.js, tj. mj. prohlížeči PDF souborů ve Firefoxu. Při otevření útočníkem připraveného pdf souboru může být spuštěn libovolný kód v JavaScriptu. Vyřešeno ve Firefoxu 126.

    Ladislav Hagara | Komentářů: 0
    dnes 12:55 | Nová verze

    Lazygit byl vydán ve verzi 0.42.0. Jedná se o TUI (Text User Interface) nadstavbu nad gitem.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | IT novinky

    K open source herní konzole Picopad přibyla (𝕏) vylepšená verze Picopad Pro s větším displejem, lepšími tlačítky a větší baterii. Na YouTube lze zhlédnout přednášku Picopad - open source herní konzole z LinuxDays 2023.

    Ladislav Hagara | Komentářů: 1
    17.5. 13:44 | Nová verze

    Byla vydána (𝕏) nová major verze 17 softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech GitLab (Wikipedie). Představení nových vlastností i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    17.5. 12:22 | Komunita

    Sovereign Tech Fund, tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří vývoj FFmpeg částkou 157 580 eur. V listopadu loňského roku podpořil GNOME částkou 1 milion eur.

    Ladislav Hagara | Komentářů: 0
    17.5. 01:55 | Komunita

    24. září 2024 budou zveřejněny zdrojové kódy přehrávače Winamp.

    Ladislav Hagara | Komentářů: 12
    16.5. 23:33 | Nová verze

    Google Chrome 125 byl prohlášen za stabilní. Nejnovější stabilní verze 125.0.6422.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 2
    16.5. 21:11 | Nová verze

    Textový editor Neovim byl vydán ve verzi 0.10 (𝕏). Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    16.5. 20:55 | Nová verze

    Byla vydána nová verze 6.3 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.15.

    Ladislav Hagara | Komentářů: 0
    16.5. 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (79%)
     (5%)
     (9%)
     (8%)
    Celkem 385 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Octave - 8 (větvení programu)

    16. 3. 2006 | Jiří Poláček | Programování | 5995×

    Tento díl o Octave začíná pojednávat o řídicích strukturách, kterými jsou větvení a cykly. Určitě nebude překvapením, že se od jiných programovacích jazyků nijak zásadně neliší.

    Větvení programu – if

    Větvení v programu používáme v případě, že některé příkazy chceme / můžeme provést pouze za předpokladu platnosti nějaké podmínky. Jako podmínku chápeme jakýkoliv výraz, který vrací logickou hodnotu, tj. odpovídá pravda/nepravda, v numerické reprezentaci 1 nebo 0. V Octave začínáme větvení klíčovým slovem if, za ním následuje podmínka, poté blok příkazů, které se mají provést v případě, že tato podmínka je splněna. Celé větvení ukončuje klíčové slovo end (to obecně ukončuje všechny řídící struktury v Octave) nebo slovo endif (slouží k lepší orientaci uživatele, co se vlastně ukončuje):

    >> a=4;
    >> if a > 2
    > disp('Číslo uložené v proměnné "a" je větší jak dva');
    > end
    Číslo uložené v proměnné "a" je větší jak dva
    

    Uvedený příklad demonstruje neúplné větvení programu – v případě, že podmínka splněna nebude, neprovede se nic. U úplného větvení také uvádíme příkazy, které se mají provést pouze v případě, kdy podmínka splněna není. Takovéto příkazy uvádíme za klíčové slůvko else, které odděluje bloky příkazů, které se mají provést při splnění a nesplnění podmínky:

    >> a=-5;
    >> if a > 2
    > disp('Číslo uložené v proměnné "a" je větší jak dva');
    > else
    > disp('Číslo uložené v proměnné "a" NENÍ větší jak dva');
    > endif
    Číslo uložené v proměnné "a" NENÍ větší jak dva
    

    Všimněme si, že tyto příklady na větvení programu jsou na příkazové řádce zapsány na více řádků – Octave pozná, že programová struktura ještě není kompletní a jedním znakem „>“ napovídá, že očekává pokračování příkazů, které vyhodnotí až po zadání uzavírajícího end (resp. endif). Větvení samozřejmě je možné psát na jeden řádek, kvůli přehlednosti však nevhodné – dostáváme se do situace, kdy tyto delší programové úseky je lepší psát do externích souborů jako skripty nebo funkce – viz díl Octave – 7 (vlastní skripty a funkce).

    Upřesňující podmínky

    Uvnitř větvení – tedy jako v místě příkazů, které se za dané podmínky provedou či neprovedou – můžeme uvést další – vnořené – větvení:

    --[skript]--
    if a == b
      disp('Hodnoty v proměnných "a" i "b" jsou stejné');
    else
      if a < b
        disp('Hodnota proměnné "a" je ostře menší jak hodnota v "b"');
      else
        disp('Hodnota proměnné "a" je ostře větší jak hodnota v "b"');
      end
    end
    --[konec skriptu]--
    

    Octave stejně jako Matlab rozumí šikovnému rozšíření struktury větvení, které umožňuje se zanořeným větvením částečně vyhnout. V okamžiku, kdy v sekci else má následovat další, upřesňující podmínka, můžeme výhodně použít klíčové slůvko elseif (psáno dohromady):

    --[skript]--
    if a == b
      disp('Hodnoty v proměnných "a" i "b" jsou stejné');
    elseif a < b
      disp('Hodnota proměnné "a" je ostře menší jak hodnota v "b"');
    else
      disp('Hodnota proměnné "a" je ostře větší jak hodnota v "b"'); 
    end
    --[konec skriptu]--
    

    Příkazy v sekci elseif se provedou v případě, že je splněna upřesňující podmínka, v takovém případě již se neprovádí příkazy v sekci else. V případě, že ani upřesňující podmínka není splněna, pokračuje se testováním dalších případných sekcí elseif – těch může být obecně libovolný počet – a teprve v okamžiku, kdy žádná z upřesňujících podmínek není splněna, přichází ke slovu sekce else. Program, který pro čísla od jedné do pěti vypíše slovně jejich hodnotu, může vypadat následovně:

    --[skript]--
    if a == 1
      disp('jedna');
    elseif a == 2
      disp('dva');
    elseif a == 3
      disp('tři');
    elseif a == 4
      disp('čtyři');
    elseif a == 5
      disp('pět');
    else
      disp('neznám slovní vyjádření');
    endif
    --[konec skriptu]--
    

    Později si ukážeme, že pro zkoumání případů existuje v Octave pohodlnější programová struktura switch.

    Kontrola počtu vstupních a výstupních proměnných ve funkci

    Nyní, když už známe jednoduché větvení programu, můžeme si ukázat, jak lze v Octave kontrolovat, zda nám při volání funkce zadal uživatel dostatečný počet parametrů. Mějme například triviální funkci pro výpočet aritmetického průměru dvou čísel:

    --[funkce prumer.m]--
    function vysledek=prumer(a,b)
    vysledek=(a+b)/2;
    --[konec funkce]--
    

    Pokud nyní funkci spustíme, avšak pouze s jedním parametrem oproti dvěma očekávaným, dozvíme se takovéto chybové hlášení, z kterého možná úplně moudří nebudeme:

    >> prumer(40)
    error: `b' undefined near line 2 column 13
    error: evaluating binary operator `+' near line 2, column 12
    error: evaluating binary operator `/' near line 2, column 15
    error: evaluating assignment expression near line 2, column 9
    

    Namísto takových chybových hlášení bychom možná raději uživateli měli sdělit, že má zadat dvě čísla při volání funkce. Přesně k tomu slouží vestavěná funkce nargin (jméno funkce je zkratka z Number of ARGuments INput), která vrací počet vstupních proměnných aktuálně volané funkce. Upravíme tedy naši funkci takto:

    --[funkce srovnani.m]--
    function vysledek=prumer(a,b)
    if nargin ~= 2
      disp('Pro použití funkce je třeba zadat právě dva parametry');
    else
      vysledek=(a+b)/2;
    end
    --[konec funkce]--
    

    Než se tedy pustíme do výpočtu, zkontrolujeme, zda náhodou počet vstupních proměnných není různý od dvou – pakliže ano, vypíšeme hlášku, v opačném případě můžeme provést výpočet:

    >> prumer(40)
    Pro použití funkce je třeba zadat právě dva parametry
    

    Vskutku dobře ošetřená funkce by potřebovala provádět ještě další testy, například zda vstupní parametry jsou vůbec čísly, skaláry apod. – k tomu se využívají funkce uvedené v souvislosti s logickými operátory jako isscalar atd.

    Vzhledem k tomu, že kontrolu počtu zadaných parametrů funkce přenechává Octave na programátorovi, lze tak snadno tvořit funkce, které mohou variabilně upravovat svůj běh na základě toho, kolik parametrů znají – například lze vykreslit grafický výstup pouze v případě, že byl zadán nějaký další parametr apod. Podobně lze funkce přizpůsobovat na základě očekávaného počtu výstupních proměnných – k tomu slouží analogická vestavěná funkce nargout. Více k této funkci a obecně problematice variabilního počtu vstupních a výstupních proměnných je v nápovědě k Octave.

    O cyklech v Octave bude pojednávat následující díl.

    Nejčtenější články posledního měsíce

    Událo se v týdnu 17/2024
    Týden na ITBiz: Fotonické čipy ze stolní tiskárny
    Distribuční novinky 10-15/2024

    Nejkomentovanější články posledního měsíce

    Týden na ScienceMag.cz: Kosmologové se opět zkouší vypořádat se s problémem Hubbleovy konstanty
    Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
    Týden na ScienceMag.cz: Upřesnili limity pro klidovou hmotnost neutrin
      všechny statistiky »

    Seriál Octave (dílů: 16)

    Octave - 1 (je to kalkulačka) (první díl)
    <—« Octave - 7 (vlastní skripty a funkce)
    »—> Octave - 9 (cykly)
    Octave - 16 (a co dál?) (poslední díl)

    Související články

    Octave - 1 (je to kalkulačka)
    Octave - 2 (počítání s maticemi)
    Octave - 3 (přístup k jednotlivým položkám matice)
    Octave - 4 (je to pravda?)
    Octave - 5 (práce s řetězci)
    Octave - 6 (práce se soubory)
    Octave - 7 (vlastní skripty a funkce)
    Octave - 9 (cykly)
    Octave - 10 (zbylé řídicí struktury)
    Octave - 11 (kreslíme grafy)
    Octave - 12 (měřítko os a speciální grafy)
    Octave - 13 (dokončení grafiky)
    Octave - 14 (finance a statistika)
    Octave - 15 (špetka matematiky)
    Octave - 16 (a co dál?)
    Vektorový elegán Ipe
    Recenze: Kniha kódů a šifer
    Awk & sed: Příručka pro dávkové zpracování textu
    SETI@home
    Jak se píše procesor
    GnuCash - domácí účetnictví na úrovni
    Použití gnuplot pro tvorbu grafů v PHP
    Hra s písmenky - wxMaxima

    Další články z této rubriky

    LLVM a Clang – více než dobrá náhrada za GCC
    Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
    Reverzujeme ovladače pro USB HID zařízení
    Linux: systémové volání splice()
    Programování v jazyce Vala - základní prvky jazyka
           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

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