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

Z GeoWikiCZ
mBez shrnutí editace
Řádek 9: Řádek 9:
# podmínky (<tt>for, while</tt>)
# podmínky (<tt>for, while</tt>)
# příkazy <tt>break, continue</tt>
# příkazy <tt>break, continue</tt>
# složené podmínky


== Ukázky ==
== Ukázky ==
Řádek 130: Řádek 131:
<source lang=octave>
<source lang=octave>
% logicke AND - musi platit vsechny podminky soucasne
% logicke AND - musi platit vsechny podminky soucasne
% iterativni proces proto skonci jiz pri splneni jedne z podminek
% iterativni proces v ukazce proto skonci jiz pri splneni jedne z pozadovanych presnosti
dx = 10;
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;
dy = 10;   % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
i = 0;    % citac iteraci
while dx > 0.1 & dy > 0.1
while dx > 0.1 & dy > 0.1
Řádek 141: Řádek 142:


% totez
% totez
dx = 10;
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;
dy = 10;   % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
i = 0;    % citac iteraci
while [dx > 0.1, dy > 0.1]
while [dx > 0.1, dy > 0.1]
Řádek 151: Řádek 152:


% totez
% totez
dx = 10;
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;
dy = 10;   % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
i = 0;    % citac iteraci
while all([dx > 0.1, dy > 0.1])
while all([dx > 0.1, dy > 0.1])
Řádek 162: Řádek 163:


% logicke OR - musi platit alespon jedna podminka
% logicke OR - musi platit alespon jedna podminka
% iterativni proces proto skonci az po splneni vsech podminek
% iterativni proces v ukazce proto skonci az po splneni vsech pozadovanych presnosti
dx = 10;
dx = 10;   % pozadovana presnost v souradnici x
dy = 10;
dy = 10;   % pozadovana presnost v souradnici y
i = 0;    % citac iteraci
i = 0;    % citac iteraci
while dx > 0.1 | dy > 0.1
while dx > 0.1 | dy > 0.1
Řádek 173: Řádek 174:


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

Verze z 7. 4. 2016, 07:30

Algoritmizace, podmínky a cykly

Náplň cvičení

  1. zobrazení zpráv, zadaní vstup
  2. podmínky (if, else, elseif, end, all, any)
  3. větvení (switch)
  4. podmínky (for, while)
  5. příkazy break, continue
  6. složené podmínky

Ukázky

Interaktivní vstup

disp('Program vyzaduje vstup');
a = input('Zadejte cislo a: ')

Větvení (if)

% skalarni podminka
a = randi(10)
b = randi(10)

if a < b
    disp('a je mensi nez b');
else
    disp('a je vetsi nebo rovno b');
end;

% vektorova podminka
a = [1 2];
b = [0 3];

if a < b
    disp('a je po prvcich vzdy mensi nez b');
else
    disp('a je po prvcich alespon jednou vetsi nez b');
end;

% test na (ne)nulove prvky promenne
if b    % totez jako:  if all(b)
    disp('b neobsahuje zadne nulove cleny');
elseif a
    disp('b obsahuje nulovy clen, a neobsahuje zadne nulove cleny');
else
    disp('a i b obsahuji nulovy clen');
end;
    
if any(b)
    disp('b obsahuje alespon jeden nenulovy clen');
end;

Větvení (switch)

cislo = randi(10)

switch cislo
  case 1
    disp('cislo je 1')
  case {2,3}
    disp('cislo je 2 nebo 3')
  case {4,6,7}
    disp('cislo je 4, 6 nebo 7')
  otherwise
    disp('cislo je 5 nebo vetsi nez 7')
end

Cyklus for

% tvorba vektoru
n = 3
for i = 1:n
    a(i) = i
end

% tvorba matice
m = 4  % pocet radku
n = 3  % pocet sloupcu
for i = 1:m
    for j = 1:n
        A(i,j) = i+j
    end
end

% priklad - v matici vyhledat sude radky
A = rand(5,4)
for i=1:size(A,1)
    if rem(i,2) == 0         % rem(a,b) ... zbytek po deleni cisla a cislem b
        A(i,:) = -1 * A(i,:)
    end
end

Cyklus while

a = 1;
b = 5;
while a < b
    a
    a = a + 1;
end

Příkazy break, continue

for i = 1:5
    if i == 1
        continue;
    elseif i == 3
        break;
    end
    fprintf('i=%d\n', i);
end

Složené podmínky

% logicke AND - musi platit vsechny podminky soucasne
% iterativni proces v ukazce proto 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 [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
    dx = dx/2
    dy = dy/5
end


% logicke OR - musi platit alespon jedna podminka
% iterativni proces v ukazce proto 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

Úlohy