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

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
m
m
Řádek 38: Řádek 38:
 
=== Větvení (if) ===
 
=== Větvení (if) ===
  
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#66]
+
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#page=66 přednášky]
  
 
<source lang=octave>
 
<source lang=octave>

Verze z 22. 3. 2017, 11:09

předchozí cvičenístránky předmětudalší cvičení

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

Ukázky

Interaktivní vstup

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

Vyhodnocování relačních výrazů, all, any

  • pravdivá relace je vyhodnocena jako 1
  • nepravdivá relace je vyhodnocena jako 0
  • funkce all() (uvažujme např. vícero výsledků relačních výrazů současně)
all([1 1 1])
all([0 0 1])
all([0 0 0])
  • funkce any() (uvažujme např. vícero výsledků relačních výrazů současně)
any([1 1 1])
any([0 0 1])
any([0 0 0])

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 (promenna obvykle obsahuje vysledky relacnich vyrazu, tj. 0 ci 1)
if b      % totez jako:  if all(b)
    disp('b neobsahuje zadne nulove cleny');
elseif a  % totez jako:  if all(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 (jedna z moznych variant zapisu)
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 == 2
        continue;
    end
    if i == 4
        break;
    end
    fprintf('i = %d\n', i);
end

Úlohy