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 04:33 | Nová verze

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).

    Ladislav Hagara | Komentářů: 1
    včera 11:22 | Bezpečnostní upozornění

    Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek

    … více »
    Ladislav Hagara | Komentářů: 6
    včera 10:46 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.

    Ladislav Hagara | Komentářů: 5
    včera 03:44 | Komunita

    Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.

    Ladislav Hagara | Komentářů: 0
    3.6. 19:44 | Nová verze

    Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.

    Ladislav Hagara | Komentářů: 0
    3.6. 14:44 | IT novinky

    Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …

    Ladislav Hagara | Komentářů: 0
    3.6. 12:44 | Nová verze

    Google Chrome 149 byl prohlášen za stabilní. Nejnovější stabilní verze 149.0.7827.53 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    3.6. 10:55 | Nová verze

    Pluto.jl, reaktivní notebook pro programovací jazyk Julia, dospěl do verze 1.0.

    Ladislav Hagara | Komentářů: 4
    2.6. 13:44 | Nová verze

    Byla vydána nová verze 12.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (15%)
     (31%)
     (4%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1819 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Octave - 8 (větvení programu)

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

    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 20/2026
    Týden na ScienceMag.cz: Nejběžnější exoplanety se nevyskytují kolem nejběžnějších hvězd
    Týden na ScienceMag.cz: Nové ultrapřesné měření hmotnosti bosonu W se vejde do Standardního modelu

    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.