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

    Byla vydána verze R14.1.7 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 1
    dnes 00:33 | Nová verze

    Bazzite (Wikipedie), tj. linuxová distribuce vycházející z Fedora Linuxu a optimalizována pro hraní počítačových her, byla vydána ve verzi 45. S Open Gaming Collective (OGC) jádrem a novým Easy Anti-Cheatem pro Linux (EAC Linux v2).

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

    MikroTik zveřejnil vlastní bezpečnostní upozornění potvrzující, že zranitelnost linuxového jádra postihuje také RouterOS 7. Jde o use-after-free při zpracování IPv4 TCP spojení s IP options. Zranitelnost se týká provozu směřujícího na TCP službu samotného routeru, nikoli paketů, které router pouze přeposílá. Opraveno v long-term od 7.24.6, v stable od 7.25.1 a devel od 7.26beta5.

    vencour | Komentářů: 0
    včera 17:00 | Bezpečnostní upozornění

    Ve správci balíčků APT, používaném v Debianu a odvozených distribucích, byla nalezena a opravena kritická zranitelnost CVE-2026-109518. Vzdálený útočník může obejít ověření stažených balíčků pomocí přesměrování a dočasných chyb HTTP serveru.

    Ladislav Hagara | Komentářů: 1
    včera 13:11 | IT novinky

    Nejvyšší kontrolní úřad (NKÚ) vydal zprávu o finančním řízení prostředků EU v ČR (pdf). Dočíst se lze například, že přes 8 miliard korun na digitální vzdělávání nepřineslo naplnění žádného z prioritních cílů programu. Peněžní prostředky z fondů EU sice byly vynaloženy formálně v souladu s právními předpisy, avšak s minimálním nebo neprokazatelným dopadem na proklamované cíle ve vzdělávání. Na Metodickém portálu RVP.CZ bylo ke konci

    … více »
    Ladislav Hagara | Komentářů: 17
    včera 11:33 | Nová verze

    Emulátor terminálu kitty (Wikipedie, GitHub) byl vydán v nové verzi 0.50.

    Ladislav Hagara | Komentářů: 2
    včera 09:00 | Bezpečnostní upozornění

    Vývojáři C-Kermit oznámili několik dlouhodobě přítomných zranitelností. Patří mezi ně buffer overflow v Telnet/FTP klientovi a command injection v Kermit serveru. Dotčené verze: C-Kermit 11.0.514 a starší. Fix: 11.1.515 [oss-security].

    vencour | Komentářů: 0
    včera 02:44 | Nová verze

    Byla vydána nová verze 3.2.8 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    3.11. 16:55 | Nová verze

    Projekt openSUSE dnes, 3. listopadu 2026, oficiálně vydal openSUSE Leap 16.1, novou verzi své stabilní linuxové distribuce. Novinkou je také Immutable Mode, který nahrazuje dosavadní samostatnou distribuci openSUSE Leap Micro. Podrobnosti o novém vydání najdete v oficiálním oznámení nebo v českém překladu oznámení. Instalační obrazy jsou již dostupné na get.opensuse.org. Vydání společně oslavíme v pátek ve virtuálním baru a na … více »

    lkocman | Komentářů: 0
    3.11. 16:00 | Nová verze

    Bylo oznámeno vydání Fedora Linuxu 45. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora Cloud pro cloudové nasazení, Fedora CoreOS pro ty, kteří preferují neměnné systémy a Fedora IoT pro internet věcí. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách

    … více »
    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2979 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Octave - 9 (cykly)

    23. 3. 2006 | Jiří Poláček | Programování | 7115×

    Konečně můžeme v Octave začít programovat – seznámíme se s konstrukcí cyklů while, do-until a for.

    Cyklus s podmínkou

    Cyklus v programu dovoluje opakovat stále tytéž příkazy – což neznamená, že by produkovaly stále tytéž výsledky. Obvykle příkazy pracují s nějakými proměnnými, jejichž obsah se v průběhu smyček cyklu může měnit. Bývá také záhodno cyklus po určité době ukončit – typicky na základě platnosti nějaké podmínky, která se velice často vztahuje na hodnoty proměnných, s kterými příkazy cyklu pracují.

    Klíčové slovo while otevírá programovou konstrukci cyklu s podmínkou na začátku, za kterým následuje podmínka – výraz, u kterého Octave stejně jako u větvení vyhodnotí, zda platí, či neplatí. V případě, že je podmínka splněna, provedou se příkazy uvedené dále až do výskytu klíčového slova end (respektive endwhile), které konstrukci cyklu uzavírají, a – což je důležité – vracíme se zpět na začátek cyklu. Opět se tedy testuje podmínka, zda (stále ještě) platí – a opět se provádí příkazy v těle cyklu, je-li podmínka splněna – a tak pořád dokola, dokud podmínka splněna není. V takovém případě docházení k okamžitému ukončení cyklu – příkazy v těle cyklu se již neprovádějí, program pokračuje příkazy uvedenými za ukončovacím end cyklu.

    Příkladem cyklu s podmínkou budiž házení kostkou – dokud nepadne šestka, házíme znovu:

    >> hod=0; while hod ~= 6 hod=fix(rand(1)*6)+1, end
    hod = 5
    hod = 1
    hod = 1
    hod = 4
    hod = 4
    hod = 4
    hod = 6
    

    Podmínkou příkladu je výraz hod ~=6, tj. že hodnota proměnné hod je různá od šesti. Je-li tato podmínka splněna, provede se příkaz hod=fix(rand(1)*6)+1, který říká, aby se do proměnné hod uložilo náhodně vygenerované celé číslo z intervalu 1 až 6 – tímto způsobem simulujeme jedno hození kostkou. Princip cyklu nás vrací na začátek, kdy se znovu testuje podmínka, v našem případě, zda-li již jsme tu šestku hodili, či nikoliv. V okamžiku, kdy padne, se další házení již neprovádí, cyklus končí, jak je také patrno z výpisu. Úvodní přiřazovací příkaz na řádku provádí inicializaci proměnné – abychom mohli v cyklu nejdříve testovat a pak teprve házet, musí být proměnná hod zavedena předem (s hodnotou takovou, aby podmínka pro první testování splněna byla).

    Jiné vhodné využití cyklu while je například v programu pro výpočet zbytku po dělení dvou čísel s výhradním použitím operace odečítání:

    --[funkce zbytek.m]--
    function vysl=zbytek(delenec, delitel)
    while delenec > delitel
      delenec = delenec - delitel;
    end
    vysl = delenec;  
    --[konec funkce]--
    >> zbytek(46,7)
    ans = 4
    

    Doplňující drobnosti

    Octave také obsahuje variantu cyklu s podmínkou na konci. Cyklus začíná slovem do, za kterým následuje blok příkazů. Ten je uzavřen klíčovým slovem until následovaným podmínkou. Podmínka je tedy úplně na konci cyklu (slovo end se zde nepoužívá) a od cyklu while se odlišuje také tím, že k opakování příkazů v těle cyklu dochází v případě, kdy podmínka splněna není! Při splnění podmínky se cyklus opouští; příklad na házení kostkou, dokud nepadne šestka, tedy lze ekvivalentně zapsat takto:

    >> do hod=fix(rand(1)*6)+1, until hod==6
    

    Všimněte si též, že příkazy cyklu s podmínkou na konci se vždy alespoň jednou provedou (neboť až poté se testuje podmínka), inicializace proměnné hod tedy v tomto případě není potřeba.

    Jedna poznámka k psaní podmínek v cyklech a větveních programu – častou programátorskou chybou je zapsání příkazu přiřazení namísto porovnání dvou hodnot (tj. namísto dvou rovnítek pouze jedno), což samozřejmě vede k neočekávaným výsledkům. Octave ve výchozím nastavení na tuto skutečnost upozorňuje varováním:

    >> a=10; if a=4 disp('Podminka plati'); end
    warning: suggest parenthesis around assignment used as truth value
    Podminka plati
    

    Varování lze vypnout přiřazením nuly do vestavěné proměnné warn_assign_as_truth_value.

    Cyklus s předem známým počtem opakování

    Někdy jsme předem schopni vyjádřit, kolikrát se má daný blok příkazů provést. Pro Octave, respektive Matlab, je typické, že se nějaké příkazy mají provést pro všechny prvky vektoru či matice, a to právě jednou – celkem se tedy cyklus provede právě tolikrát, kolik prvků daný vektor či matice obsahuje. U cyklu while můžeme tento problém vyřešit zavedením čítače – proměnné, ve které budeme počítat, kolikrát již daný cyklus proběhl, a v podmínce cyklu budeme kontrolovat, zda už cyklus proběhl „dostatečněkrát“. Mějme například funkci, která vstupní vektor pozmění tak, že ke každému prvku přičte pozici, na které se ve vektoru nachází, tj. například z vektoru [1 1 4] udělá vektor [2 3 7]:

    --[funkce pricitani.m]--
    function w=pricitani(v)
    citac = 1;
    pocet_prvku = length(v);
    while citac <= pocet_prvku
    	w(citac) = v(citac) + citac;
    	citac = citac + 1;
    end
    --[konec funkce]--
    

    Před začátkem cyklu bylo nutno čítač inicializovat a v těle cyklu pak jej zvyšovat o jedničku. Tyto starosti, které jsou často příčinou chyb v programu, lze hodit za hlavu s konstrukcí cyklu s předem známým počtem opakovaní uvozované klíčovým slovem for. Přepišme naši funkci pricitani to této podoby:

    --[funkce pricitani.m]--
    function w=pricitani(v)
    pocet_prvku = length(v);
    for citac = 1:pocet_prvku
    	w(citac) = v(citac) + citac;
    end
    --[konec funkce]--
    

    Inicializace a navyšování čítače z programu zmizely a namísto podmínky cyklu je zde přiřazovací výraz. Jak to tedy funguje? Už víme, že zápis 1:pocet_prvku nám vytvoří posloupnost od jedničky do hodnoty uložené v proměnné pocet_prvku s krokem jedna, v „uvažování“ Octave se tedy jedná o vektor [1 2 3 4 5 ... pocet_prvku]. Hlavní trik cyklu for spočívá v přiřazování tohoto vektoru do čítače – narozdíl od přiřazování kdekoliv jinde v programu se zde neuloží celý vektor do proměnné najednou, ale v každé smyčce cyklu postupně pouze jeden prvek vektoru (přesněji řečeno jeden sloupec proměnné, která je výsledkem výrazu – u matic by se tedy jednalo o sloupcové vektory, kterých by čítač postupně nabýval).

    Cyklus tedy pracuje tak, že nejdříve do čítače uloží hodnotu prvního prvku z vektoru, v našem případě tedy číslo 1, a nechá proběhnout tělo cyklu, pak do čítače vloží následující hodnotu z vektoru – číslo 2 – a nechá proběhnout tělo cyklu podruhé, a tak dále, dokud nevyčerpá všechny prvky vektoru.

    Jiné příklady – bude-li výraz 1:10, cyklus proběhne desetkrát s hodnotami čítače od jedné do desíti; bude-li výraz [4 7 -1 3] proběhne cyklus čtyřikrát, přičemž čítač postupně nabude hodnot 4, 7, -1 a 3.

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

    Týden na ITBiz: 88 % vrcholových manažerů se obává, že selhání v oblasti datové suverenity by je mohlo stát místo
    Týden na ITBiz: Do roku 2028 bude na jednoho prodejce připadat 10 agentů AI
    Týden na ScienceMag.cz: Alternativní teorie gravitace nabízí vysvětlení změn temné energie v průběhu času

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

    Událo se v týdnu 41/2026
    Událo se v týdnu 42/2026
      všechny statistiky »

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

    Octave - 1 (je to kalkulačka) (první díl)
    <—« Octave - 8 (větvení programu)
    »—> Octave - 10 (zbylé řídicí struktury)
    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 - 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.