155GIT1 / 6. cvičení: Porovnání verzí
mBez shrnutí editace |
mBez shrnutí editace |
||
Řádek 1: | Řádek 1: | ||
{{Geoinformatika}} | {{Geoinformatika}} | ||
{{Cvičení|155GIT1|6| | {{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 | % 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]) % totez: while [dx > 0.1, dy > 0.1] | ||
% totez | |||
while | |||
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 | % 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í
- složené podmínky
- uživatelské funkce
- 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