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í
×
    včera 15:55 | Komunita

    O víkendu (15:00 až 23:00) probíha EmacsConf 2025, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy budou k dispozici přímo z programu.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Komunita

    Provozovatel internetové encyklopedie Wikipedia jedná s velkými technologickými firmami o uzavření dohod podobných té, kterou má s Googlem. Snaží se tak zpeněžit rostoucí závislost firem zabývajících se umělou inteligencí (AI) na svém obsahu. Firmy využívají volně dostupná data z Wikipedie k trénování jazykových modelů, což zvyšuje náklady, které musí nezisková organizace provozující Wikipedii sama nést. Automatické programy

    … více »
    Ladislav Hagara | Komentářů: 11
    včera 15:22 | IT novinky

    Evropská komise obvinila síť 𝕏 z porušení unijních pravidel, konkrétně nařízení Evropské unie o digitálních službách (DSA). Vyměřila jí za to pokutu 120 milionů eur (2,9 miliardy Kč). Pokuta je podle názoru amerického ministra zahraničí útokem zahraničních vlád na americký lid. K pokutě se vyjádřil i americký viceprezident: „EU by měla podporovat svobodu projevu, a ne útočit na americké společnosti kvůli nesmyslům“.

    Ladislav Hagara | Komentářů: 8
    5.12. 17:11 | IT novinky

    Společnost Jolla spustila kampaň na podporu svého nového telefonu Jolla Phone se Sailfish OS. Dodání je plánováno na první polovinu příštího roku. Pokud bude alespoň 2 000 zájemců. Záloha na telefon je 99 €. Cena telefonu v rámci kampaně je 499 €.

    Ladislav Hagara | Komentářů: 24
    5.12. 15:11 | IT novinky

    Netflix kupuje Warner Bros. včetně jejích filmových a televizních studií HBO Max a HBO. Za 72 miliard dolarů (asi 1,5 bilionu korun).

    Ladislav Hagara | Komentářů: 2
    5.12. 14:11 | IT novinky

    V Las Vegas dnes končí pětidenní konference AWS re:Invent 2025. Společnost Amazon Web Services (AWS) na ní představila celou řadu novinek. Vypíchnout lze 192jádrový CPU Graviton5 nebo AI chip Trainium3.

    Ladislav Hagara | Komentářů: 0
    5.12. 00:33 | Nová verze

    Firma Proxmox vydala novou serverovou distribuci Datacenter Manager ve verzi 1.0 (poznámky k vydání). Podobně jako Virtual Environment, Mail Gateway či Backup Server je založená na Debianu, k němuž přidává integraci ZFS, webové administrační rozhraní a další. Datacenter Manager je určený ke správě instalací právě ostatních distribucí Proxmox.

    |🇵🇸 | Komentářů: 9
    4.12. 23:44 | Nová verze

    Byla vydána nová verze 2.4.66 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 5 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    4.12. 14:00 | IT novinky

    Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.

    Ladislav Hagara | Komentářů: 0
    4.12. 04:22 | Bezpečnostní upozornění

    Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (48%)
     (19%)
     (17%)
     (22%)
     (15%)
     (24%)
     (16%)
     (18%)
    Celkem 435 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    Rozcestník

    Octave - 8 (větvení programu)

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

    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

    Týden na ITBiz: Vědci vyvinuli magnetický tranzistor pro energeticky účinnější elektroniku
    Událo se v týdnu 45/2025
    Týden na ITBiz: Nový zákon o kybernetické bezpečnosti vstupuje v platnost

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

      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.