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 03:44 | Nová verze

    NVIDIA na konci ledna vydala v beta verzi nativního linuxového klienta své cloudové herní služby GeForce NOW. Včera oznámila ukončení beta verze a oficiální podporu Linuxu.

    Ladislav Hagara | Komentářů: 1
    dnes 02:33 | Nová verze

    Byla vydána nová verze 3.5.0 nástroje pro inkrementální kopírování souborů rsync (Wikipedie). Přehled oprav a vylepšení v souboru NEWS. Řešeno je 33 zranitelností.

    Ladislav Hagara | Komentářů: 1
    dnes 02:22 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 31 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 1
    včera 16:44 | IT novinky

    Firma IBM uvedla svůj první mikropočítač Personal Computer před 45 lety, v srpnu 1981. Základní konfigurace modelu 5150 za 1 565 tehdejších dolarů obsahovala desktop s Intel 8088 a 16KB RAM, Color Graphics Adapter a klávesnici. Právě klávesnice Model F/XT vybavené kapacitními spínači, vlivné a s převodníkem dodnes použitelné, připomíná sběratelský web Admiral Shark's Keyboards.

    |🇵🇸 | Komentářů: 1
    včera 14:22 | IT novinky

    Slovensko odhalilo ruské součástky ve dvou testovaných zařízeních na zjišťování přestupků v silničním provozu a označilo je za bezpečnostní riziko. S odvoláním na vyjádření slovenského Národního bezpečnostního úřadu (NBÚ) to včera oznámil ministr vnitra Matúš Šutaj Eštok. Zároveň ohlásil ukončení spolupráce svého úřadu s dodavatelem části uvedeného systému, slovenskou společností Soitron. Opozice, která na problematické kamery upozornila už dříve, vyzvala k odvolání ministra vnitra.

    Ladislav Hagara | Komentářů: 10
    včera 06:00 | IT novinky

    Dle plánu dnes ve 13:00 proběhne veřejný test eDokladů. Jeho cílem je ověřit připravenost aplikace a související infrastruktury na vysokou souběžnou zátěž před podzimními komunálními volbami.

    Ladislav Hagara | Komentářů: 17
    včera 04:11 | Nová verze

    Byla vydána nová verze 3.47 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.13 souvisejícího programovacího jazyka Dart (Wikipedie).

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

    Byla vydána nová verze 26.1 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Bian-May. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

    Ladislav Hagara | Komentářů: 0
    12.8. 19:00 | IT novinky

    Na akci Made by Google 2026 (YouTube) byla oficiálně představena jedenáctá generace telefonů Pixel s novým čipem Google Tensor G6 a hodinky Pixel Watch 5.

    Ladislav Hagara | Komentářů: 1
    12.8. 17:11 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) se spolu s partnery z dalších zemí připojil ke společnému upozornění (Joint Cybersecurity Advisory) týkajícímu se probíhající kybernetické kampaně skupiny LAUNDRY BEAR zaměřené na uživatele e-mailové platformy Zimbra Collaboration Suite (ZCS) nejméně od července 2025. NÚKIB doporučuje organizacím využívajícím Zimbra Collaboration Suite neprodleně ověřit, zda

    … více »
    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2384 hlasů
     Komentářů: 31, poslední včera 00:27
    Rozcestník


    Octave - 8 (větvení programu)

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

    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: Kvůli klimatickým rizikům je ohrožena více než polovina finanční hodnoty evropských datových center pro AI
    Týden na ITBiz: MPO posílí využití AI ve firmách, uvolní 630 mil. Kč
    Týden na ScienceMag.cz: Paměť na úrovni jediného elektronu

    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.