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 12:00 | Zajímavý článek

    Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.

    Fluttershy, yay! | Komentářů: 1
    dnes 08:44 | Zajímavý software

    Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).

    Fluttershy, yay! | Komentářů: 1
    dnes 02:22 | Nová verze

    Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    8.6. 17:55 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 8
    7.6. 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 18
    7.6. 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    7.6. 10:55 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.

    Ladislav Hagara | Komentářů: 0
    6.6. 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    6.6. 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 42
    6.6. 01:00 | Nová verze

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

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Octave - 8 (větvení programu)

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

    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ýkonný elektromagnet z 3D tiskárny
    Týden na ITBiz: Polovina českých firem si není jistá blízkou budoucnosti svého oboru, většina ale počítá s velkým vlivem AI
    Událo se v týdnu 21/2024

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

    Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
    Týden na ScienceMag.cz: Neutronové molekuly – neutrony se mohou vázat na kvantové tečky
    Týden na ScienceMag.cz: Postoupili ve snaze najít kvantovou povahu gravitace
      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.