155GIT1 / 6. cvičení: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|6|Algoritmizace, podmínky a cykly}}
{{Cvičení|155GIT1|6|Podmínky a cykly, uživatelské funkce}}


== Náplň cvičení ==
== Náplň cvičení ==


# složené podmínky
# složené podmínky
# uživatelské funkce
# chybová hlášení, nápověda k funkci


== Ukázky ==
== Ukázky ==
Řádek 12: Řádek 14:
<source lang=octave>
<source lang=octave>
% logicke AND - musi platit vsechny podminky soucasne
% logicke AND - musi platit vsechny podminky soucasne
% iterativni proces v ukazce proto skonci jiz pri splneni jedne z pozadovanych presnosti
% iterativni proces skonci jiz pri splneni jedne z pozadovanych presnosti
dx = 10;  % pozadovana presnost v souradnici x
dx = 10;  % pozadovana presnost v souradnici x
dy = 10;  % pozadovana presnost v souradnici y
dy = 10;  % pozadovana presnost v souradnici y
Řádek 26: Řádek 28:
dy = 10;  % pozadovana presnost v souradnici y
dy = 10;  % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
i = 0;    % citac iteraci
while [dx > 0.1, dy > 0.1]
while all([dx > 0.1, dy > 0.1]% totezwhile [dx > 0.1, dy > 0.1]
    i = i+1
    dx = dx/2
    dy = dy/5
end
 
% totez
dx = 10;  % pozadovana presnost v souradnici x
dy = 10;  % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
while all([dx > 0.1, dy > 0.1])
     i = i+1
     i = i+1
     dx = dx/2
     dx = dx/2
Řádek 44: Řádek 36:


% logicke OR - musi platit alespon jedna podminka
% logicke OR - musi platit alespon jedna podminka
% iterativni proces v ukazce proto skonci az po splneni vsech pozadovanych presnosti
% iterativni proces skonci az po splneni vsech pozadovanych presnosti
dx = 10;  % pozadovana presnost v souradnici x
dx = 10;  % pozadovana presnost v souradnici x
dy = 10;  % pozadovana presnost v souradnici y
dy = 10;  % pozadovana presnost v souradnici y
Řádek 64: Řádek 56:
end
end
</source>
</source>
=== Uživatelské funkce ===
Syntax:
function [vystup1,vystup2,...,vystupn] = nazev(vstup1,vstup2,...,vstupn)
end  % end neni povinne
Každá funkce musí být uložena ve vlastním souboru s příponou <tt>.m</tt>. Název souboru musí odpovídat názvu funkce! Klíčové slovo <tt>function</tt> musí být na prvním řádku souboru.
<source lang=octave>
function [min_x, max_x, mean_x] = stat(x)
    min_x = min(min(x));
    max_x = max(max(x));
    mean_x = mean(x(:));
end
</source>
Příklad volání:
<source lang=octave>
data = rand(10,1)
[mi, ma, mn] = stat(data)
fprintf('min  = %.3f\nmax  = %.3f\nmean = %.3f\n', mi, ma, mn)
</source>
=== Chybová hlášení, nápověda ===
<source lang=octave>
function [min_x, max_x, mean_x] = stat(x)
% vypocet minimalni, maximalni a prumerne hodnoty matice
    if any(imag(x)) > 0
        error('stat: Vstupni matice obsahuje imaginarni cisla.')
    end
    min_x = min(min(x));
    max_x = max(max(x));
    mean_x = mean(x(:));
end
</source>
Vyvolání nápovědy k uživatelské funkci:
<source lang=octave>
help stat
</source>
Volání funkce (chybná vstupní data):
<source lang=octave>
data1 = [data; 5+2i; 4-3i]
[mi, ma, mn] = stat(data1)
</source>
=== Příkaz return ===
* je-li v běhu funkce vykonán příkaz <tt>return</tt>, je okamžitě činnost funkce ukončena (bez vykonání evtl.dalších příkazů) a na pozici jejího volání jsou vráceny aktuálně vypočtené hodnoty výstupních parametrů funkce


== Úlohy ==
== Úlohy ==


* [[155GIT1 / 6. cvičení / Příklady|6. cvičení - příklady]]
* [[155GIT1 / 6. cvičení / Příklady|6. cvičení - příklady]]

Verze z 26. 3. 2017, 04:10

Podmínky a cykly, uživatelské funkce

Náplň cvičení

  1. složené podmínky
  2. uživatelské funkce
  3. chybová hlášení, nápověda k funkci

Ukázky

Složené podmínky

% logicke AND - musi platit vsechny podminky soucasne
% iterativni proces skonci jiz pri splneni jedne z pozadovanych presnosti
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;   % pozadovana presnost v souradnici y
i = 0;     % citac iteraci
while dx > 0.1 & dy > 0.1
    i = i+1
    dx = dx/2
    dy = dy/5
end

% totez
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;   % pozadovana presnost v souradnici y
i = 0;     % citac iteraci
while all([dx > 0.1, dy > 0.1])   % totez:  while [dx > 0.1, dy > 0.1]
    i = i+1
    dx = dx/2
    dy = dy/5
end


% logicke OR - musi platit alespon jedna podminka
% iterativni proces skonci az po splneni vsech pozadovanych presnosti
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;   % pozadovana presnost v souradnici y
i = 0;     % citac iteraci
while dx > 0.1 | dy > 0.1
    i = i+1
    dx = dx/2
    dy = dy/5
end

% totez
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;   % pozadovana presnost v souradnici y
i = 0;     % citac iteraci
while any([dx > 0.1, dy > 0.1])
    i = i+1
    dx = dx/2
    dy = dy/5
end

Uživatelské funkce

Syntax:

function [vystup1,vystup2,...,vystupn] = nazev(vstup1,vstup2,...,vstupn)

end  % end neni povinne

Každá funkce musí být uložena ve vlastním souboru s příponou .m. Název souboru musí odpovídat názvu funkce! Klíčové slovo function musí být na prvním řádku souboru.

function [min_x, max_x, mean_x] = stat(x)

    min_x = min(min(x));
    max_x = max(max(x));
    mean_x = mean(x(:));

end

Příklad volání:

data = rand(10,1)
[mi, ma, mn] = stat(data)
fprintf('min  = %.3f\nmax  = %.3f\nmean = %.3f\n', mi, ma, mn)

Chybová hlášení, nápověda

function [min_x, max_x, mean_x] = stat(x)
% vypocet minimalni, maximalni a prumerne hodnoty matice

    if any(imag(x)) > 0
        error('stat: Vstupni matice obsahuje imaginarni cisla.')
    end
    min_x = min(min(x));
    max_x = max(max(x));
    mean_x = mean(x(:));

end

Vyvolání nápovědy k uživatelské funkci:

help stat

Volání funkce (chybná vstupní data):

data1 = [data; 5+2i; 4-3i]
[mi, ma, mn] = stat(data1)

Příkaz return

  • je-li v běhu funkce vykonán příkaz return, je okamžitě činnost funkce ukončena (bez vykonání evtl.dalších příkazů) a na pozici jejího volání jsou vráceny aktuálně vypočtené hodnoty výstupních parametrů funkce

Úlohy