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 05:55 | IT novinky

    Společnost OpenAI představila GPT-5 (YouTube).

    Ladislav Hagara | Komentářů: 0
    dnes 05:00 | Nová verze

    Byla vydána (𝕏) červencová aktualizace aneb nová verze 1.103 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.103 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | IT novinky

    Americký prezident Donald Trump vyzval nového generálního ředitele firmy na výrobu čipů Intel, aby odstoupil. Prezident to zdůvodnil vazbami nového šéfa Lip-Bu Tana na čínské firmy.

    Ladislav Hagara | Komentářů: 6
    včera 16:55 | Nová verze

    Bylo vydáno Ubuntu 24.04.3 LTS, tj. třetí opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | Nová verze

    Byla vydána verze 1.89.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Americká technologická společnost Apple uskuteční v USA další investice ve výši sta miliard dolarů (2,1 bilionu korun). Oznámil to ve středu šéf firmy Tim Cook při setkání v Bílém domě s americkým prezidentem Donaldem Trumpem. Trump zároveň oznámil záměr zavést stoprocentní clo na polovodiče z dovozu.

    Ladislav Hagara | Komentářů: 4
    včera 04:55 | Nová verze

    Zálohovací server Proxmox Backup Server byl vydán v nové stabilní verzi 4.0. Založen je na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    6.8. 16:33 | Nová verze

    Byla vydána nová verze 1.54.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Jan Václav.

    Ladislav Hagara | Komentářů: 0
    6.8. 14:11 | IT novinky

    Knižní edice správce české národní domény přináší novou knihu zkušeného programátora Pavla Tišnovského s názvem Programovací jazyk Go. Publikace nabízí srozumitelný a prakticky zaměřený pohled na programování v tomto moderním jazyce. Nejedná se však o klasickou učebnici, ale spíše o průvodce pro vývojáře, kteří s Go začínají, nebo pro ty, kdo hledají odpovědi na konkrétní otázky či inspiraci k dalšímu objevování. Tištěná i digitální verze knihy je již nyní k dispozici u většiny knihkupců.

    Ladislav Hagara | Komentářů: 2
    6.8. 13:11 | IT novinky

    OpenAI zpřístupnila (en) nové nenáročné otevřené jazykové modely gpt-oss (gpt-oss-120b a gpt-oss-20b). Přístupné jsou pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 5
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (43%)
     (22%)
     (4%)
     (6%)
     (3%)
     (1%)
     (1%)
     (20%)
    Celkem 286 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    Octave - 10 (zbylé řídicí struktury)

    30. 3. 2006 | Jiří Poláček | Programování | 4887×

    Příkazy break a continue, řídicí struktura výběru z alternativ switch a ošetřování chybových situací.

    Řízení běhu programu

    Octave podobně jako programovací jazyk Pascal, jehož syntaxe je velmi podobná, obsahuje příkazy break a continue na bezprostřední ukončení aktuálně běžící smyčky cyklu. Vždy se dá program napsat bez použití těchto příkazů, mohou ovšem nastat „zapeklité“ situace, kdy je potřeba upravit složitý algoritmus plný vnořených cyklů a použití těchto příkazů může být relativně elegantním řešením.

    Mějme jednoduchý cyklus od jedné do tří, který dvakrát vypíše aktuální hodnotu čítače. Mezi tyto dva výpisy vsuňme test na rovnost čítače číslu 2 a v kladném případě zavolejme příkaz continue:

    --[skript preruseni.m]--
    for i=1:3
      disp(i);
      if i==2 continue end
      disp(i);
    end
    --[konec skriptu]--
    

    Příkaz continue předčasně ukončí aktuálně vykonávanou smyčku cyklu – řízení programu předá opět na začátek cyklu. V našem případě se proto nevykoná druhý příkaz disp pro vypsání čítače v případě, kdy nabude hodnoty 2:

    >> preruseni
    1
    1
    2
    3
    3
    

    Nyní nahraďme příkaz continue příkazem break:

    --[skript preruseni.m]--
    for i=1:3
      disp(i);
      if i==2 break end
      disp(i);
    end
    --[konec skriptu]--
    

    Příkaz break zajistí okamžité ukončení celého cyklu – žádné další příkazy v těle cyklu se již nevykonají a běh programu se přesune na další příkazy uvedené za cyklem. V našem případě již však žádné nejsou, proto se skript ukončí:

    >> preruseni
    1
    1
    2
    

    V souvislosti s příkazem break se někdy můžeme setkat s pojmem cyklus s podmínkou uprostřed. Nejedná se o nic jiného, než o neukončený cyklus, o jehož ukončení se postará break na základě splnění podmínky testované někde v těle cyklu:

    while true
      <příkazy cyklu>
      if <podmínka> break end
      <příkazy cyklu>
    end
    

    Dodejme ještě, že ve funkcích můžeme použít také příkaz return, který dělá to stejné, co break v cyklech – okamžitě ukončí běh právě vykonávané funkce a předá řízení objektu, který funkci zavolal, tedy jiné funkci či příkazovému řádku.

    Výběr z alternativ – řídicí konstrukce switch

    V Octave nechybí ani řídící konstrukce switch pro výběr z alternativ, i když její současná podoba je označovaná jako experimentální. Za klíčovým slovem switch následuje výraz, jehož výsledek je pak porovnáván se seznamem možných hodnot uvozovaných klíčovým slovem case. Pokud je nalezen odpovídající případ, provedou se příkazy uvedené v této sekci case. Neodpovídá-li žádný případ výsledku výrazu a je přítomna nepovinná sekce otherwise, provedou se příkazy uvedené v této sekci (analogie else u if). Celá konstrukce je ukončena klíčovým slovem end, respektive endswitch:

    --[skript]--
    switch nejaka_ciselna_promenna
    case 1
      disp('jedna');
    case 2
      disp('dva');
    case 3
      disp('tři');
    case 4
      disp('čtyři');
    case 5
      disp('pět');
    otherwise
      disp('neznám slovní vyjádření'); 
    endswitch
    --[konec skriptu]--
    

    Uvedený skript je přepisem příkladu využívajícím řídicí strukturu elseif v odstavci o větvení programu. Porovnáním těchto příkladů zjistíme, že konstrukcí switch si ušetříme zejména zápis relačního operátoru „==“ – od toho ji také programovací jazyky obsahují – a na druhou stranu je snad jasné, že se konstrukce switch nehodí na zkoumání jiných relačních vlastností než je rovnost dvou výrazů.

    V Octave mohou být zkoumaný výraz i jednotlivé případy jakékoliv platné výrazy jazyka a navíc lze snadno sdružovat případy, pro které se má vykonat stejný blok příkazů. Nuže mírně složitější ukázka skriptu:

    --[skript mutace.m]--
    B=[0 1; 0 0];
    switch A=fix(rand(2)*2)
    case B
      disp('A odpovídá matici B');
    case B'
      disp('A odpovídá transponované matici B');
    case {rot90(B,1), rot90(B,-1)}
      disp('A odpovídá otočené matici B');
    case not(B)
      disp('A odpovídá negované matici B');
    case [1 0; 1 0]
      disp('A odpovídá matici [1 0; 1 0]');
    otherwise
      disp('matice A vyšla nějak úplně jinak');
    end
    --[konec skriptu]--
    

    Příklad zkoumá náhodně vygenerovanou matici nul a jedniček oproti nějaké mutaci matice B; všimněme si zejména složených závorek u třetího případu, s jejichž pomocí se dělá výše zmiňované sdružování případů. Pokud znáte konstrukci switch z jiných programovacích jazyků (zejména C, Java), uvědomte si, že v Octave jsou případy exkluzivní, tj. při vyhodnocování se nalezne první odpovídající hodnota, provedou se příkazy příslušné pouze tomuto případu a dále se pokračuje příkazy za koncem řídicí struktury. Případné využívání příkazů break by zde patrně vedlo k neočekávaným výsledkům.

    Varování nakonec – obvyklými zkoumanými případy v konstrukci switch jsou konstanty respektive konstantní výrazy. Pokud chceme být varováni u nekonstantních případů, je třeba nastavit interní proměnnou warn_variable_switch_label na nějaké nenulové číslo.

    >> warn_variable_switch_label=1  
    >> mutace
    warning: variable switch label
    A odpovídá matici [1 0; 1 0]
    

    Ošetřování chyb

    Octave také obsahuje dvě řídicí struktury pro ošetřování chybových situací – jedná se limitované formy převzaté z jazyka Lisp. Obě tyto struktury obsahují dva bloky příkazů oddělené klíčovými slovy, přičemž první z těchto bloků obsahuje v obou případech kritické místo, tj. příkazy, u kterých lze očekávat vyvolání chybové situace. Příkazy v druhém bloku u struktury try-catch se provedou v případě, že v prvním bloku nastala chyba, naopak struktura unwind_protect garantuje, že druhý blok příkazů se provede vždy, bez ohledu na to, zda v prvním bloku příkazů byla či nebyla chybová situace vyvolána. Ošetřit se tak dají dočasné změny globálních proměnných, otevírání souborů apod:

    --[skript otevri.m]--
    try
      load neexistujici_soubor;
    catch
      disp('Daný soubor neexistuje');
    end_try_catch
    --[konec skriptu]--
    >> otevri
    Daný soubor neexistuje
    

    Porovnejme s:

    unwind_protect
      load soubor
    unwind_protect_cleanup
      disp('Tento text se vypíše bez ohledu na existenci souboru');
    end_unwind_protect
    

    Namísto funkce disp lze pro vypsání chybových a varovných hlášení využít funkcí error a warning, které k textu přidají prefix „error:“ nebo „warning:“. Funkce error navíc ukončí běh programu, více viz Error Handling.

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

    Událo se v týdnu 29/2025
    Jaderné noviny – přehled za červen 2025
    Kdo si hraje, nezlobí! Kupte Windows 11 jen za €20.00!

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

    Týden na ScienceMag.cz: Teploty supravodivosti mohou souviset se základními konstantami přírody
    Událo se v týdnu 31/2025
    Týden na ScienceMag.cz: Kdyby objekt 3I/ATLAS byl mimozemskou sondou…
      všechny statistiky »

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

    Octave - 1 (je to kalkulačka) (první díl)
    <—« Octave - 9 (cykly)
    »—> Octave - 11 (kreslíme grafy)
    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 - 8 (větvení programu)
    Octave - 9 (cykly)
    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

    Odkazy a zdroje

    Octave

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

    Jiří Poláček avatar 30.3.2006 11:31 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
    Rozbalit Rozbalit vše Odkazy do nápovědy Octave
    Zdá se, že dnešního dne došlo k přesunu webových stránek Octave na adresu http://www.gnu.org/software/octave/ (nikde jsem nenašel zmínku proč), přičemž adresa do webového manuálu již není přímo v adresáři doc, nýbrž v doc/interpreter, z čehož plyne jeden nemilý fakt – přímé odkazy do nápovědy Octave z mých článků nyní prostě nefungují :-(
    Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
    30.3.2006 11:38 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Odkazy do nápovědy Octave
    To se dá napravit. Během víkendu se na to podívám.
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.